이전 글 :

Hyperledger (Private blockchain), Composer(Fabric), Sawtooth 에 대하여


https://steemit.com/kr/@junn/hyperledger-private-blockchain-hyperledger-composer

에 이어, Hyperledger Sawtooth의 합의(consensus) 방식인 PoET(proof of elapsed time)에 대해 알아보려고 합니다. 관심 분야이기도 하고, 이에 대한 한글문서를 찾기가 어려워 제 나름대로 이해한 방향에 대해 적어보고자 합니다.

이미 블록체인에 대한 이해가 높은 분들이 많이 계시기에, 혹시 제가 잘못 이해한 것으로 보인는 부분이 있다면 댓글로 지적 부탁드리겠습니다.

빠른 해석만 보시려면 아래 4,5번 파트만 보시면 될 것 같습니다.

 

1. ‘합의’가 필요한 이유?

이미 많은 글에서 그 내용들이 설명되어있습니다. 그 중에 하나가 ‘초등학생들도 이해할 수 있는 블록체인 합의(도전! 불가능은 없다)‘(https://steemkr.com/kr/@yellowboy1010/75mtw) 입니다.

중앙에서 좌지우지 할 수 없는 분산원장의 특성상 여러 노드(node)들이 모여 네트워크를 구성하게 됩니다. 이 노드들은 쌓여진 데이터(블록)을 검증하는 작업을 해야하는데, 모든 노드들이 전부 이 과정에 참여할 수 는 없습니다. 그래서 이 과정에서 합의라는 것이 필요합니다.  그 대표적인 예가 PoW, PoS 등등 입니다. 조금더 간략하게 하면 아마도,

거래정보(transaction)를 모은 블록(block) 을 누가(어떤 노드)가 쌓게 하느냐? 에서 그 ‘누가 Who’를 정하는 과정이 합의라고 보면 될 것 같습니다.

2. 비잔틴 장군 문제

사실 이 문제는 블록체인 이전에 분산 컴퓨팅이라는 분야에서 이미 제기되었던 문제입니다. 그것을 작업증명이란 방식으로 풀어낸 것이 비트코인입니다.

분산 컴퓨팅에서 다수의 평등한 권한을 지닌 노드(node)들이 전달하고 전달받는 정보들 중에, 어떤 정보를 ‘진짜’로 받아들여야 하는가에 대한 문제가 비장틴 장군 문제 입니다. 다음의 글들에 잘 설명되어있습니다.

비잔틴 장군 문제의 개념 (https://steemit.com/kr/@twinbraid/1npff)
가상화폐와 비잔티움 장군의 문제 (https://steemit.com/kr/@antares007/cryptocurrency-and-byzantine-generals-problem)

좀 더 직접적인 예로 설명한 글은 아래 글입니다.
PoW 를 통한 비잔틴 오류 허용 (비잔틴 장군 문제) 해결 과정 (http://goodjoon.tistory.com/256)

완벽하게 다가오지는 않습니다만, 아 그냥 이런 문제가 발생할 수 있고 그에 대한 해결책이 여러가지구나..라고 알 수 있습니다.

 

3. 그렇다면 Private Blockchain에서는?

PoS, PoW 모두 결국 노드들의 참여를 독려(?)하기 위해 보상을 줍니다. 대표적인 예가 채굴을 통해 보상받는 블록체인이고, 채굴이라는 행위를 통해 ‘검증’에 대한 참여가 됩니다.

그러나 Private blockchain에서는 당근도 채찍도 없습니다. 왜냐면 private blockchain에 들어간 node들은 다 한통속(?)이니까요. 그렇게 때문에 사실 합의 알고리즘이 중요할 이유가 별로 없는 듯 합니다. 다만 이 합의를 얼마나 공정하게 만드는지, 그리고 computing power(혹은 resource)를 얼마나 덜 잡아먹는지, 그리고 이 private blockchain에 대한 공격을 막는 것이 관건이 되겠죠.

그래서 Hyperledger Sawtooth에서 들고나온 알고리즘이 바로 PoET(proof of elapsed time)입니다.

Specification : https://sawtooth.hyperledger.org/docs/core/releases/latest/architecture/poet.html

 

4. 위의 내용을 쉽게 설명하면 (참조 : https://blockgeeks.com/guides/what-is-hyperledger/)

1) Intel에서 SGX라는 기술을 만들어냈습니다. CPU의 명령어 집합같다고 보면 되는데, 이를 통해 안전하고 신뢰성 있는 환경을 하드웨어 적으로 구축하면 됩니다.

2) 참여한 노드들(validator) 중에서 가장 효율적인 작업이 가능한 노드를 leader로 삼는데, 이는 일종의 lottery 방식(비트코인과 비슷)입니다. 여기서 효율이란 비트코인과 같이 전력 소모가 발생하지 않는, 일종의 CPU power(해당 CPU의 SGX에 대한 performance)라고 생각하면 될 것 같습니다.

3) 애초에 노드들도 public과 다르게 계획된 컴퓨터만 참여할테니, 당연히 보상같은 것은 없습니다.

4) 어떤 외국의 Q&A(주소를 잊어버려서)에서는 이렇게 비유했습니다.

예를 들면 2개의 노드로 네트워크를 구성했는데, A의 CPU power(SGX)가 80이고, B의 CPU power가 20이면, PoET에 의해 80:20으로 랜덤하게 각 노드가 리더가 될 확률이 정해진다.

 

5. 결과적으로는,

private chain은 당연하게도, 블록체인의 기술을 이용하는 만큼 합의 과정이라는 것은 필요합니다. ‘누가 블록을 쌓는가’

그러나 private chain의 노드들은 계획적으로 구성되기 때문에 보상이 필요하지 않게되고, 신뢰성있고 정확하게 네트워크가 구성되면 됩니다. 그리고 그 방법으로 Sawtooth는 인텔 CPU -하드웨어적인 방식-을 이용하는 방식으로 구현을 했습니다.

 

<References>

https://blog.theloop.co.kr/

https://blockgeeks.com/guides/what-is-hyperledger/

https://sawtooth.hyperledger.org/docs/core/releases/latest/architecture/poet.html#

 

 

 

 

0 Shares:
Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

You May Also Like
Read More

Steem.js Example #1, Get account information

WordPress : http://junn.net/archives/541 Source code : https://github.com/junn279/steemjs_example/blob/master/steem01.php Reference : https://steemit.github.io/steemit-docs/ 설명에 앞서, 작업의 편의를 위해 Firefox 웹 개발…