首页买币行情币安币(BNB)新手指引币安新闻
币安:以太坊2.0:“无状态性”的重要性
2021-04-07 09:53:47

假设我们的目标是 1 MB 的区块,此外我们还有 1 MB 的缓存,这意味着每当验证者想要验证一个区块时,他们都必需下载 2 MB 的数据 (包括区块和缓存)。

 

 

这意味着,以 1 MB 大小的区块和 1 MB 的缓存相同的代价,我们可以将缓存设置为 0 并答应区块大小增加到 2 MB。假设你的交易不是特别紧迫,假如 95% 的提议者尝试对其进行审查,那么第 20 个提议者仍旧可以将其安全打包 (但是低延迟的抗审查轨制是另一回事,在实践中更难实现)。他们必需每次都下载缓存,除非他们下载所有区块以保持最新的缓存,这恰是我们要避免的事情。其他项目 (例如 EOS 和 Solana) 则需要更高机能的硬件和网络连接。这使得我们可以具有小于 1 MB 的可治理的证实,并且只有由 EIP-2929 提出的适度 gas 用度以及针对代码块收费。

 

我以为总的来说,力争完整 (弱) 无状态性的声音压倒了部门无状态性或状态房钱方案。这对用户的影响会更小:他们根本不必考虑状态。

 

解除区块提议者与共鸣的联系关系开启了一个重要的设计空间。 [4]

 

二进制树仍是verkle trie?

 

很显著 2 MB 的区块至少与 1 MB 的区块 + 1 MB 的缓存一样有效。

 

? 对于提议者,我们对于其是否老实的要求低得多,与 Eth1 不同,Eth2 的提议者不审查过往的区块 (由于他们不投票),只能决定他们所提议的区块的内容。原因是,假如这是我们以为的最佳选择,那么 2 MB 的区块可能只包含 1 MB 的缓存,我们只需在每个区块上提交缓存,然后在下一个区块中重新引入完整的缓存即可。

 

Vitalik 在这篇文章中提出了如何将这些概念梳理成一个通用的框架,并且表示了部门无状态性和状态房钱非常相似,由于两者在对活跃状态进行修改时都需要进行某种形式的支付,以及一份重新激活陈旧状态的证实。这一点与 Eth1 截然不同:在 Eth1 中,对形成共鸣的节点 (即矿工) 的要求非常高,因此使他们留存完整状态好像没有题目。同时,只有这样我们才能在数据分片之外引入更多的执行分片。

 

? 弱无状态性:验证区块无需状态,但是提议区块需要完整状态

 

? 部门无状态性:只需要对某些 (陈旧) 状态提供见证,减少验证区块所需的状态数目

 

在“无状态性”方向中,又有不同的概念值得探索:

 

? 无状态性:区块留存所有的证实 (witness),例如默克尔证实,因此在验证区块有效性的时候不再需要状态

 

? 状态房钱:为了使状态保持在流动内存中,持续进行付费

 

目前泛起的解决方案主要围绕两个方向:

 

当前的以太坊1.0链最大的题目在于其状态大小。

 

? 添加更多非抗后量子密码学。信标链从验证者集中随机选择区块提议者,而对于分片链,则不必如斯:

 

? Eth2 或是当前的第一个阶段 (信标链) 中,提议区块和形成共鸣是两种不同的机制:每 12 秒由一个随机择出的验证者来提议区块,而共鸣是通过证实 (attestation) 形成的,每个验证者在每个 epoch (每 6.4 分钟) 对区块链进行投票。

 

最后,还有一些其他的原因导致区块提议者可能需要更好的硬件设备,并且在获取 MEV 时也更有上风。

 

? 我们但愿所有验证者的负载大致相等,并且没有极真个峰值。这种操纵是免信任的,由于在知道最近的状态根的条件下,见证就是它们自身的证

 

[3] 不老实的委员会作恶可能会影响整个网络,并导致严峻的延迟,但是引入无法无效/不可用的区块

 

[2] 切当地说,假如区块出产者开始勾结并审查大量证实,可能会产生影响,但是单个区块的出产者对共鸣造成的影响完全可以忽略不计。

 

? 另一个可能性也是我们目前正在为数据分片加以实现的,任何人都可以被选中提议区块,但是区块的详细内容不由提议者决定,不同的介入者可以通过竞价使其打包的区块被提议。

[4] 想要自己运行节点的用户仍让能够借助外部服务来获取见证。

 

? 对于验证者,我们需要绝大多数是老实的,即所质押的 ETH 中需要超过 2/3。也就是说,共鸣节点和区块出产者是不可分割的。

 

? 对于分片 (尤其是 Eth1 执行分片) 来说一种有趣的可能性在于,验证者能够进入出产区块的列表。需要对合并的 Eth1 和 Eth2 链进行一些后量子进级,目前没有可实践的后量子替换方案,因此我们不能休止前进。

 

Eth1 在过去一直被诟病其对硬件的要求非常高,固然这些呵并不都是公平的 (经由挑选后的中等消费级硬件也可以运行 Eth1 节点),但我们需要正视这些事实,尤其是但愿在不损害去中央化的条件下对以太坊进行扩容。获取见证也只是一个微小的功能。要为区块链“投票”,你必需要出产区块。因此长时间 (例如一个小时或一天) 派遣某个验证者成为 Eth1 委员会成员,实际上是很糟糕的:这意味着就带宽要求而言,验证者的规模仍旧必需能够与完整的 Eth1 链保持一致。他们独一要做的就是添加见证 (以便 P2P 网络能够验证有效交易)。



 

最难啃的硬骨头是让每个人都理解 KZG 承诺和 verkle tries 的工作方式。我担心的是,假如一台能够知足这些要求的 PC 价格为 10 万美元,但假如我们将其控制在 5 千美元以下,一旦发现审查,假如社区没有迅速引入更多提议者来做出反应是不公道的。其缺点很轻易得到控制,对用户几乎没有实际影响:

 

部门无状态性或状态房钱,在完全弱无状态性的道路中增加了极大的用户体验障碍。

 

那么假如我们进入完全无状态却引入了 10 MB 的缓存呢?或是1 MB?即使只想检查一个区块,也可以轻松下载,由于你已被分配到一个委员会,或者作为欺诈证实收到了该缓存?

 

缓存不老是挺好的吗?

 

因此在 Eth1 具备完整无状态性的条件下,Eth1 可以成为一个分片 (花费更少的资源来维护,例如1/100)。这么说吧,当前的状态大小还不是最大的题目,而是状态的增长本钱相对较低,并且会一直增长,即时我们进步状态增长的本钱,也无法使状态占用者为网络实际受到的影响付费,而该影响是永恒存在的。我们将能够晋升 gas 上限 (由于验证变得更快) 和更多的执行分片,所有这些几乎都不会对安全性和去中央化产生影响。

 

你可以执行此操纵,但是我们可以显著看到,假如大多数验证者仅验证单个区块,则不太可能是最佳的。

 

总的来说,verkle tries 可以解决接下来五年的状态题目。

 

? 开发者需要学习新的密码学原语

 

因此在我看来,我们现在应该往 verkle tries 的方向努力。

 

[1] 几乎没有影响,由于现在进行了细微优化以进步对某些平衡攻击 (balance attack) 的抵御能力,平衡攻击确实使提议者能对分叉选择产生短期影响。创建见证的本钱非常低,以至于可以想象到会有很多相关服务。现在每几分钟都有超过十万的验证者在投票形成共鸣。因为 Eth2 将使用 KZG 承诺来保证数据的可用性,大多数以太坊开发者都需要进行相关工作。然而,硬盘速渡过慢难以与以太坊区块保持同步 (或是从创世区块开始同步),因此必需使用更加昂贵的 SSD。 P2P 节点的情况可能类似,但是就我所知并不需要一定比例的 P2P 节点必需是老实的,但是为了确保老是能收到有效的链,每个人都需要连接至少一个老实的 P2P 节点,这个比例大概是 5%,在实践中可能更高。而这只有在 Eth1 具备无状态性时才有可能:

 

本文至此我还没有论证过为什么无状态性如斯有力,在可执行信标链提案中,将状态从 10 GB 缩减到 1 GB 或 100 MB 好像能为验证者节省很多开销,那我们为什么还需要无状态性?

 

实现无状态的裨益

 

此处我使用“提议者”来指代打包区块的角色,这与正式签名并验证的角色并不一定是一致的,在 rollups 中他们可能是“序列器” (sequencer)。就采用而言,未来5年极为重要。

 

还有一点重要的反对观点可能是,假如区块提议的本钱过高,那么去中央化也会受到损害,即使我们降低了验证者和 P2P 节点的门槛。 Eth1 和 Eth2 的共鸣节点存在非常重要的区别:

 

这条通向扩容性的路径并不轻松。这类验证者可能需要更高机能的硬件,可能也需要具有“完整”状态。此外,假如长时间使用同样的委员会 (例如通过贿赂攻击),委员会变得更具攻击性

 

假如我们顺势走下去,可执行的 Eth1 区块可以成为一个分片。但事情并非如斯,“提议者”和“验证者”之间存在重要的差异:

 

提议者本钱较高可以理解

 

在这两种情况中,弱状态验证意味着所有其他的验证者 (不出产区块或决定区块内容的验证者) 并不需要状态。这可能不是区块中那 1 MB 的最佳用途,但是你可以这样做。

 

? Eth1 的共鸣节点是矿工。区块出产者对共鸣 (几乎[1])没有影响,他们只能对区块内包含的内容进行选择[2]

 

在 Eth2 中,共鸣节点是验证者。而分片不应具备这一属性,分片中签署一个区块只需要一个委员会 (因此是验证者中的1/1024),并且其他人不需要信任该委员会的绝大部门验证者是老实的[3],只要有一个老实验证者在委员会尝试作恶时吹哨。假如我们保持正常验证者的要求较低,那么提议者需要 128GB RAM 的 PC 来存储大型状态也没有题目。

 

这也是为什么相较验证者,我并不那么担心进步提议者的硬件要求。摆在前面的道路就是竭尽所能,并在 5-10 年内,当 STARK 足够强盛时,我们将对所有原语进行完全的后量子进级。简朴起见,我在此处将其称作提议者,由于假如仅向系统中引入一个只负责提议区块的新角色,我以为系统不会因此受到根本上的破坏。


 

 

? 我们但愿能够简朴地对 Eth1 区块给出欺诈证实,由于其他验证者将无法确定委员会是否准确完成了其工作。但我以为要保障去中央化,降低共鸣节点以及 P2P 节点的门槛是必要的。实际上大多数钱包已经依靠外部服务,不需要用户运行自己的节点。最简朴的方式是区块成为其自身的欺诈证实:假如一个区块是无效的,广播区块本身就能证实发生欺诈。

 

理解 Eth2 验证者

 

假如你是 Eth1 的用户,那么你可能觉得只留存 1 GB 或者甚至是 100 MB 的活跃状态的部门无状态性是一项巨大成就,那为什么还要这么费劲地实现完全的无状态性?我以为完整 (弱) 无状态性开释了巨大的潜能,而这是部门无状态性无法做到的,因此我们要竭尽全力实现完全无状态性。但考虑到仅使用二进制默克尔树尝试实现无状态长短常难题的,并且要答应默克尔树证实需要对 gas 进行改动 ,而这会损害用户体验。但是在 Eth2 中,我们可能会大幅降低介入门槛,并且我们应该利用这一点来保障去中央化和安全性。额外的 1 MB 可以被更好地利用,以答应引入更多的见证 (witness)。而在可执行信标链的提案中,所有的验证者都必需保持运行完整的 Eth1 执行 (否则会面对签署无效区块的风险)。第二点听起来很可怕,但是我们已经在 Eth2 中引入了 KZG 承诺以进行数据可用性采样,并且不管如何我们都在使用基于椭圆曲线的签名。现在我们将能够实现完全 (弱) 无状态性,而对用户和智能合约开发者几乎没有影响。约为 10-100 GB (详细取决于其存储方式),对于很多节点来说,将其保留在工作内存中是不切实际的,因此会选择慢速固定存储。对于 Eth2 来说,我们树立了非常宏大的目标:能够在低本钱的硬件上运行 Eth2 节点和验证者,甚至是树莓派或智能手机。


相关文章
© 2017 - 2021 Binance.com. All rights reserved
在线客服