http://www.7klian.com

以太坊随机数生成机制:RANDAO 与 VDF 的完美团结

好比,对数字 X 来说,一种 VDF 可以是 X 的持续 6 次平方:

一些区块链依赖区块哈希(block hash)来发生随机性。因为区块哈希值不行预知、随机性很强,但在所有节点上都是沟通的,所以对付根基可证明公正的打赌来说,哈希值可以作为随机性的来历。

为了生成一个靠得住的随机数,计较机将依赖于 seed (种子):我们把这个值当成计较进程的输入值,看成计较的起点,计较完成后就可以获得一个随机的输出值。种子可以是屏幕上鼠标光标的移动,也可以是维基百科数据库的所有内容。用种子来执行运算之后,我们就可以获得一个无法提前预知的数值(即随机数)。

只有当或人搭建的 VDF ASIC 的效率比以太坊社区提供的任何 ASIC 都高 100 倍,可能当全球所有的 VDF ASIC 都离线时,以太坊的 VDF 才会失败。即便真的呈现了这种景象,底层的 RANDAO 所带来安详性也能将影响降到最小,使以太坊足以担保链上财产的安详。

然而,假如区块嘉奖少于矿工哄骗区块哈希所能得到的嘉奖,那对他们来说,哄骗哈希值在经济上是完全理性的。更严重的是,在权益证明(PoS)系统中,由于生成一个区块险些不需要计较时间或能量,矿工(验证者)可以很容易地持续生成数千个区块,直到得到一个他们喜欢的哈希值,然后提交这个哈希值。

奉告作者(@bitfalls)。

假如此刻我们用 RANDAO 中的随机数来取代上方 VDF 例子中的数字 X,且假如函数的指数不是 6 而是好几千,而且函数不是利用平方(^2)而是更巨大的函数,那么我们将获得一个完全差异的函数,这个函数会将 RANDAO 的功效转酿成另一个完全纷歧样的随机数,并且要计较出这个功效将需要花上一段时间,不管你拥有几多台电脑。

备注:上面的进程只是简化进程,本文将不具体阐述。假如需要关于以太坊 2.0 RANDAO 这方面的专门文章,请通过 Twitter

((((((X^2)^2)^2)^2)^2)^2)^2

在利用随机数来选择验证者的语境中,原理也是一样的。假如区块哈希作为种子来生成随机数并选择验证者,而当前认真出产区块的验证者又能操纵区块哈希让本身(或由本身节制的另一个验证者客户端)再次成为区块出产者,那么他便是可以一直提议区块,将其它验证者拒之于提议区块的嘉奖之外!

首先,在计较最终数字时的延迟(delay)是可以 验证的,我们知道哪些计较机操纵是到达功效所必须的,而且可以或许以公道的准确度确定呆板到达功效所需要的时间。

其次,假如要计较出第三级功效,那计较机就 必需 先计较出第一级和第二级的功效 —— 我们无法在多台计较机上并行地举办此计较,因为每个新的输入都依赖于之前的输出,并且每个输出都需要预先确定的计较时间。

区块链中的随机性

可是区块链中没有鼠标、传感器可能举动角逐功效预测。更重要的是,纵然一个节点得出了某个随机数,网络中的所有其他节点必需得出同样的随机数,不然该条链将破裂。那么区块链是如何来处理惩罚这个问题的呢?

显然,我们需要更强劲的区块链随机性,以太坊 2.0 系统更是如此!

此刻,假如你会见 BitAddress 网站(开源的 JavaScript 比特币钱包东西),当你移动鼠标时,你会留意到「seed」将相应地产生变革。也就是说,网站正是通过你的鼠标的犯科则移动来「收集随机性」,见下图:

结语

以太坊 2.0 将每隔 6.4 分钟生成一个靠得住的随机数,该随机数的随机性足以确保巨额代价的安详。

但纵然在这种环境下,最后一个果真随机数的人也可以在必然水平上哄骗随机数。最后一小我私家可以选择保持沉默沉静,以这样或那样的方法改变这个最终的随机数:房间里的最后一小我私家可以记着之前每小我私家发布的数字,如此一来,就可以知道加上(可能不加上)他提供的数字之后的最终随机数功效。假如相对付其他数字,某个数字对最后一小我私家更有利,那最后一小我私家就有念头去举办某种水平的哄骗,不管水平坎坷。

在以太坊 2.0 阶段,这个 VDF 被界说为 102 分钟时长 —— 高出了一个半小时。当前以太坊基金会正与 Filecoin 等区块链项目相助,扶助开拓一种针对此计较优化的开源 ASIC —— 这是一种专门用来举办这种计较的微型计较机。该呆板将由喜好者、加密钱币项目和其他区块链平台甚至验证者来运行,它具有一个小优势,可以第一时间响应 VDF 查抄,并且不需要比一般的微型计较机全节点更高的电力本钱。

RANDAO + VDF

VDF 全称为 Verifiable Delay Function (可验证延迟函数)。

在本文中,我们将接头随机数(random numbers)以及如安在以太坊 2.0 中实现随机性。什么是 RANDAO?什么是 VDF (可验证延迟函数)?它们又是如何彼此共同的?信标链(beacon chain)如何抉择轮到哪些验证者(validator)来提议区块,以及哪些验证者应该对该提议举办证明(attest)?在以太坊 2.0 系统中的 1,024 条分片链和成千上万名活泼验证者之间,信标链是如安在任何特按时间做出这一抉择的呢? 这就需要随机性(randomness)!

翻译、校对:Jhonny (Unitimes) & 阿剑(ETHfans)

RANDAO 的本质就是如此。RANDAO 机制就是,当用户通过储存(质押) 32 ETH 成为验证者之后,该用户可以任意选定一个随机数。当需要为某个区块发布随机数时,将所有验证者的随机数加起来就可以获得一个全新的随机数。

其言外之意就是此类行数需要花很长时间来举办计较。

跟着计较的继承,计较的功效将越来越大。一个巨大的 VDF 将需要耗费很长的时间才气计较出来,因为对付任何计较机来说,其计较进程都长短常巨大的。这个例子来历于一个真实的 VDF,直到此刻它照旧在 MIT 的一个时间胶囊暗码学谜题的一部门,该 VDF 用了 80 万亿次平方。

可是,假如我们老是对生成的种子做同样的数学操纵,又怎么能称功效为「随机」的呢?要害在于,当足够多的难以反复的种子放在一起时,获得的随机数就会是相当随机的:人们是无法在一个 500 万像素屏幕区域反复完全一样的鼠标举动轨迹的,因此这在某种水平上是靠得住的(校对注:这就是「随机性」的界说之一「不行复现性」)。假如再加上一些其他的数值,好比日期,可能像 Cloudflare 那样利用熔岩灯发生伪随机数(见下图),也许尚有某个举动队当年进球的次数,这样你就获得了一个相当随机的种子(seed)。

简朴概述 RANDAO

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

相关文章阅读