主页 > 以太坊钱包imtoken官网 > 科普 | VDF 常见问题解答,第 1 部分:概述、目的和解决方案

科普 | VDF 常见问题解答,第 1 部分:概述、目的和解决方案

以太坊钱包imtoken官网 2023-11-10 05:08:32

该项目的目的是为可验证的延迟功能创建一个相对完整的知识库,并帮助形成一个可以合作开发 VDF 开源硬件的自由社区。

——麦克斯韦弗利

我们的立场是,VDF 研究可以为区块链社区提供一个极好的机会,以促进硬件设计的公开、公平和更好的教育。 因为这是第一次主要的区块链平台带头为普通大众而不是少数私营公司以盈利为目的开发 ASIC 硬件。

我们首先讨论一些基本概念,解释 VDF 的工作原理及其用途,然后(如果适用)进入越来越复杂的技术领域,并最终在后续章节中介绍实现。

我们希望这篇文章是以任何具有区块链基础知识的人都能理解的方式编写的,并且任何有兴趣的人都可以获取这些知识。

如果您发现文档中有任何错误或想为未来的内容做出贡献,请使用 Telegram 联系我们:Qi Hardware 的 Telegram Group

什么是 VDF?

VDF代表可验证延迟函数。

可验证的延迟函数是任何在可用硬件上需要很长时间计算(例如一个小时,这就是我们所说的延迟)但其输出可以立即验证的函数。

如果我们以人为例,我们可以想象有一个叫亚历克斯的人坐在办公桌前,我们让他以55为输入计算出一个VDF函数,并告诉我们函数的输出。 他苦苦数了一个小时,然后擦了擦额头上的汗水,告诉我们输出结果是 809。另一个人鲍勃站在亚历克斯旁边,瞥了一眼输出结果。 他在笔记本上划了几笔说:“这个输出是正确的!” 他不用花一个小时做和亚历克斯一样的计算,就知道亚历克斯的计算是正确的。 一旦输出呈现在 Bob 面前,他就可以很容易地验证它是否正确。

稍后我们将解释它是如何工作的,但现在将其视为函数的已知属性。

VDF 的用途是什么?

VDF 可以以多种不同的方式使用,但我们感兴趣的是使用它在区块链上生成随机数。

以太坊有什么用途_以太坊有服务器吗_sitehqz.com 以太坊和以太坊贸易的关系

我们为什么要生成随机数?

主要原因是我们(“我们”指的是以太坊社区)想要用权益证明取代以太坊目前运行的工作量证明机制。 在工作量证明(“挖矿”)中,区块创建者必须相互竞争。 他们投入大量精力用机器不断计算,只有用计算解开谜题后才能发布区块。 在权益证明中,用户只要有32个以太币就可以发布一个区块,不需要浪费电力; 但是既然没有竞争,我们就需要想办法选择(在某个时间)谁可以发布Blocks,为了保证公平,我们至少要保证这个过程有一定的随机性。

为什么要使用这种特殊的方法在区块链上生成随机数? 不能直接用普通软件吗?

首先,计算机无法从无到有地产生真正的随机数,因为计算机程序只是精确指令的集合,它无法创造或适应变化。 我们需要为计算机提供一个随机函数的“种子”,或者说是来自现实世界的随机源,以支持它进行数学运算,最终在一定区间内生成我们想要的随机数。 随机性的典型来源是系统时钟在特定时刻的毫秒数,每次运行程序时它都会变化并且很难预测。 像 random.org 这样最复杂的随机数生成器使用大气中空气分子的波动来构造随机数,因为它更难以预测。

在区块链上,每台参与的计算机将以相同的顺序执行所有操作(尽管不一定同时),并且应该具有相同的输出。 所以我们需要一个所有参与者都同意的随机源,唯一可能的源是在区块链上发布的数字本身。

例如,与其让每台计算机独立使用其系统时钟的毫秒数作为随机源,不如使用前一个区块时间戳的毫秒数,因为至少所有参与者都同意这一点。 但是这个想法有一个很大的问题! 也就是说,更快的制造商可以完全控制提交块时的毫秒数! 假设一个参与者发现如果RNG(Random Number Generator)将444作为输入,他就获得了提交下一个区块的权利; 那么当他们组装当前区块时,他们只需要记录一个以 444 结尾的毫秒数,就可以获得下一个区块的产生权; 如果重复,他们将完全垄断块的生成。

显然,我们可以使用其他不易利用的东西来为 RNG 播种,但核心原则是相同的:区块生产者始终可以影响区块内容,只要我们使用区块中的数据,就好像没有来源一样随机数,他们就会肆意利用这个优势来增加自己获得分块权的概率。

现在,假设我们不使用前一个块的时间戳作为随机源,而是使用一个小时前发布的块的时间戳作为输入来运行 VDF。 这使得区块生产者更难控制随机数源的输入,因为他们不知道在生产一个区块时使用哪个时间戳,这将增加他们在一小时后发布另一个区块的机会,因为它整个小时都很重要! 事实上,使用时间戳仍然不是一个好主意,但我们已经非常接近可行的解决方案了。 基本上,这就像所有的区块生产者都拿着一张彩票,等待幸运号码被公布。 VDF 确保没有人可以“作弊并获得优先权”。

VDF和POW共识机制有什么区别?

在工作量证明挖矿系统中,矿工花费大量资源根据给定的输入(即由他们自主选择的交易所组成的区块)寻找对应的值(即“区块随机数”),并找到nonce 表示矿工已经挖出区块。 有了这个输入,任何人都可以立即验证随机数是否有效。

POW 和 VDF 的主要区别在于 POW 的“挖矿”过程可以并行化,这意味着参与“挖矿”的计算机设备越多,找到最优 nonce 值的速度就越快。 VDF可验证延迟函数是一个只能顺序操作的函数,增加更多的设备并不能提高计算效率。 在VDF算法下,无论参与者拥有多少计算设备,都必须在大致相同的时间内计算出结果(校对注:这里指的是如果这些设备的效率相近),否则,“Latency”为不容易实现,而且很容易被拥有很多计算设备的人“破解”。

可验证延迟函数的计算过程不是游戏,没有竞争。 它的目标是让所有参与者几乎同时计算出相同的解决方案。

以太坊有服务器吗_sitehqz.com 以太坊和以太坊贸易的关系_以太坊有什么用途

同样,与工作量证明机制不同,我们不期望区块创建者自己运行 VDF(详细原因将在后面解释),也不是为了提交有效区块而必须支付的“税”(校对注意:指的是PoW Producing blocks is like to pay taxes to agreement),重要的是有人在运行VDF算法(任何人都可以参与),而VDF可以让随机数的产生过程更加公平。

对于区块链领域,除了随机数生成更公平,VDF还有哪些应用呢?

在介绍VDF的原始文章中,除了我们上面的描述之外以太坊有什么用途,还介绍了两个应用案例。

数据复制证书

其中之一就是重复证明机制,假设有一些数据你想永久安全的保存,即使发生不可抗拒的灾难性事件,也不受影响。 因此你需要花钱请人备份你的数据,让你的数据备份到100台设备上。

如果您想确保您雇用的人没有对您说谎并将您的数据备份到 100 台设备上,您可以访问他们的其中一台设备,比如 100 台设备中的第 78 台,并让设备将您的数据显示给证明他们确实有备份。 该设备按照您的要求显示数据,您暂时很高兴……但最终您意识到您无法确认设备 #78 确实已备份,因为它可以询问设备 #1 和得到相关数据。 尤其是在互联网如此发达的今天,数据的获取变得相当方便。 也许它们只存储在一台设备上以节省成本和资源,但他们虚假宣传他们已经做了 100 次备份。

您可以让每个存储数据的设备同时运行不同的 VDF,而不仅仅是存储数据。 虽然从原始数据生成 VDF 结果可能需要数小时,但您几乎可以立即从 VDF 结果中获取原始数据。 如果他们能给你VDF处理过的数据的结果,那你就可以肯定是独立设备存储了数据,因为不可能从其他设备获取和计算数据。

防止虚假历史账本攻击

VDF的另一个应用是加强POS共识机制的安全性。 POS 共识机制的一个安全问题是恶意攻击者可能会伪造账本历史并将其提供给加入网络的新用户。 由于加入网络的新用户总是需要从其他节点获取账本数据,在这种攻击下他们无法区分哪些节点是诚实的,哪些节点是恶意的。 攻击者很可能会在这个假账本中为自己安排比在真实账本中更多的钱。

在工作量证明系统中,不可能创建假账本数据,因为块生产者需要消耗大量能量来计算随机数值,如果随机数值无效,将由其他人检查”矿工”立即。 因此,为了创建一个可信的假账本,攻击者需要花费与挖掘比特币迄今为止的整个历史大致相同的电量,这显然是不可能的,但 POS 共识机制中没有这样的东西。 限制。

但是使用 VDF,我们可以构建一个系统,在这个系统中我们可以证明数据确实是过去生成的。 例如,如果在某个时间点,我们将区块链账本中的数据输入运行一年的 VDF,那么一年后,我们将能够证明账本数据至少存在一年,并且任何伪造者将无法做到这一点。

除了使用VDF,还有其他生成随机数的方法吗?

sitehqz.com 以太坊和以太坊贸易的关系_以太坊有服务器吗_以太坊有什么用途

VDF作为RANDAO的一种系统升级方式被提出(由一位名叫Justin Drake的研究员提出),RANDAO在以太坊2.0时代也将被用于生成随机数(random number generation)。 RANDAO 是一个虚拟委员会,在这个委员会中,每个创建区块的参与者都被要求向网络提供一个随机数。 然后 RANDAO 将以某种方式组合它接收到的所有输入来为我们的随机函数提供种子。

这种随机数方案防止作弊的方法是要求发送方先发送随机数的密文,再发送随机数的明文。 这相当于一个游戏,所有玩家的牌面朝下,只有所有玩家发完牌后,玩家才能一张一张翻牌。 以太坊 2.0 的解决方案是这样的:首先,每个节点都必须向链上的其他节点提交一个公钥。 所有节点提交完毕后,所有节点将使用自己刚刚提交的公钥给同一个号码。 符号。 最终生成的密码签名将用于随机数池。

VDF的目的不是取代RANDAO,而是对RANDAO进行改进,将RANDAO输出的随机数作为VDF的输入。

我们之所以同时使用RANDAO和VDF,而不是仅仅使用链上的某个值来运行VDF,与我们之前提出的时间戳概念类似,主要是为了双重安全。 如果无法使用VDF(比如量子计算机可以比普通计算机运行VDF更快),我们还有RANDAO可以使用,也许这不是最好的方式(下一章详述),但至少系统不会像彻底崩溃。

为什么 VDF 是对现有解决方案的改进?

RANDAO 随机数系统有作弊的方法,但前提是其他人都已经亮出自己的底牌(即提交给随机函数的数字),而你是最后一个亮出底牌的人; 只有亮出底牌的人相互串通才能作弊。 这种方法很简单——假设您查看了所有已展示的牌,并意识到它们的综合结果是您“赢得”了游戏(即获得下一个区块的打包能力); 那么你就不必披露你原本想提交的数量,这样你的份额就不会被计算在内,你将获得按你的意愿出块的权利。 这可能看起来没什么大不了的,但用户对随机数生成的任何影响都是不好的:保护数十亿美元的随机函数不能以这种方式“泄露”!

一个经常被考虑的解决方案是要求某种类型的保证金参与随机数的生成,如果参与者作弊,那么我们可以拿走他的保证金,并使这种惩罚远远超过他们作弊所获得的收益。 在以太坊 2.0 中,随机数由区块生产者产生,每个区块生产者必须抵押至少 32 ETH 才能参与区块生成。 为了让这个系统正常工作,我们必须惩罚那些试图欺骗网络或下线时间过长的人,惩罚他们拿走部分或全部 32 个以太币。 所以有人可能会认为我们可以像惩罚其他形式的不良行为一样惩罚随机数生成中的作弊行为。

问题是,我们的惩罚可能还不够严厉,不足以震慑不法分子。 这是因为 RANDAO 不仅用于选择区块生产者,还用于以太坊上需要随机数种子才能良好运行的应用程序; 所以到底需要抵押多少ETH还没有定论。 假设有人运行一个以太坊彩票应用程序,中奖者将获得价值数百万美元的以太坊。 即使我们把节点质押的 32 个 ETH 全部拿走,节点仍然可以通过操纵彩票结果赚很多钱!

在实践中,我们只能对作弊者进行非常小的惩罚,因为如果有人没有参与最后一轮随机数的生成,可能是作弊,也可能只是网络条件差。 如果人们被迫冒着因互联网服务出现小问题而损失大量资金的风险,那么作为区块生产者将成为一份吃力不讨好的工作。 这对整个以太坊网络的安全来说可不是什么好事。

VDF 延迟在实践中有多长?

目前的计划预计延迟 102.4 分钟,或略长于 1.5 小时。

这是因为出块速度为6s,执行RANDAO合约需要64个区块作为一个周期。 这换算成一共需要 6.4 分钟,也就意味着只要解决 VDF 的时间超过 6.4 分钟,就没有办法在合约结束前“作弊”或让 RANDAO 合约出错。 (实际上,如果你需要攻击成功,你还是要更快地弄清楚)

以太坊有服务器吗_sitehqz.com 以太坊和以太坊贸易的关系_以太坊有什么用途

那么为什么我们将 VDF 的延迟设置为 102.4 分钟而不是 6.4 分钟呢? 这是因为我们预计这些攻击者将尝试创建专用硬件(称为 ASIC,类似于专门为挖掘比特币而发明的专用计算设备),以比普通人的计算机更快地解决 VDF。 问题,然后你就可以作弊了。 我们通过将延迟设置为比纪元时间长得多来保护系统,这样即使硬件制造商制造出比普通计算机更快地解决 VDF 的计算机,他们仍然无法作弊。

因此,102.4分钟这个数字可以说是我们期望普通计算机计算VDF的时间。 有些人可能会尝试提高计算速度,但即使他们成功了,他们的速度也不足以成功攻击 RANDAO 合约。

如果计算 VDF 需要 1.5 小时,是否意味着我们只能每 1.5 小时获得一个新的随机数?

不。 这是因为我们可以并行运行多个具有不同起点和终点的 VDF。 我们在每个周期(6.4 分钟)启动一个(VDF),这意味着在第一个 VDF 开始运行后的 102.4 分钟内,我们每 6.4 分钟获得一个随机数。 此后,任何人都可以将每个随机数用于区块链中的任何功能。

在以太坊 2.0 中,谁可以运行 VDF?

在 Justin Drake 描述的设计中,区块生产者不需要也不期望自己运行 VDF。 相反,在区块生产者执行 RANDAO 合约后,另一个称为“评估者”的团队使用 RANDAO 输出运行 VDF。

显然,我们不能阻止同一个人使用不同的计算机同时充当区块生产者和 VDF 评估者,这样做是不合适的。

一旦评估者完成计算以太坊有什么用途,他们就会将 VDF 的输出广播给区块生产者。

对于该系统,只需要一个准确的评估程序。 一个 VDF 只有一种可能的输出,所以只有一个人需要执行它,然后将该输出广播给其他人。 此时,基于函数的可验证性,其他人都可以看出评估者是诚实的。

如何激励用户运行或评估 VDF? 为什么要花电?

首先,我们估计为以太坊运行一个 VDF 只需要 160 瓦,这只比在你的卧室里运行吊扇多一点。 每天花费大约 40 美分。 所以这不是一个巨大的消耗。

但是运行 VDF 是有回报的。 区块生产者负责验证评估者广播的 VDF 结果。 为了防止区块生产者偷懒,只是等待其他人听取评估者的意见而不是自己做,德雷克建议我们可能要考虑如何激励第一个验证者倾听并正确广播 VDF 输出。

以太坊有服务器吗_sitehqz.com 以太坊和以太坊贸易的关系_以太坊有什么用途

这可以用作更快地运行 VDF 的激励,因为区块生产者和 VDF 评估者可以是同一个人。 他们的 VDF 运行得越快,他们就越有可能在其他评估者之前广播他们自己的 VDF 的输出,这意味着他们会得到奖励。

这是一件好事,因为理想情况下,VDF 评估器可以尽快运行该函数并且不会偷懒。 这将使以太坊网络上的一切顺利和安全。

为什么以太坊基金会要花 1500 万美元研究 VDF?

首先,有关以太坊花费 1500 万美元研究 VDF 的报道并不准确,他们只是想集中这些资金,并与其他计划使用 VDF 的区块链协议分担成本。

无论如何,这笔资金将用于开发和生产 VDF 的 ASIC 硬件,它是开放的,任何以太坊用户都可以使用。 请记住,为了确保我们的算法安全,我们需要确保没有人运行 VDF 的速度比普通用户快很多倍。 如果我们假设普通用户在标准 CPU 上运行这些算法,则很容易制造出能够以十倍速度运行这些算法的芯片。 但是,如果以太坊基金会独立研发生产芯片并分发给他人,那么任何作恶者都需要有一个比以太坊基金会大十倍的项目(才能达到目的)。 就算他们能筹到更多的钱,即使他们技术能力很强,也很难。

本文的目的是帮助促进 ASIC 的开发,并在开发的每个阶段促进开源和社区参与。

如果您喜欢这篇文章,请在推特上关注我:@maxwellsfoley

参考资源

关于 VDF 的原始论文 -

贾斯汀德雷克的提议 -

RANDAC 描述了 RANDAO 的激励机制——

VDF 的一切,想读多少就读多少——

原文链接: