Hyperledger Sawtooth(private blockchain)의 합의 알고리즘 PoET에 대하여

in #kr6 years ago (edited)

이전 글 :
https://junn.in/archives/2165
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#

Sort:  

리플을 프리베이트 블록체인으로 봐야하는 건가요??

http://www.seunghwanhan.com/2016/07/overview-of-ripple-labs.html 에 설명이 잘 되어있는 것 같습니다. 저는 블록체인에 대한 지식이 얕아 뭐라고 판단할 능력이 안되나, private이라고 생각합니다. 그래서 왜 사람들이 리플을 사는지 여전히 잘 이해를 못하고 있기도 합니다ㅠ

좋은 글 감사합니다.

리눅스 제단에서 만든 블록체인 기술이라 그래서 글을 읽고 저도 좀 더 자세히 첨부해주신 링크들 살펴보았습니다. (참고, https://sawtooth.hyperledger.org/docs/core/releases/latest/architecture/poet.html, https://blockgeeks.com/guides/what-is-hyperledger/)

블록이 추가되는 과정은 다음과 같네요.

  1. 모든 노드(마이너)가 자기의 CPU 파워에 비례하는 숫자 r_i 를 뽑습니다.
  2. 이 숫자가 가장 작은 사람이 다음 블록을 추가하는 리더의 자격을 얻습니다.
  3. 특이하게 리더는 r_i 초동안 기다린 후에 블록을 추가합니다.

이 과정이 공정하려면

r_i 를 아무렇게나 조작해서 뽑으면 안됩니다. 이 조작을 방지하게 위해서, 인텔이 개발한 SGX 라는 하드웨어 기술이 쓰입니다. 이 하드웨어를 통해 공정하게 숫자를 만듭니다.

PoET 의 장점은

  1. Bitcoin 처럼 마이닝을 하는데 특별한 하드웨어가 필요하지 않다. (PoET 도 Intell 의 SGX가 필요하지만...인텔 CPU는 왠만하면 다 쓰니깐..)
  2. PoW 처럼 Hash 를 무시무시하게 찍어내서 검증하는 불필요한 CPU 낭비가 없다.

정도가 되겠네요.

글을 읽고 두가지가 궁금하네요.

  1. 채굴보상이 없는 이유는 사실상 Computational resource 가 전혀 안들어가도록 설계되어서 그런 것 같습니다. 하이퍼레저를 꼭 Private network 로만 운용해야된다는 언급은 없는데 제가 잘못 이해한 건가요?

  2. 위에 기술한 리더선발(Leader election) 과정이 구체적으로 어떻게 Double spending 과 같은 문제를 해결하는지 혹시 이해하셨다면 공유 부탁드립니다.

자세한 설명 감사합니다. 저도 100% 이해하지 못한 부분들을 좀더 알수 있게되네요. 일단 첫번째에 대해서는 좋은 CPU로 참여한 사람에게 보상을 줄 수 없는게 아니라, 이 프로젝트가 보상 자체를 하지 않도록 기획된 것이기 때문이 아닐까요. public chain이 PoET 를 도입해서 보상 시스템을 구축하는 것도 분명 가능할 것 같습니다. 외국의 Q&A를 보니, CPU가 좋으면 무조건 리더가 되는 확률이 높기에 public으로 이용하게 되면 불평등이 심각하게 된다(물론 지금 PoW도 독점되곤 있지만..) 라는 의견도 있었고요. public으로 하기엔 다른 채굴 방식이 더 많은 참여자를 이끌어낼 수 있다는 주장들을 봤었습니다.
2번에 대한 질문은 아직 잘 모르겠습니다ㅠ

"CPU가 좋으면 무조건 리더가 되는 확률이 높기에 public으로 이용하게 되면 불평등이 심각하게 된다"

-> 이건 Hash power 혹은 코인의 보유량을 독점하는 경우 PoW, PoS 모두 공통적으로 존재하는 문제점 아닌가요? 전 오히려 보상을 받지 않는 이유가 PoW랑 다르게 PoET 는 CPU 소모의 정도가 아주 적기 때문에 (즉, "Proof of Work"에서 work의 정도가 아주 작기 때문에) 보상을 하지 않는 것으로 이해했습니다.

또한, 채굴이라는 행위의 진입장벽을 아주 낮춰서 아주 많은 숫자의 노드가 참여하기 쉽게하여서
"그냥 개별인원 너네가 네트워크를 쓰는 만큼 마이닝에도 참가해." 라는 합의 알고리즘이 아닌가 싶네요

워낙 블록체인에 대한 이해가 높으신 만큼 맞는 해석인 것 같습니다. 저는 이쪽에 통찰력이 부족해서 외국인들이 서로 Q&A하는 것을 차용하는 수준이라서요. 그런데 work가 적어도 보상을 안해줄 이유를 굳이 찾을 수 있으려나요? 저는 이것이 private이기 때문에 보상을 안하는 것이라고 생각했거든요, work가 적어도 public으로 만든다면 보상은 그냥 해주면 되는것이 아닌가하고요.

https://www.coindesk.com/intel-winning-blockchain-critics-reimagining-bitcoins-dna/

2016년 기사인데, 이미 이 아이디어가 나온 것은 한참된 것 같은데요, PoET가 public으로 가지 않고 private쪽으로 먼저 오게 된 계기가 분명 어딘가 있지 않을까 생각했습니다. 좀더 찾아봐야겠습니다. 혹은 인텔이 private chain을 선점하기 위해 먼저 이쪽에 활용하는 것은 아닐까요..

https://sawtooth.hyperledger.org/docs/core/releases/latest/introduction.html#Consesnus

위 링크의 Consensus 부분을 읽어보면
개념상 PoW 에 더 가까운 합의 알고리즘이네요; PoW 해시값을 찾는 과정이 r_i 를 하나 랜덤하게 뽑는 것으로 변경 된 것 같습니다.

네 저도 검색하다보면 PoW 방식에 가깝다라고 적혀있는 내용을 많이 봤습니다.

Coin Marketplace

STEEM 0.18
TRX 0.13
JST 0.028
BTC 58080.30
ETH 3102.16
USDT 1.00
SBD 2.40