DPoSとDBFTの違い

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

DLT

まずブロックチェーンの上に、分散型台帳技術(DLT)というより広範な概念を持っておきましょう。

このDLTの中に、ブロックチェーンとPBFTと含めることができます。

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では、信頼できるノードだけが参加します。

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

現状

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

その横で、NEOはDBFTを自称しています。

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

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

つまり、根本的にDBFTであるかどうかとDPoSであるかどうかは別ベクトルです。

それを以下の表にまとめてみました。

分散型台帳技術(DLT)ブロックチェーン型PBFT型
Proof of AuthorityプライベートブロックチェーンHyperLedger Fabric v0.6
Proof of WorkBitcoinなど原理的に不可
Proof of Stake
草コインに多い?Delegatedでないと不可
Delegated Proof of StakeLiskとか?Cosmos Hub,NEO,EOS
Proof of ImportanceNEM

※ HyperLedgerFabric v1.0はPBFTじゃなくなったらしい)

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

根本的にDBFTであるかどうかとDPoSであるかどうかは別ベクトル 、ということをわかっていただけたらと思います。