可验证的随机函数(VRF)


可验证的随机函数(VRF)

可验证的随机函数,汉语是一个可验证的随机函数。简单地说,VRF可以生成一组可验证的伪随机随机数Y和来自私钥(SK)和信息(X)的证明。任何人都可以使用Verify()函数来检查随机字符串是否实际上是公钥的私钥持有者,并使用Evaluate()函数而不是混乱:

·评估(SK,X)→(Y,⍴)。生成随机数:输入私钥SK,信息X,输出伪随机输出字符串Y和校样。

·验证(VK,X,Y,⍴)→0/1.验证随机数:输入公钥VK,信息X,随机数Y和校样⍴。如果随机数确实是与公钥对应的私钥,则使用Evaluate函数生成密钥,则返回1(true)

为什么我们需要这个VRF?让我们一起看

密码分类

无论BFT共识机制如何,领导和委员会都会完成议案的发布和协商一致的决议。例如,EOS的dPoS BFT是固定的PBFT一致性算法,其中21个BP依次作为领导者和选民,Zilliqa通过PoW加入Commit。这些更直观的拜占庭共识算法的一个共同特点是,每个人都可以看到下一个区块的领导者是谁以及谁负责协议。这可能会使这些区块生产者和委员会成员容易成为攻击者的目标,无论是DDOS还是贿赂,这为攻击者提供了明确的目标。这也使得成为领导者或委员会成员的安全门槛更高。 

为了解决这一潜在风险,Algorand使用VRF来掩盖领导者选择的步骤。可以想象,一般的BFT将在每轮开始时公开选择领导者和委员会。 Algorand将在每轮开始时公布获胜号码。每个用户都可以自己购买奖品并赢得奖品。这个人可以成为下一轮领导者(或委员会审核员),但没有人知道谁在获奖者自己之前获奖,也就是说,没有人能够预测下一轮的领导者和委员会。当然,获胜者不是口号。获胜者需要出示获奖证书,并且每个人都可以验证此证明。这正是我们刚刚提到的VRF。 

在每轮的每一步之前,每个用户都可以使用Sortition()函数来验证他们是否有资格通过自己的私钥成为领导者或委员会成员(参见VRF)。 evaluate()函数指示输出是否满足某些规则,并且概率与所持货币成比例。如果你发现自己是领导者,那么用户将准备好发布该块,并用Proof进行广播,他真的赢了。同样,在每个需要委员会决议投票的后续步骤中,每个用户首​​先检查他或她是否成功进入委员会,如果是,则进行自己的投票(或其他价值待定)。证明一起广播。 

VRF与Algorand PoS共识机制简介

参与者更换

上述设计对安全性非常有帮助。由于没有人能预测参与下一轮共识的成员,恶意节点无法预先锁定要攻击的对象。当恶意节点知道有人是本轮的领导者时,该信息已经分发到网络。领导者想要广播的块已经被网络上的其他节点所知,因此它被认为是“身体已退休”。现在,攻击它为时已晚。同样,在随后的所有共识过程中,每个成员都广播自己的决议,在投票的同时,他们已经履行了在这一步中成为委员会成员的义务,然后在下一步。将有新的委员会继续完成每一轮共识。 

这称为参与者替换。每个共识步骤的解决方案成员是不同的,彼此独立,使恶意用户无法有效地攻击网络。 

小心,你可能会注意到这种自我奖励模式让很多人同时成为领导者?答案是肯定的,可能有多个节点有资格成为Leader,但最后您可以指定一个简单的哈希进行排序,确定最高优先级的领导者,并且只帮助广播其块。 

总而言之,Algorand并未在每个区块领导者的共识的每个决议步骤中预先选择,而是找到他有权参与的节点,并在参与共识时将证明附加到广播。这与在节点广播块之后等待一些已知用户回复签名的一些BFT模型不同。相反,本地收集网络上的各种签名投票并运行他们自己的一致性算法,同时帮助闲聊。

总结

Algorand算法的出现引起了很多轰动(并且BA *也是焦点),并且通过VRF在分散世界中随机数生成的概念也被应用于区块链。这里只是对VRF的简要介绍以及他可以在共识协议中带来的变化。

发布了74 篇原创文章 · 获赞 127 · 访问量 91万+

猜你喜欢

转载自blog.csdn.net/AAA123524457/article/details/103003769
vrf