Polkadot中的前叉选择如何工作?

时间:2019-11-04 09:51:39

标签: blockchain consensus polkadot

Polkadot拥有用于定稿的GRANDPA和用于块生产的BABE。据说,即使没有GRANDPA,甚至没有大多数在线验证器,BABE仍能够保持生产模块。 BABE如何知道要建立在哪个链上?

1 个答案:

答案 0 :(得分:0)

BABE是Polkadot中继链中的块生产算法。它使用VRF, Verifiable Random Function来从一组验证器中选择候选区块生产。该块生产者是 primary 。同时,如果VRF未导致选择任何验证器,则BABE在后台运行类似于循环选择算法,以从集合中选择 secondary 验证器以生成块。作为初选。使用这种双重选择方法,BABE可以保持恒定的块时间-如果选择,则为主块,否则为次要。

VRF可能有资格验证多个验证器以生成块,在这种情况下,两个块均有效。届时,将取决于网络延迟,网络的其余部分看到每个块的速度如何-这将决定获胜者。

在GRANDPA下,当有2/3或更多的验证者对一个区块达成共识时,该区块以及导致该区块的所有区块都会立即完成。

那么,当BABE分叉并在两个单独的链上构建时会发生什么?

Polkadot中的规则如下:

  • 首先,观察哪条链具有最接近的最终嵌段
  • 然后,如果最终确定的头上有分叉,则选择具有最多 primary 的分叉-由VRF与类似循环算法选择的分叉

如果仍然有平局,则模棱两可继续,直到三分之二的验证者最终确定其中一个分叉的一个区块并截断另一个。