LoginSignup
3

More than 5 years have passed since last update.

Hedera Hashgraphの「仮想投票」について考察してみる

Last updated at Posted at 2018-06-21

※2018年6月21日公開
※2018年6月27日編集

「ハッシュグラフって何?」という方は、こちらの記事をご参照ください。

N−Village CTOの林田です。
 前回の記事では、Hedera Hashgraphの概要とコンセンサスアルゴリズムについてご説明しました。今回は、Hedera Hashgraphが採用したユニークな機能、「仮想投票」という考え方について触れてみたいと思います。

仮想投票による合意プロセス

 前回の記事で簡単に解説しましたが、ゴシッププロトコルによってHashgraphが構築されると、各イベントに含まれる2つのHashによって、イベントのトレーサビリティが確保できます。すなわち、あるメンバーがイベントを受け取ると、そのイベントに含まれる情報について、他のどのメンバーが知っているのか、を知ることができるのです。

11.png

 自分以外の各メンバーが知っている情報がわかれば、各メンバーがどのように投票を行ったか=何を正しいと判断したか、を知ることができます。つまり、他のメンバーからの投票が無くても、仮想的に投票を実行できるのです。これが仮想投票の考え方です。
 この仮想投票によって、Hashgraphは既存のブロックチェーンと異なり、各メンバーが投票メッセージをブロードキャストすることなく、あたかも合意を得ることができるのです(ただし、全体の1/3を超えるメンバーが悪意を持っていないことが前提)。

Hashgraphでネットワーク障害が発生した時の動きはどうなるか

 より具体的に、ビザンチン問題が発生しそうな状況を想定してみましょう。

元々1つのコミュニティだった善意のA〜C、D〜Fがそれぞれネットワーク障害により分断されている状態で、AおよびDがトランザクションを発生させた場合

 通常のゴシッププロトコルに従い、それぞれ閉じたネットワーク内でイベントがやり取りされます。

12.png

 ネットワーク障害が解消した時点から、まだイベントを持っていないメンバーに対して次々とイベントが送られます。結果的に、コミュニティ全員がAおよびDのトランザクションを知ることとなりました。

13.png

 では次に、一部に悪意のあるメンバーがいる場合を想定してみましょう。

元々1つのコミュニティだった善意のA〜D、悪意のE・Fがそれぞれネットワーク障害により分断されている状態で、Eがトランザクションを作成した場合

 E・Fが所属するネットワークだけを見ると、悪意を持ったメンバーが1/3を超えています。したがって、ネットワーク障害が発生している間、E・Fのネットワークには嘘の情報が蔓延することとなります。

14.png

 ところが、ネットワーク障害が解消された時点で、悪意を持ったメンバーが全体の1/3を超えない状態となります。すなわち、Eが作成したトランザクションは善意のメンバーによって無視されるため、結果として正しいトランザクションのみが残ります。

15.png

仮想投票について調べてみた所感

 ゴシッププロトコルと併せて、その手があったか、という印象です。効率性の面では、ブロックチェーンにおけるPoW等と比較して抜群に良いと感じました。次回以降、もう少し詳細に、イベントの生成や署名プロセス、ゴシップがチェーンする「ゴシップのゴシップ」がどのようなデータセットとなっているか、など調査したいと思います。


内容に間違いがあればご指摘いただけますと幸いです。よろしくお願いいたします。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3