去中心化预言机Chainlink可验证随机函数正式上线,开发者可以用这个工具生成随机数,并在链上进行验证。ChainlinkVRF将为众多优秀的智能合约项目带来巨大价值,尤其能证明智能合约使用的随机数不可被篡改和操控。
ChainlinkVRF有助于加速区块链游戏、安全和layer2协议等众多领域的智能合约开发进程。开发者可以轻松集成ChainlinkVRF,参考我们近期发布的开发者文档,在智能合约中使用可验证的随机数。
可验证随机数具有哪些价值
要开发安全的智能合约,并规避合约资金被盗风险,开发者必须在安全方面下大功夫。如果随机数是智能合约依赖的关键数据,那么开发者就自然会期望合约所有相关方都拥有同等的不确定性,并降低因某一方成功预测结果而钻空子的风险。
ChainlinkVRF可以为智能合约提供随机数以及加密证明,在链上验证随机数具有不可预测性,因而可以满足上述两个要求。由于ChainlinkVRF的随机数可以在链上进行验证,所以问题节点只能选择不对请求做响应,在Chainlink即将上线的staking机制下,这样的行为会遭到罚款,之后还可能会被移除出随机数生成者名单,因此会遭受经济损失。
开发者可以使用ChainlinkVRF开发出基于随机数的可靠智能合约应用:
●为游戏提供随机数,数据可在链上验证,提升游戏的可信度,并向对安全比较敏感的用户提供额外的保障。
●为游戏带来更多挑战性和不确定性,比如随机向玩家提供奖励。
●随机分配任务和资源,并保障可验证性,如:向案子随机分配法官,或向公司随机分配审计人员。
Nxchange宣布收购区块链平台Bondex:Nxchange宣布正式收购区块链平台Bondex,企业可以向该平台上提供许可,以实现股东登记数字化以及股票或债券发行代币化。虽然Bondex被Nxchange全面收购,但其仍将继续作为一个独立实体运营。创始人Jos van Alphen将成为Nxchange的董事会成员。(美通社)[2021/5/5 21:24:02]
●选择观察员代表投票决议智能合约提案,并达成共识
现有方法存在的安全隐患
ChainlinkVRF的可验证随机数可以将现有随机数生成法存在的诸多限制一一攻克。使用区块哈希值等链上数据或将链下生成的随机数传输至链上,这两种方法都存在一定自身缺陷。
开发者应该尽量避免过度依赖基于区块哈希值产生随机数。假设一个智能合约基于某一高度的区块哈希值最后一位数的奇偶性判定结果。这样看似好像概率是50/50,但假设有一名矿工产量占区块总量的三分之一,现在这名矿工决定把区块哈希值最后一位数是1的优胜区块全部扔掉,并放弃大约2-3个以太币的区块奖励。这样一来,这名矿工就能够将结果是0的概率从50%提升至2/3,导致所有依赖这个方法生成随机数的智能合约用户都会遭受损失。如果这样做可以为这名矿工带来12-18个以太币的额外收益,那么他的选择在经济上是合理的。因此,这个机制下的合约价值会有一定上限。
为了避免这样的问题,开发者已经转向链下解决方案,在链下生成随机数并传回至链上。然而,如果无法通过加密手段验证链下随机数,数据将有可能在链下生成和传输过程中被篡改。同样地,用户只能闭着眼睛相信链下生成的随机数是公正可靠的,并相信这些数据在传输的过程中没有被篡改过。
58COIN官方:BCHA糖果空投完成:据58COIN官方公告,鉴于BCH现已完成硬分叉升级,并分叉出新的代币。获得较多用户支持的BCHN将继承BCH的命名、K线和相关交易对。另一方BCHA的代币将以糖果的形式空投给BCH用户。58COIN将根据分叉时用户的BCH持仓快照,按照 1 BCH 分发 1 BCHA的比例进行空投。目前所有BCHA已空投完成,用户可以在钱包中查看余额。官方提醒,目前58COIN暂不开放BCHA交易和充提币服务,待其主网运营稳定后开放,充提请关注后续公告。[2020/12/1 22:44:51]
区块链开发者在为智能合约提供随机数的过程中还需规避以下关键痛点和安全风险:
智能合约无法访问或无法兼容
中心化的随机数生成者操纵数据
区块链上的矿工作为用户进行操纵以谋取私利
终端用户需要盲目相信应用的安全可靠性
为了解决上述问题以及其他安全风险,ChainlinkVRF使随机数生成过程变得安全透明,并通过加密技术证明了每个结果的公正和公平性。
ChainlinkVRF的工作原理
ChainlinkVRF工作原理
简而言之,智能合约会向Chainlink或Chainlink预言机网络提供一个seed来请求随机数。这个seed是预言机无法预测的,会被用来生成一个随机数。每个预言机都会使用自己专属的密钥生成随机数。当结果和证明在链上发布后,可以使用预言机的公钥和智能合约的seed进行验证。这个方法利用了区块链著名的签名验证功能,合约只能使用在同一区块链环境中被验证通过的随机数。
Oasis Network将集成Chainlink价格信息数据:隐私为中心的数据共享网络Oasis Network表示,它将把Chainlink的价格信息整合到其网络中。 Oasis将首先使用Chainlink的价格参考数据,为Oasis去中心化金融(DeFi)应用中支持的代币提供估值。(Coindesk)[2020/8/29]
使用ChainlinkVRF工具最大的好处就是随机数是可以验证的。即使某一节点被攻陷,该节点也无法操控或影响最终结果,因为它无法通过链上的加密验证。最糟糕的情况无非是沦陷的节点不对请求做出任何响应,而这将立刻被区块链记录下来,并且会被永远保存在链上。用户可以参考有效的证明,不再使用有过无法响应或无法提供有效签名记录的节点。即使节点被操控,最终生成的随机数也不会受影响。沦陷的节点只能选择不响应请求,而在Chainlink即将上线的staking机制下,这种行为将被罚款,而且问题节点之后会从随机数生成者名单中被移除。因此,低质量或违规的节点将遭受巨大的短期和长期经济损失。简而言之,ChainlinkVRF只要正确接入,就绝对无法被操控,唯一可能发生的就是问题节点下线或不响应,之后被彻底移除出去。这个机制为智能合约开发者和用户提供了极大的安全保障。
ChainlinkVRF还有一个优势,那就是随着使用人数不断增加,用户支付给节点操作者的费用也会相应上涨,因此节点会更有动力提供尽可能多的安全保障。之后,用户可能会要求通过staking的方式进行加密安全保障,付更多费用获得额外的安全性。这样一来,用户付费就会形成一个全球共享资源池,本来需要花钱自主开发RNG解决方案的用户会将这笔钱用于提升整个区块链生态圈共享资源的安全水平。Chainlink现已接入Polkadot、Tezos等多条区块链,这意味着Chainlink生态圈用户将形成网络效应,持续扩大,用户数量和加密安全水平也将形成一个相辅相成的良性循环。
VeChain帮助验证KN95口罩生产信息:旧金山一家名为Real Items的初创公司与中国和西雅图的生产工厂直接合作,确保每一盒KN95口罩都附带一个双重认证二维码,并记录在VeChain的区块链上。然后,零售商可以用智能手机扫描代码来验证产品,然后再用于保护医护人员和其他人。(thestreet)[2020/4/20]
集成案例详解:PoolTogether
PoolTogether是以太坊上的一个保本型储蓄彩票游戏,我们认为这是一个非常新颖有趣的概念。PoolTogether团队在开展了广泛技术调研后,决定使用ChainlinkVRF为其应用提供可验证的随机数。
PoolTogether是如何使用Chainlink可验证随机数的
PoolTogether是一个保本型储蓄游戏,将用户存款集中在一起,每天或每周进行一次抽奖,将存款利息当作奖金发放给中奖者。这个游戏通过彩票机制激励用户的储蓄行为。
PoolTogether使用ChainlinkVRF生成可验证的随机数,可向其用户证明每期中奖者是由完全随机的数字选出来的。这样做除了为了保障自身安全以外,还可以向用户证明其关键环节的安全性是有迹可循的,且随机数生成过程是可以验证的。这样一来,用户就更有信心参与到智能合约中,相信他们享受着同样的中奖概率。
技术详解
ChainlinkVRF是Goldberg可验证随机函数的实现,具体细节请参考这篇论文。“可验证随机函数”中的“随机”指“任何没有seed或密钥的人都完全无法预测”。
公告 | 加密交易所GO.Exchange宣布将于3月15日永久关闭:据BeIncrypto消息,加密货币交易所GO.Exchange宣布将于3月15日关闭所有运营,且已不再接受新客户注册申请。据悉,该交易所于2018年夏天建立,2018年加密熊市也是交易所最终关闭的主要原因。[2020/1/31]
VRF密钥是预言机以加密的方式在均匀分布的{0,…,#secp256k1-1}中挑选出的一个数字。与该密钥相对的有一个公钥,这个公钥对应着一个预言机。预言机将公钥与链上VRF和Chainlink任务ID绑定。
当智能合约请求随机数时,它会提供一个seed。为了确保VRF结果无法被预测,需要在seed中植入无法被预测且难以被篡改的值,比如最近一次的区块哈希值,或者是经过加密验证的链下数据,比如某项资产最近更新的价格。你可以将这些数据转换成bytes32,使用keccak256算法生成seed。链上VRF将智能合约seed与其他数据混合在一起,以避免重放攻击,为合约提供一些基本的保护,但除此之外,提供一些专门的保护也是至关重要的。
一旦链上VRF确定了seed,就会在以太坊log中进行广播,向智能合约要求的预言机请求相应VRF结果。预言机看到这条log后会做出如下操作:
首先,它将seed和预言机公钥作为数据输入,“对输入取哈希值作为曲线方程输入”,从secp256k1获得安全加密的随机样本。方法是使用keccak256算法,用递归法对数据取哈希值,直到输出小于secp256k1算法的basefield,并且是secp256k1曲线上某一点的x坐标。因此是对输入取哈希得出的结果。
接着,将secp256k1曲线的坐标乘以密钥,得出?点。用keccak256算法取?哈希值,以uint256格式作为VRF的输出结果。它会生成一个证明,证明?除以的倍数等于预言机公钥除以secp256k1生成器的倍数。这个证明方式与Schnorr签名很接近:首先,他从{0,…,#secp256k1-1}中随机安全地取出一个nonce,这与私钥生成的方式很像。然后,计算公式u=n×g,其中g为secp256k1生成器,u为以太坊地址。然后计算公式v=n×(x,y)。接着,将、VRF公钥、?、u的地址以及v合并取哈希,并将哈希取模运算#secp256k1的余数称为c。最后,计算s=n-c×k取模运算#secp256k1,k为VRF密钥。因此证明包含公钥、?、c、s以及seed。然后将结果发回至链上VRF,验证证明,如果验证通过,则将数据返回至智能合约。
为了验证证明,合约应做到以下几点:
检查公钥和?是否是secp256k1曲线上有效的点
验证c×pk+s×g点的地址是否与u的地址一致
用公钥和seed取哈希作为曲线方程的输入,检查c×?+s×(x,y)的keccak256哈希值是否等于c。
若有兴趣直观了解此方案的加密安全逻辑,请参考JimmySong的《ProgrammingBitcoin》一书中第三章“签名和验证”中关于“箭头”的类比。我们在此希望实现的特殊“目标”是c。若想完整了解此方案的安全证明机制,请参考MakingNSEC5PracticalforDNSSEC的附件B。
然而,用secp256k1做纯量乘法,在以太坊虚拟机上直接运算的成本极其高昂。因此为了提高效率,我们借鉴了Vitalik的方法,将一个证人传入证明,验证证人的c×?运算结果是否与实际相等。这样一来,我们就能把c×?的运算工作转移到链下,只需验证链下运算结果是否与实际相等即可,这样就可以大幅降低运算成本。
因此,除了上述数据输入和步骤之外,链上验证还包括c×?以及s×(x,y)的证人。需要检查这些证人是否是secp256k1曲线上有效的点,并且用Vitalik的方法验证这些证人的运算结果是否与实际匹配。另外,以太坊上的地址用u表示,同样也用Vitalik的方法验证u是否与c×pk+s×g点匹配。
ChainlinkVRF发展计划
Chainlink去中心化预言机网络中包含一千多个优质节点,使用门限签名技术,网络具有高度扩展性,并以高成本效益的方式实现去中心化。这将为ChainlinkVRF带来极高的去中心化水平和可用性。我们将两者合二为一,既利用ChainlinkVRF的独特优势为链上提供可验证随机数,又利用Chainlink网络中几千个节点实现高成本效益和高可用性。
Chainlink以去中心化的方式实现可验证随机函数
Chainlink丰富的生态系统一旦加入ChainlinkVRF,我们就能建立遍布全球的分布式节点网络,在经济激励的驱动下在链上生成并广播可验证的随机数。Chainlink门限签名技术与高度去中心化的节点网络相结合,将有效规避用户资金被盗风险。不仅ChainlinkVRF端反馈的数据能在链上得到验证,还能保证极高的可用性。目前Chainlink已接入多条可能需要可验证随机数的区块链,再加上虚拟货币经济的激励机制,ChainlinkVRF很有可能成为智能合约使用随机数的新标准。
除了上述优势之外,我们目前正在完善ChainlinkVRF的功能,研发去中心化的随机数生成技术,并积极与其他RNG系统开展合作。根据我们的初步研究,我们相信ChainlinkVRF能与VDF以及其他随机数生成法在链上和链下结合使用。我们很高兴能够跟区块链圈和学术圈通力合作,共同推动智能合约可验证随机数生成技术向前发展。
欢迎试用ChainlinkVRF并给出你的宝贵意见
我们目前处于ChainlinkVRF安全评估的最后阶段,并希望与开发者社区和学术界的用户交流反馈。如果你对VRF及其完善方案有任何意见或建议,欢迎发邮件至vrf@chain.link告诉我们。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。