以太坊以 L2 为主的情况下,提高 L1 gas 限制的理由
作者:维塔利克·布特林 2025 年 2 月 14 日 原文链接
特别感谢 Ansgar Dietrichs 的反馈和审阅
以太坊路线图中一个重要的近期争议是关于应该在多大程度上提高 L1 gas 限制的问题。最近,L1 gas 限制从 3000 万提高到了 3600 万,使容量增加了 20%。许多人支持在不久的将来进行更大幅度的提升。这些提升得益于最近和即将到来的技术改进而变得安全:以太坊客户端的效率提升、由于 EIP-4444(参见路线图)而减少存储旧历史记录的需求,以及之后的无状态客户端。
然而,在我们走这条路之前,有一个重要的问题需要问:在以 Rollup 为中心的以太坊路线图的背景下,提高 L1 gas 限制从长远来看是否正确?gas 限制容易提高,但很难降低——即使你后来降低了,对去中心化的影响可能也是永久性的。我们不希望在没有确定能从这种使用中受益的情况下,就承担大量 L1 使用带来的中心化风险。
本文将论证,即使在大多数使用和应用都在 L2 的世界中,显著扩容仍然是有价值的,因为它能够实现更简单和更安全的应用开发模式。本文不会试图论证从长远来看更多应用应该在 L1 上这一说法的对错。相反,本文的目标是论证,无论那场辩论的结果如何,L1 上约 10 倍的扩容都具有长期价值。
抗审查性
目标是抵抗审查。
区块链的核心价值主张之一是抗审查性:如果一笔交易是有效的,并且你有资金支付市场价格的手续费,那么你应该能够可靠且快速地将该交易上链。
在某些情况下,即使在短时间尺度上也需要抗审查性:如果你在去中心化金融协议中持有仓位,而价格变化非常快,那么即使交易延迟5分钟也可能足以让你被清算。
L1的质押者集合是高度去中心化的,这使得审查一笔交易超过几个时隙(slot)变得非常困难。目前有一些提案旨在进一步改进以太坊的这一特性,即使在区块构建高度中心化和外包的情况下也能保证抗审查性。另一方面,L2依赖于更加集中的出块者集合或中心化的排序器,它们可以轻易选择审查用户。一些L2(例如参见Optimism、Arbitrum文档)确实有强制包含机制,允许用户直接通过L1提交交易。因此,抗审查性保证的实际价值取决于:(i) L1费用足够低,以及 (ii) L1有足够的空间,即使L2大规模审查用户,用户也能发送绕过交易。
基本数学假设
我们可以通过一些计算来确定使用强制包含机制的实际成本。首先,让我们列出一些假设,这些假设在其他章节中也会用到:
- 目前,一笔 L1 → L2 的存款交易大约需要消耗 120000 L1 gas。这里是一个来自 Optimism 的示例。
- 一个极简的 L1 操作(如修改某个存储槽的值)需要消耗 7500 L1 gas(包括首次访问存储的 SSTORE、地址的 calldata 成本以及少量计算开销)
- ETH 价格为 $2500
- gas 价格为 15 gwei,这是对长期平均值的合理近似
- 需求价格弹性接近于 1(即 gas 限制翻倍会使价格减半)。这一点在早期的数据分析中得到了初步支持,不过实际上我们应该注意到,实际弹性可能会在任何方向上有很大差异
- 我们希望应对攻击的成本低于 $1。正常操作每笔交易的成本不应超过 $0.05。介于两者之间的特殊操作(例如密钥更改)成本应低于 $0.25。这确实只是一个直观的价值判断。
基于这些假设,目前绕过审查的成本为 120000 * 15 * 10**-9 * 2500 = $4.5
。为了将其降至我们的目标值以下,我们需要将 L1 扩容 4.5 倍(但请注意,这只是一个非常粗略的估计,因为弹性很难估计,甚至绝对使用水平也很难估计)。
需要在 L2 之间转移资产
用户经常需要在不同的 L2 之间转移资产。对于交易量大的常见资产来说,最实用的方式是使用意图协议,如 ERC-7683。只需要少数做市商实际执行 L2 之间的直接转移;其他人只需要与做市商进行交易即可。然而,对于交易量低的资产或 NFT,这种方式并不可行,因此要在 L2 之间转移此类资产,个人用户需要通过 L1 发送交易。
目前,提款需要消耗 约 250,000 的 L1 gas,存款则需要另外 120,000 的 L1 gas。理论上,这个流程可以得到很大的优化。例如,要将 NFT 从 Ink 转移到 Arbitrum,NFT 的底层所有权需要在 L1 上从 Ink bridge 转移到 Arbitrum bridge。这是一个存储操作,只需要约 5000 gas。其他都"只是"调用和证明,通过合适的逻辑可以变得很便宜;假设总成本为 7500 gas。
让我们计算这两种情况下的成本。
目前:370000 * 15 * 10**-9 * 2500 = $13.87
理想设计:7500 * 15 * 10**-9 * 2500 = $0.28
我们的理想目标是 $0.05,这意味着需要扩容 5.5 倍。
或者,我们可以基于容量进行更直接的分析。假设每个用户平均每月需要进行一次跨 L2 的 NFT(或稀有 ERC20)转账。以太坊一个月的总 gas 容量是 18000000 * (86400 * 30 / 12) = 3.88 万亿
,足够支持 5.18 亿次此类转账。因此,如果以太坊想要服务全世界(例如,按照 Facebook 31 亿 的用户数量计算),它需要将容量扩大约 6 倍,而且这还是在假设 L1 只用于这一个用途的情况下。
L2 大规模退出
L2 相比"替代性 L1"的一个重要特性是,当 L2 出现故障时,用户能够退出到 L1。但如果所有用户无法在一周内完成退出怎么办?在乐观 Rollup 中,这可能不是问题:一个诚实的参与者就能无限期地阻止错误的状态根被确认。然而在 plasma 系统中,如果数据变得不可用,通常需要在一周内退出。即使在乐观 Rollup 中,恶意的治理升级也会给用户30天的时间(参见:第2阶段定义)来提取他们的资产。
这意味着什么?假设一个 Plasma 链出现故障,一次退出需要消耗 120000 gas。在一周内能有多少用户完成退出?我们可以计算:86400 * 7 / 12 * 18000000 / 120000 = 756万
用户。如果是带有恶意30天延迟治理升级的乐观 Rollup,这个数字会增加到3240万
用户。可以设想,你可以创建一个允许多个用户同时退出的大规模退出协议。假设我们将效率推到极限,每个用户只需要执行一次 SSTORE 和一些额外操作(即7500 gas),那么这两个数字将分别增加到1.21亿
和5.18亿
。
索尼目前在以太坊上已经有了一个 L2。索尼的 PlayStation 拥有约1.16亿月活用户。如果所有这些用户都成为 Soneium 用户,那么目前的以太坊将无法支持大规模退出事件。然而,如果我们实现更加智能的大规模退出协议,这勉强是可行的。
如果我们想要避免技术上复杂的哈希提交协议,我们可能需要为每个资产预留7500 gas 的空间。我目前在 Arbitrum 上的主钱包中有9个具有重要价值的资产;如果以此为估计,那么 L1 可能需要扩容约9倍。
对用户来说,另一个担忧是,即使他们能够安全地扩展,他们也会因为非常高的 gas 费用而损失大量资金。
让我们分析一下 gas 费用,使用当前和"理想"的退出成本:
120000 * 15 * 10**-9 * 2500 = 4.5美元
7500 * 15 * 10*-9 * 2500 = 0.28美元
然而,这些估算的问题在于,在大规模退出的情况下,所有人都会同时尝试退出,因此 gas 费用会显著更高。我们曾见过 L1 的平均每日 gas 费用超过100 gwei 的情况。如果我们以100 gwei 为基准,那么退出成本将达到1.88美元,这意味着 L1 需要扩容1.9倍才能使退出费用保持在可承受的水平(1美元以下)。还要注意,如果你希望用户能够一次性退出所有资产,而不需要技术上复杂的哈希提交协议,那么可能需要每个资产消耗7500 gas,这样退出成本将增加到2.5美元或16.8美元,具体取决于你的参数,相应地也会影响 L1 需要扩容多少才能保持退出费用在可承受范围内。
在 L1 上发行 ERC20 代币
如今,许多代币都在 L2 上发行。这存在一个被低估的安全隐患:如果某个 L2 经历了恶意的治理升级,那么在该 L2 上发行的 ERC20 代币可能会开始无限制地发行新代币,而且没有办法阻止这些代币泄漏到整个生态系统中。如果代币是在 L1 上发行的,一个 L2 出现问题的后果主要限制在该 L2 内。
目前为止,已经有超过 20 万个 ERC20 代币在 L1 上发行。即使支持其 100 倍的数量也是可行的。然而,要使在 L1 上发行 ERC20 成为一个受欢迎的选择,成本需要降低。让我们以 Railgun 代币(一个主要的隐私协议)为例。这里是它的部署交易。它消耗了 164.7 万 gas,按照我们的假设相当于 61.76 美元。对于一个公司来说,这个成本本身是可以接受的。原则上,这可以进行大量优化,特别是对于使用相同逻辑发行大量代币的项目。然而,即使我们将成本降低到 12 万 gas,仍然需要 4.5 美元。
如果我们设定的目标是将Polymarket引入 L1(至少是资产发行;交易仍可以在 L2 上进行),并且我们希望出现大量的微观市场,那么按照我们上述 0.25 美元的目标,我们需要将 L1 扩展约 18 倍。
密钥库钱包操作
密钥库钱包是一种特殊的钱包,其验证逻辑(用于更改密钥、签名算法等)可以修改,且这些修改会自动传播到所有 L2。验证逻辑位于 L1,L2 通过同步读取(例如 L1SLOAD、REMOTESTATICCALL)来读取这些逻辑。虽然密钥库钱包也可以将验证逻辑放在 L2 上,但这会带来更多的复杂性。
假设我们有 31 亿用户,每人每年需要进行一次密钥更改或账户升级操作。如果每次操作消耗 50,000 gas,那么每个时隙的 gas 消耗将达到 50000 * 3100000000 / (31556926 / 12) ~= 5900 万
,约为当前目标的 3.3 倍。
我们可以通过深度优化来改进:让密钥更改操作在 L2 上发起,但在 L1 上存储(感谢 Scroll 团队提出的这个想法)。这样可能将 gas 消耗降低到仅需一次存储写入和少量额外开销(我们再次假设为 7500 gas),使得密钥库更新仅需使用以太坊当前 gas 容量的约一半。
我们还可以估算密钥库操作的成本:
7500 * 15 * 10**-9 * 2500 = 0.28 美元
从这个角度来看,只需 1.1 倍的增长就足以使密钥库钱包的使用成本变得可承受。
L2 证明提交
要让跨 L2 互操作性既快速又通用且无需信任,我们需要 L2 频繁地向 L1 提交数据,以便它们能够直接感知彼此的状态。为了获得最优的低延迟,L2 需要在每个时隙都向 L1 提交。
以当今的技术(ZK-SNARKs)而言,每个 L2 的成本约为 500,000 gas,因此以太坊只能支持 36 个 L2(相比之下:L2beat 追踪了约 150 个,包括 validium 和 optimium 类型的扩容方案)。但更重要的是,这在经济上是不可行的:按照长期平均 gas 价格 15 gwei和 ETH 价格 2,500 美元计算,每年提交的成本为 500000 * 15 * 10**-9 * (31556926 / 12) * 2500 = 每年 4,900 万美元
。如果我们使用聚合协议,成本可能会再次下降,极限情况下每次提交可能约为 10,000 gas,因为聚合机制比仅仅更新单个存储槽要复杂一些。这样每个 L2 每年的提交成本约为 100 万美元。
理想情况下,我们希望每个时隙向 L1 提交能成为一个毫无争议的选择。要实现这一点,还需要显著提高 L1 的容量。对于一个 L2 团队来说,每年 10 万美元是一个相当可接受的成本,但每年 100 万美元则明显超出合理范围。
结论
我们可以将上述用例整理成如下表格:
用例 | 当前技术下的 L1 gas 需求 | 更理想技术下的 L1 gas 需求 | L1 gas 需求(可承受范围) |
---|---|---|---|
抗审查能力 | < 0.01x | < 0.01x | ~4.5x |
跨 L2 资产转移 | 278x | 5.5x | ~6x |
L2 大规模退出 | 3 - 117x | 1 - 9x | ~1 - 16.8x |
发行 ERC20 通证 | < 0.01x | < 0.01x | ~1 - 18x |
密钥库钱包操作 | 3.3x | 0.5x | ~1.1x |
L2 证明提交 | 4x | 0.08x | ~10x |
请注意,第一列和第二列是累加的,例如,如果密钥库钱包操作占用了当前一半的 gas 消耗,那么还需要有足够的空间来执行 L2 大规模退出。
此外,再次提醒,基于成本的评估是非常粗略的。需求弹性(gas 成本如何响应 gas 限制的变化,尤其是长期来看)很难估算,而且即使在固定使用水平的情况下,费用市场的发展也存在很大的不确定性。
总的来说,这项分析表明,即使在 L2 主导的世界中,将 L1 gas 扩容约 10 倍仍具有重要价值。这进而意味着,无论长期前景如何,未来 1-2 年内可以实现的短期 L1 扩容都是有价值的。