文章深入探讨了以太坊协议的未来发展方向,特别是“The Surge”阶段的扩展策略,重点介绍了Rollup-centric路线图、数据可用性采样、数据压缩、Plasma架构等关键技术,并提出了提高以太坊L1和L2互操作性和扩展性的目标。
可能的以太坊协议未来:第二部分:激增
特别感谢 Justin Drake, Francesco, Hsiao-wei Wang, @antonttc 和 Georgios Konstantopoulos
最开始,以太坊的路线图中有两种扩展策略。其中一种(例如,参见这篇早期论文,2015 年提出)是“分片”:每个节点不需要验证和存储链中的所有交易,而只需验证和存储一小部分的交易。这也是其他点对点网络(例如 BitTorrent)工作的方式,因此我们完全可以让区块链以同样的方式运作。另一种是 二层协议:在以太坊之上建立的网络,以便它们能够充分受益于其安全性,同时将大部分数据和计算保留在主链之外。“二层协议”在2015年指的是状态通道,在2017年是Plasma,然后在2019年则是Rollups。Rollups 比状态通道或 Plasma 更强大,但它们需要大量链上数据带宽。幸运的是,到2019年,分片研究已经解决了大规模验证“数据可用性”的问题。最终,两条路径合并,我们得到了以Rollup为中心的路线图,这依然是现在以太坊的扩展策略。
激增,2023年路线图版。
以Rollup为中心的路线图提出了一个简单的劳动分工:以太坊 L1 专注于成为一个强大和去中心化的基础层,而 L2 则承担帮助生态系统扩展的任务。这种模式在社会的不同领域中经常出现:司法系统(L1)并不是为了快速高效,而是为了保护合同和财产权,创业者(L2)则需要在这一坚固的基础层之上构建,为人类开辟(隐喻和字面意义上的)火星。
在这一年,以Rollup为中心的路线图取得了重要的成功:以太坊 L1 的数据带宽通过EIP-4844 blobs取得了大幅提升,多个 EVM rollups 目前已处于第一阶段。一种非常异构和多元化的分片实现,其中每个 L2 作为一个具有自己内部规则和逻辑的“分片”,现已成为现实。但正如我们所见,走这条路有其独特的挑战。因此,现在我们需要完成以Rollup为中心的路线图,并解决这些问题,同时维护以太坊 L1 的稳健性和去中心化特点。
旁注:可扩展性三难困境
可扩展性三难困境是一个在2017年提出的观点,认为区块链的三个特性之间存在张力:去中心化(更具体地说:运行节点的低成本),可扩展性(更具体地说:处理的高交易数量)和安全性(具体来说:攻击者需要控制整个网络中大量节点才能使一笔交易失败)。
值得注意的是,三难困境并不是定理,该观点并没有附带数学证明。它提供了一种启发性的数学论证:如果一个友好去中心化的节点(例如消费者笔记本电脑)每秒可以验证 N 笔交易,而有一个链每秒处理 k*N 笔交易,那么要么(i)每笔交易仅由 1/k 的节点看到,这意味着攻击者只需损害一小部分节点就能推动一笔不良交易通过,要么(ii)你的节点需要很强大而且该链不去中心化。这篇文章的目的是并不为了证明打破三难困境是不可能的;而是为了表明打破三难困境是困难的 -这需要以某种方式超越论证所暗示的思路。
多年间,一些高性能链通常声称无需在基础架构层面上采取巧妙措施即能解决三难困境,通常是通过使用软件工程技巧来优化节点。这总是具有误导性,而且在这样的链上运行节点通常比在以太坊上困难得多。这篇文章对此进行了一些探讨,列出了为什么会出现这种情况的许多细微差别(因此,唯一的软件工程不足以扩展以太坊本身)。
然而,数据可用性采样与SNARKs 的结合确实解决了三难困境:它允许一个客户端验证某些数量的数据是否可用,同时只下载这部分数据并执行少量计算。SNARKs 是无需信任的。数据可用性采样有一个微妙的少数可信模型,但它保持了非可扩展链所具有的基本特性,即即使是51%的攻击也无法强迫坏区块被网络接受。
解决三难困境的另一种方法是 Plasma 架构,它使用巧妙的技术将数据可用性检查的责任推给用户,以兼容约束方式进行。在2017年至2019年之间,当所有我们能够用来扩展计算的只有欺诈证明时,Plasma 的安全性受到很大限制,但 SNARKs 的主流化使 Plasma 架构更加可行,能够用于更广泛的用例。
数据可用性采样的进一步进展:我们解决了什么问题?
截至2024年3月13日,当Dencun升级上线时,以太坊区块链每12秒大约有三个~125kB的“blob”,约~每槽375kB的数据可用带宽。假设交易数据直接在链上发布,一个ERC20转账约为180字节,因此以太坊上Rollups的最大TPS为:
375000 / 12 / 180 = 173.6 TPS
如果我们加入以太坊的 calldata(理论上最大:每槽3000万 gas / 每字节16 gas = 每槽1,875,000字节),这将变成607 TPS。通过 PeerDAS,计划将 blob 数量目标提高到 8-16,这将使我们的 calldat造成463-926 TPS。
这比以太坊的 L1 有了很大的提升,但仍不够。我们想要更高的可扩展性。我们的中期目标是每槽16 MB,如果结合在 Rollup 数据压缩的改进,将为我们带来约58,000 TPS。
PeerDAS 是“1D 采样”的相对简单的实现。以太坊中的每个 blob 是一个在 253 位素数域上的 4096 次多项式。我们广播多项式的“份额”,每个份额由在一组8192个坐标中取自相邻16个坐标的16个评估组成。任何 4096个中的8192个评估(以当前提议的参数来说:128个可能样本中的任何 64 个)可以恢复 blob。
PeerDAS 工作的方式是让每个客户端监听少量子网,在这些子网中,第 i 个子网广播任何 blob 的第 i 个样本,并且通过在全球 p2p 网络中向其同伴请求需要其他子网上的 blob。 一个更保守的版本是SubnetDAS,它只使用子网机制,而没有额外向同伴请求的层。 一个当前的提案是让参与权益证明的节点使用 SubnetDAS,而其他节点(即“客户端”)使用 PeerDAS。
理论上,我们可以将 1D 采样扩展得非常远:如果我们将 blob 数量的最大值提高到 256(所以,目标设为 128),那么我们将在每槽达到 16 MB 的目标,而数据可用性采样的费用将仅为每个节点每槽 16 样本 128 blobs 每个 blob 每个样本 512 字节 = 1 MB 的带宽。这刚好在我们能够接受的范围内:可行,但这意味着带宽有限的客户端无法进行采样。 我们可以通过减少 blob 数量和增加 blob 大小来在一定程度上优化这一点,但这会使重构变得更为复杂。
因此最终我们希望进一步进行 2D 采样,它通过随机采样不仅在 blobs 内部进行采样,还在 blobs 之间进行采样。KZG 承诺的线性特征被用来“扩展”某个区块中的 blobs 集合,生成一组新的“虚拟 blobs”,以冗余的方式编码相同的信息。
重要的是,计算这些承诺的扩展并不需要拥有 blobs,因此该方案在根本上适合分布式块构建。 实际构建区块的节点只需拥有 blob KZG 承诺,并可以依赖 DAS 验证 blobs 的可用性。1D DAS 也天然适合分布式块构建。
下一步是完成 PeerDAS 的实现和部署。从那里开始,逐步提高 PeerDAS 上的 blob 数量,同时仔细监视网络,改进软件以确保安全。同时,我们希望有更多的学术工作来正式定义 PeerDAS 及其与诸如分叉选择规则安全性等问题的互动。
展望未来,我们需要更多的研究,以弄清楚理想的 2D DAS 版本并证明其安全性特性。我们还希望最终摆脱 KZG,转向量子抵抗、无需可信设置的替代方案。目前,我们不知道哪些候选者适合分布式块构建。即使是使用递归 STARKs 生成有效性证明的昂贵“暴力”技术也不够,因为尽管 技术上 STARK 的大小为 O(log(n) * log(log(n))) hashes(与STIR相结合),但在实际中,STARK 的大小几乎和整个 blob 一样。
我看到的长期现实路径是:
我们可以沿着权衡谱来观察它们:
请注意,即使我们决定直接在 L1 上扩展执行,这一选择依然存在。因为如果 L1 要处理大量 TPS,L1 块将变得非常大,客户将希望高效验证其正确性,因此我们将不得不在 L1 使用支持 rollups 的相同技术(ZK-EVM 和 DAS)。
如果实现了数据压缩(见下文),那么对 2D DAS 的需求就会减少或者至少推迟,如果 Plasma 被广泛使用,需求将减少得更多。DAS 还对分布式块构建协议和机制提出挑战:虽然理论上,DAS 有利于分布式重构,但这在实践中必须与包含列表提案及其相关的分叉选择机制相结合。
数据压缩:我们解决了什么问题?
每个 Rollup 中的交易在链上占据了相当大的数据空间:一个 ERC20 转账约占180字节。即使有理想的数据可用性采样,这也限制了二层协议的可扩展性。假如每槽是16 MB,那我们将达到:16000000 / 12 / 180 = 7407 TPS。如果除了抓住分子外,我们还可以抓住分母,使得 rollup 中每笔交易在链上占用更少的字节呢?它是什么?如何运作?
在我看来,最好的解释是这张图:
最简单的增益仅仅是零字节压缩:用两个字节替换每个长的零字节序列,表示多少个零字节。为了进一步提高效率,我们可以利用交易的具体特性:
主要需要做的事情是实际实现上述方案。最大的权衡是:
采用 ERC-4337,并最终将其中的一部分在 L2 EVM 中的固化,可以极大加速聚合技术的部署。ERC-4337 部分在 L1 的固化也可以加速其在 L2 上的部署。
广义 Plasma:我们解决了什么问题?
即使有了 16 MB 的 blobs 和数据压缩,达到 58,000 TPS 也不一定足以完全覆盖消费支付、去中心化社交或其他高带宽领域,这尤其如此,如果我们开始考虑隐私,可能会将可扩展性降低 3-8 倍。对于高容量、低价值应用,今天的一种选择是validium,其将数据保持在链外,并具有一种有趣的安全模型:操作者不能“盗取”用户的资金,但他们可以消失并“临时或永久冻结”所有用户的资金。但我们可以更进一步。
Plasma 是一种扩展解决方案,涉及运算者在链外发布区块,并将那些区块的 Merkle 根放入链上(与 Rollups 相对,后者是将完整区块上链)。对于每个区块,操作者向每个用户发送一个 Merkle 分支,证明该用户的资产发生了什么,或没有发生什么。用户可以通过提供 Merkle 分支来提取他们的资产。重要的是,这个分支并不必基于最新的状态——为此,即使数据可用性失败,用户仍可以通过提取他们最近可用的状态来恢复资产。如果用户提交了无效分支(例如,退出一个已经转到其他位置的资产,或操作者自己凭空创建资产),则可以使用链上挑战机制裁决资产的合法归属。
早期的 Plasma 仅能够处理支付用例,尚未有效推广。如果我们要求每个根通过 SNARK 进行验证,Plasma 变得更加有力。每个挑战游戏可以显著简化,因为我们消除了运营者作弊的大部分可能路径。此外,新路径也开辟了使 Plasma 技术扩展到更一般的资产类别的机会。最后,在操作者不作弊的情况下,用户可以立即提款,无需等待一周的挑战期。
一个关键的见解是,Plasma 系统不需要完美。即使你只能保护一部分资产(例如,甚至是过去一周未移动的硬币),你也已经极大地改善了当前Ultra-可扩展EVM的状态,这是一个validium。
另一类构造是混合 plasma/rollups,例如Intmax。这些构造在链上对每个用户存放很少的数据(例如5个字节),通过这样做,获得了某种介于 plasma 和 rollups 之间的属性:在 Intmax 的情况下,你可以获得极高的可扩展性和隐私,但即使在 16 MB 环境中,最大容量理论上也被限制在大约 16,000,000 / 12 / 5 = 266,667 TPS。
主要剩下的任务是将 Plasma 系统推向生产。如上所述,“plasma 与 validium”并不是二元的:任何 validium 可以通过将 Plasma 特性添加到退出机制,提高其安全性。研究环节是在获取 EVM 的最佳属性方面(在信任要求、L1 gas成本的最坏情况和对拒绝服务攻击的脆弱性方面),并涵盖特定应用的代替构造。此外,相较于 rollups,Plasma 的更大概念复杂性需要直接通过研究和建立更好的广义框架来解决。
使用 Plasma 构造的主要权衡在于它们对操作者的依赖程度较大,使其更难以实现“去中心化”,尽管混合 plasma/rollup 设计通常可以避免这种弱点。
越有效的 Plasma 解决方案就越减少 L1 需要高性能数据可用性功能的压力。将活动移至 L2 还减少了 L1 的 MEV 压力。
成熟的L2证明系统:我们解决了什么问题?
今天,大多数 rollups 仍然不是真正无需信任的;有一个安全委员会可以覆盖(优化或有效)证明系统 的行为。在某些情况下,证明系统甚至根本没有上线,或者上线了但仅具有“顾问”功能。最先进的是(i)少数特定应用的rollup,如 Fuel,拥有无需信任的特点,以及(ii)截至本年写作时,Optimism 和 Arbitrum 这两个全 EVM 的 Rollups,它们实现了某个部分的“第一阶段”部分可信赖里程碑。Rollups未能进一步发展的原因是对代码中错误的担忧。我们需要无信任的 rollups,因此我们需要直面这个问题。
首先,让我们回顾一下“阶段”系统,这最早在这篇文章中引入了。虽然有更详细的要求,但总结如下:
目标是达到第二阶段。达到第二阶段的主要挑战在于要获得对于证明系统是否值得信任的足够信心。这有两种主要方式:
对于形式验证,进度仍为“艰巨”。我们需要创建整个 SNARK 证明器的经过形式验证的版本。这是一个复杂的项目,但已经开始着手。 有一个显著简化任务的技巧:可以创建一个形式验证的 SNARK 证明器,如最小化虚拟机的示例,像RISC-V 或Cairo, 然后在这一简化的虚拟机中实现 EVM,且正式证明其等价于其他一些 EVM 规范。
对于多个证明者,有两个主要剩余的部分。 首先,我们需要对至少两个不同的证明系统有足够的信心,必须保证它们都合理安全且如果出现故障,故障出现在不同和无关的原因上(这使它们不会同时出现故障)。其次,我们需要在合并证明系统的底层逻辑中获得非常高级别的保证。这部分代码要小得多。有方法将其简化至极小-仅在其代表个体证明系统的合同中存储资金的安全多签合约中—但权衡都是较高的链上 gas 成本。因此需要找到效率与安全之间的某种平衡。
将活动移到 L2 减少了 L1 的 MEV 压力。
跨L2互操作性改善:我们解决了什么问题?
当前 L2 生态系统面临的一个主要挑战是用户导航困难。此外,最简单的做法往往会重新引入信任假设:中心化桥、RPC 客户端等。如果我们认真对待 L2 作为以太坊一部分的想法,需要让使用 L2 生态系统的体验更像是使用统一的以太坊生态系统。
它是什么,如何运作?
跨 L2 互操作性改进大致分为多个类别。一般而言,可以通过识别理论上以 Rollup 为中心的以太坊与 L1 执行分片相同之类的调查,然后分析当前以太坊 L2 的不足之处来寻找这些点。以下几点值得注意:
更激进的“共享代币桥”想法:假设所有的 L2 都是有效性证明 Rollups,每个槽都提交给以太坊。即使在这种情况下,将资产“原生”从一个 L2 转移到另一个 L2 仍需要进行取款和存款,这需要支付相当的 L1 gas费用。解决此问题的一种方法是创建一个共享的最小 Rollup,其唯一功能是在其中维护每种代币在各个 L2 中的余额,并在所有 L2 启动的一系列跨 L2 发送操作的推动下,批量更新这些余额。这将允许跨 L2 转帐发生,而无需为每次转帐支付 L1 gas,也无需使用诸如 ERC-7683 之类的基于流动性提供者的技术。
同步可组合性:允许特定的 L2 与 L1 之间或多个 L2 之间发生同步调用。这可以有助于提高 DeFi 协议的金融效率。前者可以在没有任何跨 L2 协调的情况下完成;后者则需要共享排队。Based Rollups 的结构自动适应于所有这些技术。
本节的一个独特之处在于,这些任务不仅仅是技术问题:它们也是(也许更主要是!)社会问题。它们需要 L2、钱包和 L1 之间的合作。我们成功处理这个问题的能力是我们作为一个社区团结在一起的考验。
大多数这些提案是“高层”构建,因此对 L1 考量的影响不大。一个例外是共享排序,这对 MEV 产生了重大影响。
在 L1 上扩展执行。我们解决的问题是什么?如果 L2 变得非常可扩展和成功,但 L1 仅能处理非常低的交易量,则以太坊可能会面临许多风险:
出于这些原因,继续扩展 L1 本身是有价值的,并确保它能够继续容纳日益增长的使用数量。它是什么,如何工作?扩展的最简单方法是简单地 增加Gas限制。但是,这会使 L1 中心化,从而削弱使以太坊 L1 如此强大的其他重要属性:作为一个强大基础层的可信度。目前对于简单能源限制增加的可持续程度存在争论,这也会根据实施其他技术而变化,以使更大的区块更易于验证(例如,历史过期、无状态、L1 EVM 有效性证明)。另一个需要不断改进的重要方面是以太坊客户端软件的效率,这与五年前相比今天优化得更好。有效的 L1 Gas限制增加策略将涉及加速这些验证技术。另一种扩展策略涉及识别可以以降低成本进行的特定功能和计算类型,而不会损害网络的去中心化或安全属性。以下是一些例子:
ADD
操作比 MUL
操作便宜得多,但目前这两个操作码的成本是相同的。我们可以让 ADD
更便宜,甚至更简单的操作码,如 PUSH
也可以更便宜。这些改进将在未来的《Splurge》文章中详细讨论。
最后,第三种策略是 本地 rollup(或“嵌入式 rollup”):基本上,创建多个以并行方式运行的 EVM 副本,从而形成一个与 rollup 能够提供的功能等效,但是更本地整合到协议中。
有三种 L1 扩展策略,可以单独或并行推进:
值得理解的是,这些是不同的技术,具有不同的权衡。例如,本地 rollup 在组合性上与常规 rollup 有许多相同的弱点:不能发送一个单一的交易以同步执行它们中的许多操作,正如你可以在同一个 L1(或 L2)上的合约中那样。提高Gas限制削弱了通过使 L1 更易于验证来实现的其他好处,如增加运行验证节点的用户比例和增加独立质押者。根据具体操作在 EVM 中降低成本的方式不同,也可能增加 EVM 的整体复杂性。
任何 L1 扩展路线图需要回答的一个大问题是:L1 和 L2 上最终属于什么的远景是什么?显然,让 一切 均在 L1 上处理是荒谬的:潜在的用例达到每秒数十万笔交易,这将使 L1 完全无法验证(除非我们走上本地 rollup 的路线)。但我们确实需要 一些 指导原则,以确保我们不会造成一个情况,即将Gas限制增加 10 倍,严重损害以太坊 L1 的去中心化,发现我们仅仅进入了一个世界,在这个世界里,99% 的活动不再是在 L2 上,而是 90% 的活动是在 L2 上,因此结果看起来几乎与之前相同,除了不可逆转地失去了使以太坊 L1 特殊的许多因素。
将更多用户引入 L1 意味着不仅要提高容量,还有其他方面的改进。这意味着更多的 MEV 将留在 L1(而不是成为仅仅 L2 的问题),因此更需要明确处理它。这极大地增加了 L1 上快速时隙时间的价值。而且这也 heavily 依赖于 L1 的验证(“边缘”)进行良好。
- 原文链接: vitalik.eth.limo/general...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!