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


    论文中的描述


    但在这里没有明白为什么在 V R F V E R VRF_{VER} VRFVER环节需要x,y, π \pi π信息。以及message x是什么,如何选取才能取到伪随机性。

    VRF介绍

    VRF 这个概念最早由 Micali,Rabin 和 Vadhan 三个人所提出。
    一句话描述: 以sk和随机种子作为输入,输出伪随机数r和对应的证明proof
    任何人可以通过sk对应的公钥vk加上证明proof来验证伪随机数r是否有sk持有者生成。

    特点:
    1)可验证性:任何人可以通过vk和proof验证随机数r是sk和x对应的输出;
    2)唯一性:sk和x不变的情况下,输出的伪随机数r是唯一的;
    3)随机性:不给定证明proof的情况下,VRF的输出的伪随机数r与其他伪随机数r’对于敌手来说是不可区分的。

    关于第三步:验证
    验证函数 Verify 输入验证密钥 vk、消息 x 以及伪随机y和证明 π \pi π。输出结果0/1:只有该函数验证了证明 π \pi π 是根据 x 生成的,且根据证明 π \pi π可以推导出 Y,才会输出 1,也就是说该函数验证 X 与 Y 是否存在唯一的对应关系。

    为什么VRF验证需要proof证明?

    如果没有 π \pi π,就类似数字签名,这里只能通过vk证明sk对消息x进行了签名验证,但是如果对消息x用了一种算法进行处理后的信息不能验证,即不能验证f(x)。
    而ZKP零知识证明正好是可以做到在不透露秘密sk的条件下,验证基于sk提出的承诺statement。(与数字签名的区别是,数字签名是不提供sk的情况下证明原本的消息x,而ZKP可以做到不提供sk的条件下对x的推论 f s k ( x ) f_{sk}(x) fsk(x)的证明)

    VRF应用于区块链共识打包区块权的选择

    区块打包节点选择方式:让各个节点自己抽签,抽中之后,大家可以很容易地验证这个结果确实是你生成的。

    具体过程有可能是这样的:假设现在是 round 10(第 10 轮),节点们会轮流抽签,以节点自己的私钥 + 一个全网都知道的随机数(比如是这轮的轮次 10)作为输入,生成了一个随机数(假设在0-100);设置一个条件:100 个节点轮流抽签,谁先抽出来的随机数大于 10,就是这一轮的打包者。假设 5 号节点抽到了 11,可是只有 5 号知道其他人不知道,因此他在广播这个随机的同时还需要广播一个零知识证明。通过零知识证明,全网只需要通过 5 号的公钥就可以验证,接受 5 号为这轮打包者。

    可验证随机函数一共包含四个函数:1、生成密钥,生成一个公钥私钥对;2、生成随机数输出;3、计算零知识证明;4、验证随机数输出。

    VRF 的目的就是要生成一个真正随机而且无法被预测的值。在区块链选出块节点的过程中,为了保证安全,随机是一个基本要求。不过,区块链选节点不单纯是随机就 OK 的,还要考虑到攻击成本等,所以共识机制往往加入算力和持币权益等影响因素,以增加攻击者的攻击成本。如果单纯使用随机算法,就很容易受到女巫攻击,攻击者可以廉价找大量的傀儡机(肉鸡)来增加自己抽中的概率。

    Reference

    1.某目前尚未见刊的论文
    2.密码学小知识(8):可验证随机函数(Verifiable Random Function, VRF)
    3.可验证随机函数VRF
    4.可验证随机函数(VRF)应用于区块链共识的原理和方法
    5.区块链知识之 VRF: 可验证随机函数

  • 相关阅读:
    【微信小程序】带你进入小程序的世界
    京东数据分析:2023年10月京东洗衣机行业品牌销售排行榜
    云e办(后端)——RabbitMQ生产可靠性及消费端幂等性(邮件发送)
    了解Web3,读这篇就够了
    开关电源泄漏电流测试方法| 万用表测量开关电源漏电流的方法及接线方式分享
    供应脂质体形成材料DSPE-PEG-Thiol,DSPE-PEG-SH
    web期末网站设计大作业:基于HTML+CSS+JavaScript制作新能源汽车企业网站
    mysql---squid代理服务器
    Drupal 9删除丢失的模块
    装饰器模式和 AOP 面向切片编程(设计模式与开发实践 P15)
  • 原文地址:https://blog.csdn.net/qq_33583069/article/details/125631380