1

Polkadot には、ファイナライズ用の GRANDPA とブロック生成用の BABE があります。BABE は、GRANDPA がいなくても、オンラインのバリデーターの大多数がいなくても、ブロックを生成し続けることができると言われています。BABE はどのチェーンを構築し続けるかをどのように判断しますか?

4

1 に答える 1

1

BABE は、Polkadot のリレー チェーンにおけるブロック生成アルゴリズムです。VRF、Verifiable Random Functionを使用して、一連のバリデータの中からブロック生成候補を選択します。このブロック プロデューサーはプライマリです。同時に、BABE はバックグラウンドでラウンド ロビンのような選択アルゴリズムを実行し、VRF によってプライマリとして選択されるバリデータがなかった場合、セットからセカンダリバリデータを選択してブロックを生成します。この二重選択方法を使用して、BABE は一定のブロック時間を維持します - 選択された場合はプライマリ、選択されていない場合はセカンダリです。

VRF が複数のバリデーターを修飾してブロックを生成する可能性があります。その場合、両方のブロックが有効です。その時点で、ネットワークの残りの部分が各ブロックをどれだけ速く認識するかは、ネットワークの遅延に依存します。これが勝者を決定します。

GRANDPA では、バリデーターの 2/3 以上がブロックに同意すると、そのブロックとそれに至るまでのすべてのブロックが即座にファイナライズされます。

では、BABE が 2 つの別々のチェーンをフォークして構築するとどうなるでしょうか?

Polkadot のルールは次のとおりです。

  • 最初に、どのチェーンに最も近いファイナライズ済みブロックがあるかを観察します
  • 次に、そのファイナライズされたヘッドにフォークがある場合は、プライマリが最も多いものを選択します-ラウンドロビンのようなアルゴリズムに対してVRFによって選択されたもの

それでも同点の場合、バリデーターの 3 分の 2 がフォークの 1 つでブロックを確定し、もう 1 つのブロックを切断するまで、あいまいさが続きます。

于 2019-11-04T09:51:39.957 に答える