Chainlink 可验证随机函数详解

2020-05-13 10:53 栏目:经验之谈 来源: 查看()

我们正式宣布在线链接可以验证随机功能(以下简称VRF链接)。开发人员可以使用这个工具生成随机数,并在链上验证它们。VRF链结将为许多优秀的智能合同项目带来巨大价值,尤其是证明智能合同中使用的随机数不能被篡改和操纵。

我们要感谢与我们密切合作的学术专家和开发者社区,感谢他们对VRF链结的想法和建议。同时,我们也要感谢为VRF功能的初步实现付出了精力和汗水的团队成员!

VRF链结帮助加快了智能合同在许多领域的发展,如区块链游戏、安全和第2层协议。开发者可以很容易地集成VRF链结,参考我们最近发布的开发者文档,并在智能合同中使用可验证的随机数。

可验证随机数的值是多少

为了开发安全的智能合同,避免合同资金被盗的风险,开发商必须在安全方面下大力气。如果随机数是智能合同所依赖的关键数据,那么开发人员自然会期望合同中涉及的所有各方都具有相同的不确定性,并减少由于一方成功的预测结果而利用漏洞的风险。

VRF链结公司可以为智能合同提供随机数和加密证书。链上随机数的验证是不可预测的,因此满足上述两个要求。由于VRF链的随机数可以在链上验证,问题节点只能选择不响应请求。在链式链接即将上线的锁定机制下,这种行为将被罚款,并可能从随机数生成器列表中删除,从而导致经济损失。

开发者可以使用VRF链结开发一个基于随机数的可靠的智能合同应用程序:

为游戏提供随机数,可以在链上验证数据,提高游戏的可信度,并为对安全性更敏感的用户提供额外的保护。

给游戏带来更多的挑战和不确定性,比如给玩家提供随机奖励(比如掉落战利品)。

随机分配任务和资源,并确保可验证性,例如,为案件随机分配法官,或为公司随机分配审计员。

选择观察员代表对智能合同提案进行投票并达成共识(调查是实现额外反女巫攻击能力的有效途径)

现有方法的安全隐患

链环VRF的可验证随机数可以克服现有随机数生成方法的许多局限性。这两种方法在使用块哈希值和其他链上数据或将链下生成的随机数传输到链上都有各自的缺陷。

开发人员应该尽量避免过度依赖基于块哈希值生成随机数。假设智能契约是基于块散列值的最后一个数字在某个高度的奇偶校验判断结果。这看起来像概率是50/50,但是假设一个矿工(或矿工工会)生产了总块数的三分之一,现在矿工决定扔掉所有获胜的块,块的散列值的最后一个数字是1,并且放弃大约2-3个以太网硬币的块奖励。通过这种方式,矿工将能够将结果为0的概率从50%提高到2/3,从而给依赖这种方法生成随机数的所有智能合同用户造成损失。如果这样做可以给矿工带来12-18个额外的以太网硬币,那么他的选择在经济上是合理的。因此,这种机制下的合同价值会有一定的上限。

为了避免这样的问题,开发人员已经转向离线解决方案,在链下生成随机数并将其发送回链。然而,如果链下的随机数不能通过加密来验证,则数据可能在链下的生成和传输过程中被篡改。同样,用户只能闭上眼睛,相信链下生成的随机数是公平可靠的,并且这些数据在传输过程中没有被篡改。

在为智能合同提供随机数的过程中,区块链开发商还应避免以下关键难点和安全风险:

智能合同不可访问或不兼容

集中式随机数发生器处理数据

区块链的矿工以用户的身份为个人利益服务。

最终用户需要盲目相信应用程序的安全性和可靠性。

为了解决上述问题和其他安全风险,VRF链结公司使随机数生成过程安全透明,并通过加密技术证明每个结果的公平性和公平性。

链环VRF是如何工作的

Chainlink 可验证随机函数详解

链环VRF工作原理

简而言之,智能合同将为链式链接或链式链接oracle网络提供一个种子来请求随机数。预测机器无法预测这种种子,它将被用来生成一个随机数。每个oracle都将使用自己的私钥来生成随机数。结果和证据在链上发布后,可以使用oracle的公钥和智能合同的种子进行验证。该方法使用了区块链的众所周知的签名验证功能,并且合同只能使用在相同的区块链环境中验证的随机数。

使用VRF链链工具的最大优点是可以验证随机数。即使一个节点受到危害,该节点也不能控制或影响最终结果,因为它不能通过链上的加密验证。最糟糕的情况是,倒下的节点不会响应请求,这将被区块链立即记录下来,并将永远保留在链上。用户可以引用有效的证书,并停止使用未能响应或提供有效签名记录的节点。即使节点被操纵,生成的随机数也不会受到影响。倒下的节点只能选择不响应请求,但是在链式链接将很快上线的锁定机制下,这种行为将被罚款,并且问题节点将从随机数生成器列表中移除。因此,低质量或非法节点将遭受巨大的短期和长期经济损失。简而言之,只要连接正确,VRF链锁就永远无法控制。唯一的可能性是问题节点离线或没有响应,然后它被完全删除。这种机制为智能合同的开发者和用户提供了极大的安全性。

VRF链结还有另一个优势,即随着用户数量的增加,用户向节点运营商支付的费用也会相应增加,因此节点将有更多的能力来提供尽可能多的安全性。在那之后,用户可能会要求加密安全,并支付更多额外的安全费用。这样,用户付费将形成一个全球共享资源池,需要花钱独立开发RNG(注:随机数生成器)解决方案的用户将使用这笔钱来提高整个区块链生态系统中共享资源的安全级别。链接现在已经连接到许多区块链,如波尔卡多和特佐斯,这意味着链接生态系统中的用户将形成一个网络效应,并继续扩大。用户数量和加密安全级别也将形成一个相辅相成的良性循环。

集成案例的详细说明:PoolTogether

PoolTogether是一款基于以太网的节省资金的彩票游戏。我们认为这是一个非常新颖和有趣的概念。经过广泛的技术研究,PoolTogether决定使用VRF链结为其应用提供可验证的随机数(详情见下文)。

Chainlink 可验证随机函数详解

PoolTogether是一款保本型储蓄游戏,它将用户的存款汇集在一起,每天或每周进行一次幸运抽奖,并将存款利息作为奖金支付给赢家。这个游戏通过彩票机制鼓励用户的储蓄行为。

PoolTogether使用VRF链链生成可验证的随机数,可以向用户证明每一轮的获胜者都是由完全随机的数字选出的。除了确保自身的安全之外,该方法还可以向用户证明其关键链接的安全性是可追踪的,并且随机数生成过程可以被验证。这样,用户将更有信心参与智能合同,并相信他们享有同样的获胜概率。

技术细节

链式VRF是戈德堡可验证随机函数(VRF)的实现。详情请参阅本文(https://eprint.iacr.org/2017/099.pdf)。“可验证随机函数”中的“随机”是指“任何没有种子或密钥的人都是完全不可预测的(即概率是均匀分布的)”。

VRF密钥是由甲骨文以加密方式从均匀分布的{0,# secp256k1-1}(注:secp256k1是以太网加密算法中的椭圆曲线)。与该密钥相对的是一个公钥,它对应于一个预测机。oracle将公钥绑定到链上的VRF和链链接任务id。

当智能契约请求随机数时,它将提供一个种子。为了确保无法预测VRF结果,有必要在种子中植入不可预测且难以篡改的值,例如最新的块哈希值,或者加密并验证的离线数据,例如资产的最新更新价格。您可以将这些数据转换成字节32,并使用keccak256算法生成种子。链上的VRF将智能合同种子与其他数据混合,以避免重放攻击,并为合同提供一些基本保护,但此外,提供一些特殊保护也很重要。

一旦种子由链上的VRF确定,它将在以太网方形日志中广播,并向智能合同所需的预测机请求相应的VRF结果。查看此日志后,预测机器将执行以下操作:

首先,以种子和oracle的公钥作为数据输入,“以输入的哈希值作为曲线方程输入”,从secp256k1中获得安全加密的随机样本。方法是使用keccak256算法,递归散列数据,直到输出小于secp256k1算法的基域(即secp2561算法中描述的p值),并且是secp256k1曲线上的点(x,y)的x坐标(y=基域中的x7)。所以(x,y)是散列输入的结果。

接下来,将secp256k1曲线的(x,y)坐标乘以(https://github.com/smartcontract kit/chain link/blob/vrf-docs-branch/core/services/vrf/vrf . go # l292)键,以获得该点。keccak256算法用于获取哈希值,uint256格式用作VRF的输出结果。它将生成一个证明,证明的倍数除以(x,y)等于预言公钥除以secp256k1生成器的倍数。这种证明方法非常接近施诺尔签名:首先,他从{0,# secp256k1-1},这与私钥生成方法非常相似。然后,计算公式u=ng,其中g是secp256k1生成器,u是以太网地址。然后计算公式v=n(x,y)。接下来,对(x,y)、VRF公钥、u的地址和v进行组合和散列,散列模运算的余数称为c。最后,计算s=n-ck模运算# secp 256 k1(https://github.com/smartcontract kit/chain link/blob/VRF-docs-branch/core/services/VRF/vrf . go # l292),k是vrf密钥。因此,证书包含公钥、c、s和种子。然后结果被发送回链上的VRF,并且验证证明如果验证通过,数据被返回到智能合同。

为了核实证明,合同应做到以下几点:

检查公钥和secp256k1曲线是否为有效点。

验证cpk sg点的地址与u的地址一致

(https://git hub.com/smartcontract kit/chain link/blob/vrf-docs-branch/EVM-contracts/src/v 0.6/VRF . sol # L464)

(注:主键是指甲骨文的公钥)

使用公钥和种子将散列作为曲线方程的输入,并检查c s (x,y)的keccak256散列值是否等于c。

如果您有兴趣直观地了解该方案的加密安全逻辑,请参考第3章“签名和验证”中的“箭头”的类比,吉米宋的《Programming Bitcoin》(https://programming比特币.com)。我们希望在此实现的特殊“目标”是c。要全面了解该计划的安全认证机制,请参阅《制定dnssec的安全认证5实践》的附件b。

然而,使用secp256k1作为标量乘法(例如c ),以太网虚拟机上的直接计算非常昂贵。因此,为了提高效率,我们借鉴了Vitalik的方法(https://etho search . ch/t/you-can-kind-abuse-ecrecover-to-do-ecmul-in-secp 256 k1-today/2384),并在证据中引入了一个证人。验证见证人的c *计算结果是否等于实际结果(https://github.com/smartcontract kit/chain link/blob/vrf-docs-branch/EVM-contracts/src/v 0.6/vrf . sol # l245)。这样,我们可以将C *的运算转移到链上,只需要验证链下的运算结果是否等于实际结果,从而大大降低了运算成本。

因此,除了上述数据输入和步骤之外,链内验证还包括C *和S *见证人(https://github.com/SmartContractKit/Chainlink/Blob/VRF-DOCS-BRANCH/CORE/Services/VRF/SOLITY _ PROTED)。运行# L22)。有必要检查这些见证点是否是secp256k1曲线上的有效点,并用Vitalik方法验证这些见证点的计算结果是否与实际相符。此外,以太网车间的地址由U表示,Vitalik方法也用于验证U是否与cpk sg点匹配。

链环VRF发展计划

链式预言网络包含1000多个高质量的节点。使用门限签名技术,网络是高度可扩展和分散的,具有成本效益。这将为VRF链环带来非常高的去集中化和可用性。我们将两者结合在一起,不仅利用VRF链结的独特优势为链提供可验证的随机数,而且利用链结网络中的数千个节点实现高成本效益和高可用性。

Chainlink 可验证随机函数详解

一旦链环丰富的生态系统加入链环VRF,我们就可以在世界各地建立一个分布式节点网络,在经济激励驱动的链上生成并广播可验证的随机数。链式门限签名技术与高度分散的节点网络相结合,将有效避免用户资金被盗的风险。VRF链联反馈的数据不仅可以在链上验证,而且可以保证高可用性。目前,链结已连接到一些区块链,可能需要可验证的随机数。再加上虚拟货币经济的激励机制,Chainlinkvrf很可能成为智能合约使用随机数的新标准。

除了上述优势之外,我们目前正在改进VRF链结的功能,开发分散式随机数生成技术,并积极与其他RNG系统合作。根据我们的初步研究,我们认为VRF链链可以与VDF和其他随机数生成方法结合使用。我们非常高兴能够与区块链和学术界合作,共同推动智能合同可验证随机数生成技术的发展。

欢迎尝试VRF链结,并给出您宝贵的意见。

如果你是一个聪明的合同开发者,想知道如何使用VRF链结的初始版本,请访问开发者文档,开始在测试网站上使用它,并加入我们的不和谐技术讨论。

我们目前处于VRF安全评估的最后阶段,希望与开发者社区和学术界的用户交流反馈。如果您对VRF及其改进计划有任何意见或建议,请发送电子邮件至[电子邮件保护]告诉我们。

如果您热衷于开发安全可靠的智能合同和解决现实世界中的问题,欢迎加入我们的核心团队!请注意我们官方网站的招聘页面了解详情。

微信二维码
售前客服二维码

文章均源于网络收集编辑侵删

提示:仅接受技术开发咨询!

郑重申明:资讯文章为网络收集整理,官方公告以外的资讯内容与本站无关!
NFT开发,NFT交易所开发,DAPP开发 Keywords: NFT开发 NFT交易所开发 DAPP开发