※2018年6月21日公開
※2018年6月27日編集
「ハッシュグラフって何?」という方は、こちらの記事をご参照ください。
N−Village CTOの林田です。
前回の記事では、Hedera Hashgraphの概要とコンセンサスアルゴリズムについてご説明しました。今回は、Hedera Hashgraphが採用したユニークな機能、「仮想投票」という考え方について触れてみたいと思います。
仮想投票による合意プロセス
前回の記事で簡単に解説しましたが、ゴシッププロトコルによってHashgraphが構築されると、各イベントに含まれる2つのHashによって、イベントのトレーサビリティが確保できます。すなわち、あるメンバーがイベントを受け取ると、そのイベントに含まれる情報について、他のどのメンバーが知っているのか、を知ることができるのです。
自分以外の各メンバーが知っている情報がわかれば、各メンバーがどのように投票を行ったか=何を正しいと判断したか、を知ることができます。つまり、他のメンバーからの投票が無くても、仮想的に投票を実行できるのです。これが仮想投票の考え方です。
この仮想投票によって、Hashgraphは既存のブロックチェーンと異なり、各メンバーが投票メッセージをブロードキャストすることなく、あたかも合意を得ることができるのです(ただし、全体の1/3を超えるメンバーが悪意を持っていないことが前提)。
Hashgraphでネットワーク障害が発生した時の動きはどうなるか
より具体的に、ビザンチン問題が発生しそうな状況を想定してみましょう。
元々1つのコミュニティだった善意のA〜C、D〜Fがそれぞれネットワーク障害により分断されている状態で、AおよびDがトランザクションを発生させた場合
通常のゴシッププロトコルに従い、それぞれ閉じたネットワーク内でイベントがやり取りされます。
ネットワーク障害が解消した時点から、まだイベントを持っていないメンバーに対して次々とイベントが送られます。結果的に、コミュニティ全員がAおよびDのトランザクションを知ることとなりました。
では次に、一部に悪意のあるメンバーがいる場合を想定してみましょう。
元々1つのコミュニティだった善意のA〜D、悪意のE・Fがそれぞれネットワーク障害により分断されている状態で、Eがトランザクションを作成した場合
E・Fが所属するネットワークだけを見ると、悪意を持ったメンバーが1/3を超えています。したがって、ネットワーク障害が発生している間、E・Fのネットワークには嘘の情報が蔓延することとなります。
ところが、ネットワーク障害が解消された時点で、悪意を持ったメンバーが全体の1/3を超えない状態となります。すなわち、Eが作成したトランザクションは善意のメンバーによって無視されるため、結果として正しいトランザクションのみが残ります。
仮想投票について調べてみた所感
ゴシッププロトコルと併せて、その手があったか、という印象です。効率性の面では、ブロックチェーンにおけるPoW等と比較して抜群に良いと感じました。次回以降、もう少し詳細に、イベントの生成や署名プロセス、ゴシップがチェーンする「ゴシップのゴシップ」がどのようなデータセットとなっているか、など調査したいと思います。
内容に間違いがあればご指摘いただけますと幸いです。よろしくお願いいたします。