プルーフ・オブ・オーソリティ (PoA)
プルーフ・オブ・オーソリティ (PoA) は、レピュテーション(評判)に基づくコンセンサスアルゴリズムであり、プルーフ・オブ・ステーク (PoS)の改良版です。主にプライベートチェーン、テストネット、ローカル開発ネットワークで使用されています。PoAは、PoSのようなステークに基づくメカニズムの代わりに、ブロックを生成するために承認された署名者のセットを信頼する必要がある、レピュテーションに基づくコンセンサスアルゴリズムです。
前提条件
このページをよりよく理解するために、まずはトランザクション、ブロック、およびコンセンサスメカニズムについて読むことをお勧めします。
プルーフ・オブ・オーソリティ (PoA) とは?
プルーフ・オブ・オーソリティは、プルーフ・オブ・ステーク (PoS) の改良版であり、PoSのステークに基づくメカニズムの代わりに、レピュテーションに基づくコンセンサスアルゴリズムです。この用語は2017年にギャビン・ウッドによって初めて導入されました。このコンセンサスアルゴリズムは、PoWのように高品質なリソースを必要とせず、ブロックチェーンを保存してブロックを生成するノードの小さなサブセットを持つことでPoSのスケーラビリティの問題を克服するため、主にプライベートチェーン、テストネット、ローカル開発ネットワークで使用されています。
プルーフ・オブ・オーソリティでは、で設定された承認済みの署名者のセットを信頼する必要があります。現在のほとんどの実装では、チェーンのコンセンサスを決定する際、すべての承認済み署名者が同等の権力と特権を保持します。レピュテーションのステーキングの背後にある考え方は、KYC(顧客確認)などを通じて、あるいは有名な組織が唯一のバリデータとなることによって、すべての承認済みバリデータが誰にでもよく知られているということです。これにより、バリデータが何か不正を行った場合でも、その身元が判明します。
PoAには複数の実装がありますが、標準的なイーサリアムの実装はEIP-225 (opens in a new tab)を実装したcliqueです。Cliqueは開発者フレンドリーで実装が容易な標準であり、すべてのクライアントの同期タイプをサポートしています。その他の実装には、IBFT 2.0 (opens in a new tab)やAura (opens in a new tab)などがあります。
仕組み
PoAでは、新しいブロックを作成するために承認された署名者のセットが選択されます。署名者はそのレピュテーションに基づいて選択され、彼らだけが新しいブロックを作成することを許可されます。署名者はラウンドロビン方式で選択され、各署名者は特定の時間枠内でブロックを作成することが許可されます。ブロックの作成時間は固定されており、署名者はその時間枠内にブロックを作成する必要があります。
この文脈におけるレピュテーションとは、定量化されたものではなく、マイクロソフトやGoogleのような有名企業の評判を指します。したがって、信頼できる署名者を選択する方法はアルゴリズムによるものではなく、人間の一般的な「信頼」という行為に基づいています。例えば、マイクロソフトが数百から数千のスタートアップ企業との間にPoAのプライベートネットワークを構築し、将来的にGoogleのような他の有名な署名者を追加する可能性を残しつつ、自らを唯一の信頼できる署名者とした場合、スタートアップ企業は間違いなくマイクロソフトが常に誠実に行動すると信頼し、そのネットワークを使用するでしょう。これにより、分散化と機能を維持するために異なる目的で構築された様々な小規模/プライベートネットワークでステークする必要性や、大量の電力とリソースを消費するマイナーの必要性が解消されます。VeChainのようにPoA標準をそのまま使用するプライベートネットワークもあれば、バイナンスのようにPoAとPoSを独自に改良したPoSA (opens in a new tab)を使用するなど、変更を加えているネットワークもあります。
投票プロセスは署名者自身によって行われます。各署名者は、新しいブロックを作成する際に、自身のブロック内で署名者の追加または削除に投票します。投票はノードによって集計され、投票が特定のしきい値SIGNER_LIMITに達したかどうかに基づいて署名者が追加または削除されます。
小規模なフォークが発生する状況があるかもしれませんが、ブロックの難易度は、そのブロックが順番通りに署名されたか、順番外で署名されたかによって異なります。「順番通り(In turn)」のブロックの難易度は2であり、「順番外(out of turn)」のブロックの難易度は1です。小規模なフォークが発生した場合、ほとんどの署名者が「順番通り」にブロックを封印しているチェーンが最も多くの難易度を蓄積し、勝利します。
攻撃ベクトル
悪意のある署名者
悪意のあるユーザーが署名者のリストに追加されたり、署名用の鍵やマシンが侵害されたりする可能性があります。そのようなシナリオでは、プロトコルはリオーグやスパム攻撃から自身を防御できる必要があります。提案されている解決策は、N人の承認済み署名者のリストがある場合、どの署名者もK個のブロックのうち1つしかミントできないようにすることです。これにより被害が限定的になり、残りのバリデータが悪意のあるユーザーを投票で排除できるようになります。
検閲
もう一つの興味深い攻撃ベクトルは、署名者(または署名者のグループ)が、自身を承認リストから削除する投票を含むブロックを検閲しようとする場合です。これを回避するために、署名者に許可されるミンティングの頻度はN/2のうち1回に制限されています。これにより、悪意のある署名者は少なくとも51%の署名アカウントを制御する必要があり、その時点で彼らは事実上チェーンの新たな信頼の源(source-of-truth)となります。
スパム
もう一つの小規模な攻撃ベクトルは、悪意のある署名者がミントするすべてのブロック内に新しい投票提案を注入することです。ノードは実際の承認済み署名者のリストを作成するためにすべての投票を集計する必要があるため、時間の経過とともにすべての投票を記録しなければなりません。投票ウィンドウに制限を設けないと、これはゆっくりと、しかし無制限に増大する可能性があります。解決策は、Wブロックの「移動」ウィンドウを設け、それを過ぎた投票は古いとみなすことです。妥当なウィンドウは1〜2エポック程度でしょう。
同時ブロック
PoAネットワークにおいて、N人の承認済み署名者がいる場合、各署名者はK個のうち1つのブロックをミントすることが許可されます。これは、任意の時点でN-K+1人のバリデータがミントを許可されていることを意味します。これらのバリデータがブロックを競い合うのを防ぐため、各署名者は新しいブロックをリリースする時間に小さなランダムな「オフセット」を追加する必要があります。このプロセスにより小規模なフォークは稀になりますが、メインネットと同様に、時折フォークが発生する可能性はあります。署名者が権力を乱用して混乱を引き起こしていることが判明した場合、他の署名者は投票によってその署名者を排除することができます。
例えば、10人の承認済み署名者がおり、各署名者が6個のうち1つのブロックを作成することが許可されている場合、任意の時点で5人のバリデータがブロックを作成できます。ブロック作成の競争を防ぐため、各署名者は新しいブロックをリリースする時間に小さなランダムな「オフセット」を追加します。これにより小規模なフォークの発生は減少しますが、イーサリアム・メインネットで見られるように、時折フォークが発生することは許容されます。署名者が権限を悪用して混乱を引き起こした場合、ネットワークから投票で排除することができます。
メリットとデメリット
| メリット | デメリット |
|---|---|
| 限られた数のブロック署名者に基づいているため、PoSやPoWなどの他の一般的なメカニズムよりもスケーラブルである | PoAネットワークは通常、検証ノードの数が比較的少ない。これにより、PoAネットワークはより中央集権的になる。 |
| PoAブロックチェーンは、運用と保守が非常に安価である | ブロックチェーンには確立されたレピュテーションを持つエンティティが必要であるため、一般の人が承認済み署名者になることは通常不可能である。 |
| 新しいブロックを検証するために限られた数の署名者しか必要としないため、トランザクションは非常に早く(1秒未満で)確認される | 悪意のある署名者がネットワーク内でリオーグ、二重支払い、トランザクションの検閲を行う可能性がある。これらの攻撃は軽減されているが、依然として可能である |
参考文献
- EIP-225 (opens in a new tab) Clique標準
- プルーフ・オブ・オーソリティの研究 (opens in a new tab) Cryptoeconomics
- プルーフ・オブ・オーソリティとは (opens in a new tab) OpenZeppelin
- プルーフ・オブ・オーソリティの解説 (opens in a new tab) バイナンス
- ブロックチェーンにおけるPoA (opens in a new tab)
- Cliqueの解説 (opens in a new tab)
- 非推奨のPoA、Aura仕様 (opens in a new tab)
- IBFT 2.0、もう一つのPoA実装 (opens in a new tab)
視覚的に学びたい方へ
プルーフ・オブ・オーソリティの視覚的な解説をご覧ください: