可验证随机函数 Verifiable Random Function(VRF)

在 substrate 的 BABE 中为了使出块不可预测,减少去中心化程度,使用了 VRF.

简单描述一下 BABE (POS)的出块流程

  1. 想要出块的 node 在一个 epoch 中抵押一定数量的 token,
  2. 下一个 epoch 来临后,这个抵押了代币的node 就成为了验证者具有了出块的权利
  3. 到下一个 slot 后,node 使用自己的私钥与一个输入 x (比如要打包的区块的 hash,具体x 是什么忘记了)经过 VRF 得到一个随机值 y 和正确生成 y 的证明 proof
  4. 当这个 y 小于自己抵押的 token 数量时,node 就可以向其他node 广播自己打包的块
  5. 其他 node 收到这个块后使用公钥和 proof 后就可以确定这个 y 是否是被正确计算出来的,从而网络达成共识

VRF 介绍

VRF 和伪随机函数功能类似,通过任意一个输入,可以获得一个随机数输出:

  1. 对于不同的输入,输出是随机的,并且均匀分布在值域范围内.
  2. 对于相同的输入,得到的输出是相同的
    但相比于伪随机函数,VRF 多了一个非交互的零知识证明,使用私钥和输入生成proof,其他人可以使用公钥和输入来验证随机数输出的正确性.

VRF 定义为(output, proof) <- VRF(input, sk)

input 为合法输入,sk 是用户的私钥,output 是输出的随机数,proof 可以证明输出的数据合法.

VRF具体流程

  1. 生成公私钥(SK,PK),并给定一个输入 x
  2. 计算 y = Fsk(x) 和 proof = Psk(x)
  3. 使用 PK 和 proof,所有人都可以验证 y = Fsk(x) 是被正确计算出来的
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 可验证随机函数(Verifiable Random Function)对区块链的共识非常有帮助。从某种意义上看,V...
    侃道夫阅读 1,387评论 0 4
  • 表情是什么,我认为表情就是表现出来的情绪。表情可以传达很多信息。高兴了当然就笑了,难过就哭了。两者是相互影响密不可...
    Persistenc_6aea阅读 129,775评论 2 7
  • 16宿命:用概率思维提高你的胜算 以前的我是风险厌恶者,不喜欢去冒险,但是人生放弃了冒险,也就放弃了无数的可能。 ...
    yichen大刀阅读 8,002评论 0 4

友情链接更多精彩内容