Polkadot的VRF如何实现随机性来洗牌验证器?

时间:2019-10-16 15:55:14

标签: random shuffle polkadot

与使用RANDAO(可能已通过VDF增强)的以太坊相反,在Polkadot中,可验证的随机函数(VRF)用于改组验证器并为某些插槽选择潜在的区块提议者。随机性来自哪里,即随机性是如何工作的?

1 个答案:

答案 0 :(得分:0)

可验证的随机函数是可以用伪代码表示的函数:

(RESULT, PROOF) = VRF(SECRET, INPUT)

也就是说,对于某些秘密和某些输入(可以是公共的),结果是RESULTPROOF的元组,其中PROOF可以由外部观察者用来验证VRF RESULT的合法性。

换句话说,进行“ VRF滚动”会得到一个随机数,并证明您获得了该随机数,而不仅仅是选择它。

每个验证器的每个插槽(大约每6秒钟)将运行VRF功能。 SECRET将是其VRF密钥,这是一个仅用于此目的的特殊密钥,由验证者生成并保密。 INPUT要么是来自创世块的特定值(如果链中少于2个纪元),要么是过去2个纪元中所有VRF结果的哈希值。

一旦验证者执行了VRF,就将RESULT与协议定义的THRESHOLD值进行比较。如果RESULT小于THRESHOLD,则验证器是该时隙的有效块建议者。否则,验证程序将跳过该插槽。

这意味着可能有多个验证者正在为某个插槽生成候选块,在这种情况下,只要其他节点在与根据GRANDPA finality小工具最近确定的区块。在这种情况下也可能没有插槽的区块生产者,在这种情况下,AURA共识将接管。 AURA共识基本上是一个后备,它为每个块选择一个随机验证器。它与BABE并行运行,并且仅在插槽没有块生成器的情况下才重要,否则它将被忽略。