지난 9편에서는 탈 중앙화된 자율조직, 추가적인 어플리케이션에 관한 내용을 다뤘습니다. 탈 중앙화된 자율조직, 즉 DAO의 기본 개념은 다수의 구성원의 동의하에 조직 자금운용 권한 및 코드 변경 권한을 갖는다는 것이며, 구성원들은 그 조직의 운영자금을 어떻게 배분할지를 공동으로 결정하는 것입니다. DAO를 제작하기 위한 가장 간단한 디자인은 구성원 2/3이 동의 혹은 거부 하였을 경우 저절로 코드가 변경되는 컨셉이며, 어떤 변경이던지 구성원의 2/3의 투표를 받았을 경우 코드를 변경, 집행하는 트랜잭션이 실행될 것입니다.
이러한 방식에서 조금더 발전된 형태를 제공하기 위한 방법으로는 내장 투표 기능을 이용하여 트랜잭션을 송신하거나, 투표위임등의 기능들이 있습니다. 투표 위임을 통해 누구에게나 자신을 위해 투표할 수 있도록 위임할 수 있고, 또 이 권한은 다른 사람에게 다시 전가가 될 수 있습니다. A가 B에게 위임하고, B는 C에게 위임하면, C가 A의 투표를 결정할 수 있다는 의미입니다.
이러한 설계를 통해서 DAO는 탈 중앙화된 커뮤니티로 유기적으로 성장할 수 있으며, 더 나아가 누가 구성원인지 아닌지를 판단하는 기능을 전문가들에게 위임할 수 있도록 해줄것입니다. (물론 "현행시스템"과 달리, 각 커뮤니티 구성원들의 의견이 바뀜에 따라, 전문가들이 있을 수도 없을 수도 있습니다.)
이더리움 플랫폼을 활용하여 개발할 수 있는 추가적인 어플리케이션의 종류로는 예금용 전자지갑, 보험, 탈중앙화된 데이터피드, 스마트 멀티시그 공탁 계좌, 클라우드 컴퓨팅, P2P 도박, 블록체인사으이 탈중앙화된 장터 등이 있을것입니다.
수정된 GHOST 도입(Modified GHOST Implementation)
* GHOST(Greedy Heaviest Observed Subtree)프로토콜은2013년 12월 Yonatan Sompolinsky와 Aviv Zohar에 의해 처음으로 도입된 혁신적인 기술입니다.
새롭게 생성된 블록들은 네트워크를 통해 전파되는데 일정한 시간이 소요됩니다, 만일 채굴자 A가 하나의 블록을 채굴했고, 이 블록이 채굴자 B에게 전파되기전에 채굴자 B가 또 다른 하나의 블록을 채굴했다고 가정했을 경우 채굴자 B의 블록은 스테일 블록이되어, 결국 낭비될 것이고, 이는 네트워크 보안에 기여하지 못하게 될것입니다.
비트코인의 블록체인의 경우 가장 긴 블록을 유지할 경우 유효한 블록체인이며, 결국 A는 단순히 크기가 크다는 사실 자체만으로 훨씬 더 높은 효율성을 가지게 됩니다.
이러한 두가지 효과가 결합되어서, 블록주기가 짧은 블록체인에서는, 높은 해시 파워 점유율을 가진 단일한 풀이 채굴 과정에 대한 사실상의 통제권을 가지게 될 가능성이 매우 높아지기 때문에 중앙 중앙집중화(centralization) 이슈가 발생할 수 있습니다.
* 내용을 조금더 보충해보자면, 더 많은 사용자가 네트워크에 참여할 경우 탈 중앙화된 시스템의 네트워크는 더 높은 보안성을 가지게됩니다. 하지만 이러한 네트워크의 전파 속도 문제, 혹은 높은 해시율을 가진 사용자로 인하여 스테일 블록, 즉 고아 블록이 발생할 경우 스테일 블록을 생성한 사용자는 네트워크에 아무런 기여를 하지 못한것으로 인정되며, 참여율이 조저해질 수 밖에 없으며, 이는 중앙 집중화 이슈를 야기할 수 있게되는것입니다.
Yonatan Sompolinsky와 Aviv Zohar가 설명했듯이, GHOST는 네트워크 보안 손실의 문제점을 해결하기 위하여 어느 체인이 "가장 긴(longest)"것인지 계산하는 과정에서 스테일 블록 정보까지 포함하게됩니다. 이는 어느 블록이 가장 큰 전체 작업 증명을 가지고 있는지 계산함에 있어서, 그 블록의 모블록(parent)과 그 조상(ancestors) 뿐만 아니라, 블록의 스테일 자손(stale descendants, 이더리움의 용어로는 "삼촌"), 까지도 포함하게됩니다.
이더리움에서는 Sompolinsky와 Zohar가 설명한 프로토콜을 넘어서서, 스테일 블록들에 대해서도 블록보상을 제공함으로써 중앙화라는 두번째 문제를 해결할것입니다. 기존의 아무런 보상이 없던 스테일 블록에도 기본 보상의 87.5%를 제공 하며, 그 스테일 블록을 포함하고 있는 사촌이 나머지 12.5%를 제공 받을 수 있습니다. (하지만 스테일 블록, 즉 삼촌 블록이나, 사촌 블록에는 수수료에 대한 보상은 제공하지 않습니다.)
* 이더리움에서는 7단계 레발만을 포함하는 단순화된 GHOST 버전을 구혀하며, 다음과 같이 구체적으로 정의됩니다.
이더리움의 블록체인에서 7세대만 삼촌을 포함할 수 있도록 제한된 GHOST 버전을 사용하는 이유는 크게 2가지가 있습니다.
첫째, 제한된 GHOST를 사용하지 않고, 무제한 GHOST를 사용할 경우 하나의 블록에 대해 어떤 삼촌이 유효한지에 대한 검증 과정, 즉 계산 과정이 매우 복잡하게 만드는 경향이 있습니다.
둘째, 만일 이더리움과 같은 방식의 보상을 하면서도 무제한 GHOST를 적용하게 될 경우 채굴자들이 공격자의 체인이 아니라 주체인(mainchain)에서 채굴를 할 동기를 잃게 될 것입니다. (보상이 주어지기 때문에 주 체인에서 할 이유, 즉 동기가 없어진다는 의미인것 같습니다.)
블록체인에 올려지는 각 트랜잭션은 다운로드하고, 검증하기 위하여 네트워크 자원을 소모하기 때문에, 남용을 방지하는 어떠한 규제 메커니즘이 필요합니다. 일반적으로는 트랜잭션 수수료가 필요하며, 비트코인에서는 순수하게 자발적인 수수료를 징수하면서, 채굴자들이 게이트키퍼(gatekeeper)로서의 역할을 하고 유동적으로 최저액을 설정하도록 하였습니다. 이런 접근 방법은 "시장-기반"이기 때문에, 채굴자와 트랜잭션 송신자들간의 수요와 공급이 그 가격을 결정한다는 이유로 비트코인 커뮤니티에서 매우 환영 받았습니다.
하지만 이러한 사고 방식에는 문제점이 있는데, 그 문제점은 트랜잭션 처리는 시장에서 일어나는 것이 아니라는점입니다. 트랜잭션 처리를 채굴자가 송신자에게 제공하는 하나의 서비스로 해석하는 것이 직관적으로 솔깃해 보이지만 실제로는 채굴자가 포함하는 모든 트랜잭션들은 네트워크의 모든 노드들에 의해 처리되는것입니다.
따라서 트랜잭션 처리에 필요한 대부분의 비용은 그 트랜잭션을 포함할지 말지를 결정하는 채굴자들이 아니라 제3자가 부담하고 있는것입니다. 그러므로 공유지의 비극(tragedy-of-the-commons)문제들이 매우 일어나기 쉽다는 문제점이 있습니다.
* 이러한 시장 기반 메커니즘의 결함자체를 다음과 같은 전제들로 상쇄하고 있습니다.
k
개의 작업들(operations)을 초래하는데, 이 트랙잭션을 포함하는 채굴자에게 kR
만큼의 보상을 제공하게 된다. 여기서 R
은
송신자에 의해서 설정되고, k
와 R
은 (대략적으로) 채굴자에게 사전에 노출된다.C
만큼의 처리비용을 가진다(즉, 모든 노드들은 똑같은 효율성을 가지고 있다).1/N
)를 가지고 있다.
채굴자는 다음번 블록을 처리할 1/N
확률을 가지고 있으며, 이 채굴자에게 처리 비용은 단순히 KC
가 됩니다.
그러므로 채굴자들은 KR
/N
이거나, R > NC
일때 트랜잭션들을 포함하려고 할 것입니다. 따라서 기대 보상은 KR/N
라는 공식이 성립됩니다.
여기서 R은 송신자에 의해 제공된 단위작업(pr-operation )당 수수료이며, 따라서 이것은 송신자가 그 트랜잭션에서 얻게 될 혜택에 대한 하한값이 되며, NC는 하나의 작업을 처리하기 위해 전체 네트워크에 부과될 비용입니다.
따라서 채굴자들은 비용보다 전체 공리적인 혜택이 큰 트랜잭션들만 포함하려 하는 인센티브를 갖게되지만, 현실에서는 이러한 가정들이 맞지 않은 몇가지 중요한 차이점들이 있습니다.
(1)번의 내용은 채굴자가 스테일 블록이될 확률을 줄이기 위해서 더 적은 수의 트랜잭션들을 포함하게되는 경향을 제공한다는 의미이며,
(2)번의 내용은 비채굴 완전 노드들이 존재함으로써 NC
즉, 전체 네트워크 비용을 증가 시키게 된다는 의미입니다.
하지만 1번의 내용과 2번의 내용은 부분적으로 서로의 문제점을 상쇄할 수 있습니다.
여기서 주요한 문제는 (3)번의 내용과, (4)번의 내용인데, 이것들을 해결하기 위해서는 플로팅 상한값(floating cap)을 도입해야 합니다.
어떤 블록이던지 BLK_LIMIT_FACTOR
곱하기 장기 지수 이동평균(the long-term exponential moving average)
보다 더 많은 오퍼레이션들을 가질 수 없다는 것입니다.
1 | blk.oplimit = floor((blk.parent.oplimit * (EMAFACTOR - 1) + floor(parent.opcount * BLK_LIMIT_FACTOR)) / EMA_FACTOR) | cs |
BLK_LIMIT_FACTOR 와 EMA_FACTOR은 상수이며 각각 잠정적으로 65536와 1.5로 정해질 것이지만, 추후 분석 후에 바뀔 가능성이 높습니다. 비트코인에서는 블록의 크기가 물리적으로 더 클 경우 네트워크에 전파되는 시간이 더 오래 소요됩니다. 또한, 검증을 처리하는데 있어서 더 오랜 시간이 필요하며, 이는 곧 스테일 블록을 생성할 확률이 높다는 의미입니다. 그렇기 때문에 스테일 블록이 될 가능성이 높은 크기가 큰 블록은 생성하지 않는 문제점이 있습니다.
이더리움에서도 높은 가스(GAS)사용 블록은 전파되는데 더 오랜 시간이 소요되며, 이것은 크기가 물리적으로 크다는 점과, 트랜잭션 상태변화들(state tansitions)을 검증 처리하는데 더 오랜 시간이 필요하다는 의미입니다. 이러한 지연 불이익(delay disincentive)은 비트코인에서는 중요한 고려사항이지만, 이더리움에서는 GHOST 프로토콜 덕분에 큰 문제가 되지 않습니다. 따라서 조정된 블록 리미트(block limit)로 인해, 보다 안정적인 baseline을 얻을 수 있게됩니다.
오늘 학습한 내용이 다소 어려울수 있습니다만, 조금더 심플하게 다시 정리해보도록 하겠습니다. 우선 기존의 블록체인에는 아래와 같은 2가지 문제점이 있었습니다.
(1)번의 내용은 스테일 블록이 발생할 경우, 해당 블록은 버려지기 때문에 네트워크의 자원은 소모하였지만, 불필요한 연산 작업이 되어 네트워크의 자원적 낭비뿐만 아니라 네트워크의 보안에도 기여하지 못하는 문제점이 발생한다는 것입니다.
(2)번의 내용도 이와 비슷한 맥락으로 스테일 블록에는 아무런 보상이 따르지 않기 때문에 더 높은 해시 파워를 가진 사용자만이 보상을 가져가게되고, 이는 네트워크에 특정 풀에 의해서 중앙 집중화가 이루어질 수 있는 계기가 될 수 있다는 내용입니다.
* GHOST는 위의 두가지 문제점을 해결하기 위하여, 가장 긴 체인을 계산하는 과정에서 스테일 블록 정보까지 포함함으로써 네트워크의 보안적 낭비를 해결하고 하였습니다.
비트코인에서는 블록의 크기가 물리적으로 더 클 경우 네트워크에 전파되는 시간이 더 오래 소요됩니다. 또한, 검증을 처리하는데 있어서 더 오랜 시간이 필요하며, 이는 곧 스테일 블록을 생성할 확률이 높다는 의미입니다. 그렇기 때문에 스테일 블록이 될 가능성이 높은 크기가 큰 블록은 생성하지 않는 문제점이 있습니다.
이더리움은 GHOST 프로토콜을 넘어서 스테일 블록에 대해서도 블록 보상을 제공함으로써 중앙화라는 문제점까지 해결하고자 하였습니다.
이더리움에서도 비트코인과 마찬가지로 높은 가스(GAS)를 사용하는 블록은 전파되는데 더 오랜 시간이 소요되며, 트랜잭션 상태 변화들(state transition)을 검증 처리하는데 더 오랜 시간이 필요하다는 의미입니다. 하지만 이더리움에서는 GHOST 프로토콜 덕분에 지연 불이익(delay disincentive)은 큰 문제가 되지 않습니다. (스테일 블록에도 보상이 주어지기 때문입니다).