Fragments of verbose memory

冗長な記憶の断片 - Web技術のメモをほぼ毎日更新(準備中)

Feb 24, 2021 - コメント - 日記

BinanceSmartChainのProof-of-Staked-Authority

BinanceSmartChain (以下、BSC)が凄まじい勢いでトランザクションを増やしています。go-ethereum をベースとし、Ethereumのエコシステムを引き続きつつ、ステークによるコンセンサスアルゴリズムで早く・コストが安いトランザクションを実現しています。実際BSCにトランザクションを流してみると、BitcoinやEthereumメインネットが一世代前のものに見えます。

当初から言われているとおり、BSCの「早さ安さ」というのはセキュリティとのトレードオフで実現されています。今日は、BSCのコンセンサスアルゴリズムの中核となるProof of Staked Authorityがどんなものか本家ドキュメント から抜粋翻訳してみます。

Proof of Staked Authority

プルーフ・オブ・ワーク(PoW)は、分散型ネットワークを実現するための実用的な仕組みとして承認されていますが、環境に優しくない上に、セキュリティを維持するためには大規模な参加者を必要とします。

Proof-of-Authority(PoA)は、51%の攻撃に対してある程度の防御を提供し、効率性を向上させ、一定レベルのビザンチンプレイヤー(悪意のあるプレイヤーやハッキングされたプレイヤー)に対する耐性を持たせています。一方、PoAプロトコルは、バリデータ、すなわちブロックを生成するために交代で参加するノードがすべての権限を持ち、腐敗やセキュリティ攻撃を受けやすいため、PoWほど分散化されていないという点で最も批判されています。

EOSCosmos のような他のブロックチェーンでは、トークンホルダーが投票してバリデータセットを選出できるように、異なるタイプのDPoS(Deputy Proof of Stake)を導入しています。これは分散化を高め、コミュニティガバナンスを促進します。

コンセンサスのためにDPoSとPoAを組み合わせるために、Binance Smart ChainはParlia と呼ばれる斬新なコンセンサスエンジンを実装しています:

  1. ブロックは限られたバリデータ集団によって生成されます。
  2. バリデータは交代でPoA方式でブロックを生成します、これはEthereumのCliqueコンセンサスエンジンに似ています。
  3. バリデータ集団は、Binance Chainのステークスベースのガバナンスに基づいて選出されます。
  4. バリデータ集団の変更は、クロスチェーンの通信メカニズムを介して中継されます。
  5. Parliaのコンセンサスエンジンは、システムコントラクトのセットと相互作用して、活気のあるスラッシュ、収益の分配、バリデータ集団の更新機能を実現します。

どうやら、以下のような仕組みのようです

  • BSCはParliaというDPoS+PoAの仕組み
  • BSC外で決められた21人のバリデータ集団が交代でブロックを生成

BNBのステークスベースとなれば、実質Binance社のオフチェーンとあまり変わらないようにも見えます。Binance社が強力な権力を持っているチェーンなので、Binanceが信じられない人は使うべきではないのでしょう。もしそうでなければ、フラストレーションのないEVM環境というのは非常に魅力的です。今後もBSCをチェックしていきたいと思います。