[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는 새로운 이벤트를 만들어 이를 기록합니다.
이런 과정이 계속해서 일어납니다. 이것은 암호화 된 해시들로 연결된 그래프이기 때문에 해시그래프라고 부릅니다. 각각의 이벤트들은 이벤트를 만든 멤버가 전자 서명을 하고, 자신 이전의 이벤트들의 해시를 포함합니다. 따라서 해시들의 그래프 전체는 암호 해시와 서명 시스템만큼 안전한 것이 됩니다. 시간이 지남에 따라 해시그래프는 자라나지만, 이전 이벤트들은 변경 불가능 합니다.
이 그래프의 또 다른 의미는, 각각의 멤버들이 어떻게 커뮤니케이션 해왔는지를 기록한 것이라는 점입니다. 누가 누구에게 어떤 거래 내역을 언제 전송했고 받아보았는지가 전부 기록이 되어있기 때문입니다.
이제 '라운드' 단위로 해시 그래프를 끊어서 보도록 하겠습니다.
이러한 작업들을 거쳐 famous witness들이 라운드 단위로 다른 이벤트들을 지속적으로 처리합니다. 시간이 지날 수록, 즉 라운드를 거듭할수록 '처리 되었음을 나타내는' 검은색 이벤트들은 더 많아질 것입니다.
여지껏 해시그래프의 두 가지 핵심 기술 중 하나인 '가십 프로토콜'에 대해 설명드렸습니다. 아직 '가상 투표'에 대해서는 설명드리지 않았었는데요, 이제 그 내용을 살펴보도록 하겠습니다.
2) Consensus algorithm : Virtual voting
해시그래프의 모든 투표는 '가상 투표' 방식을 통해 처리됩니다. 기존 투표의 문제점은, 멤버들이 서로 투표를 보내는 작업을 필요로 한다는 점입니다. 때문에 n명의 멤버들에게 투표를 부치면 n의 제곱만큼의 작업이 네트워크에서 필요합니다. 그 투표들에 대한 대답을 모든 멤버가 다시 받아야 한다면 n의 세제곱만큼의 작업이 필요합니다. 때문에 그동안 투표 합의 메커니즘은 이론상으로만 존재하고 실제 네트워크 환경에서 구현되기란 사실상 불가능 했습니다. 비잔틴 문제를 원천적으로 해결할 수 있다는 점에서 성능은 우수했으나, 처리 속도가 늘 문제였던 것입니다.
그런데 해시그래프에서는 투표를 실제로 전송해야 할 필요가 없습니다. 모든 멤버는 해시그래프의 복사본을 가지고 있습니다. 이에 대해 간단한 예시를 들어보겠습니다. A와 B가 같은 이벤트 1을 알고 있다면(해시그래프로 연결되어 있다면), 이벤트 1과 연결된 이전의 모든 이벤트들을 똑같이 알고 있다는 뜻이 됩니다. 모든 멤버가 해시그래프의 복사본을 가진다는 것은 이런 의미입니다. A와 B가 같은 해시그래프를 가지고 있다면, 같은 합의, 같은 답에 이르게 됩니다. 실제로 투표를 서로 전송하는 것과 똑같은 결과를 내게 됩니다. 그러므로 투표 메시지 전송 없이 합의가 이루어 질 수 있습니다. 이를 virtual voting(가상투표)이라고 합니다.
이 가상 투표는 여러 장점이 있습니다. 대역폭을 절약하는 것 외에도, 멤버들이 항상 투표를 규칙에 따라서 계산한다는 것을 보장합니다. A가 정직하다면, A는 B가 정직하다는 가정아래 가상 투표에 부치고 이에 따라 계산을 진행할 것입니다. B가 속임수를 쓴다고 해도, 실제로 투표가 네트워크 상에서 오고가는 것이 아니므로 B는 가상 투표를 통해 A를 공격하여 결과를 조작할 수 없습니다.
2 Comments
Deleted reply
안녕하세요. 자세한 설명 정말 감사합니다. 질문드릴게있는데
가십프로토콜 후반부에 보면
일반 검은색 이벤트 설명하시면서
"B2 바로 밑에 빨간 선으로 이어진 회색 이벤트를 보겠습니다. 이 이벤트는 A2, C2에게는 보여지지 않습니다. 따라서 이번 라운드에서 처리되지는 못합니다. 하지만 다음에 있을 라운드 들에서는 처리 될 수 있습니다."
라는 설명을 해주셨습니다. 물론 A2, C2에게 안보이는건 맞고 D2에게도 안보이지 않나싶습니다. 하나가 빠진건 사실 중요하지 않을거같구요 ㅎㅎ
제가 궁금한거는 famous 증인이 아닌 C2의 역할입니다. A2, C2, D2에게 확인받는 검은색 이벤트와 A2, B2, D2 에게 확인받는 검은색 이벤트가 있다면 그 검은색 이벤트는 어짜피 2/3 이상의 증인이 확인했으니 유효한 이벤트이다 이렇게 되는건가요?
Famous 증인을 두어 두번 확인하여 보안이 더 강력해진다고했는데 이벤트를 검증하는 조상 이벤트가 유명 증인인지, 그냥 증인인지는 상관이없는지 궁금합니다.
감사합니다.
famous 증인인가?에 투표하는 증인은 유명증인이든, 그냥 증인이든 상관이 없고, 증인이 아닌 일반 이벤트가 유효한가?에 대한 투표는 famous 증인 노드만 참여하는것인지가 궁금합니다