[ICO] Hashgraph 분석글 - Gossip Protocol

[ICO] Hashgraph 분석글 - Gossip Protocol

Hedera Hashgraph


1. Token Information

미정된 사항이 많아 추후 업데이트 예정

토큰 이름 

토큰 발행량

토큰 가격

홈페이지
https://www.hederahashgraph.com/
백서
https://s3.amazonaws.com/hedera-hashgraph/hh-whitepaper-v1.1-180518.pdf



2. Hedera Hashgraph가 해결하고자 하는 문제

'해시그래프는 블록체인이 아닌 블록체인의 대안 기술이다.' 이렇게 한 문장으로 요약할 수 있겠습니다. 실제로 해시그래프는 블록체인 기술을 사용하지 않고 '가십 프로토콜'로 합의를 이끌어 냅니다. 기존 블록체인의 PoW는 매 블록을 생성할 때마다 수조번의 연산이 필요합니다. 문제는 이만큼 전력을 낭비한다고 해서 BFT(Byzantine Fault Tolerance)를 보장하지는 못한다는 점입니다. 비트코인은 BFT 문제를 해결한 것이 아니고 이에 근접했을 뿐입니다. 뿐만 아니라, 합의를 위한 채굴을 담당하는 사람들이 담합을 할 수 있는 중앙 집중화의 위험도 가지고 있습니다. 마이닝 풀의 51% 이상이 담합하여 장부를 조작하고 코인을 탈취하는 일들은 최근 빈번하게 일어났었죠. (첨부기사 - 불가능하다던 ‘51% 공격’이 점점 늘어나는 이유) Hashgraph는 이 문제들을 가십 프로토콜과 가상 투표를 통해서 해결합니다.


3. Hedera Hashgraph의 Architecture

Hashgraph는 가십 프로토콜을 통해 새롭게 생성된 거래를 커뮤니티에 전파하고, 가상 투표를 통해 합의를 도출하고 거래를 승인합니다. 해시그래프의 핵심 기술 두 가지, 가십 프로토콜과 가상투표에 대해 하나씩 살펴보도록 하겠습니다.

(동영상을 통해 개략적인 이해를 하시고 싶다면, 아래 다큐멘터리 동영상을 시청하는 것도 좋습니다. 40:55부터 시청하시면 되겠습니다 :)


1) Gossip about gossip: the gossip protocol

가십 프로토콜이란, A가 무작위로 다른 멤버를 골라 그 멤버 B에게 자신이 여태껏 알게 된 모든 정보를 알려주는 것을 말합니다. 'gossip'이라는 단어의 뜻에 비추어 생각해보시면 되겠습니다. A는 또 다른 멤버를 무작위로 선택해 같은 작업을 반복합니다. B 역시 반복적으로 같은 일을 하고, 다른 모든 멤버들도 마찬가지입니다. 이렇게 하여 한 명의 멤버가 새로운 정보를 알게 되었다면, 그 정보는 모든 멤버가 알게 될 때까지 아주 빠른 속도로 퍼저나갑니다.

이 과정을 단계별로 그림을 통해 상세히 설명해보도록 하겠습니다.

 

위 그림은 해시그래프의 초기 상태를 나타낸 것입니다. 최신 정보는 위로 가면서 업데이트 되므로, 시간이 지나면서 위로 자라나게 됩니다. 여기선 4명의 멤버 A,B,C,D가 참여하고 있습니다. 각각의 멤버는 그림 상에서 회색 동그라미로 나타나는 event를 만들어냅니다. 각각의 이벤트는 거래 내역인 transaction들을 담습니다. 여기서 중요한 점은, 해시그래프 합의 알고리즘의 목표는 멤버들이 이벤트들의 시간 순서에 대한 합의에 이르게 하여 이벤트 안의 거래의 순서에도 합의에 이르게 하는 것입니다. 또 다른 목표는 각각의 이벤트와 거래에 대한 timestamp에도 합의에 이르게 하는 것입니다.

  

이제 B는 자신은 알고 있으나 D는 아직 모르는 정보들을 D에게 전달합니다. 이 경우에서는 B가 초기에 만들어 낸 이벤트 하나만이 그 정보에 해당됩니다. D는 새로운 이벤트를 만들어서 이 동기화가 일어났다는 사실을 기록합니다. 이는 D에 위치한 새로운 회색 동그라미입니다. 

cf) 어떻게 D가 아직 모르는 정보만을 골라서 보내줄 수 있는 걸까요? 실제로 이 문제가 해결이 되지 않으면 참여자들은 상대방이 이미 알고있는 정보까지 보내주어야 하므로, 시간이 지날수록 전송 용량면에서 큰 문제가 생기게 됩니다. B는 처음에 D에게 각 멤버가 만들어낸 이벤트들을 자신이 얼마나 많이 알고 있는지 말해줄 수 있습니다. D역시 B에게 마찬가지의 내용을 알려줍니다. 그러면 둘 다 어떤 이벤트들을 서로에게 전송해야 하는지 알게 됩니다. 만약 B는 A가 만들어낸 13개의 이벤트를 알고 있고 D는 10개를 알고 있다면, B는 D에게 A의 최근 3개 이벤트를 전송하면 됩니다.


 

B가 D에게 자신이 아는 내용을 전송하였고, 그로 인해 생성된 D의 새로운 이벤트를 나타낸 그림입니다. 새로운 이벤트는 자기 자신과 연결된 이전 이벤트들, 즉 자기 자신의 이전 이벤트와 정보를 보내준 참여자의 이벤트 각각을 해시한 값을 포함합니다.

이제 이 이벤트는 D가 네트워크 상에 전송하기를 원하는 거래를 포함할 수 있습니다. D는 또한 자신이 언제 이벤트를 만들었는지를 나타내는 timestamp를 표기합니다. 거기에 전자 서명을 합니다.

 

 

D는 자신이 알고 있는 모든 이벤트들(자신이 가장 최근에 만든 이벤트까지 포함하여)을 B에게 전송합니다. B는 새로운 이벤트를 만들어 해당 동기화를 했다는 사실을 기록하고, 자기 자신의 가장 최근 이벤트와 D의 가장 최근 이벤트를 해쉬한 값들을 포함시킵니다.

 

B가 자신이 알고 있는 모든 정보를 담아 A에게 보내고, A는 새로운 이벤트를 만들어 이를 기록합니다.

 

이런 과정이 계속해서 일어납니다. 이것은 암호화 된 해시들로 연결된 그래프이기 때문에 해시그래프라고 부릅니다. 각각의 이벤트들은 이벤트를 만든 멤버가 전자 서명을 하고, 자신 이전의 이벤트들의 해시를 포함합니다. 따라서 해시들의 그래프 전체는 암호 해시와 서명 시스템만큼 안전한 것이 됩니다. 시간이 지남에 따라 해시그래프는 자라나지만, 이전 이벤트들은 변경 불가능 합니다.

이 그래프의 또 다른 의미는, 각각의 멤버들이 어떻게 커뮤니케이션 해왔는지를 기록한 것이라는 점입니다. 누가 누구에게 어떤 거래 내역을 언제 전송했고 받아보았는지가 전부 기록이 되어있기 때문입니다.

이제 '라운드' 단위로 해시 그래프를 끊어서 보도록 하겠습니다.



지금은 라운드를 '해시그래프를 시간 순으로 적절하게 끊어가는 단위'로 이해하셔도 무방합니다. 라운드의 정확한 개념은 가십 프로토콜을 완전히 설명한 이후에 말씀드리도록 하겠습니다.


각 라운드의 첫 이벤트들은 'witness(증인)'이 됩니다. witness들은 갈색으로 칠하여 표시하였습니다. '증인'이라는 이름에서 알 수 있듯이, 이 이벤트들은 다른 이벤트들을 '보고, 검증하는'데에 사용됩니다.

이제 각각의 증인이 famous witness, 풀어쓰자면 '타인에게도 잘 알려진 증인'인지 검증이 필요합니다. 더 풀어서 쓰자면 '다음 라운드의 증인들에게도 잘 알려진 증인인지'를 보는 것인데요, 증인이 정말 다른 이벤트들을 보고 검증할만한 역량이 되는지를 사전에 판별하는 작업이라고 보시면 됩니다. 라운드 단위로 대표 이벤트들끼리 서로 사전 검증을 거치는 셈이지요. 이 작업을 통해 해시그래프는 더 효율적이고 우수한 보안 메커니즘으로 작동하게 됩니다.


여기서는 B2를, 다음 라운드의 증인들인 A3,B3,C3,D3가 보았는지를 확인하는 작업을 합니다. 이것이 election, 즉 선거이고, 이 선거에서 다음 라운드의 각 증인들은 이전 라운드의 증인이 잘 알려진 증인인지 아닌지를 투표합니다.


A3는 B2를 '보았습니다.' A3에서 B2로 내려가는 길이 있다는 것을 의미하며, B2가 A3 이전에 일어난 이벤트라는 것을 의미합니다. '보았다'는 것의 기술적인 의미는, 해시에 해시를 타고 내려가면 이전 시점의 거래 내역인 이벤트들을 접할 수 있다는 뜻이 됩니다.  

A3는 B2를 보았기 때문에, B2가 famous witness인지 아닌지를 판단하는 선거에서 YES라고 투표합니다.


B3은 B2를 보았기 때문에, YES라고 투표합니다.


C3와 D3역시 마찬가지로 YES라고 투표합니다. 다음 라운드의 모든 증인이 YES라고 투표했기 때문에, B2는 famous witness가 되었습니다. 그런데 아직은 투표가 끝난 것이 아닙니다. 이제 그 다음 라운드에서 투표수를 세야 합니다. 지금까지는 개별 이벤트들이 각자 투표를 했고, 이제 이 투표수를 집계하는 작업이 필요한 것입니다. 여기서는 다음 라운드의 증인들에 해당하는 B4와 D4가 그 역할을 합니다.


B4는 3라운드의 witness들을 자신이 strongly see, 즉 공신력있게 목격하였는지를 투표합니다. strongly see 했다는 것이 검증되면, 이전 라운드의 투표를 집계합니다. strongly see 하기 위해서는, 이전 라운드의 witness들로 가는 길이 최소 전체 멤버의 3분의 2를 거쳐가야 합니다. (앞서 언급했던 기존 블록체인의 비잔틴 문제를 해결하려면 전체 노드의 3분의 2가 정상 작동한다는 보장이 있어야 하는데, 이 점을 반영한 비율입니다.)

여기서 B4는 A3를 strongly see합니다. B4에서 A3로 거쳐갈 때 A,B,D를 거쳐가 총 4분의 3의 멤버를 거쳐가기 때문입니다. 따라서 B4는 A3가 YES라고 투표한 것을 투표 수에 카운트합니다.


B4가 B3도 strongly see하는 지를 따져보겠습니다. 이 역시 A,B,D를 거치므로 B3가 YES라고 투표한 것을 투표 수에 집계합니다.


같은 방법으로, B4는 C3와 D3를 strongly see하므로, C3와 D3가 YES라고 투표한 것도 집계합니다. 여기서 B4는 전체 멤버 수 중 3분의 2 이상에 해당되는 수의 YES를 집계하였으므로, B4는 집계한 투표의 최종 결과를 YES로 나타냅니다.

이제까지 B2가 famous witness인지 아닌지를 따져보는 투표를 하였는데요, 최종 투표에서 YES의 결과가 나왔으므로, B2는 famous witness가 되었습니다.


이를 그림에서는 연두색으로 표시했습니다. 이 예시에서는 B4가 4표 중 4개의 YES를 받았지만, 혹여 3표의 YES와 1표의 NO가 나왔더라도 3분의 2를 넘으므로 역시 최종 투표 집계에서는 YES라고 판단합니다.

이제 C2가 famous witness가 될 수 있는지 없는지를 따져보겠습니다. 


투표 결과 1개의 YES와 3개의 NO가 나왔습니다.

이전에도 보았듯 B4는 A3~D3 모두를 strongly see하기 때문에 모든 멤버의 투표를 집계할 수 있습니다.


4명의 멤버 중 1명의 멤버만 YES라고 투표하였으므로, 3분의 2를 넘지 못하였습니다. 따라서 C2는 famous witness가 아니고, 연두색이 아닌 파란색으로 표시하였습니다.

여기서는 B4만을 투표를 집계하는 witness라고 예시를 들었습니다. 하지만 다른 witness들도 얼마든지 투표를 집계할 수 있습니다. 단 한 명의 멤버가 투표를 집계한 결과가 YES 혹은 NO가 나왔다면, 다른 멤버들은 똑같은 작업을 반복하지 않고 이 투표 집계 결과를 그대로 받아들입니다. 


이제 round 2의 모든 witness에 대한 투표도 마무리 되었습니다. 이 때 라운드가 새로 매겨집니다. 이전에 라운드에 대해 '해시그래프를 시간 순으로 적절하게 끊어가는 단위'로 설명드렸는데요, 정확한 설명은 'witness 들에 대한 투표가 끝나면 매겨지는 시간 단위'가 되겠습니다. 그리고 새로운 라운드가 정해졌을 때, consensus timestamp, 즉 시간에 따른 합의를 보증하는 타임스탬프가 찍힙니다. 이렇게 되면 처음에 설명드렸던 것처럼, 해시그래프는 이벤트들의 시간 순서에 대한 합의를 도출할 수 있게 됩니다.

설명의 호흡이 길었는데요, 한 번 중간정리를 하고 다음단계로 넘어가겠습니다. 여태까지는 witness와 strongly see의 개념을 바탕으로 famous witness를 판별하고, 이를 통해 라운드를 매기고 witness들의 시간 순서에 대한 합의에 이르는 과정을 보았습니다. 지금까지는 famous witness에만 집중했을 뿐, 그 외 이벤트들은 아직 들여다보지 않았습니다. 이제famous witness를 통해 다른 이벤트들을 처리하는 과정을 보도록 하겠습니다. 



일반 이벤트 중 하나를 검은색으로 칠하였습니다. 이 이벤트는 famous witness들에게 '보여질 수만 있다면', 이 이벤트는 시간 순서에 따른 합의에 이르게 됩니다. 이렇게 제대로 처리 된 이벤트는 검은색으로 표시하였습니다.


B2 바로 밑에 빨간 선으로 이어진 회색 이벤트를 보겠습니다. 이 이벤트는 A2, C2에게는 보여지지 않습니다. 따라서 이번 라운드에서 처리되지는 못합니다. 하지만 다음에 있을 라운드 들에서는 처리 될 수 있습니다.


이러한 작업들을 거쳐 famous witness들이 라운드 단위로 다른 이벤트들을 지속적으로 처리합니다. 시간이 지날 수록, 즉 라운드를 거듭할수록 '처리 되었음을 나타내는' 검은색 이벤트들은 더 많아질 것입니다.

여지껏 해시그래프의 두 가지 핵심 기술 중 하나인 '가십 프로토콜'에 대해 설명드렸습니다. 아직 '가상 투표'에 대해서는 설명드리지 않았었는데요, 이제 그 내용을 살펴보도록 하겠습니다.


2) Consensus algorithm : Virtual voting

해시그래프의 모든 투표는 '가상 투표' 방식을 통해 처리됩니다. 기존 투표의 문제점은, 멤버들이 서로 투표를 보내는 작업을 필요로 한다는 점입니다. 때문에 n명의 멤버들에게 투표를 부치면 n의 제곱만큼의 작업이 네트워크에서 필요합니다. 그 투표들에 대한 대답을 모든 멤버가 다시 받아야 한다면 n의 세제곱만큼의 작업이 필요합니다. 때문에 그동안 투표 합의 메커니즘은 이론상으로만 존재하고 실제 네트워크 환경에서 구현되기란 사실상 불가능 했습니다. 비잔틴 문제를 원천적으로 해결할 수 있다는 점에서 성능은 우수했으나, 처리 속도가 늘 문제였던 것입니다. 

그런데 해시그래프에서는 투표를 실제로 전송해야 할 필요가 없습니다. 모든 멤버는 해시그래프의 복사본을 가지고 있습니다. 이에 대해 간단한 예시를 들어보겠습니다. A와 B가 같은 이벤트 1을 알고 있다면(해시그래프로 연결되어 있다면), 이벤트 1과 연결된 이전의 모든 이벤트들을 똑같이 알고 있다는 뜻이 됩니다. 모든 멤버가 해시그래프의 복사본을 가진다는 것은 이런 의미입니다. A와 B가 같은 해시그래프를 가지고 있다면, 같은 합의, 같은 답에 이르게 됩니다. 실제로 투표를 서로 전송하는 것과 똑같은 결과를 내게 됩니다. 그러므로 투표 메시지 전송 없이 합의가 이루어 질 수 있습니다. 이를 virtual voting(가상투표)이라고 합니다.

이 가상 투표는 여러 장점이 있습니다. 대역폭을 절약하는 것 외에도, 멤버들이 항상 투표를 규칙에 따라서 계산한다는 것을 보장합니다. A가 정직하다면, A는 B가 정직하다는 가정아래 가상 투표에 부치고 이에 따라 계산을 진행할 것입니다. B가 속임수를 쓴다고 해도, 실제로 투표가 네트워크 상에서 오고가는 것이 아니므로 B는 가상 투표를 통해 A를 공격하여 결과를 조작할 수 없습니다.



4. 의견

1) 블록체인 기술 내에서, 블록체인의 단점을 보완하려는 시도는 꾸준히 있었습니다. 거대한 하나의 블록체인을 여러 개의 작은 블록체인으로 나누는 샤딩 기술이 그 중 하나입니다. 샤딩기술을 적용하면 더 적은 노드 수를 거치므로 처리 속도가 높아지는데요, 이를 적용한 블록체인 서비스로는 IOST가 있습니다. (IOST와 샤딩이 궁금하시다면 여기를 보시면 됩니다.) 하지만 해시그래프는 탈중앙 네트워크를 기반으로 하면서도 블록체인이 아닌 새로운 기술을 도입한 경우입니다.

2) 해시그래프 CEO는 '블록체인이 가지고 있는 처리속도와 보안면에서의 한계를 해결한 것이 해시그래프이며, 미래에는 블록체인 기술은 상대적으로 덜 쓰일 것이고, 해시그래프는 더 많이 쓰이게 될 것'이라고 자신하고 있습니다.

3) 아직 ICO 소식은 없습니다. 퍼블릭 ICO가 필요 없는 것인지, 아직 기술적인 구현이 완전하지 않아서 인지, 아니면 다른 이유가 있는 것인지가 궁금합니다. 해시그래프 논문은 2016년에 나왔고, 그 후 지속적으로 홍보를 해왔습니다. 그런 점에서 ICO 소식이 없다는 점이 아쉽습니다.
4) 데모 버젼은 https://www.swirlds.com/download/ 에서 다운로드 받아 사용이 가능합니다.

Leave a Comment

    2 Comments

  1. 댓글 삭제

  2. 안녕하세요. 자세한 설명 정말 감사합니다. 질문드릴게있는데

    가십프로토콜 후반부에 보면
    일반 검은색 이벤트 설명하시면서
    "B2 바로 밑에 빨간 선으로 이어진 회색 이벤트를 보겠습니다. 이 이벤트는 A2, C2에게는 보여지지 않습니다. 따라서 이번 라운드에서 처리되지는 못합니다. 하지만 다음에 있을 라운드 들에서는 처리 될 수 있습니다."

    라는 설명을 해주셨습니다. 물론 A2, C2에게 안보이는건 맞고 D2에게도 안보이지 않나싶습니다. 하나가 빠진건 사실 중요하지 않을거같구요 ㅎㅎ
    제가 궁금한거는 famous 증인이 아닌 C2의 역할입니다. A2, C2, D2에게 확인받는 검은색 이벤트와 A2, B2, D2 에게 확인받는 검은색 이벤트가 있다면 그 검은색 이벤트는 어짜피 2/3 이상의 증인이 확인했으니 유효한 이벤트이다 이렇게 되는건가요?

    Famous 증인을 두어 두번 확인하여 보안이 더 강력해진다고했는데 이벤트를 검증하는 조상 이벤트가 유명 증인인지, 그냥 증인인지는 상관이없는지 궁금합니다.

    감사합니다.

    famous 증인인가?에 투표하는 증인은 유명증인이든, 그냥 증인이든 상관이 없고, 증인이 아닌 일반 이벤트가 유효한가?에 대한 투표는 famous 증인 노드만 참여하는것인지가 궁금합니다