dPoSとDBFTの違い

  • このエントリーをはてなブックマークに追加
  • LINEで送る

世の中、dPoSとDBFT混同してない?

 

dPoS

dPoSはDelegated Proof of Stakeの略です。delegatorは、validatorに自分の持ってるステークを委任することができます。

NEMでの委任ハーベストにとても近いです。

NEMのハーベスティングの仕組み

しかし、「dPoS固有の特徴」というとこれしか言えないと思います。

DBFT

DBFTは、プライベートチェーンでよく使われるPBFTを応用したものです。

PBFTでは参加するノードの数があらかじめ決まっていて、その内輪の中の全員で高速に合意をとってしまいます。

Byzantine Consensus Algorithm

DPOS BFT— Pipelined Byzantine Fault Tolerance

プレコミット→コミット→ファイナライズという流れですが、参加ノードの2/3の合意を待って、フォークせずにファイナライズできるようにしています。

 

参加するノードを制限しない場合、2/3の合意がかなり大変になりますよね?なので、参加ノードを制限することになります。

そこでPBFTではProof of Authorityと同様、信頼できるノードだけが参加します。

一方DBFTも、参加するノードが制限されてますが、ノードでない人も委任によって投票に参加することができ、パブリックチェーンのような使い方ができるということになります。

 

現状

現状では、Cosmos(Tendermint)もEOSもdPoSと表現されることが多いです。

NEOはDBFTを自称しています。

 

ですがdPoSの特徴としては「デリゲーターとバリデーターがいる」くらいしかなく、これでは即時ファイナライズの無いPoS系と区別がつきません。

Proof of Stakeのシンプルな実装の簡単な説明

 

そこで、即時ファイナライズをするdPoS系は、NEOと同じくDBFTと呼んだ方が正確なんじゃないかと思い、以下のように整理することを提案したいです。

確率的ファイナライズ 即時ファイナライズ
計算量 PoW①
ステーク PoS(⊃dPoS,PoI)③ DBFT④
パーミッション PoA⑤ PBFT⑥

①Bitcoin

②存在せず

③NEM

④Cosmos(Tendermint)、EOS、NEO

⑤mijin

⑥HyperLedger Fabric v0.6(v1.0はPBFTじゃなくなったらしい)

 

(DBFTの中でも、Tendermintのようにノードも民主的に決めるか、NEOのようにあらかじめ決まっているかでグラデーションがありますが、これはDBFTとPBFTの間つまり3行3列から4行3列の間のグラデーションの話であり、今回の本題である3行2列と3行3列の区別とは関係ないので割愛します。)

 

個人的には、NEMのTendermint版、nemint?の登場に期待。

  • このエントリーをはてなブックマークに追加
  • LINEで送る

SNSでもご購読できます。