可验证随机函数(VRF)

文章目录

    • 一、背景以及场景
      • 共识发展
        • 第一代 POW “以力取胜”
        • 第二代 POS/DPOS “民主投票”
        • 第三代 VRF “运气抽签”
    • 二、可验证随机函数(VRF)快速开始
      • 1. VRF是什么?
      • 2. MD5 hash函数和VRF(Verifiable Random Function)区别
      • 3. VRF-可验证随机函数
    • 参考

一、背景以及场景

在区块链场景中,有的框架会用算法随机产生出块节点与验证节点(如Algorand),甚至解决分叉。按传统的随机算法,按一定的哈希规则随机轮询,选出一个节点来记账/验证。如果这个随机轮询的规则是谁都可以复现的,那么可以推测出将来的某个记账/验证节点,集中攻击它。
为了解决这个问题,就引入了VRF,只有自己能够完成这个哈希过程,而别人只能在他声明之后验证这个过程,防止有人可以提前推测出将来的记账节点。

VRF的目的就是要生成随机值,且无法被预测,同时还要可验证,可重放。

共识发展

区块链新一代共识算法:VRF分布式可验证随机函数
参考URL: https://blog.csdn.net/wxid2798226/article/details/84316219

假设一个小岛,没有法币,由101个对等的没有隶属关系的记账人来记录小岛的经济活动(也就是所谓去中心化记账)。这样的设计,冗余性应该非常好,某个记账人出问题了不影响整个系统,最大的麻烦是这么多人同记一本账,而且没有中心化的统一指挥,会不会出现不同人记的不一致?以谁为准?那么不同人分布式各自记账的前提下,怎么用规则保证各自记的账相互核对是一致的?这个就是所谓共识问题

第一代 POW “以力取胜”

真实世界中,比特币和以太坊用的就是POW,以力量取胜(即芯片算力),目前已经发展了好几代专用芯片,消耗了巨额的设备购置资金,POW挖矿过程中也消耗了很多能源。另外,POW的性能也不好,比特币和以太坊的tps(每秒处理的事务)都不高。POW最大的优点是久经考验,比特币运行到现在十年了,POW算法证明是行之有效;以太坊POW运行到现在也好几年了,想换成其他算法一直没换成。可见POW现阶段是有其存在的道理的。

第二代 POS/DPOS “民主投票”

真实世界中,以太坊准备从POW换成POS,EOS的共识算法是DPOS(DPOS和POS的差别可以认为是间接民主和直接民主的区别,POS是一币一票直接投票;DPOS是一币一票先选举出人大代表,再由人大代表对具体议题投票)。实践中效果很一般:

  • POS虽然不浪费能源,但是别忘了人类社会永恒的不均衡性,很多时候,巨额财富只掌握在小部分人手里。以太坊大部分都只掌握在少数“巨鲸”手里,改成POS,小散没什么话语权,也不会取关心投票,建设生态,和去中心化的理念相违背
  • DPOS在EOS的实践也有待考验,目前看普通使用者也没有什么动力去投票,一是对被选举者不了解,二是投票也花费时间,更何况普通人的票也起不了太大作用,因为抵不上“巨鲸”手里一个零头。
第三代 VRF “运气抽签”

除了投票外,人类社会还有一个解决办法是抽签,不过不是排队轮流从一个筒子里面抽签(那样太中心化了,中心的那个抽签筒容易动手脚),而是每个人一个抽签桶,各自抽完了再亮相出来比大小,最小的为准;两人抽中同一个签,可以这两人再抽一轮

那么怎么防止作弊呢?比如每个人都挑最小的签,然后宣称自己是抽中呢。这样的分布式抽签永远没有结果了。现实世界针对这样的问题,**采取一种叫做“零知识证明”的数学机制,没做实际抽签动作,是凑不出实际的结果的,也通不过大家的校验。**在区块链小岛上,你可以想象成,每个人边抽签边用手机录下抽签过程和轮次标志,如果大家有疑问可以回放录像。

总之,这个解决方案我感觉很接近于中本聪原来设想的那个区块链世界。不再有矿场和矿机浪费能源,损害去中心化;效率也很高;而且保证了尾部参与者也能有机会参与记账,有一定的公平性。下一代的共识算法已来。

POW靠蛮力取胜,中本聪设想的“一cpu一票”的乌托邦并没有到来,他忘记了人类社会的不均衡性,POW形成了一个个中心化的大矿场,利益的集中化导致普罗大众并不关心区块链;矿场主本身也是逐利而来,并不关心生态;资源和利益集中在少部分大矿场和大交易所手里,普罗大众只求炒币分一杯羹,结果被“割韭菜”。

DPOS也存在同样的问题,投票制度最早是希腊雅典在面对波斯人入侵时被发明出来决定是战是降的生死存亡问题(参见民主的起源);DPOS现在投票率很低,票又集中在少数人手中,那些炒作eos的普通人有几个真正关心生态并花时间认真行使投票权?

**解决这个问题,需要长时间探索。也许抽签制的VRF是个解决方法。**至少这个制度下,尾部的参与者也是有可能获得利益的,利益分配没有像过去那么集中。

二、可验证随机函数(VRF)快速开始

1. VRF是什么?

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

VRF是可验证随机函数(verifiable random function),一方面具有伪随机性,另一方面它还具有可验证性(输出包括一个非交互零知识证明)

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

在这里插入图片描述

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

所谓VRF就是指给定一个消息和一个私钥,可以计算出一个唯一确定的值,这个值唯一确定且不可预测,且可以验证。
传统的签名算法不具有唯一确定的特性,私钥持有者可以计算出多个合法解。

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

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

在这里插入图片描述
input 为合法输入,sk 是用户的私钥,output 是输出的随机数,proof 可以证明输出的数据合法.

在这里插入图片描述

2. MD5 hash函数和VRF(Verifiable Random Function)区别

MD5 hash函数和VRF(Verifiable Random Function)确实有相似之处,他们都会对相同的输入产生相同的输出。但是,他们之间的主要区别在于VRF具有可验证性。

具体来说,VRF生成的输出不仅与输入有关,还与特定的私钥有关。并且,VRF在生成输出的同时,还会生成一个证明。这个证明可以被任何人使用对应的公钥来验证,以确保输出是由特定的私钥和输入生成的。这就是所谓的"可验证性",它是MD5等普通hash函数不具备的。

另外,VRF的输出具有随机性,即它的输出在所有可能的输出空间中是均匀分布的。这使得VRF的输出可以被用作随机数。而MD5等普通hash函数虽然能够生成固定长度的输出,但是这些输出并不一定具有良好的随机性。

因此,尽管MD5 hash函数和VRF在某些方面有相似之处,但是VRF由于具有可验证性和输出的随机性,使其在很多应用中更具优势。

3. VRF-可验证随机函数

VRF-可验证随机函数
参考URL: https://blog.csdn.net/yhc166188/article/details/100188559
可验证随机函数VRF
参考URL: https://blog.csdn.net/shangsongwww/article/details/88813116

VRF(Verifiable Random Function):可验证随机函数用于区块链中的意义很好理解——用以完成出块节点的随机选择。

VRF算法作为一种基于密码学的新型共识模型,最大的优势是快速共识、抗攻击能力、极低算力需求,已有的解决方案有Algorand算法和Dfinity中基于BLS的算法等。

VRF算法作为一种基于密码学的新型共识模型,最大的优势是快速共识、抗攻击能力、极低算力需求,已有的解决方案有Algorand算法和Dfinity中基于BLS的算法等。

result = SHA256(secret,info)

上面的函数,要想得到结果result,需要secret和info,要验证result,也需要secret和info,也就是说需要知道secret才能验证info和result是否对应匹配。

有没有可能在不出示secret的情况下,验证result和info是否对应匹配。这就是可验证随机函数VRF可以做到的。

result = VRF_HASH(SK,info)

其中SK表示secret key,是私钥,不对外公开的,自己秘密保存即可。与SK配对的PK表示public key,是公钥,需要公开给验证着的。有了上面这些基本的元素,具体的VRF操作流程就非常简单清晰了:

1.证明者生成一对秘钥,PK和SK;
2.证明者计算result = VRF_HASH(SK,info);
3.证明者计算proof = VRF_Proof(SK,info);
4.证明者把result和proof递交给验证者;
5.验证者计算result = VRF_P2H(proof)是否成立,若成立,继续,否则中止;
6.证明者把PK,info递交给验证者;
7.验证者计算True/False = VRF_Verify(PK,info,proof),True表示验证通过,False表示验证未通过。

验证通过,指proof是否是通过info生成的,通过proof是否可以计算出result,从而推导出info和result是对应匹配的。从上面可以看出,验证者并没有获得证明者的私钥SK,验证者同样可以推导出info和result是否对应匹配,这就是VRF的妙用。

对哈希函数的不断演化,可以简单用如下的路径来表示:

原始的哈希函数: info -> result 带秘钥的哈希函数: info,secret -> result公钥版本的VRF: info,SK -> proof,PK -> result

参考

VRF介绍
参考URL: https://blog.csdn.net/shangsongwww/article/details/88797403
Chainlink 预言机教程(原理讲解 & 代码演示)
参考URL: https://www.bilibili.com/video/BV1ed4y1N7Uv/
Chainlink 预言机的原理解析
参考URL: https://learnblockchain.cn/article/4766

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/217712.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【阿里云】图像识别 智能分类识别 项目开发(一)

语音模块和阿里云图像识别结合 环境准备 代码实现 编译运行 写个shell脚本用于杀死运行的进程 语音模块和阿里云图像识别结合 使用语音模块和摄像头在香橙派上做垃圾智能分类识别 语音控制摄像下载上传阿里云解析功能点实现 环境准备 将语音模块接在UART5的位置 在orange…

KVM虚拟机的NAT网络模式原理及过程展示

NAT的方式及原理 NAT方式是KVM安装后的默认方式。 它支持主机与虚拟机的互访,同时也支持虚拟机访问互联网,但不支持外界访问虚拟机。 default是宿主机安装虚拟机支持模块的时候自动安装的。 其中 virbr0是由宿主机虚拟机支持模块安装时产生的虚拟网络接…

4、LED闪烁

LED亮灭 使用STC-ISP软件的延时计算器自动生成延迟子函数 #include <REGX52.H> #include <INTRINS.H>//延迟函数 void Delay500ms() //12.000MHz {unsigned char i, j, k;//_nop_()需要导入<INTRINS.H>包_nop_();i 4;j 205;k 187;do{do{while (--k);}…

JVM类加载的过程和JVM垃圾回收机制

文章目录 一、JVM类加载的过程1.1类加载的基本流程1.1.1加载1.1.2验证1.1.3准备1.1.4解析1.1.5初始化 1.2双亲委派模型 二、JVM垃圾回收机制2.1找到垃圾2.1.1引用计数(比如Python&#xff0c;PHP中用到)2.1.2可达性分析(比如Java中用到) 2.2释放垃圾2.2.1标记清除2.2.2复制算法…

jetson NX部署Yolov8

一,事情起因,由于需要对无人机机载识别算法进行更新,所以需要对yolov8算法进行部署到边缘端。 二,环境安装 安装虚拟环境管理工具,这个根据个人喜好。 我们需要选择能够在ARM架构上运行的conda,这里我们选择conda-forge 下载地址 安装即可 剩下的就是和conda 创建虚拟…

Jensen不等式

如果是正数&#xff0c;并且它们的和等于1&#xff0c;f是凸函数&#xff0c;那么&#xff1a; 也可表述为&#xff1a; 即x期望的凸函数值小于等于x凸函数值的期望

5、LED流水灯

LED流水灯 思路&#xff1a;每次LED灯熄灭后&#xff0c;下一个LED灯亮 #include <REGX52.H> #include <INTRINS.H>void Delay500ms() //12.000MHz {unsigned char i, j, k;_nop_();i 4;j 205;k 187;do{do{while (--k);} while (--j);} while (--i); }void m…

Leetcode—45.跳跃游戏II【中等】

2023每日刷题&#xff08;四十&#xff09; Leetcode—45.跳跃游戏II 贪心法思想 实现代码 #define MAX(a, b) (a > b ? (a) : (b))int jump(int* nums, int numsSize) {int start 0;int end 1;int ans 0;int maxStride 0;while(end < numsSize) {maxStride 0;fo…

【程序员的自我修养01】编译流程概述

绪论 大家好&#xff0c;欢迎来到【程序员的自我修养】专栏。正如其专栏名&#xff0c;本专栏主要分享学习《程序员的自我修养——链接、装载与库》的知识点以及结合自己的工作经验以及思考。编译原理相关知识本身就比较有难度&#xff0c;我会尽自己最大的努力&#xff0c;争取…

Kotlin学习——流程控制,when,循环,range工具 kt里的equals if实现类似三元表达式的效果

Kotlin 是一门现代但已成熟的编程语言&#xff0c;旨在让开发人员更幸福快乐。 它简洁、安全、可与 Java 及其他语言互操作&#xff0c;并提供了多种方式在多个平台间复用代码&#xff0c;以实现高效编程。 https://play.kotlinlang.org/byExample/01_introduction/02_Functio…

acm是什么?你准备好去打了吗?

1.引言2.acm究竟是什么&#xff1f;3.acm的时间安排重点 赛制查询榜单网络赛的作用1.名额分配2.校内选拔 icpc省赛省赛选拔赛(校内) 4.acm该如何准备1.前期的算法积累1.Acwing 平台算法基础课 -y总业界良心。算法提高课 基本囊括了蓝桥杯的知识范畴算法进阶课&#xff08;选&am…

只考数据结构,计算机评级C+,成都信息工程大学考情分析

成都信息工程大学(C) 考研难度&#xff08;☆☆&#xff09; 内容&#xff1a;23考情概况&#xff08;拟录取和复试分析&#xff09;、院校概况、24专业目录、23复试详情、各专业考情分析、各科目考情分析。 正文1715字&#xff0c;预计阅读&#xff1a;3分钟 2023考情概况 …