develop custom_top_html:no
default debug random = 2 / type = READ / detected = READ / doc_Srl = 9935444

이 글은 지난 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 : [email protected]

 

 

 

 

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

꼬리말

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

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

 

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

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

880
댓글 4
  • profile
    네오카인드 2018.10.15 22:28
    감사합니다 좋은글.
  • ?
    차즈라 2018.10.16 00:38

    아니 땡글을 뭘로 보고.. 이렇게 훌륭한 글을..아 이제보니 원래 연구하고 계신 분야의 글을 올리신 거군요.. 암튼 다른 사람을 이해 시키기 위해 대단히 애를 쓰신 글입니다.. 감사합니다.

  • ?
    AppA 2018.10.16 09:23
    노력이 깃든 글이네요. 고맙습니다~
  • ?
    켈틱프로스트 2018.10.17 16:47
    스캠 냄새가 진동하는 시장에서 온더는 진짜입니다.

List of Articles
번호 분류 제목 추천 수 조회 수 글쓴이 날짜
공지 [땡글운영위] 이사진 구성원 변경 공지 7 file 13 736
땡글운영위
2019.09.03
공지 로그인이 안되시는 분은 문의해주시기 바랍니다. 3 4 1583
땡글개발자
2019.08.21
공지 개인 정보 유출에 따른 사과문 54 file 8 3414
땡글개발자
2019.08.21
1412 개발 환율 API 입니다. 예전에 개발한 환율 API입니다. 땡글에 올린다는걸 이제야 하게됐습니다. JSON 형식으로 반환합니다.   기본 주소는 http://earthquake.kr:23490입니다. //웹브라우저에서는 호출이 불가능합니다. 또한 통화쌍을 선택... 3 2 4428
신재헌
2018.10.29
1411 질문 빗썸에서 매수매도주문은 3초에 한번밖에 안되나요?   현재 파이썬을 써서 빗썸 매도매수를 하고 있는데 매도 매수가 3초간격으로밖에 안되네요  좀 더 빨리 하는 방법이 없을까요?                     ------------------------------------- 꼬리말 * 게시글 내용 삭... 9 606
Mist.B
2018.10.29
1410 질문 litecoin 0.8 소스 관련 문의 드려요~       안녕하세요. 현재 라이트코인 0.8 소스를 가지고  컴파일 을 하고 있습니다.   소스 변경 때문에 그러는대 블록1~10 까지의 채굴 보상 수량을  10만 개로 수정을 하려 하는대 소스파일 main.cpp & main.h ... 5 447
은근슬쩍
2018.10.26
1409 개발 파이썬 공부 시작합니다!!   파이썬 공부해서 채굴 모니터링 프로그램과 자동 거래 시스템 만들어 보렵니다. 50만원에 자동 거래 시스템 만들어 달라고 구인 올렸다가 욕만먹었네요. 개발에서 손뗀지 10년이 살짝 넘었는데 되려나 모르겠습니다... 10 764
bestbester
2018.10.26
1408 질문 Web3.js로 할수있는 예시 몇개만 들어주시겠어요? Node.js 공부하면서 web3.js를 알게되었는데 최근에 블록체인 공부도 하고있었거든요. 친구들이랑 프로젝트를 하겠다는 목표로 공부해보고 싶은데 지금 운영되고 있는 웹사이트라던가 스타트업이 뭐가 있는지 정보좀 ... 2 556
네탈
2018.10.25
1407 질문 토큰에 채굴이라는 개념이 있나요?  Testnet에서 재미삼아 토큰을 발행해보면서 생긴 의문이라 질문드립니다.    Coin은 독자적인 블록체인 시스템으로 마이너들이 문제를 해결하여 블록을 생성하면 그에대한 보상으로    Coin을 지급받는다고 알고있습... 4 511
제닝
2018.10.24
1406 질문 [해결]yiimp 풀 에러 ... 문의드립니다.   여기 저기 찾아보니  데몬 탭 POW  를  POS 로 바꾸면 된다고 나와 바꾸어도 봤으나 똑같이 이런 에러가 나네요....  혹 무엇이 문제인지 조언좀 부탁드립니다.                           -----------------------... 7 file 507
치이스케
2018.10.24
1405 질문 리눅스에서 윈도우 월렛 빌딩하는 방법에 대해서 질문드립니다.     안녕하세요 3일전부터 이리 저리 알아보고 있는데...   일단 윈도우에서 빌딩하는 방법을 찾아 해메다가...  https://www.youtube.com/watch?v=lce8olyDFMI 위 링크를 찾아서 해봤지만... 실패했습니다 ㅠㅠ   그... 8 1 386
Ragon!!!
2018.10.22
1404 질문 개발을 목표로 삼고 계신분들과 소통하고싶습니다. 안녕하십니까 가입후 몇달만에 처음 글을 올려봅니다.   저는 처음 비트코인이 나왔을 때 부터 관심을 가지며   꼭 나만의 코인을 제작해야겠다는 목표가 생겨   지금이 땡글에 오게된게 아닌가 싶습니다.   블럭체인... 26 2 926
ZeripeDaniel
2018.10.22
1403 개발 mybb bbscoin 과 연동하였습니다. https://bbscoin.iptime.org   현재는 공인된 SSL 인증서가 아니라 경고메세지가 뜨는데 무시하고 접속하시면됩니다. (악성코드없어요;;)    곳 공식인증서로 교체하도록 하겠습니다.    https://bbs.money   에서 지... 4 file 4 558
redowl
2018.10.22
1402 질문 코인 열어보는 방법..   많은 코인 종류가 있는데요.. 개인이 어떤 코인이든 나의 컴퓨터로 가져와서 열어볼수 없나요? 지금 현제 모든 코인이 지갑이나 거래소등에 있잖아요. 코인을 만들려면 컴퓨터로 작성해야 될텐데.. 어떤 프로그램으... 18 617
스타이로
2018.10.21
1401 개발 롭스텐 하드포크는 실패? 사전 읽어 보기 https://www.coindeskkorea.com/ethereumconstantinople/?utm_inter=dable   먼저 위 링크의 글을 먼저 읽어보세요.   이더리움 테스트넷인 롭스텐의 콘스탄티노플 코드의 하드포크는 결국 실패로 결... 8 3 591
금마
2018.10.19
1400 개발 C#으로 자동매매/재정/차익 등 프로그램 제작해드립니다.   기존에 개발한 자동매매 프로그램 https://youtu.be/ptZD2_ttLlk     기획안만 준비하시면 어떠한 프로그램도 제작이 가능합니다.   소스코드 포함해서 전달해드립니다.   개발이 완료된 이후 유지보수가 필요 시 ... 1 1 1075
AAKQ
2018.10.18
1399 질문 초보자의 암호화폐 제작가능 여부와 도메인 사용에 대해서 문의드립니다. 안녕하세요.   크림메일입니다.   저는 비 이공계열 전공한 사람으로 PC/채굴기 조립정도만 할줄아는 왕초보자 입니다. 갑자기 암호화폐 제작에 대해서 공부가 하고 싶어져서, 어디서부터 어떻게 시작해할지 고민하다... 13 1 588
크림메일
2018.10.17
개발 춤추는 철학자의 문제, 검증 게임 그리고 사이드 체인과 데이터 가용성 이 글은 지난 10월 15일 미디엄에 게시된 글을 땡글로 옮긴 것 입니다. 읽어보시고 많은 피드백 부탁드립니다.   원본글 : https://medium.com/onther-tech/%EC%B6%A4%EC%B6%94%EB%8A%94-%EC%B2%A0%ED%95%99%EC%9E%9... 4 file 21 1475
철학자
2018.10.15
1397 개발 솔로풀 (SOLO POOL) 무료로 세팅해 드립니다.   솔로풀 운영하고 싶은데 못하시는분들, 채굴하고싶은 코인이 있는데 풀이 없어서 못하시는분들 연락주세요. 무료 세팅해드립니다.  광주광역시는 직접가서 세팅해드릴게요^^. 타지역은 서버설치후 원격접속해서 해... 17 18 1427
JjangGa
2018.10.14
1396 개발 자동 트레이닝 봇 프로그램 삽니다.     자동 트레이딩 봇 프로그램 삽니다.   1. 운영 환경 : linux 2. 개발언어 : 파이썬 3. 기능 : 거래소 등록, 자동 매매 페턴 입력/수정, 거래 중단/재개, 잔고 소진 알림 등등 4. 조건 : 소스 포함, 최초 1회 샛팅... 19 1534
bestbester
2018.10.14
1395 개발 마이닝풀 저렴하게 개발해드립니다.   각종 코인 마이닝풀 저렴하게 개발해드립니다. 프로그램 난이도에 따라 비용이 달라집니다. 간단한 세팅만 하는 마이닝풀은 100만원 입니다.   양식 업체명 연락처 코인소스 주소 코인채굴알고리즘 희망가격 위에 ... 1 577
sk8er123
2018.10.14
1394 질문 삭제한 글입니다 삭제한 글입니다 250
gqedfgq
2018.10.13
1393 개발 암호화폐 개발(?)중 라이트코인 소스라 감히 개발이라고 하긴 그렇지만...   개발하고 있습니다! 문제는, 동기화가 안되는데다가 윈도우 지갑/채굴을 어떻게 만들어야하는지 모른단거죠! 하핫!     아아 너무 힘들지만 한편으로는 너무 ... 3 1 896
인간45
2018.10.12
Board Pagination Prev 1 ... 10 11 12 13 14 15 16 17 18 19 ... 85 Next
/ 85

개인 정보 유출에 따른 안내

개인정보 유출에 따른 사과문

https://www.ddengle.com/board_free/11420106

8월20일 땡글 해킹사고 경과 보고

https://www.ddengle.com/board_free/11420345

로그인이 안되시는 분

https://www.ddengle.com/board_free/11420465
8월18일~20일 해커에 의해 땡글 사이트에서 땡글 회원님들의 아이디 및 비밀번호가 유출되고 있음을 발견하였습니다.
더이상 피해가 발생하지 않도록 조치된 상태이나 일부 사용자의 개인정보가 유출되었으며, 해커는 추가적으로 사용자 정보를 불법적으로 공개하겠다고 합니다.
  • 최근에 접속한 사용자의 경우 ID와 비번이 유출되었을 가능성이 높습니다. 최대 비번을 꼭 바꿔주시기 바랍니다. (특히 8월부터 8월21일까지)
  • 최근에 접속하지 않은 사용자의 경우에도 해커는 사용자 정보를 입수하여 그 일부 정보를 불법적으로 공개하였습니다.
  • 해커에 의한 사용자 도용을 방지하고자, 최근 수개월간 비번 변경을 하지 않은 약 1만8천명의 사용자를 이용정지시켰습니다.
이 글을 보시는 땡글 유저분은 자신이 계정이 정지된 상태라면 [email protected] 혹은 [email protected] 으로 메일주셔서 자신임을 간단히 인증하여 다시 계정을 활성화시키는 해킹 안내메일을 받으시기 바라며, 혹은 기존 계정 삭제 요청을 해주시기 바랍니다.
Close