上級者用語を調べる
ビザンチン障害耐性とは
- 執筆
- CRYPTO PORT 編集部
- 公開日
- 更新日
- 読了目安
- 6 分
結論
ビザンチン障害耐性は、一部の参加者が停止するだけでなく、嘘をついたり矛盾する情報を配ったりしても、全体として正しい合意に到達できる性質です。古典的な結果として、不正な参加者が全体の3分の1未満であれば合意可能とされます。多くのブロックチェーンがこの前提の上に設計されています。
要点
- 停止だけでなく嘘や矛盾した情報にも耐える性質
- 不正が全体の3分の1未満なら合意できるのが古典的な条件
- 合意には参加者間の複数回の投票が必要になる
- 参加者数が増えるほど通信量が膨らむ
定義
分散システムにおいて、一部のノードが任意の誤った振る舞いをしても、正常なノードが同一の結論に到達できる性質。不正ノードが全体の3分の1未満という条件が前提となる。
分散システムの障害には二種類あります。単に応答しなくなる停止障害と、誤った値を返したり相手ごとに違うことを言ったりする任意の障害です。後者をビザンチン障害と呼びます。悪意だけでなく、バグや設定ミスも同じ形で現れます。
全参加者のうち不正が3分の1以上になると、正常な参加者だけでは多数を確認できず、相反する結論が同時に成立しうるようになります。逆に3分の1未満であれば、参加者が互いの主張を投票として交換することで、全員が同じ結論に収束できます。
実装では、提案・事前投票・確定投票のように複数の段階を踏み、それぞれで3分の2を超える賛成を集めます。この2段階を通過したブロックは覆らないため、確定(ファイナリティ)が明示的に得られます。最長チェーン則のように確率的に確からしくなる方式とは性質が異なります。
代償は通信量です。各段階で参加者どうしが投票を交換するため、必要なメッセージ数は参加者数の二乗に近い形で増えます。そのため、この方式を採るチェーンは検証者の数に上限を設けるか、集約署名などで通信量を圧縮しています。
注意点
- · 3分の1という条件は参加者の数ではなく、投票の重み(多くは預け入れ量)で数える
- · 複数の検証者が同一の運営者や同一のクラウドに載っていると、独立性の前提が崩れる
- · 確定するという性質は、実装にバグがないことを保証するものではない