宇宙链 宇宙链
Ctrl+D收藏宇宙链
首页 > Polygon > 正文

小明学习笔记 | 一文看懂可验证随机函数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,烦请备注姓名、单位、职务和事由。

Web3客户关系管理公司Vantient完成345万美元融资:6月19日消息,新加坡注册的Web3客户关系管理公司Vantient完成345万美元融资,Cercano Management(前身为Vulcan Capital)、Saison Capital、以及AC Ventures等机构参投,Van tient主要为企业和Web3项目提供链上和链下客户数据聚合分析服务,以支持公司获取、吸引并留住他们的用户。[2023/6/19 21:47:37]

ShapeShift回应美参议员:从不处理用户资金,无法促进非法融资:2月20日消息,去中心化交易平台ShapeShift于2月19日在推特上表示,在情人节(2月14日)那天,Elizabeth Warren(美国参议员)试图以ShapeShift为例,推动她最新的加密法案。不幸的是,参议员的分析中有错误,我们想借此机会澄清事实。关于Warren关于非法融资的评论,ShapeShift从不处理用户资金,因此没有能力促进这一点。讽刺的是,我们关心的事情和沃伦参议员一样:即用户安全(需要自我保管)和获得创新(DeFi而不是CeFi)。FOX社区始终对围绕加密货币和shapesshift平台的基于事实的对话持开放态度。我们鼓励Warren和其他人建设性地参与金融自由和创新的关键问题。

此前,Warren在参议院听证会上表示,ShapeShift在2021年7月将自己重组为DeFi平台是别有用心的。沃伦表示,重组是为了鼓励人们在该平台上”洗黑钱”。ShapeShift的首席执行官Erik Vorhees于2月18日在他的个人推特上表示他期待“Warren向ShapeShift DAO治理过程提交提案”,以回应Warren对该平台的批评。[2023/2/20 12:17:28]

数据:目前仍有约30万以太坊验证者尚未将取款凭据更新为“0x01”标准化格式:1月16日消息,对于希望取回ETH质押奖励的验证者、以及希望停止支持链上验证或退出全部余额的以太坊信标链验证者而言,必须确保将取款凭据更新为最新的“0x01”标准化格式。 但截至目前,已经有大约20万名验证者在信标链上进行了更新,这意味着在总计约50万名以太坊信标链验证者中,仍有大约30万名验证者尚未从“0x00”格式进行凭据更新。

此外,Lido是以太坊流动抵押衍生品的最大提供商,市场持有量约为500万个ETH。目前Lido、Coinbase和Binance等质押提供商控制着ETH市场的大部分,这暴露了中心化问题。(CryptoSlate)[2023/1/16 11:14:18]

安全团队:Midas Capital攻击者的初始Gas费来自HitBTC,被盗的66万枚MATIC已转移至多个地址:金色财经报道,据慢雾监测,Tribe DAO生态跨链货币市场解决方案Midas Capital的攻击者的初始Gas费来自加密交易所HitBTC,目前被盗资金(约66万枚MATIC)已被分配到多个钱包地址。

此前报道,跨链货币市场解决方案Midas Capital在稳定币协议Jarvis的Polygon流动性池被攻击利用并损失65万美元,已暂停借贷功能。[2023/1/16 11:13:54]

NFT市场Joepegs完成500万美元种子轮融资:11月15日消息,NFT市场Joepegs宣布完成500万美元种子轮融资,由已解散的FTX Ventures和Avalanche基金会领投。Joepegs团队解释称,FTX Ventures的资金在今年6月就已经到账,在FTX破产重组之前。

据悉,Joepegs NFT市场于5月推出,已迅速发展成为Avalanche生态最大的NFT市场,二级NFT销售额超过340万美元,拥有超12,000名用户。Joepegs包括一个NFT launchpad LaunchPEG,支持荷兰式拍卖、加价拍卖、固定价格出售和白名单出售方式。Joepegs具有无需许可、上架价格存至链下以及过滤功能、稀有度展示等特性。(TechCrunch)[2022/11/15 13:05:10]

标签:POCLOTSLOTSTAKMetapocketSLOT币UNISTAKE

Polygon热门资讯
网易内测区块链应用「网易圈圈」,投资内容可赚收益提现

继风靡一时的“网易星球”和昙花一现“易头条”之后,网易的第三个区块链应用又来了。这次的应用叫“网易圈圈”。从目前的公开的信息来看,“网易圈圈”仍处于内测阶段,需要填写邀请码才能注册,其版本号还是0.8.

1900/1/1 0:00:00
日本IT巨头Japan Unisys与三菱银行等企业合作使用区块链进行电力交易

区块链技术虽然没有大规模的落地应用,但是已在多个领域进行了尝试,其中就包括在能源领域的应用。通过建立去中心化的能源系统,能源供应的相关信息和交易就可以直接在生产者和消费者之间进行处理.

1900/1/1 0:00:00
委内瑞拉推出石油币储蓄计划,这场用加密货币救国的社会实验还能继续多久?

委内瑞拉试图用“石油币”挽救经济危机的社会实验仍在持续进行。近日,据CCN报道,委内瑞拉政府最近推出了一项“石油币”储蓄计划,允许委内瑞拉公民用其资金购买石油币,并“通过证书保证”.

1900/1/1 0:00:00
读图:今年前三季加密世界和区块链融资市场发生了什么?

编者按:本文来自链闻ChainNews,作者:链闻,星球日报经授权转发。FabricVentures刚刚发布了一份详尽的报告,展示了今年前三个季度加密世界和ICO市场发展现状和呈现出的趋势.

1900/1/1 0:00:00
底层公链生态调查报告:你看到的是开始,我看到的是结局

编者按:本文来自白话区块链,作者:孙副社长,星球日报经授权发布。相信很多读者还记得,早年的中学课本里有一篇名叫《变色龙》的文章.

1900/1/1 0:00:00
惨不忍睹的比特币,渔翁得利的稳定币

11月14日,就在比特币现金硬分叉正式启动的前一天,加密货币行业遭遇了今年全年最糟糕的一个交易日——不接受反驳。比特币价格再次跌至历史低点,是的,你没有看错,再次.

1900/1/1 0:00:00