然后将 RESULT 与在协议(具体来说是在 Polkadot Host 中)的实现中定义的阈值进行比较。如果该值小于阈值,那么得出此数字的验证人将是该插时隙的可行出块候选者。然后,验证人尝试创建一个块,并将该块与先前获得的 PROOF 和 RESULT 一起提交到网络中。 钓鱼人(fisherman)- 监视网络的收集人和验证人错误行为的节点,将验证中继链区块。由于非法投掷将产生非法区块,并且由于钓鱼人将在验证人产生的每个区块中访问 RESULT 和 PROOF,因此他们很容易自动报告作弊的验证人。 总结一下:在 VRF 下,每个验证人都会为自己掷出一个数字,并根据阈值对其进行检查,如果随机掷出的骰子低于该阈值,则会生成一个区块。观察网络并报告不良行为的钓鱼人事后会验证这些投掷的有效性,并向系统报告任何作弊行为(例如,有人尽管掷出的数量超过阈值,但仍然假装成出块者)。 精明的读者会注意到,由于这种工作方式,某些时隙可能没有验证人作为出块候选者,因为所有验证人候选者的得分都太高而错过了阈值。我们阐明了如何解决此问题,并确保与 Wiki 页面的共识部分 的 Polkadot 出块时间保持几乎一致。 RANDAO 另一种获取链上随机性的方法是以太坊的 RANDAO 方法。RANDAO 要求每个验证人通过对某些种子执行数千个哈希来进行准备。之后验证人在回合中发布最终的哈希值,并且从每个参与者进入游戏中得出随机数。只要一名诚实的验证人参加,随机性就被认为是安全的(在经济上进行攻击不可行)。 RANDAO 可以选择使用 VDF 进行增强。 VDFs 可验证延迟函数( Verifiable Delay Functions )是指即使在并行计算机上也要花费规定时间才能完成的计算。它们产生独特的输出,可以公用共设置独立有效地对其进行验证。通过将 RANDAO 的结果输入 VDF,会引入延迟,从而使任何攻击者企图影响当前随机性的尝试都将过时。 VDF 一般需要通过 ASIC 设备来实现,这类设备需要与其他类型的节点分开运行。尽管只有一台就足以保证系统的安全,并且它们将是开源的并且几乎免费分发,但是运行这类设备既不便宜也不受激励,对于选择这种方法的区块链用户而言将产生不必要的摩擦。 扩展资料 Polkadot 在随机数和抽签上的研究 - 包含了在证明机制之间作出选择的理由:https://research.web3.foundation/en/latest/polkadot/BABE/Babe.html关于 Pokadot 中用到的随机数的讨论 - W3F 研究员讨论波卡中的随机性及其使用场景和假设:https://github.com/paritytech/ink/issues/57关注 PolkaWorld 发现 Web 3.0 时代新机遇 (责任编辑:admin) |