If you can't measure it—it doesn't exist.

춤추는 철학자의 문제, 검증 게임 그리고 사이드 체인과 데이터 가용성

Posted on

지금까지 Ether가 후원되었습니다.

이 글에 이더

“컴퓨터가 생각할 수 있다는 것은 잠수함이 수영할 수 있다는 것과 같다” — 에츠허르 다익스트라

의외로 섹시한(?) 철학자들

들어가는글

안녕하세요. 철학자(philosopher)입니다.

춤추는 철학자의 문제(dancing philosophers problem)란 온더의 지난 플라즈마 살펴보기 세미나[01:19:07]에서 트루빗(Truebit)이 제안 했던 검증 게임(verification game)을 즐겁게 설명하기 위해 만들어낸 예시입니다.(철학자가 만든 철학자네요)

손쉬운 논리 문제를 통해서 블록체인(사이드 체인) 기술자들 사이에서 논란의 중심이자 난제인 데이터 가용성(Data Availability) 문제가 발생한 맥락에 대한 힌트를 얻어가시기를 바랍니다.(이게 가능하면 여러분은 초고수를 넘어보린 초굇수! 이크요잇!)

상황 정의(1)— 카메라 앞에서 춤추는 철학자들

그림1 : 카메라 앞에서 춤추는 철학자들

춤추는 철학자의 문제에는 총 다섯 종류의 주인공이 나옵니다. i)규칙(Rule), ii)심판(Judge), iii), iv)카메라, v)철학자들로 구성되어 있습니다.

무대에는 철학자 두명이 규칙이 정의된 춤을 반복하고 있습니다. 그리고 카메라가 그들을 찍고 있습니다. 심판 뒤에 있고, 벽 너머의 상황을 알 수 없습니다. 두 철학자는 같은 (ㅁㅊㄴ처럼)춤을 반복 하는데, 심판은 벽 너머의 상황을 직접 볼 수 없습니다. 그럼에도 불구하고 심판은 벽 밖의 상황을 판단해야 합니다. 더해서 심판의 책상이 매우 작은 데다가 신중한 사람이라 한번에 2컷씩 밖에 비교하지 못한다고 가정합시다. 따라서 전체 필름을 가져와서 검토받는 것이 아니라, 필름을 짤라서 가져가야 합니다. 춤은 항상 같은 동작으로 시작하는데, 때때로 두 사람의 춤이 엇갈립니다. 게다가 두 사람은 서로 자기가 맞다고 우기고 있죠!춤추는 철학자의 문제란 이 두 사람 중 누가 틀렸는지 최소한으로 심판이 판단하는 방법과 결과에 관한 문제입니다.

안무의 “규칙(Rule)을 다음과 같이 정의해보겠습니다.

1.한 박자의 단 하나의 동작만 할 수 있다

2.손을 위로 뻗거나, 아래로 뻗는 동작만 할 수 있다

3.이전 박자의 동작과 동일한 동작을 할 수 없다. 즉 계속 바꿔야 한다.

음악이 시작되고 철학자 A와 B는 같은 동작으로 안무를 시작합니다. 그런데 15박자가 지났는데 두 사람의 동작이 엇갈렸습니다.

이때, 과연 A와 B중 1)누가, 2)언제 **틀렸으며 이를 3)최소한의 심판 횟수만으로 알아낼 수 있을까요? 이제부터 안무에 대한 **검증 게임(verification game) 이 시작됩니다.

상황 정의(2) — 댄싱 검증 게임

춤은 항상 같은 동작으로 시작한다 가정했고, 마지막 동작은 틀린 상황이 찍힌 필름을 그림으로 나타내면 다음과 같습니다. 둘의 동작이 같으면 녹색, 다르면 붉은색으로 표시했습니다.

그림2 : ,,어떤자식이냐?

위의 색인은 필름 번호이고(카메라 감독님이 컴퓨터 공학을 전공한 모양이군요. 인덱스가 0부터 시작합니다)

이 상황만을 가지고는 누가 틀렸는지 알기 어렵습니다. 이 상황을 타개하는 몇 가지 방법이 있습니다.

첫번째 알고리즘 : 처음부터 하나씩 다 들고간다

이 방법은 필름을 맨 앞부터 두 컷씩 잘라서 심판에게 계속 가져가는 방법입니다.

순서는 이렇습니다.

[0,1] 두컷씩 가져가 비교 합니다.

[1,2] 두컷씩 가져가 비교 합니다.

[2,3] 두컷씩 가져가 비교 합니다.

[13,14] 두컷씩 가져가 비교 합니다.

비교 과정 중 다행스럽게도 끝까지 가지 않고, 7번째에 B철학자가 틀린걸 발견했습니다. 왈라~!

그림3 : EXID 춤에 중독된 철학자들, 그리고 심판은 — “이ㅂㅅ들.. 계속 가지고 오네 귀찮게”

이때 심판은 몇 번 판단 을 했나요? 그림에도 적어 뒀지만,** 7번을 비교했습니다. 사실, 7번째라서 다행이지 만약 13번 인덱스에서 안무가 틀렸다면, **최악의 상황에는 14번 을 비교해야 합니다!

두번째 알고리즘 : 계속 중간쯤 찍어서 계속 심판에게

이 문제를 풀던 또 다른 빛나는 한 사람(국문명:참빛 , 영문명:Truebit — 이라 불리는 형님)은 또 다른 규칙을 제시 합니다.

일단 필름 중간쯤을 대충 찍어서

그 부분을 가지고 와봐, 심판이 비교해줄게

if)만약 거기까지 이상이 없으면 다시 남은 필름의 중간을 찍어서 다시 심판한테 가져오고

else) 뭔가 이상하면 거기서 심판은 판단을 끝내버리면 된다. 잘못한 사람이 확실해졌으니까.

만약 위와 같이 인덱스7에서 B가 두번찌른 상황과 같다면, 이 상황에서 심판은 몇 번 판단하는지 확인 해보겠습니다.

그림4 : 심판한테 대충 넣었는데, 한방에 “싸보렸다”..

규칙에 의해서 일단 대충 중간쯤인 7번을 찍고, [6, 7] 필름을 심판에게 들고갑니다. 철학자 A는 (위-아래)동작으로 규칙을 정확히 지켰고, 철학자 B는 (위-위) 동작을 함으로써 규칙을 어겼습니다. B가 잘못한 것으로 검증(verify)되었습니다.

얼핏 보기에 이 상황은 따로 심판에게 들고 가기 민망할 정도로, 직관적이고 명약관화(明若觀火)해 보이지만, 그렇게 보는 이유는 우리가 제3자의 시선으로 이 문제를 바라보기 때문입니다. 당사자 입장에서는 억울할 수도 있습니다.(사실..뭐가 억울해.. 한명이 우기는건데)

세상에는 제3자가 보기에는 명확해 보이지만, 당사자의 입장에서는 논란인 상황이 매우 많습니다. 예를 들어 ICO를 한 프로젝트 입장에서는 선택한 플랫폼에서 발행한 토큰의 유동성이 떨어졌을 때 플랫폼을 바꿔 토큰을 더 찍어내는게 최선의 선택으로 보일 수 있지만, 그렇게 막(ㅁㄷㅂㄹㅊㄹ) 귀뚜라미같이 점프 뛰는게 유행하면 떳다방 작전 플랫폼이 생겨나 결국 다른 영역에서 투자자의 피해가 생길 수 있죠. 사람사는 세상에는 이처럼 객관적인 상황보다 주관적인 상황이 더 많습니다.

마침 우리 현실에는 사법제도라는 수백년 간 다듬어진, 완벽하지는 않지만 매우 발전된 제도가 있습니다. 양측이 서로 우기는 과정, 즉 송사가 일어나면 제3자인 재판관이 개입해 판단합니다.

마찬가지로 이러한 방식을 이 문제에 적용하면, 심판은 [6,7]컷 딱 한번만 비교하면 됩니다. 이는 마치 법원에서 재판관이 논란이 되는 곳 중간쯤 찍어서 잘잘못을 판단하는 것과 같습니다. 좀 이상해 보입니다만, 이런 판단이 가능한 이유는 이 게임은 잘못을 했느냐 마느냐의 이분법적 판단이 필요할 뿐, 누가 얼마나 잘못했는지 잘못의 정도를 판단하는 것은 아니기 때문입니다. 거기다가 춤은 잘못한 순간을 제외하고는 규칙적으로 반복되고 있죠. 마치 컴퓨터처럼..

다시 문제로 돌아가서 이번에도 최악의 상황을 가정 해 볼까요? 철학자 B의 13번 동작이 틀린 상황에서 이 알고리즘이 동작하는 과정입니다.

그림5 : 네 번만에 결단났다. 중간에 하얀거 몰라도 된다.

CP는 체크포인트(Check Point)의 약자입니다. 처음 7번을 찍어서 판단을 받아봤는데 이상이 없었고, 그래서 남은 필름의 중간쯤 11번 CP를 찍었습니다. 그것도 이상 없어서 다시 중간쯤인 13번을 찍고, 그것도 이상없어서 14번을 마지막으로 검토받고 이 “게임”이 마무리 됩니다.(게임.. 소오름..제목참조)

이번에 단 4번의 판단만으로 이 논란을 종결시켰습니다. 사실 심판 입장에서 벽 우측에 하얀 물음표로 된 필름에서 일어났던 일이야 알바 아니고, 본인한테 들고온 필름만 판단하면 되는 것이죠. 앞의 방법보다 업무 부담도 많이 줄어듭니다. 부담이 줄어들었을 뿐만 아니라, 결과도 확실히 내었죠.

첫번째와 두번째 알고리즘 비교

두 알고리즘을 비교하면 다음 표와 같습니다.

그림6 : 최악의 상황이 생긴다믄 두번째 알고리즘이 훨씬 낫쥬~

이를 컴퓨터 과학의 계산복잡도이론에 근거해 표현하면 심판 입장에서 최악의 경우 첫번째 알고리즘은 O(N)의 시간 복잡도를 가지고 있고, 두번째 알고리즘은 O(logN)의 시간복잡도를 가지고 있다고 볼 수 있습니다. 이진 탐색(Binary Search)이라고도 하죠.

상황 정의(1)에 따르면 우리는 심판의 판단을 최소화하는 방법을 필요로 했으므로, 두번째 알고리즘이 더 적합하다고 할 수 있습니다.

이 두번째를 블록체인에 적용시킨 “참빛”형.. 그 형이 바로 Truebit입니다. 그들은 이걸** 트루빗 프로토콜(Truebit Protocol) 혹은 검증게임(Verification Game)**이라고 부릅니다.(오오오..! 드디어 나옴)

트루빗이 해결하고자 하는 문제는 온체인에서 일어나는 연산 부담을 오프체인으로 옮겨서 해결하면서도, 계산 과정이 아무런 문제 없이 이뤄지게 하는 데에 있습니다. 찾다보면 위의 필름 그림과 비슷하지만 다른 그림을 보게 되는데, 이 글 내용을 참조하시면 도움이 많이 됩니다. 트루빗에 대한 자세한 프로젝트의 목적과 방법 및 구현은 문건기 님이 작성하신 글온더의 Carl Park(4000D)님께서 작성하신 글 혹은 트루빗 백서를 참조하시면 되고, 저는 조금만 더 철학자의 몹쓸 몸동작을 좀 더 지켜 보도록 하겠습니다. 이번에는 이더리움이라는 옷을 입고 춤을 춥니다. 옷입기 전에, 와꾸를 좀 보고 가야 될 것 같습니다.

이더리움 사이드체인과 검증게임

이더리움..뭐하는 놈이냐?

이더리움은 거대한 컴퓨터입니다. 매우 느리고, 구성 요소는 느슨하게 연결되었다가 끊어지기를 반복 하지만, 한치의 오차도 없이 작동하는 완벽한 컴퓨터죠. 이더리움 황서를 작성한 이더리움의 (집나간)아빠, 가빈 우드는 이더리움을 이렇게 정의합니다.

진정한 글로벌 싱글톤 컴퓨터(Truely Global Singleton Computer)

그림7 : 데브콘1에서 발표중인 가빈우드. 그래.. 이때가 좋았다. — 가빈우드는 이후 이더리움 재단을 떠나 패러티 테크놀리지를 설립한다. 그리고 얼마 뒤, “[본인의 실수](https://github.com/paritytech/parity-ethereum/blob/4d08e7b0aec46443bf26547b17d10cb302672835/js/src/contracts/snippets/enhanced-wallet.sol#L4)”로 당시 가격으로 3500억원을 허공에 고이 접어 나빌레리옹!

싱글톤(패턴)이란 소프트웨어 디자인에서 쓰이는 용어인데, 뭐 직감적으로 받아들이시면 됩니다. 싱글.. 외로워 보이는 단어죠.(외로워 마세요) 이더리움은 노드가 수만개일지라도, 연산의 종류는 하나입니다.(그래서 여러분은 혼자가 아닙니다) 느리죠. 네트워크 참여자 누구든, 수가 많고 적든지 간에 모두가 같은 연산 결과를 내놓아야 합니다. 사실 그래서 논리적으로는 중앙화(Logically Centralized) 되어 있지만, 구조적-정치적으로는 탈중앙화(Architectural, Politically Decentralized) 되어 있다고 말을 합니다.[탈중앙화의 진정한 의미(해시드 번역) — 비탈릭 뷰테린 참조] 서로 합의된 공통의 강력한 룰이 있고, 이를 따르지 않으면 왕따가 되어 이지메(いじめ; 집단구타)를 당하는 구조이기 때문에 결국 대의 안에 모여있는거죠.(샤딩+캐스퍼 = 샤스퍼는 더 잔인합니다. 칼로 긋다(slash)라는 단어가 등장합니다. 온더의 4000D님의 캐스퍼 FFG 설명글 참조)

난 사람이 아니라 조직에 충성합니다”라고 했던 분이 문득 생각나네요..

아무튼 이더리움은 컴퓨터이기 때문에 각각의 연산 과정을 모두 뜯어볼 수 있습니다. 그리고 컴퓨터이기 때문에 거기에 소프트웨어를 올릴 수 있습니다. 스마트 컨트렉트가 그것입니다. 심지어 컴퓨터 위에 컴퓨터를 모델링 할 수 있습니다. 마치 사람이 만든 컴퓨터가, 다시 사람을 만들듯(인공지능) 말이에요.

퍼블릭 블록체인도 컴퓨터입니다. 다만 체인의 종류와 스펙에 따라 기능이 다양한 것 뿐입니다. 비트코인이라는 zola 느린 mungChung한 컴퓨터는 장부 관리밖에 못합니다.

  • 이더리움은 컴퓨터다.
  • 비트코인도 (zola 느리고 mungChung하지만) 컴퓨터다.
  • 블록체인도 컴퓨터다.

일단 이걸 받아들이시고 다음으로 넘어가겠습니다.

사이드 체인? 숨겨진 진짜 이름은 기생 체인(parasite chain)!

요즘 여기 저기서 개념 없이 사이드체인(sidechain)이라는 말을 막 쓰시던데, 사실 “옆(side)에 있다” 보다는 오히려 “기생한다”는 말이 더 잘어울립니다.(옆에 있으면 서로 평등한 것 같잖아!)

온더의 박정원(aiden) 연구원의 일반상태 플라즈마에 관한 발표 자료를 보시면 사이드체인(이더리움에서는 이걸 플라즈마라고 부릅니다)을 이렇게 정의하죠.

그림8 : 그래.. 내새끼들이 다 ㅂㅅ되더라도 난 정신 차려야지.

사람 사는게 다 비슷합니다. 두 사람이 있는데, 한명이 정신 못차리고 있어도 나머지 한명만 정신 차리면 지내는데 지장이 없습니다. 그리고 우린 그걸 삶(life) 이라 부르죠.(여러분의 지난 연애나 결혼 생활을 돌아보시면 될 것 같습니다.)

앞선 정의에 의하면 이더리움 체인은 하나의 컴퓨터이고, 사이드 체인에 동작하는 블록체인도 하나의 컴퓨터입니다. 그리고 이런 호기심이 지구를 잠시 방문한 두 외계인 의 가슴에 불을 붙입니다.(지구인들은 이런 고민 안해요)

“하나의 컴퓨터가 다른 컴퓨터에 기생할 수 있는 방법은 과연 뭘까?”

이 두 남자, 한명은 비트코인 진영에서 라이트닝 네트워크(Lightning network)를 연구하던 조샙 푼과 이더리움의 수장 비탈릭 뷰테린이죠.

그림9 : 외계인 두마리

플라즈마(Plasma) : 이더리움 진영에서 제시한 사이드 체인 솔루션

둘은 꿍짝이 매우 잘 맞았습니다. 만난지 얼마 되지도 않아서 수십장짜리 페이퍼를 후다닥 써갈깁니다. 맞습니다.. 이게 그 유명한 플라즈마(Plasma)입니다.[온더에서 번역한 플라즈마 백서]

그림10 : 고인물 페이퍼. 2017년 8월에 발간되었다.

엄청난 페이퍼이긴 하지만, 사실 내용은 페이퍼의 초록(Abstract)보다 더 추상적(more abstract)입니다

Plasma Whitepaper.. the content of this paper is more abstract than its Abstract — philosopher

그래서 링크를 걸어드리긴 했지만,** 페이퍼를 따로 읽을 필요는 없습니다. 제목, 저자, 그리고 그림 하나씩만 보면 되는데 방금 보고오신 **[그림8,9,10]이 바로 그겁니다.

왜냐하면 너무 허공에 뜬구름이라 그 내용을 아무도 구체화 하지 못해 플라즈마에 아브라 카다브라(주: 해리포터에 등장하는 죽음의 주문)가 시전되기 직전 외계인이 연금술 쇼가 펼칩니다.** 갑자기 비탈릭이 구체적인 스펙을 작성해 버리죠.** 2018년 1월에 쓰여진 최소 기능 플라즈마(Minimal Viable Plasma)가 바로 그것입니다.

— 참고자료

[온더 철학자의 MVP 분석 자료]

[온더 철학자의 MVP컨트렉트 오딧 자료와 영상]

외계인은 두 친구를 더(more) 지구로 소환합니다. 둘은 오미세고라는 포탈(portal)을 타고 왔는데, David KnotKelvin Flecher라는 개발자 녀석 둘이 비탈릭의 스펙을 바탕으로 코드를 만들어 버립니다. (첫 커밋이 비탈릭이 글을 써 올린날과 같은걸 보니 미리 준비하고 있었나봅니다.)

그리고 플라즈마는 거의 최근까지 이더리움 리서치 채널의 최근 쓰레드를 싹 쓸어갑니다.

그림11 : 최근(2018.10.14)까지 리서치 채널 “플라즈마” 태그 글 순위. 맨 아래 온더의 플라즈마EVM이 유독 눈에 띈다. 온더는 이 수많은 외계종들이 우글거리는 가디언즈 오브 갤럭시에서 변변찮은 지원 없이 외롭게 싸우고 있다. 그래도 행복하다. 이 외계인들과 같은 시대에 같은 땅을 밝고 있다는 사실이.

플라즈마는 어떻게 다른 체인을 기생시키나?

이야기가 좀 돌았습니다만, 플라즈마의 역사는 이 정도면 충분한 것 같습니다. 다시 기생수 얘기로 돌아가 보면, 플라즈마라는 기생수는 생각보다 단순한 구조로 이루어져 있습니다. 어렵게 설명할 수도 있지만, 다음 그림 두장이랑 몇마디 설명이면 충분합니다.

그림12 : 출처 — [누구나 쉽게 이해하는 플라즈마 EVM](https://docs.google.com/presentation/d/1XeP64Gol1VqENz0J_J1ruLdxTvGeDOKvJm8vgr9gcug/edit?usp=sharing)

카지노에 들어가는 상황을 생각 해 보면, 카지노에 진입 전 (현금 → 칩)간의 교환이 일어납니다. 반면에 퇴장할 때는 (칩 → 현금)간 교환이 일어나죠. 이더리움 부모체인과 오퍼레이터(체인운영자)가 만든 자식체인의 관계도 비슷합니다. 유저는 부모체인에 암호자산을 예치 **해둔 뒤, 자식체인으로 **진입(Enter)합니다. 진입시** 플라즈마 자산(P-asset)** 이 생겨납니다.

그림13 : 이번엔 진짜 블록체인이다

진입 이후에는 칩의 소유권 교환이 계속 일어나게 되는데(블록체인에서는 이를 트랜잭션(Transaction) 이라고 부릅니다), 그런 교환들이 모여서 마지막 상태를 형성하면(나오기 직전 마지막으로 남은 칩), 해당 상태(칩 잔액)를 근거로 카지노를 빠져나오게 됩니다. 남은 칩과 현금의 교환이 일어나죠.

여기까지는 매우 착한 사람들만 등장했는데, 현실은 약간 더 나쁜 사람도 있을 수 있습니다. 1)칩을 복사 한다던지, 2)슬롯머신 기록 을 위조 당하는 일을 대비해야 됩니다. 그런 일을 하는 주체가 카지노 운영자건 이용자건 상관없이, 괜찮은 시스템이라면 이를 대비할 수 있어야 합니다.

이때 필요한 개념이 커밋(commit) 입니다. 카지노의 모든 데이터를 머클트리(merkle tree)라 불리는 틀을 이용해서 데이터를 매우 압축해 카지노 밖에 주기적으로 기록을 남깁니다. 그리고 이 압축된 기록을 바탕으로 카지노 내부의 기록이 조작되는 불상사가 생기면 이의신청(challenge)이라고 불리는 과정을 통해서 재판이 이뤄집니다.

심판 이 하는일은 역할은 매우 분명합니다. 이런식이죠.

사전에 정해진 규칙 대로, 장부관리를 했습니까?

만약 사전에 얘기되지 않은 방식으로 장부관리가 이뤄진다면(=유효하지 안않은 트랜잭션이 발생했다면), 이의신청(challenge) 과정에서 이것이 주어진 규칙 이내에서 이뤄졌던 일인지 아닌지 여부를 판단하게 됩니다. 그리고 이러한 룰을 지키지 않았다면, 엄청난 경제적 불이익(disincentive) 을 받게 됩니다. 카지노는 커밋과 이의신청이라는 두가지 외부 제약에 걸려 올바른 상태가 강제(enforce)될 수밖에 없습니다. 다시 말하면 카지노의 안정성은 본인 스스로가 아니라 외부에 남긴 커밋과 이의신청이란 과정에 의존 혹은 기생 하게 되는 것이죠.

“카지노는 커밋과 이의신청이라는 두가지 외부 제약에 걸려 올바른 상태가 강제(enforce)될 수밖에 없습니다. 다시 말하면 카지노의 안정성은 본인 스스로가 아니라 외부에 남긴 커밋과 이의신청이란 과정에 의존 혹은 기생 하게 되는 것이죠.”

눈치 채셨을지 모르겠지만 이 이의신청(challenge) 과정과 상황은 앞서 말씀드렸던 춤추는 철학자의 문제 상황과 매우 유사 합니다. 유사한 정도가 아니라, 그냥 그 상황 자체입니다. (왜 그럴까요? 춤추는 철학자의 문제가 그러한 상황을 설명하기 위해서 만들어진 것이니까요..ㅋㅋ)

생각하는 인간 vs 생각하는 컴퓨터 vs 생각하는 체인

카지노의 사례에서 이의신청(challenge) 과정을 더 들여다보면, 이 과정의 최종 판단은 결국 카지노 밖에 있는 제3자인, 심판 역할을 하는 사람 이 하게 됩니다. 요약본을 통해서 원본 장부의 진위여부를 판단하고 잘잘못은 가리는 일을 하게 되죠. 그런데 만약 이 관계가 A컴퓨터와 B컴퓨터간의 관계로 확장되어도 가능할까요?

A컴퓨터가 B컴퓨터를 판단하기 위해서는 A컴퓨터 안에 B가 할 수 있는 행동규칙을 미리 정의 해 두면 됩니다. 여기에 매우 유용한 도구가 있죠. 바로 소프트웨어 입니다. 만약 A컴퓨터 내부에 B컴퓨터를 완벽하게 소프트웨어를 이용해 시뮬레이션 을 하고, 이를 이의제기(challenge) 과정을 통해 B에서 잘못된 계산이 일어났을 때 중지,취소, 재실행을 시킬 수 있도록 강제(enforce) 한다면, B컴퓨터는 A컴퓨터에 시뮬레이션된 규칙만을 따르는, 기생수의 모습 을 띄게 됩니다. 즉, B는 A의 노예가 됩니다. A컴퓨터는 프로그램을 통해 B컴퓨터의 생각을 알 수 있기 때문에 가능한 일입니다.

더해서 이 관계는 체인과 체인으로도 확장할 수 있습니다. 왜냐구요? 혹시 앞에서 했던 이야기를 기억하고 계신지 모르겠습니다.

블록체인도 컴퓨터다.

컴퓨터간 관계가 체인간 관계로 확장 될 수 있는 이유는, 체인이 컴퓨터이기 때문입니다. 계속 반복해서 말씀드렸지만, 블록체인은 컴퓨터 에요.

그리고 그 블록체인 위에 프로그램을 만듭니다

블록체인 컴퓨터에 올라가는 프로그램을 뭐라고 부를까요?

스마트 계약 — Smart Contract

매우 유명한 단어인데 개념은 그보다 덜 알려져 있습니다.

그냥 만든 프로그램이 아니라 상황을 판단할 수 있는 규칙을 담습니다. 바로 다른 체인이 동작하는 구조와 원리를 담은 프로그램 을 만듭니다. 그리고 이러한 프로그램은 앞서 A — B컴퓨터의 관계처럼, A — B체인 관계를 형성합니다.

B체인이 노예가 되는 겁니다. 그리고 B체인이 잘못된 행위(전문가들은 이를 유효하지 않은 트랜잭션(invalid transaction)이 발생 했다라고 하거나 혹은 이중 지불(double spending), 혹은 그것이 체인 운영자의 문제라면 비잔틴 상황(Byzantine) 이 되었다라고 부릅니다)가 이뤄질 경우 누군가 그걸 발견하면 증거를 들고 이의제기(challenge)를 하게 되고, A체인에 만들어둔 심판 프로그램이 B체인의 상태를 판단하게 됩니다. 그리고 이러한 관계가 형성되어 있고, 이러한 절차가 마련된 체인을 사이드체인 **혹은 플라즈마체인**이라고 부릅니다.

A — B관계가 형성된 체인을 사이드체인 혹은 플라즈마체인 이라고 부릅니다

철학자들, 카지노 그리고 사이드체인(플라즈마체인)

많이 돌아왔습니다. 글 서두에서 다뤘던 카메라 앞에서 춤추던 철학자들을 이제부터 이더리움 블록체인에서 쓰인 개념으로 치환해보도록 하겠습니다.

그림14 : 철학자들과 카지노 그리고 사이드체인

표에 대해서는 많은 설명이 필요하지는 않을 것 같습니다. 춤추는 철학자의 문제와 카지노 문제는 충분히 위쪽에 서술되어 있고, 플라즈마체인 자체에 관한 내용은 2018.10.12 온더의 미니세미나 영상과 자료를 참조해 주시면 될 것 같습니다. 단순히 내용을 읽고 넘어가기 보다는 차분히 알고 계시는 개념들을 떠올려보면서 각각의 행렬을 오버랩 해보시면 될 것 같습니다. 궁금하신 점이 생기실 경우 댓글을 달아주시면 보충하도록 하겠습니다.

데이터 가용성(Data Availability)

데이터 가용성 문제는 갑자기 튀어 나온 것처럼 보이지만, 사실 앞서 계속 설명했던 내용와 매우 긴밀한 관계가 있습니다.

춤추는 철학자 문제를 풀다 보면 이런 상황이 발생할 수 있습니다.

“만약 카메라(감독)가 필름을 내어주지 않을 경우 어떻하지?”

우리는 앞의 철학자들의 검증게임의 사례를 다루면서 암묵적으로 특정한 필름의 내용을 요구하면 카메라는 언제든지 그 내용을 꺼내 줄 것이다라는 가정을 해버렸습니다(순진한 녀석들 같으니..)

철학자 A와 카메라 감독이 만약 서로 고용관계가 있다면 어떻게 될까요? 그리고 올바른 카메라 촬영을 위해서 심판에게 많은 돈을 예치해두고 잘못했을 경우 예치금을 까이겠다고 서명까지 해버렸다면 어떨까요? 만약 철학자 A가 비위(필름조작)등을 했을 때, 과연 카메라에 있는 필름을 순순히 내어줄까요?

사실 카메라 감독이 필름을 꺼내는 그 순간 바로 철학자 A는 본인이 이 게임에서 지게될지 이기게 될지 알게 될 것입니다. 그럼 바로 꺼낸 필름을 본인 주머니에 숨겨 버리겠죠. 필름이 가용하지 않은(unavailable) 상황이 되어버리는 겁니다.

데이터 가용성 문제란 바로 이러한 상황을 묘사하는 개념입니다.

진실의 공판에 올라기기 위해서는 진실의 진위여부를 판단할 수 있는 증거가 필요한데 주어진 역할과 상황에 의해서 이러한 증거가 제출되지 않을 가능성 이 매우 높다는 것이죠.

게다가 더 큰 문제가 도사리고 있습니다. 만약 필름을 받는사람 입장에서는 받지 않았는데, “본인이 받지 않았다”는걸 어떻게 증명할 수 있을까요? 그리고 만약, “받았는데 받지 않았다고 우기는 상황”은 어떠합니까?

앞에 멀리 걸아가고 있는 친구를 소리를 질러 부르는 상황이 있다고 가정 해 봅시다. 멀리있는 친구를 B, 소리치는 친구를 A라고 해보겠습니다. A는 아무말도 안했지만 B를 나무랍니다.

A : “너 내가 불렀는데 왜 안돌아봤어?”

B입장에서는 황당할 수 있지만, 여기서 당사자들끼리 불편하게 왈가왈부 하지 않고, 제3자 C를 불렀다고 가정해봅시다. 이러한 문제를 객관적으로 판단하게 하기 위해서는 증거가 필요한데, C는 B에게 이런말을 합니다.

C : “A가 당신을 부르지 않았다는 것을 증명해보세요”

B : “..?????”

법률에도 증명책임이라는 비슷한 개념이 있습니다만, 중요한 점은 문제를 제기한 사람이 그러한 증명을 해야 하는데, 상황의 특수성 때문에 이러한 부존재증명을 하기가 매우 어렵다는 것이죠. 그래서 블록체인 연구자들 사이에서 이러한 데이터 가용성 문제는** 난제로 분류**되어 있으며, 이 이슈는 샤딩(sharding), 플라즈마(plasma)와 같은 블록체인의 성능(scalability)를 해결하기 위한 솔루션들이 진척되어 가는 과정에서 연구자들을 엄청나게 괴롭히고 있습니다.

지금까지는 계속 비유를 통해 데이터 가용성 문제를 설명드렸지만, 블록체인 쪽에서 조금 더 기술적인 설명과 배경이 필요하신 분들은 온더의 연구원 JAKE님이 쓰신 데이터 가용성 연재글과 앞으로 작성될 예정인 온더의 박정원(aiden) 연구원님이 작성하실 글을 참조하시면 더 깊은 이해에 도움이 되실 것 같습니다.

앞선 모든 모든것은 무엇을 위해 존재할까?

그림15 : 우리는 언제나 나침반이 필요하다

정글에서는 수많은 나무가 시야를 가려 방향을 잃기 쉽기 때문에 종종 높은 곳으로 올라가 멀리 보고 내가 가는 방향이 어느 곳인지 파악할 필요가 있습니다. 블록체인 연구도 비슷한데, 너무나 빠르고 많은 연구과 개발산출물들이 매일 쏟아지다 보니 각각의 결과들만 미시적으로 살펴 보다가는 방향을 잃고 엉뚱한 곳으로 나아갈 가능성이 매우 높습니다.

사실은 앞에서 다뤄던 사이드체인(플라즈마체인), 검증게임(춤추는 철학자 문제), 그리고 데이터 가용성까지의 도구들을 관통하는 거대한 사상이 하나 있습니다. 공학에서는 설계 철학 혹은 설계 목표라고 불리기도 하는 것이죠. 짧은 한 단어입니다.

탈중앙화(Decentralization)

가장 중요하면서도, 가장 혼란스럽고, 가장 논쟁적인 이 사상은 그러한 명성에 걸맞게 실무를 하는 시스템 설계자와 개발자 입장에서 매우 성가시고 또 그래서 타협하기 좋은 녀석입니다. 설계와 개발 과정에서 어려움에 봉착 할 때마다 매 순간 어디선가 탈중앙화를 포기하라는 섹시한 목소리가 사이렌의 노래처럼 울려오는데, 그 목소리를 따라가보면 여지없이 중앙화(Centralization)라는 늪에 빠지게 됩니다.

그래서 많은 프로젝트들이 이 늪에 빠져 노드 숫자를 줄이거나, 스스로의 높은 신뢰성을 강조하거나,** 투자자의 이익을 대변했다던지 혹은 과감하게 거버넌스가 **민주주의라는 거짓 선동, **혹은 이의제기(challenge) 절차 없이 구축해 놓고 사이드체인이라 광고**하면서까지 마치 본인들 스스로는 아무일 없는 것처럼 행동하지만, 조금만 가까이 가서 살펴봐도 악취가 진동하는걸 알 수 있죠.

사실 블록체인은 기술이고, 기술은 인간의 삶을 윤택하게 하고 세상을 지금보다 조금 더 낫게 만들기 위한 수단이자 도구입니다. 그리고 각각의 도구는 그것의 고유한 목적과 특징을 가지고 있으며, 그러한 목적달성을 위해서 쓰여질 때 가장 빛을 냅니다.

기존 중앙화된 시스템 입장에서 봤을 때, 기존의 문제를 해결해 왔던 도구들 관점에서 봤을 때, 이 블록체인이라는 도구는 매우 비효율적이고 또 너무 쓸때 없는 곳에 많은 신경을 쓰는 것처럼 보입니다. 이는 일견 사실이고 또 실제로도 그렇습니다. 기존 데이터베이스 시스템 관점에서 블록체인이란 오히려 퇴보한 형태라고 보시는 분도 있었으니까요. 그런데 그것은 보는 각도를 약간 틀어보면 이는 오히려 엄청난 진일보가 되게 됩니다. 블록체인이 만들어낸 서로간의 신뢰, 의미가 사라진 금융 국경, 공격받기 힘들고 멈추지 않는 시스템, 힘들어진 담합 등 유아기 단계의 산업(infant stage industry)이 이뤄낸 것이라고 믿기 어려운 현재까지의 결과만으로도 이미 혁명이라고 부르기에 부족함이 없어 보입니다.

지금도 탈중앙화 진영에서는 이 소중한 가치를 지키기 위해서 수 많은 분야에서 수많은 연구자가 밤새 노트북 모니터를 밝히며 조금씩 기술의 한계를 깨 나가고 있습니다. 이 글이 그분들의 연구개발을 진행해 나가는 과정에서 도움말과 같은 작은 이정표가 되길 바라며 이만 글을 마칩니다.

감사합니다.

온더는 이 글에서 다뤘던 거의 모든 개념에 대한 구체적인 설계/개발/연구를 진행하고 있습니다. 사이드체인과 플라즈마 체인에 관심을 가지고 계시는 기업, 이를 실제 서비스에 적용하고자 하는 팀, 여기에 기여하고 함께 연구하고 발전시키고자 하시는 연구자 분들이 계시면 아래의 채널을 통해 언제든지 연락,질문, 제안을 해주시기 바랍니다. 온더는 문은 열려있습니다^^

Related Links