本稿について
本稿は、Tendermintホワイトペーパーの詳細版ともいえるTendermint現CTOであるEthan Buchman氏の執筆論文をもとにTendermintについて見ていくシリーズです。冒頭に筆者による「簡単まとめ」を入れ、その後にもととなった部分の日本語訳を載せるという順番で書いていきます。
論文「Tendermint: Byzantine Fault Tolerance in Age of Blockchain」の原文はこちら。
今回の対象範囲は第3章「Tendemint Consensus」のうち3.5「Accountability」で、これを読むとTendermintでセーフティの侵害がった場合にビザンチンなノードを識別しうる「アカウンタビリティ」についてやや詳しい内容が分かります。
原文はこちらになります。
スポンサードサーチ
要点をまとめてみる
- TendermintはアカウンタブルなBFTアルゴリズムである。
- アカウンタブルであるので、ビザンチンなバリデータが2/3以下であれば、セーフティの侵害があった場合に最終的に全てのビザンチンなバリデータを特定できる。
- Tendermintのセーフティを侵害する方法として、提案や投票の対立と、ロックルールの違反の2通りが考えられる。
- 提案や投票の対立の場合、対立している両方に関するメッセージと、各バリデータの電子署名を確認していけば容易に侵害者を特定可能である。
- ロックルールの違反の場合、Prevote-the-Lock違反の場合は各バリデータの事前投票と最新の事前コミットを突合することで、Unlock-on-Polka違反の場合は各バリデータの事前コミットとそれを正当化するポルカを突合することで侵害者を特定可能である。
- 現時点でのアカウンタビリティは事後的なものであるが、今後リアルタイムでのアカウンタビリティをもたらせるよう改善される可能性がある。
以下、今回取り扱った箇所の日本語訳なので詳細を知りたければどうぞ。
Chapter3. Tendermintコンセンサス(続き)
3.5 アカウンタビリティ
アカウンタブルなBFTアルゴリズムとは、セーフティの侵害があった際に全てのビザンチンなバリデータを識別できるBFTである。従来のBFTアルゴリズムはこのような特性を持たず、セーフティの侵害があった場合に何らの保証も与えない。もちろん、アカウンタビリティはビザンチンなバリデータが1/3~2/3である場合に限り適用できる。ビザンチンなバリデータが2/3より多ければプロトコルを完全に支配されてしまい、正しいバリデータが何らかの不正行為の証拠を受け取ることを保証できない。
さらに、アカウンタビリティは非同期ネットワークでせいぜい最終的にありうる程度のものである。セーフティの侵害に伴い、重大なメッセージの配信遅延により、侵害が検出されてから一定時間が経つまでどのバリデータがビザンチンだったかを確定することは不可能になる可能性がある。実際、正しいプロセスがビザンチンなふるまいの証拠を受信可能だとしてもそれをゴシップで伝えることができるようになる前に取り返しのつない事態に陥れば、実際にこのような状況は先進的なバックアップソリューションで克服できるようにすべきであるのだが、アカウンタビリティが恒久的に侵害されるような状況になる可能性がある。
セーフティの侵害が発生しうる状況を列挙しそれぞれのケースで示すことで、ビザンチンなバリデータは識別可能で、プロトコルはアカウンタブルであることをと示すことができる。Tendermintのシンプルさは、リーダー選出の管理が必要なプロトコルよりも遥かに簡単な分析をその証明に与えることができる。
Tendermintでセーフティの侵害を起こす方法は2つしかなく、どちらもアカウンタブルである。まず、ビザンチンな提案者は対立する2つの提案をあるラウンドで行い、ビザンチンなバリデータは両方に投票する。次に、ビザンチンなバリデータは一定のバリデータがコミットし終えた後でロックルールを破ることで、その後のラウンドで他のバリデータの異なるブロックへのコミットを引き起こす。2/3以下のビザンチンなバリデータがUnlock-on-Polkaの違反だけを使ってセーフティを侵害することはできないことに注意されたい。残る1/3の誠実なノードに関するコミットを正当化するポルカがあるためには1/3以上がPrevote-the-Lockに違反しなければならない。
提案の対立と投票の対立がある場合、両方のメッセージを受信することで対立を検出することと署名を通じて犯人を特定できることはどちらも自明である。
ロックルールの違反がある場合、セーフティの侵害に伴い、正しいバリデータはその部六項で確認した全ての投票をブロードキャストしなければならないので、その証拠もセットで存在しうる。2/3には達しない正しいバリデータは2つブロックのコミットを引き起こした全ての投票に集合的に関与している。それらの投票の中で、対立する投票に署名したバリデータが1/3以上でないならば、Prevote-the-Lockを破った1/3以上のバリデータがいることになる。
事前投票か事前コミットがコミットに影響したのであれば、それは正しいバリデータに確認されていなければならない。従って、全ての投票を集めることで、各バリデータの事前投票と最新の事前コミットを突合することで、複数でないのであればPrevote-the-Lockの違反を検出できる。
同様にUnlock-on-Polkaの違反も各バリデータの事前コミットとそれを正当化するポルカを突合することで検出できる。これはビザンチンなバリデータがポルカを確認する前に事前コミットできることと、適切なポルカが最終的に生じるのであればアカウンタビリティを免れることを意味しているという点には注意されたい。しかしながら、いずれにせよポルカが生じるのであれば、このような状況は実際にセーフティの侵害に与しえない。
現行の設計は危機鎮静化後のブロードキャストプロトコルに従ってアカウンタビリティをもたらしているが、リアルタイムでのアカウンタビリティが可能なように改善されるだろう。つまり、コミットが事前コミットだけでなくその事前コミットを正当化する投票全てを含めるように変更されて、当該ブロック高の開始時点まで遡るのである。このように、セーフティが侵害されれば不当な投票は速やかに検出されうるのである。
(EthanのTendermint論文6 ←← 前)|(次 →→ EthanのTendermint論文8)
免責
邦訳には誤りがある場合がございます。予めご承知おき下さい。
確実な情報を知るためには冒頭に示した原文をご参照くださいますようお願いいたします。