本文主要通过VRF和VDF论文及相关代码和资料对这两种技术及其应用进行简要分析。本文不会展示具体的代码部分,但会对相关代码进行一些文字说明。
,选出最小的vote作为最终的vote,进行共识。
VDF可以抽象理解为:可证延迟函数Y = F对于给定的X,很难计算出X对应的结果Y,同时需要满足以下性质:
1.串行性:只能顺序操作,不能通过增加更多的计算设备来缩短操作时间。
2.唯一性:对于同一个输入X,只有唯一的结果y。
3.快速验证:得到结果Y后,可以快速验证X对应的结果是Y。
和模型定义
通常有三种算法:配置、计算和验证。
设置-> pp =
Setup接受一个安全参数λ和一个时间参数T,时间参数T用于控制第二个串行操作的运行时间。
同时,Setup生成一个公共参数pp,它包括一个用于计算的参数ek和一个用于验证的参数vk。
评估-->
eval接受计算参数ek和函数输入x,计算结果y和证明π。
如果算法构造只用y就能验证,就没必要证明π。
串行操作时间满足T..
验证->
Veriry接受输入、输出、验证参数和证书,并返回验证是否通过。
验证时间比T短得多..
流程图应用领域
生成随机数
像VRF一样,VDF也可以用来产生随机数。先看以太坊燃道目前的随机数生成机制。
冉道
以太坊1.x中的随机数生成器,生成随机数的基本过程可以分为三个阶段:
第一阶段:收集有效的sha3
首先需要在燃道契约中创建一轮随机数战役,然后想要参与随机数生成的人需要在指定的时间段内将M ETH作为抵押品发送给契约C并附上sha3的结果,S是参与者选择的秘密数。
第二阶段:收集有效的
第一阶段结束后,成功提交sha3的人将在第一阶段的规定时间内向合约C发送一笔秘密号为S的交易。c将对S运行sha3操作,并将结果与之前提交的数据进行比较,以检查S是否有效。有效的s将保存在种子集中,最后将生成一个随机数。
第三阶段:计算随机数,退押金和奖金。
1.成功收集到所有秘密数后,契约C根据函数F计算随机数,计算结果会写入C的存储并发送给订阅者。需要随机数的也可以自己要。
2.契约C将第一阶段的保证金返还给参与者,并将利润平均分配给所有参与者作为额外奖励。收入是指其他需要随机数的人支付的费用。
附加规则:
为了确保RNG不被操纵,合同C有以下附加规则:

1.在第一阶段,当按顺序提交两个以上相同的sha3时,将接受第一个sha3。
2.当参与者提交的sha3被合同C接受时,需要在第二阶段披露S。
>当参与者未能在第二阶段披露S时,第一阶段发送的M ETH将被没收,且不提供任何回报。
>当第二阶段没有公开一个或多个时,随机数生成失败。被没收的ETH被平均分配给在第二阶段披露S的其他参与者。订购随机数所支付的费用将被退还。
安全风险:
最后一个公开自己秘密数的人可以先计算出最后的随机数,如果对自己有利就公开,否则就不公开。
如果需要高水平的安全性,第一阶段的存款金额可以大大增加。
但在一些涉及大量利益的场景下,参与者仍然有动力和能力控制随机数的产生。
燃道结合VDF
参与者可以通过预测和操纵产生对自己有利的随机数。如果不可预测,他们就不能作弊。VDF通过延迟随机数的生成来防止参与者作弊。
以太坊2.0结合了RANDAO和VDF,RANDAO契约产生的随机数作为VDF的输入,计算出最终的随机数,增加了作弊的难度。
具体计划:
块之间的间隔是6s。
一个时期需要6.4分钟,即在一个时期中产生64个块。
每个历元通过随机契约生成一个随机数作为VDF的输入,并启动一个VDF。
VDF的延迟时间t设置为102.4分钟,也就是说,每个最终随机数的生成需要102.4分钟。
为了确保每隔一个历元可以生成一个随机数,系统中总是有16个vdf同时运行。
每个随机数都可以被任何人用于区块链中的任何功能。
目前,VDF的功能结构和硬件设施仍在研究中:
实验室宣布将与以太坊基金会合作,开发至少一种能够满足“安全、高效、可用”要求的可验证延迟函数结构。
实验室将与以太坊基金会就构建针对VDF运行优化的ASIC的可行性进行合作,进行前期研究,并对其进行评估和投资。
复印校样
在VDF的论文中,提到了VDF的一种变体:可解码VDF。
除了上述性质外,还满足对结果y可以反算出X,这种情况下不需要证明π。
VDF函数可以理解为编码函数,它也对应于解码函数。这一对编解码函数在时间上是非对称的,所以编码耗时长,解码快。
具体计划:
服务器文件的存储形式是将一个文件分成n个大小为b位的数据块,第I个数据块记为Bi。
Xi =每个数据块对应的Bi xor HASH,其中id为服务器的id,I为数据块id,HASH为防冲突哈希函数,其输出长度与数据块大小一致。
当存储每个数据块时,每个服务器计算对应于Xi的编码数据Yi = VDF_ENCODE,并存储对应于每个数据块的Yi。
客户端向服务器请求Yi来验证它是否存储了该文件的副本。服务器不能作弊,因为每个存储服务器存储不同的yi,向其他服务器请求文件块Bi后,生成yi的过程很长,验证会超时。

服务器只能存储数据块的所有编码Yi,因为根据Yi可以快速解码Xi,然后可以得到文件块I。Xi =解码,Bi = Xi异或散列.
请比较功率
1.计算和验证都是不对称的。
2.pow可以并行计算,而VDF只能串行计算。
3.对于给定输入X,VDF具有唯一的输出,同时可以有多个功率解。


