brunch

You can make anything
by writing

C.S.Lewis

by SKKRYPTO Mar 06. 2019

[Tezos X Skkrypto] 테조스 공부노트 #2

# Governance on chain – Tezos

 블록체인은 임의의 수정이 불가능한 공유 원장을 만들었습니다. 그러나, 체인은 바꿀 수 없어도 사람은 바꿀 수 있습니다. 결국 블록체인을 운영하는 것은 사람이니까요. 그렇기 때문에 결국, 블록체인을 도입해도 그 체인의 운명을 결정짓는 것은 사람간의 거버넌스라고 할 수 있습니다. 지금까지 대부분의 블록체인은 오프체인 거버넌스로 이루 어졌습니다. 플랫폼을 개발한 개발팀 혹은 재단이 투표등의 행위를 거쳐 플랫폼의 운영을 결정했고, 이에 반대하는 사람들은 종종 아예 새로운 분기 – 하드포크 - 를 선언했습니다.


 블록체인의 1세대, 2세대라 불리는 비트코인과 이더리움 모두 하드포크를 경험했습니다. 특히 비트코인의 경우 정말 많은 포크를 거쳤는데, 라이트코인 같은 계통을 제외하고 비트코인이 앞에 붙은 코인만 따져도 시총 100위 안에 5개가 있을 정도입니다. 이더리움 또한 다들 알고 있듯 하드포크를 통해 이더리움과 이더리움 클래식으로 나누어 졌습니다. 물론 모든 포크에는 이유가 있습니다. 각자 정당한 이유가 있었기 때문에 포크를 하고 다른 길을 걷지만, 그럼에도 불구하고 포크를 거쳤을 때 그 네트워크의 견고함이 약해지는 것은 명백합니다.


 의견 차이로 인한 분열뿐만 아니라, 소프트웨어 업그레이드도 종종 하드포크의 이유가 되기도 합니다. 대부분의 개발자는 최대한 호환성을 챙겨가려 노력하지만, 합의 과정이나 실행환경의 변경이 필요하다면 부득이하게 이전의 역사와 단절점이 생기게 됩니다. 예를 들어 하이퍼레저로 컨소시엄을 구축한 상황을 가정해보면 컨소시엄 도중 인증기관이나 합의 알고리즘을 바꾸고자 한다면 서버를 내린 후 다시 설정을 해서 새로운 네트워크를 시작해야 합니다. 그렇다면 그것은 더 이상 이전의 네트워크와 연결되어있지 않게 되는 것입니다.


 이런 하드포크가 갖는 치명적인 문제는 커뮤니티의 분열입니다. 블록체인은 기본적으로 네트워크이기 때문에 네트워크에 참여하는 인원은 그 네트워크의 건강상태이자 수명입니다. 전체 인원이 N이고 포크에 참여하는 인원이 P라고 할 때(N >= P), 포크 이후 기존 네트워크에는 N-P명, 그리고 포크해서 나간 네트워크에는 P가 남게 되는데 이런 상황이 반복될 경우 결국 최후에 남는 것은 개인밖에 없을 것입니다. 그 지점에 더 이상 우리가 꿈꾸던 네트워크는 없습니다.


 기존의 블록체인에서는 문제가 발생했을 경우 의사결정 및 개선이 모두 오프체인에서 이루어 지고 있으며 이러한 시스템은 결국 위 한계를 타파할 수 없습니다. 모든 개인은 각자의 생각을 갖고 있고 생각이 받아들여지지 않을 때 취할 수 있는 선택이 하드포크밖에 없다면 종말은 필연적입니다. 현재 시점 상용 플랫폼 중 의견 차이로 인한 분열과 기술 개선으로 인한 단절을 모두 예방할 수 있는 플랫폼은 없다고 봐도 무방합니다. 


바로 이 지점이 테조스가 인식한 문제이며 또 해결한 문제입니다. 테조스는 스스로를 “자가 개정하는 암호 원장”이라고 부릅니다. 핵심이 되는 지점은 바로 ‘자가 개정’입니다. 테조스는 체인 위에서 체인의 정지나 분기 없이 체인의 모든 것을 바꿀 수 있습니다. 이러한 기술로 상술한 모든 한계에서 벗어난 것입니다. 과연 그것이 어떻게 가능할까요? 


 기존의 블록체인 플랫폼이 하나의 완성품이었다면, 테조스는 그런 완성품을 만들어내고 관리할 수 있는 도구상자에 가깝습니다. 

 그림1에 있는 문어가 테조스입니다. (다리는 9개이지만 문어인 것으로 합니다) 우리는 문어의 뇌가 프로토콜로 되어있음을 확인할 수 있습니다. 이 프로토콜이 우리가 아는 ‘블록체인’을 추상화한 것입니다. 우리가 아는 모든 체인은 기본적으로 프로토콜입니다. 즉, 프로토콜 자체를 모듈화해 관리할 수 있는 구조가 있다면, 그 구조를 통해서 어떤 체인도 자유자재로 바꿔가며 구현할 수 있습니다. 테조스는 이러한 구조를 이용해서 다른 부분들을 모두 유지한 채 문어의 머리만 바꿈으로써 하드포크를 대체할 수 있습니다. 기존에 오프체인의 영역을 온체인으로 끌어들인 것입니다. 테조스가 이러한 기능을 어떻게 가능케 했을까요.


한번 생각해봅시다. 비트코인은 무엇으로 이루어져 있을까요? 네트워크 안에서 사용하는 화폐(BTC), 그 화폐의 출납을 기록한 장부(블록체인), 장부를 기록할 수 있는 노드, 그리고 다른 여러 가지로 이루어져 있다고 할 수 있을 것 같습니다. 이더리움은 어떤가요? 비트코인의 아키텍쳐에 더해 EVM과 스마트계약, 그리고 체인 생성 규칙의 차이 등을 포함하고 있습니다(콘스탄티노플은 제외하고 생각하겠습니다). 하이퍼레저 또한 여러 사항이 정의되어 있고, 그 명세를 따라 구현한 구현체를 ‘하이퍼레저’라고 부를 수 있습니다.


 위 몇몇 예시에서 알 수 있듯 대부분의 체인들은 그 특질을 일반화할 수 있습니다(사실 하이퍼레저는 이미 스스로를 ‘프로토콜’로서 칭하고 있습니다). 데이터를 저장하는 저장소, 통신을 위한 P2P, 노드, 그리고 컨센서스 내지는 프로토콜이 갖춰져 있으면 그것을 블록체인 플랫폼이라고 부를 수 있으며 테조스는 이런 개념을 형식화하여 프로그램으로 만들었습니다. 그 방식이 어떻게 이루어졌는지 살펴보겠습니다.


 스스로를 개정하는 부분은 경제적 프로토콜(문어의 초록색 부분)로, 소스 코드에선 종종 프로토콜이나 프로토(proto)로 줄여서 부릅니다. 그리고 테조스 노드의 나머지 부분(파란색 문어)은 셸입니다. 프로토콜은 트랜잭션을 해석하고, 다른 관리 동작을 합니다. 또한, 불량 블록을 검출하는 역할도 수행하고 있습니다. 염두에 둬야하는 것이, 프로토콜은 늘 하나의 블록체인을 바라본다는 것입니다. 다른 말로 하면 프로토콜은 제네시스부터 시작한 블록들의 선형 시퀀스를 바라보고 있다고 할 수 있습니다. 프로토콜은 자신이 노드가 다른 헤드를 제안할 수 있는 열린 네트워크 속에 살고 있다는 사실을 알 수 없습니다.


반면 셸은 헤드들의 존재를 알고 있고 있습니다. 셸은 베이커들(새 블록을 구워내는 프로그램)이 보내는 다양한 체인 제안 중 하나를 선택할 의무를 가집니다. 또한 셸은 대안 체인을 고르고 다운로드하며, 프로토콜에 먹입니다. 즉 다시 말해 에러를 확인하고, 절대적인 점수를 매길 책임을 지고 있는 것입니다. 그 후 셸은 간단히 가장 높은 점수를 가진 체인의 유효한 헤드를 선택하게 됩니다. 이런 일을 하는 셸의 일부를 검증자(Validator)라 부릅니다.


셸의 나머지는 P2P 계층, 블록의 물리 저장소, 그리고 노드가 체인데이터를 노드 및 원장의 상태(버전관리되고 있는)에 전송하는 것을 허용하는 동작으로 구성되어 있습니다. 검증자, P2P 계층, 그리고 저장소 사이엔 분산 데이터베이스라는 컴포넌트가 있습니다. 분산 데이터베이스는 검증자에게 새로운 체인 데이터를 전달하고 복사하는 일을 추상화합니다.


프로토콜은 개조된 오카멜 컴파일러(그림의 왼쪽 초록색 부분)을 통해 컴파일됩니다. 오카멜에 대해서는 후에 더 자세하게 다뤄보도록 합시다. 컴파일러는 두가지 일을 하는데, 첫째로 프로토콜의 메인 모듈이 올바른 타입을 가지고 있는지 확인합니다. 좋은 접근법은 프로토콜을 하나의 플러그인으로 보는 것입니다. 특히 이 경우에는, 일반적인 플러그인의 인터페이스를 따른다는 것을 의미합니다. 그렇기 때문에 프로토콜 코드의 환경을 제한해 검증된 모듈 및 함수만 불러오도록 할 수 있습니다. 다시 말해 프로토콜을 플러그인으로 보는 것은 코드가 플러그인 API에서만 자료형을 불러온다는 것을 의미하며 이는 정적으로 강제되는 샌드박스 형식입니다.


마지막으로, RPC 계층(그림의 오른쪽 노란 부분)은 노드의 핵심 부분으로 클라이언트와 3자 응용프로그램, 그리고 데몬이 어떻게 노드와 상호작용하고 그 상태를 살필 수 있는 지를 정의한 것입니다. 이 컴포넌트는 주류가 사용하는 JSON 형식과 HTTP 프로토콜을 따르며 내부 라이브러리로는 `ocplib-resto`와 `ocplib-json-typed` (모듈 `Data_encoding`을 통해)을 사용합니다. JSON 스키마를 사용하기 때문에 완벽한 상호작용이 가능하고, 자체적으로 설명적입니다.


이번주는 테조스 문어를 해체해서 자세하게 살펴보았는데요, 어렵고 새로운 용어가 많이 나와 한번에 이해하기는 힘들 수도 있습니다. 몇몇 중요 용어나 개념들은 앞으로도 계속 등장하므로 다음에 조금 더 자세히 알아보겠습니다. 온체인 거버넌스는 모든 블록체인에게 중요한 개념인 동시에 테조스에게는 아이덴티티와도 같습니다. 이번 주차에 기술적 특성에 대해 알아보았고 다음 주차에는 온체인 거버넌스가 작동하는 절차에 대해 이야기하겠습니다. 감사합니다.


작성자: 구제성

연구팀: 김선우 구제성 이교영


 ## Reference- https://tezos.gitlab.io/master/whitedoc/the_big_picture.html

브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari