DBFTとPBFTの違い

A
TeamGeekHash
Published in
3 min readFeb 18, 2019

・今回の記事の要約:PBFT⊆DBFT

(ブロックチェーンの文脈では)ブロック生成における合意形成において、ビザンチン将軍問題が発生したとしても全体として合意形成が安定的に行われる状態にあることをビザンチン・フォールトトレランス性(Byzantine Fault Tolerance)があるといいます。

今回はビザンチン・フォールトトレランス性を有するコンセンサスアルゴリズムの中でも、名前的に混同しやすいDelegated Byzantine Fault Tolerance(DBFT)Practical Byzantine Fault Tolelance(PBFT)の違いについて簡単にまとめてみました。

現在ではNEOがDBFTを採用しており、ZilliqaやArkなどがPBFTを採用しています。

共通点

分散性は低いです。

また、分散性を犠牲にする(ノードを制限する)ことでスケーラビリティを得ているという点でも同じです。

いずれも、悪意のあるノードによって不正にフォークが行われないようにするために、検証ノードによる2/3以上の合意によってファイナライズに到達するという基本的な仕組みは同じです。

そして、ノードの中から、代表者として選出された一つのノードがブロックを生成に関わる大きな権利を有しているという点も同じです。

相違点

・PBFTはノードが固定

・DBFTはいくつかのノードが投票によって選出

PBFTはノードが予め信頼できるノードのみに決定されていて、ノードから選出される代表者もほぼ固定されています。それに対して、DBFTはPBFTをよりパブリックに応用した仕組みになっており、(現在ほぼNEOのノードですが)ノードが予め決定されていないという点が大きな違いです。

しかし、そうなると2/3以上の合意に達することは非常に難しくなります。

その解決方法として、全ての参加者がノードになれる訳ではなく、トークンホルダーの投票によって民主主義的に選出された参加者(ブックキーパー)に検証ノードとなる権利が与えられます。

また、DBFTでは代表者の選出はランダムに決定され、合意が2/3以上に満たない場合は別の代表者に交代するという点でも異なっています。

--

--