1

Polkadot 有 GRANDPA 用于最终确定和 BABE 用于块生产。据说即使没有 GRANDPA 和大多数在线验证者,BABE 也能够继续生产区块。BABE 如何知道要继续建立在哪个链上?

4

1 回答 1

1

BABE 是 Polkadot 中继链中的出块算法。它使用VRF(可验证随机函数)从一组验证者中挑选出块生产候选者。这个块生产者是主要的。同时,如果 VRF 没有导致任何验证者被选为主要节点,BABE 会在后台运行类似循环的选择算法,以从集合中选择一个次要验证者来生成一个块。使用这种双重选择方法,BABE 保持一个恒定的块时间 - 如果选择了主要的,如果没有选择次要的。

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

在 GRANDPA 下,当 2/3 或更多的验证者就一个区块达成一致时,该区块及其之前的所有区块都会立即完成。

那么当 BABE 在两条独立的链上分叉和构建时会发生什么?

Polkadot 中的规则如下:

  • 首先,观察哪条链的最终区块最近
  • 然后,如果最终确定的头上有分叉,则选择具有最多初选的那个 - 由 VRF 选择的那些与类似循环算法的算法

如果仍然存在平局,则歧义会一直持续到三分之二的验证者在其中一个分叉中敲定一个区块并截断另一个分叉。

于 2019-11-04T09:51:39.957 回答