develop custom_top_html:no
default debug random = 1 / type = READ / detected = READ

이 글은 지난 10월 15일 미디엄에 게시된 글을 땡글로 옮긴 것 입니다. 읽어보시고 많은 피드백 부탁드립니다.

 

원본글 : https://medium.com/onther-tech/%EC%B6%A4%EC%B6%94%EB%8A%94-%EC%B2%A0%ED%95%99%EC%9E%90%EC%9D%98-%EB%AC%B8%EC%A0%9C-%EA%B2%80%EC%A6%9D-%EA%B2%8C%EC%9E%84-%EA%B7%B8%EB%A6%AC%EA%B3%A0-%EC%82%AC%EC%9D%B4%EB%93%9C-%EC%B2%B4%EC%9D%B8%EA%B3%BC-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EA%B0%80%EC%9A%A9%EC%84%B1-dancing-philosophers-problem-verification-game-sidechain-fa2b5e1e0ca3

 

+++++++++++++++++++++++++++++++++++

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

“컴퓨터가 생각할 수 있다는 것은 잠수함이 수영할 수 있다는 것과 같다” — 에츠허르 다익스트라
0*qVkFAWh3w0ZXZyu3.jpg
의외로 섹시한(?) 철학자들

들어가는글

안녕하세요. 철학자(정순형)입니다.

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

손쉬운 논리 문제를 통해서 블록체인(사이드 체인) 기술자들 사이에서 논란의 중심이자 난제인 데이터 가용성(Data Availability) 문제가 발생한 맥락에 대한 힌트를 얻어가시기를 바랍니다.

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

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

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

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

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

1.한 박자의 단 하나의 동작만 할 수 있다
2.손을 위로 뻗거나, 아래로 뻗는 동작만 할 수 있다
3.이전 박자의 동작과 동일한 동작을 할 수 없다. 즉 계속 바꿔야 한다.

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

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

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

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

1*4-Vy9DGfvnIvZyGiPOJzQg.png
그림2 : ,,어떤자식이냐?

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

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

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

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

순서는 이렇습니다.

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

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

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

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

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

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

일단 필름 중간쯤을 대충 찍어서
그 부분을 가지고 와봐, 심판이 비교해줄게
if)만약 거기까지 이상이 없으면 다시 남은 필름의 중간을 찍어서 다시 심판한테 가져오고
else) 뭔가 이상하면 거기서 심판은 판단을 끝내버리면 된다. 잘못한 사람이 확실해졌으니까.

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

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

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

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

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

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

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

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

1*pZgAHjXrq6rT-DhcXdb9fw.png
그림5 : 네 번만에 결단났다. 중간에 하얀거 몰라도 된다.

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

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

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

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

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

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

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

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

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


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

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

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

진정한 글로벌 싱글톤 컴퓨터(Truely Global Singleton Computer)
 
1*9I9Md4onWt2ptKSdLK2aCw.png
그림7 : 데브콘1 에서 발표중인 가빈우드. 그래.. 이때가 좋았다. — 가빈우드는 이후 이더리움 재단을 떠나 패러티 테크놀리지를 설립한다. 그리고 얼마 뒤, “본인의 실수”로 당시 가격으로 3500억원을 허공에 고이 접어 나빌레리옹!

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

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

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

블록체인도 컴퓨터입니다. 다만 체인의 목적과 종류에 따라 스펙 및 기능이 다양할 뿐입니다(전자계산기도 컴퓨터죠). 잘 알려진 비트코인 이라는 zola 느린 mungChung한 컴퓨터는 장부 관리 밖에 못합니다.

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

일단 이걸 받아들이신 후에 다음으로 넘어가겠습니다.

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

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

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

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

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

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

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

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

0*kZ12Io_qtZz_BTqr.png
그림9 : 외계인 두마리

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

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

1*z4wK21dAevfRmTCrttMX6g.png
그림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 Knot과 Kelvin Flecher라는 개발자 녀석 둘이 비탈릭의 스펙을 바탕으로 코드를 만들어 버립니다. (첫 커밋이 비탈릭이 글을 써 올린날과 같은걸 보니 미리 준비하고 있었나봅니다.)

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

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

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

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

1*5C3MMYsrZD-KmH4JD1arag.png
그림12 : 출처 — 누구나 쉽게 이해하는 플라즈마 EVM

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

1*_0RSO1LHmYCy89qJRdMTiA.png
그림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관계가 형성된 체인을 사이드체인 혹은 플라즈마체인이라고 부릅니다

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

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

1*BlAzeIiHkLoYXRYjyU7w9g.png
그림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) 연구원님이 작성하실 글을 참조하시면 더 깊은 이해에 도움이 되실 것 같습니다.

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

0*02i-OJ2Y--vUPwfQ
그림15 : 우리는 언제나 나침반이 필요하다

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

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

탈중앙화(Decentralization)

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

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

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

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

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

감사합니다.

이더리움 블록체인 R&D 스타트업 온더에서는 이 글에서 다뤘던 거의 모든 개념에 대한 구체적인 설계/개발/연구를 진행하고 있습니다. 사이드체인과 플라즈마 체인에 관심을 가지고 계시는 기업, 이를 실제 서비스에 적용하고자 하는 팀, 여기에 기여하고 함께 연구하고 발전 시키고자 하시는 연구자 분들이 계시면 아래의 채널을 통해 언제든지 연락, 질문, 제안을 해주시기 바랍니다. 온더의 문은 열려있습니다^^
Github : https://github.com/onther-tech
Facebook : https://www.facebook.com/OntherInc
Telegram : @onther_blockchain
Blog : https://medium.com/onther-tech
E-mail : info@onther.io

 

 

 

 

-------------------------------------

꼬리말

* 게시글 내용 삭제레벨 강등

* 질문은 각 주제별 게시판에.

 

비트코인 암호화화폐 커뮤니티 땡글~ 땡글~

-------------------------------------

880

철학자님의 서명

다단계 코인을 판단하는 4가지 기준

  1. 백서(Whitepaper)의 참신성

  2. 운영진과 개발자들의 이력

  3. ICO의 투명성

  4. 코드의 존재(특히 블록체인 로직과 관련된)

by 철학자

댓글 4
default debug random = 0 / type = READ / detected = READ

List of Articles
번호 분류 제목 추천 수 조회 수 글쓴이 날짜
1840 개발 [긴급속보] Parity 개발팀이 비잔티움 하드포크에 관하여 연속적인 버그 발생으로 하드포크를 2주간 딜레이 ... https://www.reddit.com/r/ethereum/comments/76d97i/fork_should_be_postponed_until_2_w_of_no_bugs_as/dod6ece/   DAO 사태 이후 최대의 위기 같습니다.   Parity 팀이 4일 연속으로 Bug fix ... 42 17 39020
인텔지원
2017.10.15
1839 개발 이더리움은 인터넷을 지배하게 될까요? 아마도 땡글의 많은 분들은 이더리움으로 대박이 나셨고, 이더리움으로 큰 손실도 입으신 것으로 압니다.   이더리움은 비교적 최근까지도 땡글 내의 가장 인기있는 채굴 코인이었으며, 여전히 ... 16 8 38813
ethminer
2019.07.17
1838 개발 IPFS 따라해보기 IPFS(InterPlanetary File System)란 무엇인가? IPFS는 차세대 웹 3.0에 필수 요소의 하나라고 일컫을 수 있을만한 분산 저장소 구현중의 하나입니다.   기존 웹의 가장 큰 단점이라 할 수 있는 ... 19 10 34284
ethminer
2019.07.20
1837 질문 어짜피 켜있는 컴퓨터, 채굴에 전기세가 많이 늘어날까요? 개발자다 보니, 집에서 항상 서버를 돌리고 있습니다. 어떨땐 데스크톱으로.. 어떨땐 저사양 노트북으로, 어떨땐 게이밍노트북으로..   머 어떤 형태든 20여년간 계속 서버를 돌려왔는데요..   ... 12 1 28653
비폭력무저항
2020.09.14
1836 개발 클레이튼 소스 코드 간단 분석 소스분석이랄것까지는 없습니다만   현재 공개되어 있는 클레이튼 소스코드를 간단히 점검하는 기분으로 살펴보았습니다.   공개된 클레이튼 노드 소스코드 https://github.com/klaytn/klaytn   ... 18 6 28494
ethminer
2019.07.10
1835 개발 이더리움 작동원리의 이해(1)-동영상 -땡글 블록체인 강의 https://youtu.be/ddZ4wBfHGIo 주최 : 땡글 암호화폐 커뮤니티 후원 : 제너크립토(주) 해외거래소 이더리움 작동원리의 이해(워터마크).pdf ------------------------------------- 꼬리말 * 게... 23 file 29 27213
쌍둥아빠
2017.11.03
1834 개발 사달라 자동매매봇 업데이트 했습니다.     안녕하세요. 마루마루 입니다. 이전에 트레이딩봇 관련해서 테스트 버젼을 올렸었습니다.   이전글 참조 [ https://www.ddengle.com/traders_free/11193656 ]   당분간 유료화 예정이 없어 ... 1 3 26285
마루마루
2019.07.05
1833 질문 서버 이전중에 코인이 싹 사라졌습니다. 코인은 라이트코인 포크로 만든 새로운 코인이구요.. 서버 이전이 있어서 (A --> B)   1. A 서버에서 계정들과 코인수량 다 확인하고 2. B 서버에서 데몬 실행, 정상적으로 블록이 쌓이는 거 확... 13 2 26047
비폭력무저항
2019.06.14
1832 질문 빗썸 API 요즘도 연속 주문 안 되나요? 안녕하세요.   예전에 빗썸 API를 쓰다가 너무 문제가 많아서 안 쓰게 되었습니다.   가장 큰 문제는 연속으로 주문을 넣으면 거부된다는 점이었습니다.   그래서 3초 정도 여유를 두고 주문을 ... 0 25849
크리
2020.09.26
1831 개발 폰 & 컴 해커한테 다 뚫림! 보안 다 빵꾸남!     컴퓨터 전원을 켜는 순간 아무것도 안해도 100% 다 털린다. 폰 전원을 켜는 순간 아무것고 안해도 해커는 다 훔쳐간다!     https://www.youtube.com/watch?v=TU5LgrlJ4vQ&feature=youtu... 2 file 0 25778
내가총대멘다
2020.09.10
1830 질문 암호화폐/주식 교육 사이트를 만들고 있는데 PG,결제연동사가 허락을 안해주네요; 다른 동영상 강의 사이트들은 PG연동에 문제가 여태 없었는데   암호화폐랑 주식은 안된다고 거품물고 반대 하네요; (도서는 된다고 하는데.. 클라이언트가 책은 생각이 없다고 해서..)   그런 ... 9 1 25729
딥러닝은개뿔
2019.06.11
1829 개발 주식 자동 매매 프로그램 이번 주는 많이 바빴습니다. 회사 업무도 있었지만, 프로그램 만드는 일도 몇 일 걸렸습니다. ETF(Exchange Traded Fund) 자동 매매 프로그램입니다. 저가에 매수하고, 고가에 매도하는 전략이... 28 file 11 25687
drjoon
2014.11.21
1828 질문 자동 코인 거래를 위한 시스템? 을 개발하고 있습니다.   봇에 거래소 API 키 및 코인, 금액을 세팅하고 활성화 시키면 24시간 해당 코인의 가격을 보다가    지정된 가격에 도달하면 매수/매도를 걸게 되고, 동시에 라인 및 텔레그램으로 알람을 보내... 12 0 25566
몬스터에너지
2019.07.13
1827 개발 안녕하세요. 오픈소스로 자동 트레이딩+알림 봇 공유합니다.   파이썬3로 제작되었고요.   1. 텔레그램에서 문자인증 받고 자동으로 로그인하는 기능. 2. 텔레그램에서 해당 채널의 메시지를 자동으로 읽는 기능. 3. 읽은 메시지를 정규표현식으로 분석해서... 24 file 48 25503
소프트
2018.01.12
1826 개발 거래소 API 시세정보 및 알람 표시 HTML 예제 코드입니다. 안녕하세요. 땡글에 리플은 많이 달아보았지만 게시글은 처음이네요 ㅎㅎㅎ 자료실에 올릴까 개발에다 올릴까 고민했는데 html로 개발하실 분들 대상으로 보시라고 여기에 올립니다.   예전에 거... 35 file 23 25399
크로비
2017.08.02
1825 개발 이더리움 트랜젝션 처리속도를 25 TPS라고 하는 이유 이더리움의 초당 트랜젝션 처리 가능 회수는 15 TPS라고 알려져있습니다. 그러나 좀 더 찾아보면 20~25 TPS라는 내용도 나오긴 하는데 이에 대해서 간단히 살펴보도록 하겠습니다. 현재의 이더리... 3 file 4 25271
ethminer
2019.07.08
1824 개발 이더리움 블록체인과 영지식 증명 스터디원을 모집합니다^^   안녕하세요. 철학자입니다.   이더리움 블록체인 스터디그룹인 D-lab의 <Awesome ZKP>분과에서 공부 같이하실 스터디원을 모집합니다^^   <Awesome ZKP> 분과는 현업 이더리움 블록체인 개발자... 1 25077
철학자
2019.06.07
1823 개발 룸네트워크의 메인넷 소스코드 공개 룸네트워크를 들어보신 분 많으실겁니다. 룸네트워크의 Loom 토큰이 업비트에도 상장되어 있으며, DPoS 컨센서스 기반의 룸네트워크 메인넷, 일명 "플라즈마체인"(Plasma Chain)으로 유명하고, (... 4 file 3 24991
ethminer
2019.07.12
1822 개발 이더리움 노드 소스 (go-ethereum) 버전 1.9.0 릴리스 7월 10일 날짜로, 이더리움 코어 소스코드 (go-ethereum) 버전 1.8.0이 나온 2018년 2월 14일 이후로 1년 5개월여만에 1.9.0 버전이 나왔습니다! 간단 요약 - full/fast/archive sync 성능 향상 ... 1 file 3 24694
ethminer
2019.07.12
1821 개발 이런 코인있으면....   로그인 할때마다 코인자동으로 지급해주는 코인 어떨까요 웹싸이트들 대부분 수익모델이 제로입니다 이걸 로그인코인이 보상해주는 거조 채굴보상대신 로그인마다 코인을 주는거죠 그러면 수익... 1 1 24559
독수리
2019.06.11
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 92 Next
/ 92
default debug random = 0 / type = READ / detected = READ