brunch

You can make anything
by writing

C.S.Lewis

by CURG in Seoul Jan 16. 2019

Bitcoin-NG 2부

Bitcoin-NG protocol 설명

    본 게시물은 bitcoin의 확장성 문제를 해결한 next generation blockchain protocol인 bitcoin-NG protocol 설명을 위해 작성되었다. 먼저 bitcoin-NG를 구성하는 2가지 종류의 block에 대해서 알아본다. 그다음으로 bitcoin-NG에서 발생할 수 있는 문제을 설명하고 그에 대해 bitcoin-NG 논문에서 제시한 문제 해결 방법을 설명한다.


본 게시물은 Ittay Eyal, et al. "Bitcoin-NG: A Scalable Blockchain Protocol", 2016을 기반으로 한다.


Bitcoin-NG란?

[그림 1] Bitcoin-NG overview

    Bitcoin-NG는 bitcoin과 마찬가지로 거래를 블록 단위로 정리하여 블록체인 원장에 저장하는 블록체인 프로토콜이다. 그러나 bitcoin-NG는 bitcoin과 달리 보안성과 같은 특성을 감소시키지 않고도 트랜잭션 처리 지연 시간과 처리량을 향상할 수 있다. 더 자세한 이해를 위해 bitcoin-NG protocol에 대한 설명을 하겠다.


    Bitcoin-NG에서는 시간을 epoch이라는 단위로 나눈다. 각 epoch 마다, 한 명의 리더가 선출이 되고 선출된 리더는 트랜잭션을 처리하는 역할을 담당한다. 이를 위해, bitcoin-NG protocol는 리더 선출을 위한 key block과 원장에 저장되는 트랜잭션들의 정보를 포함하는 microblock이라는 두 가지 종류의 block을 사용한다.


Key Blocks and Leader Election

[그림 2] Bitcoin-NG key block

    Bitcoin-NG에서 key block은 리더를 선출하는 데 사용되고 key block은 current Unix time과 이전 블록에 대한 참조, nonce 값, coinbase, target value들로 구성된다. Bitcoin와 동일하게 key block이 유효하기 위해서는 key block header의 암호화 해시가 target value보다 작아야 한다. 그러나 bitcoin의 기본적인 block과 달리 bitcoin-NG의 key block에는 트랜잭션의 내용이 아닌 차후 microblock의 검증을 위해 사용되는 리더의 public key가 포함된다.


    Bitcoin과 동일하게 노드가 key block을 생성하기 위해서는 암호화 퍼즐이 풀릴 때까지 nonce값을 변경하는 과정을 반복해야 한다. 또한 key block의 평균 생성 속도를 유지하기 위해, 생성 난이도는 key block 헤더의 unix time을 기준으로 target value를 변경한다. 포크의 경우, 노드는 key block에 대해 가장 많은 작업을 수행한 무거운 체인을 선택한다.


Microblocks

[그림 3] Bitcoin-NG microblock

   노드가 key block 생성에 성공할 경우, 해당 노드는 리더로 선정된다. 리더가 된 노드는 원장에 저장되는 트랜잭션들의 정보 포함하는 microblock을 생성할 수 있게 된다.


   Microblock은 key block과 달리 원장 부분과 header 부분으로 구성된다. Mircoblock의 header은 이전 블록에 대한 참조, current Unix time, ledger 항목의 암호화 해시 및 헤더의 암호화 서명으로 구성된다. 서명에는 chain의 최신 key block에 있는 public key와 일치하는 private key가 사용된다. Microblock이 유효하기 위해서는 microblock를 구성하고 있는 모든 값들이 유효해야 하며, 서명 또한 유효해야 한다. Key block과 달리 microblock은 POW 작업을 포함하지 않으므로 체인의 무게에 영향을 미치지 않는다.


Bitcoin-NG의 특징으로 인해 발생하는 문제와 해결책


    Bitcoin-NG는 bitcoin과 달리 key block를 microblock를 생성할 수 있는 리더를 선출하고 리더는 microblock 생성을 통해 트랜잭션들을 처리하고 해당 정보들을 원장에 저장할 수 있게 된다. Key block의 경우, PoW 작업을 수행하기 때문에 블록 생성 시간이 존재하지만, microblock의 경우는 PoW 작업을 수행하지 않기 때문에 리더는 microblock를 쉽고 빠르게 생성할 수 있다. 이러한 특징은 bitcoin-NG의 트랜잭션 처리량을 향상하지만 빠르게 생성되는 microblock에 의해 fork 발생 및 double-spending과 같은 공격이 쉬워진다. 이를 해결하기 위해 bitcoin-NG에서는 다음과 같은 방법을 제시한다.


Confirmation Time

[그림 4] Microblock fork

    Microblock 생성이 쉬움으로 그림 4와 같이 microblock fork 발생이 될 수 있다. Microblock fork 문제는 해당 노드가 새로 생긴 key block를 전달받을 경우 해결된다. 그러나 해당 노드는 관리하는 main chain에서 잘못 구성된 chain을 삭제하는 과정을 수행해야 한다. 따라서 새로운 key block의 전파 지연에 의해 체인을 잘라내는 과정이 발생하지 않도록 microblock으로 chain을 구성하기 이전에 네트워크 전파 시간을 고려하여 체인을 구성해야 한다.


Microblock fork prevention


    Microblock은 PoW 작업을 수행하지 않기 때문에 빠르게 생성될 수 있다. 이는 네트워크에서 노드들 사이에 동일해야 하는 state에 대해 서로 다른 state를 가질 수 있게 한다. 따라서 빠르게 생성되는 microblock은 리더의 double-spending attack에 대한 가능성이 상승시킨다. 이러한 점을 보완하기 위해, bitcoin-NG에서는 poison 트랜잭션을 사용한다. Poison 트랜잭션에는 잘못된 branch에 대한 정보가 포함되며, 이를 통해 branch를 생성한 리더의 보상을 무효화시킨다.


결론

[식 1] 블록체인 parameter간의 관계

    Bitcoin으로부터 시작된 blockchain 기술이 주목받고 있는 상황에서 blockchain 기술은 확장성의 한계와 직면하게 되었다. Bitcoin는 PoW를 사용하기 때문에 [식 1]과 같이 확장성을 향상하기 위해 지연 시간과 트랜잭션 처리량을 향상할 경우, 보안성이 감소되는 경향이 발생한다. 그러나 본 게시물에서 소개한 bitcoin-NG는 PoW를 사용하지만, 이와 상관없이 컨센서스 대기 시간은 네트워크 지름에 의해서만 제한되고 트랜잭션 처리량은 노드의 트랜잭션 처리 능력에만 제한된다.


    현재 블록체인의 확장성에 대한 확실한 해답은 존재하지 않는 것 같다. 그러나 bitcoin-NG protocol은 PoW를 사용하면서 [식 1]과 같은 PoW의 한계 뛰어넘어 보안성의 감소 없이도 트랜잭션 처리량을 향상하는 방법을 제시한다. 현재 블록체인의 확장성 향상에는 수많은 장애물들이 있다. 그러나 bitcoin-NG와 같이 확장성 향상 앞에 놓여 있는 장애물들을 해결하는 방법들이 제시되는 한 블록체인의 확장성 문제는 해결될 것으로 생각된다.



Edit by.


김상혁 | 서강대학교 분산처리 연구실 석사과정 | ksangh228@gmail.com

관심분야: 블록체인, 분산처리 시스템, 클라우드 컴퓨팅


박상현 | 서강대학교 컴퓨터공학과 학사과정 | twodude@naver.com

관심분야: 블록체인, 이종 컴퓨팅, 인공지능



[1] I. Eyal, A. E. Gencer, E. G. Sirer, and R. van Renesse. "Bitcoin-NG: A scalable blockchain protocol."

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