木星链 木星链
Ctrl+D收藏木星链

POC:小明学习笔记 | 一文看懂可验证随机函数VRF

作者:

时间:1900/1/1 0:00:00

编者按:区块链涉及到的技术很多,从互联网底层到不明觉厉的密码学,可是往往关注币价者多而研究技术的人少。牛市的时候,大家为了炒币也会努力学习,熊市的时候,反正也没啥事,我觉得可以更加努力学习。作为一个文科生,我当然会有很多理科生看起来觉得很白痴的问题。作为一个记者,我不难找到业内懂的人用人话给我解释,而且他们往往不会当面嫌弃我。这是小明学习笔记第四期,学习的是VRF。之前第一期学习的是虚拟机,第二期是跨链,第三期《小明学习笔记|一文看懂互联网TCP/IP协议》,之后想学习有开源历史和文化等。如果有其他有趣问题,欢迎投稿和提问。话说这篇小明学习笔记真的拖了太久,本来在设想中就是特别短的一篇,但是由于云栖大会、公链101等各种栏目和编辑部琐事,实在是已经变成了“小明更新笔记日,例会无忘告主编”了。VRF这个东东,在不少区块链项目中都会听到,比较火的Algorand和Dfinity的共识机制都用到了它。它的全称叫VerifiableRandomFunction,那它跟一般的随机函数有什么不同?有什么用,为什么区块链需要用到VRF?这次被我骚扰的是资深全栈工程师黄祺,他曾在BFTF区块链知享会中介绍区块链中VRF的应用。在区块链中,大部分的共识算法,无论是POW、POS,或是由他们衍生出来的DPOS,都需要选出一堆或者一个节点来参与共识或者打包区块,这个过程虽然会有持币情况、设备配置、信誉等各种因素影响,但必须是随机的、无法被预测的。这时候就可能会用到随机算法。在BFTF的分享沙龙上,黄祺解释,可验证随机函数可以看作是一个随机预言机,就是可以通过任意的一个输入,获得一个随机数输出。可验证随机函数比随机预言机多了一个非交互的零知识证明,可以用来该随机数输出的正确性,表明这个随机数的确是某个人生成的。先说RO,有两个特征:1、对于不同的Input,Output的值是随机的,并且均匀分布在值域范围内。2、对于相同的Input,它得到的Output一定是相同的。举例说明一下,假设某公链网络用普通的RO选节点,有可能是这样的情况:假设全网有100个节点,我想生成下一轮一个节点谁打包,我以某一轮的轮次作为输入,然后随机输出的值必须要是在1-100之间的自然数。这就每一轮都选出了一个打包节点的人。这里的问题是,由于输入对应的输出肯定是相同的,而输入是公开的,就使得每一轮的抽签结果变得可以被预知,攻击者可以尝试控制这个过程或者攻击特定的节点。可是如果输入不公开的话,我们要怎么保证这个输入结果没有问题呢?VRF就用到了零知识证明,让结果“可验证”。VRF的方式是,让各个节点自己抽签,如果抽中了之后,大家可以很容易地验证这个结果确实是你生成的。具体过程有可能是这样的:假设现在是round10,节点们可能会轮流抽签,以节点自己的私钥+一个全网都知道的随机数作为输入,生成了一个随机数;设置一个条件:100个节点轮流抽签,谁先抽出来的随机数大于10,就是这一轮的打包者。假设5号节点抽到了11,可是只有5号知道其他人不知道,因此他在广播这个随机的同时还需要广播一个零知识证明。通过零知识证明,全网只需要通过5号的公钥就可以验证,接受5号为这轮打包者。So,普通RO在私钥+零知识证明的作用下,抽签过程就可以在本地进行、不公开私钥同时又可以全网验证。黄祺总结,可验证随机函数一共包含四个函数:1、生成密钥,生成一个公钥私钥对;2、生成随机数输出;3、计算零知识证明;4、验证随机数输出。看完上面的之后,我们大概可以明白,VRF的目的就是要生成一个真正随机而且无法被预测的值。在区块链选出块节点的过程中,为了保证安全,随机是一个基本要求。不过,区块链选节点不单纯是随机就OK的,还要考虑到攻击成本等,所以共识机制往往加入算力和持币权益等影响因素,以增加攻击者的攻击成本。如果单纯使用随机算法,就很容易受到女巫攻击,攻击者可以廉价找大量的傀儡机来增加自己抽中的概率。这么一想,你会很容易明白为什么有那么多新型的共识算法都用到了VRF,其实它们想达到的目的跟POW的答题过程有点像,都是为了找到随机而又安全地抽取出块节点。POW被诟病的问题是功耗大和性能低,但是安全边界明显,而且比特币运行已久都没有大问题。POS共识算法本身不需要大量算力,VRF可又以在本地抽签,所以POS共识算法用VRF的好处是功耗比较低,而且最新的算法,验证零知识证明的速度已经非常快。有不少知名的公链项目都用到了VRF,包括本体、Cardano、Dfinity和Algorand。不同的项目用到VRF的不同点主要在于是怎么产生一开始的输入,以及输出要怎么用。以下是VRF在一些项目中的作用:根据本体官网,VBFT的每轮共识中:根据VRF从共识网络中选择备选提案节点,各个备选节点将独立提出备选区块;根据VRF从共识网络中选择多个验证节点,每个验证节点将从网络中收集备选的区块,进行验证,然后对最高优先级的备选区块进行投票;根据VRF从共识网络中选择多个确认节点,对上述验证节点的投票结果进行统计验证,并确定出最终的共识结果。所有节点都将接收确认节点的共识结果,并在一轮共识确认后开启新的共识。根据上交所技术公司的朱立解释,Algorand和Dfinity的共识算法中用VRF的套路大概是这样的:输入值由前一个随机数和某种代表高度、轮次的变量进行组合,然后用私钥对之进行签名,最后哈希一下得出最新的随机数。他认为:“这样产生的随机数旁人很容易验证其合乎算法,"V"就这样得到了;而哈希返回值又是随机分布的,“R”也因此得到保证。在此过程中,为降低操纵结果的可能性,有两个注意事项:A)签名算法应当具有唯一性,也就是用同一把私钥对同样的信息进行签名,只有一个合法签名可以通过验证——普通的非对称加解密算法一般不具备这个属性,如SM2。如果用的签名算法没有这种uniqueness属性,那在生成新随机数的时候就存在通过反复多次尝试签名以挑出最有利者的余地,会降低安全性。B)避免在生成新随机数时将当前块的数据作为随机性来源之一,比如引用本块交易列表的merkleroot值等等,因为这样做会给出块人尝试变更打包交易顺序、尝试打包不同交易以产生最有利的新随机数的余地。在设计和检视新的共识算法时,以上两个注意事项是要特别留意的。VRF的返回结果可以用来公开完成节点或节点群体的选择,也可以私密地完成选择。以Dfinity为例,它是利用mod操作来唯一、公开地确定一个Group。Algorand、OuroborosPraos是私密选择的范例,大致套路是对VRF的最新返回值,配上轮次等变量后用私钥进行签名并哈希,如果哈希值小于某个阈值,节点就可以私密地知道自己被选中。这种方法很可能在网络节点数较多时的表现会更稳定,否则幸运儿个数上下波动会较大,进而影响协议表现,包括空块和分叉。”根据CSDN博主Omni-Space解释,Cardano的共识机制运作如下:首先是一些术语及作用的解释:在Cardano的运行中,时间被分为slot。每个slot只能产生一个块,若这个块有问题,或者应该产出这个块的“矿工”(也就是stakeholder的候选人)不在线,或者产出的块没有广播给大多数人,那么这个slot是当作废弃的,也就是会跳过这个slot的块。图片来自黄祺《区块链中VRF的应用及原理解析》多个slot为一个epoch,权益的计算是以每个epoch开始前的历史来计算,也就是说在这个epoch中所产生的权益变化不影响当前的这个epoch中的slot的出块者的选择和其他和历史相关的东西。当前epoch中所产生的这些历史只能在以后的epoch中生效。每个epoch的开头有个genesisblock(注意是每一个epoch,不是整个链),这个genesisblock不会上链(整个链初始的那个genesis会,当然这一点可以根据实现自己决定),而是当前这个节点(矿工)自己在内存中生成,这个genesisblock会记录好当前这个epoch中的可能参与出块的stakeholder的候选人,及一个随机种子ρ。stakeholder是权益持有者,也就是潜在矿工,在Cardano的实现中权益stake并不是直接指代有多少Ada,而是和有多少Ada相关联(更详细的我不是很清楚),同时要成为一个stakeholder需要有2%的Ada才行。当然论文中不关注这些,直接定义了stakeholder。而stakeholder并不一定要参与出块,只有记录在每个epoch的genesisblock中的stakeholder才能参与当前epoch中slot的出块,所以记录在每个epoch中的genesisblock中的stakeholder叫做“stakeholder候选人”由这些epoch衔接而成的链就是由Ouroboros共识产生的链,这个链的基本属性和Bitcoin相同(如每个块包含上一个块的hash等等)。SlotLeaderSelection是指根据权益占比选择按概率选择出当前slot的出块者。指代的是在当前的epoch中,按genesisblock中记录的stakeholder候选人的权益分别占用的比例为这个epoch中的每一个slot选择出块者的概率(注意这个概率是独立事件,也就是有可能在同一个epoch中重复选出相同的人)。在论文中用函数来表示按照权益占比为概率从stakeholder候选人选出该slot的出块者U。注意在论文中只是定义了这个函数具有这样的作用,在Cardano中使用了“follow-the-satoshi(fts)”算法(fts具有论文中定义的这个函数的性质)来选出这个slotleader也就是出块者。securemultipartycomputation(MPC)MPC协议,参与者使用一种能达成MPC的密码学协议来参与生成下一轮epoch的随机种子ρ,这个MPC协议必须是保证guaranteeoutputdelivery(G.O.D,下文会解释)。这个随机种子ρ是用于SlotLeaderSelection中的。在已有这些基础术语及作用的基础上,现在来简单介绍一下的工作流程:如图所示,执行流程如下:(注:我并不保证这个流程是完全符合Cardano源码的实现(毕竟我没看过),但是是符合论文的描述的):从链的真正创世块开始,硬编码进入了一些公钥和这些公钥vk对应的权益s及初始的种子ρ,之后,这个epoch会采用这些基础信息继续运行。每个节点自己独立运行代码,根据当前epoch的种子ρ,执行F(比如follow-the-satoshi),把genesisblock中的权益,ρ和slot的index作为输入,根据概率获得当前这个slot应该由谁出块。若发现是自己出块,则执行打包交易等等操作,和bitcoin没有太大区别,但是除了基础工作之外,还会生成一个随机数,但是这个随机数不放到链(块)中,而是放一个承诺(后文解释)。若不是自己出块,则等待出块者出块并广播。收到这个块的时候就进行和bitcoin类似的检查,要是长时间未收到(超出这个slot的时间)则会认为这个slot的块废弃。在当前epoch中不断重复2的流程直到这个epoch中的所有slot结束。在整个epoch的过程中会产出一个在这个epoch参与出块者们(slotleaders)都共同认同的随机种子ρ。在自己的内存里记录好这个ρ及下一个epoch参与的stakeholders,开启下一个epoch周期,进入2的流程。以上就是Ouroboros大致执行的流程。VRF在区块链领域的运用大致如上,不过在如上场景有没有更好的解决方式,或者这个技术还能用在什么场景,还是值得讨论的问题。参考文章:随机选择算法区块链中VRF的应用及原理解析对可验证随机函数VRF的简明解释简评三个基于VRF的共识算法可验证随机函数VRF之Algorand算法图灵奖得主SivioMicali的Algorand区块链协议简介Algorand白皮书1607.01341版本Cardano白皮书VerifiableRandomFunctions我是Odaily星球日报编辑卢晓明,探索真实区块链,爆料、交流请加lohiuming,烦请备注姓名、单位、职务和事由。

花旗银行因监管不确定性将Coinbase评级从买入下调至中性:5月2日消息,花旗银行因监管不确定性将Coinbase评级从买入下调至中性,并将目标价从80美元下调至65美元,Coinbase股价在盘前交易中下跌1.2%至49.54美元。(CoinDesk)[2023/5/2 14:38:56]

IOST与HashKey DID建立战略合作伙伴关系:4月27日消息,IOST宣布与HashKey DID建立战略合作伙伴关系,HashKey DID是Hash Key Group旗下领先的多链去中心化身份数据聚合商。双方合作旨在通过将HashKey DID创新的去中心化身份服务集成到IOST的区块链中来加强Web3基础设施。这种合作关系将确保IOST用户获得安全、透明和高效的身份管理体验。[2023/4/27 14:30:48]

Binance完成第23次BNB季度销毁,共销毁约202万枚BNB:4月14日消息,根据 BNB 自动销毁机制,第 23 次 BNB 季度销毁已完成。本次共计销毁 2,020,132.25 枚 BNB,其中包括 BNB 反黑洞计划中额外销毁的 656.0230123 枚 BNB。[2023/4/14 14:03:51]

Alexa Pro项目遭到漏洞攻击,损失45枚BNB:金色财经消息,据CertiK监测,Alexa Pro项目遭到漏洞攻击,损失45枚BNB (约1.3万美元)。目前的证据表明,价格操纵是导致该事件的原因。BSC合约地址: 0x76c82Eef290f8de6E230cbaddf508f16c202b52B[2023/3/5 12:42:57]

Rarible首席执行官:感觉苹果并不真正希望App Store用户能够购买或出售 NFT:金色财经报道,NFT创业市场 Rarible 首席执行官 Alexei Falin 针对苹果对通过iOS应用内进行的NFT交易收取高达30%的佣金表示:感觉苹果并不真正希望App Store用户能够购买或出售 NFT。这几乎是不可能的,因为它是固定订阅或固定价格。据报道,苹果公司推迟为 App Store 批准 NFT 和加密应用程序的方式或许支持了这一观点。根据 Falin 说法,Rarible 应用程序需要几个月的时间才能进入 App Store,而 Google Play Store 只需几天时间。

这确实意味着此类应用程序正在进入商店,但似乎它们通常只是充当服务的宣传展示。实际销售或交易将需要浏览器站点,而不是在应用程序中完成。

据悉,苹果并未专门针对解决 NFT 应用程序延迟的问题,而是表示其 500 名审查员会在 24 小时内检查 90% 的应用程序。苹果也拒绝就其他 NFT 批评发表评论,而是用 App Store 通用规则来解释。[2022/9/26 7:20:21]

标签:POCSLOTLOT区块链Pocket BombSLOT价格zLOT Finance银行区块链

比特币行情热门资讯
EOS:为什么在EOS上的dApp对开发人员来说不盈利?

本文来自:infoQ,作者:AlexVet,译者:姚佳灵,星球日报经授权转发。在ICO340天后,EOS区块链于6月14日上线了,伴随着成长,它将自然而然地面临很多问题.

1900/1/1 0:00:00
区块链:电信运营商瓶颈凸显,期寄区块链带来新增长

编者按:本文来自区间集,作者:熊猫,星球日报经授权发布。上周中国信通院副院长、IMT-2020推进组组长王志勤发布了中国5G技术研究试验第三阶段的第二批规范.

1900/1/1 0:00:00
比特币:可接受比特币支付的电动自行车,了解一下

如果以后骑共享电动单车,要用比特币来支付,会是一种什么感觉?据Bitcoinist报道,一名德国黑客开发了一辆可接受比特币闪电网络支付的电动自行车.

1900/1/1 0:00:00
ITH:欧盟10月将裁决微软收购 GitHub 一案,加密社区的人有点慌

据路透社9月17日报道,软件巨头微软要求欧盟欧盟反垄断机构批准以75亿美元收购代码托管平台GitHub,微软于上周五提交了这一请求,决定将于10月19日作出.

1900/1/1 0:00:00
PAC:Proof of Space 杜绝浪费,共识机制的“大杀器”

编者按:本文来自哈希未来,作者:陈致佳、蒙绎泽、江泽武,星球日报经授权发布。自2009年第一枚比特币被挖出以来,区块链行业逐渐拓展为一个巨大的全球市场.

1900/1/1 0:00:00
数字货币:数字货币中的挖矿是什么?| 区块链课堂第 17 问

编者按:本文来自哈希派,作者:不碎,星球日报经授权转载。数字货币的“挖矿”实际上是一个增加货币供应量的过程.

1900/1/1 0:00:00