合意メカニズム
最終編集者: @HiroyukiNaito(opens in a new tab), 2024年6月14日
合意メカニズムという用語は、「プルーフ・オブ・ステーク」、「プルーフ・オブ・ワーク」、「プルーフ・オブ・オーソリティ」といったプロトコルを指すのに使われることがあります。 しかし、これらはあくまでに対抗するための合意メカニズムの一部に過ぎません。 合意メカニズムは、分散された一連のノードがブロックチェーンの状態に合意できるようにする考え方、プロトコル、およびインセンティブを完全にまとめたメカニズムです。
前提知識
このページの理解を深めるために、まずはイーサリアム入門を読むことをお勧めします。
コンセンサス(合意)とは
コンセンサス(合意)とは、全員が合意に達しているという意味で使われています。 これから映画に見に行くグループで考えてみましょう。 どの映画を鑑賞するかグループ内で意見が一致すれば、コンセンサスが形成されます。 意見が分かれている場合、どの映画にするか決める手段が必要です。 極端な状況では、最終的にグループが分かれてしまうこともあるでしょう。
イーサリアムのブロックチェーンではこのプロセスが形式化されており、コンセンサスに達するとは、ネットワーク上のノードの少なくとも66%が、ネットワークの全体的な状態に合意することを意味します。
合意メカニズムとは
合意メカニズムという用語は、ノードのネットワークがブロックチェーンの状態に合意することを可能にするプロトコル、インセンティブ、考え方のすべてを指します。
イーサリアムはプルーフ・オブ・ステークに基づく合意メカニズムを使用しており、一連の報酬に加えて、ペナルティがステーカーが預け入れた資本に適用されることにより、暗号経済的な安全性を得ています。 このインセンティブ構造は個々のステーカーがバリデータを誠実に運用することを奨励し、そうでないステーカーに対してペナルティを与え、ネットワークへの攻撃のコストを非常に高くします。
また、ブロックの提案や検証、トランザクションの処理、チェーン先頭に対する見解の投票などを行う、誠実なバリデータがどのように選ばれるかを規定するプロトコルがあります。 まれに複数のブロックがチェーンの先頭付近の同じ位置にある状況に対しては、「最も重みのある」チェーンを構成するブロックを選択するフォーク・チョイスメカニズムがあります。これはブロックに投票したバリデータ数によって測定され、バリデータがステーキングしたイーサ残高により加重されます。
概念の一部はコードには明示的に定義されていませんが、コンセンサスに重要なものがあります。たとえば、ネットワークへの攻撃に対する最後の防衛線として、帯域外で行われる社会的調整により提供されるセキュリティなどです。
これらの構成要素が一体となって合意メカニズムを形成しています。
合意形成アルゴリズムの種類
プルーフ・オブ・ワーク方式
ビットコインと同様に、イーサリアムもかつてはプルーフ・オブ・ワーク(PoW)に基づいたコンセンサスプロトコルを使用していました。
ブロックの作成
マイナーは、処理済みのトランザクションで構成される新規ブロックを作成するために競争します。 この競争の勝者は、新規ブロックをネットワークの他のユーザーと共有し、新たにミントされたイーサを獲得します。 数学的パズルを最も速く解いたユーザーが勝者になります。 これにより、現行のブロックとその前のブロックとの間に暗号的なリンクが発生します。 このパズルを解く作業こそ、「プルーフ・オブ・ワーク」なのです。 次に、マイニングに最も多くの作業を要した一連のブロックを選択するというフォーク選択ルールに従って、正規チェーンが決定されます。
セキュリティ
チェーンに不正行為を働くには、ネットワークのコンピューティング能力の51%が必要であるため、ネットワークの安全性が保たれています。 51%を獲得しるには、莫大な設備投資とエネルギーが必要となるため、得るものよりも費やすものの方が多くなってしまいます。
プルーフ・オブ・ワークの詳細
プルーフ・オブ・ステーク方式
イーサリアムは現在、プルーフ・オブ・ステーク(PoS)に基づいたコンセンサスプロトコルを使用しています。
ブロックの作成
ブロックは、バリデータが作成します。 各スロットにつき1名のバリデータが、ブロック提案者として無作為に選出されます。 バリデータのコンセンサス・クライアントは、対応する実行クライアントに対して、バンドル化されたトランザクションを「実行ペイロード」として要求します。 次に、このバンドルをコンセンサス・データでラップしてブロックを生成し、イーサリアム・ネットワークの他のノードに送信します。 このブロック生成作業に対しては、イーサによる報酬が発生します。 特定のスロットにつき複数の候補ブロックが存在したり、各ノードがブロックについて情報を得た時間が異なっていたなどのまれなケースでは、フォーク選択アルゴリズムにより、アテステーションの加重が最大になるチェーンを形成できるブロックが選択されます(この加重は、アテステーションを行うバリデータの数と、彼らのイーサ残高により決定されます)。
セキュリティ
仮にプルーフ・オブ・ステーク・システムでチェーンを支配しようとすると、攻撃者は大量のETHを破壊しなければならないため、暗号経済的に安全性が保たれています。 報酬システムがステーカーに対して、誠実な行動を取るようにインセンティブを与える一方、ペナルティは悪意のある行動を抑制しています。
プルーフ・オブ・ステーク の詳細
ビジュアルガイド
イーサリアムで使われているさまざまな種類の合意メカニズムについて視聴しましょう。
シビル耐性およびチェーン選択
プルーフ・オブ・ワークとプルーフ・オブ・ステークは、それ自体はコンセンサスプロトコルではありませんが、分かりやすくするためにそのように呼ばれることがよくあります。 これらは実際にはシビル耐性メカニズムであり、誰が最新のブロックを作成するかを決めるものです。 もう一つの重要なコンポーネントは、チェーン・チョイス(別名:フォーク選択)アルゴリズムです。これはチェーンの先頭に複数のブロックが存在する場合、正しいブロックをノードが1つ選択するアルゴリズムです。
シビル耐性はシビル攻撃に対するプロトコルの性能を測るものです。 この種の攻撃への耐性は、分散型ブロックチェーンには不可欠であり、この耐性があることにより、投入されたリソースに応じてマイナーとバリデータが平等に報酬を得ることができます。 プルーフ・オブ・ワークやプルーフ・オブ・ステークは、ユーザーに多くのエネルギーを消費させたり、多くの担保を入れさせることで、この問題を解決します。 これらは、シビル攻撃に対する経済的な抑止力となります。
チェーン・セレクション・ルールは、どのチェーンが「正しい」チェーンであるかを決定するルールです。 イーサリアムとビットコインは、ブロックチェーンの長さが長い方を、他のノードが有効なものとして受け入れるという「最長のチェーン」ルールを採用しています。 プルーフ・オブ・ワークチェーンの場合、最長のチェーンはチェーンの累積プルーフ・オブ・ワーク難易度によって決定されます。 イーサリアムも以前は「最長チェーン」ルールを採用していましたが、現在のイーサリアムはプルーフ・オブ・ステークで実行されており、チェーンの「重み」を測定する最新のフォーク・チョイス・アルゴリズムを採用しています。 この重みは、バリデータの投票の累計をバリデータがステーキングしたイーサ残高により加重されて決まります。
イーサリアムでは、Casper FFGプルーフ・オブ・ステーク(opens in a new tab)とGHOSTフォーク・チョイスルール(opens in a new tab)を組み合わせたGasperと呼ばれる合意メカニズムが採用されています。
参考文献
- ブロックチェーンの合意アルゴリズムとは(opens in a new tab)
- ナカモトコンセンサスとは 初心者向け完全ガイド(opens in a new tab)
- Casperの仕組み(opens in a new tab)
- プルーフ・オブ・ワーク・ブロックチェーンのセキュリティと性能について(opens in a new tab)
- ビザンチン障害(opens in a new tab)
役に立つコミュニティリソースをご存知の場合は、 ページを編集して追加してください。