翻译 | EIP-4844 费用市场分析
EIP-4844 为以太坊协议引入了两个主要组件:(1) 新型 blob 交易;(2) 专用的数据型 Gas 费用市场。本次分析主要关注数据型 Gas费用市场及其关键参数。
文章 | Davide Crapis
翻译 | Jason
译者按
本文通过回测仿真等方式让我们深入了解 EIP-4844 的费用机制如何作用于当前以太坊。然而,该文章的观点有很多可以探讨的地方,欢迎大家与我们一起探讨:
人为设定一个“更佳”的市场均衡点,里面存在主观因素。是否把价格发现交给市场本身会是更好的选择。
通过 EIP-4844 推出前的历史数据进行推导存在刻舟求剑的风险。
EIP-4844 的推出是为了促进 Layer2 的发展。如果数据维持静态,那么只能表明 EIP-4844 没有达到预期的效果。
基于过去的应用推到未来的需求会扼杀创新,创新可能存在于本文所描述的垃圾应用中。交给市场是更好的选择。
只要对共识节点而言是划算的,Blob 数据的成本越低越有助于生态的发展。机制设计时不一定以最大化共识节点的利益为前提。
DA 间的竞争是很大的,如果只着眼于以太坊本身,设计的机制可能会削弱以太坊 DA 相比其他 DA 的 竞争力。
加入我们社群一起讨论吧!
tg: https://t.me/ethconomicsresearchspace
感谢 Barnabé Monnot、Danny Ryan 以及 RIG 开放问题 3(Rollup Economics)的参与者提供的有益讨论和反馈。
EIP-4844 为以太坊协议引入了两个主要组件:(1) 新型 blob 交易;(2) 专用的数据型 Gas 费用市场。本次分析主要关注数据型 Gas费用市场及其关键参数。
我们首先讨论 4844 和 1559 费用机制间的关系及其相互作用。然后,我们基于对历史数据的仿真和回测进行分析。最后我们讨论当前设置的潜在改进。
1559 & 4844:交易的双重费用市场
4844 的数据型 Gas 费用机制来源于 1559 的机制。4844 引入了类似的自适应规则、锚定目标以及区块 Gas 上限,但有着细微的差别。我们将在下一节中概述这些细微差别。最为重要的创新点是其为以太坊迈向多维资源定价的第一步(终局 1559?!)。Blob 数据资源与标准的 Gas 计量相解耦并根据 Blob 的供应/需求获得其动态价格。
然而,值得注意的是,这只是针对数据型资源的解耦。标准交易计价仍维持原状:callldata
的非空字节计价 16 Gas 和空字节计价 4 Gas。只有 Blob 交易同时使用两个费用市场:EVM 操作以标准 Gas 计价,而 Blob 数据则以数据型 Gas 计价。
我们实际上有着一个双重交易费用市场:使用一维(1559)机制的标准交易和使用二维(1559 x 4844)机制的 blob 交易。此区别尤为重要:用户可以决定使用两种交易类型中的任何一种,因此两个市场间会存在相互关联。
4844 中数据型 Gas 的核算及费用更新
我们在下文总结了4844 数据型 Gas 费用市场的一些主要特征。请参阅 EIP-4844 规范中的相关部分以了解细节和 Tim Roughgarden 的 EIP-1559 分析用作相关 1559 机制的进一步描述和分析。
Blob 交易具有 1559 机制所需的所有字段 (max_fee
, max_priority_fee
, gas_used
) 以及一个用于指定支付数据型 Gas 意愿的新字段 ( max_fee_per_data_gas
) 。Blob 事务最多可以携带两个 125kb 的 blob,这决定了data_gas_used
的值是以字节计量的。如果满足了 1559 的有效条件并且其 max_fee_per_data_gas
大于或等于现行的 data_gas_price
,那么该交易是有效的。最初,TARGET_DATA_GAS_PER_BLOCK
被设置为 250kb(2 个 blob)而 MAX_DATA_GAS_PER_BLOCK
被设置为 500kb。
译者注:最新的规范中,
TARGET_DATA_GAS_PER_BLOCK
被设置为 375 kb(3 个 blob)而MAX_DATA_GAS_PER_BLOCK
被设置为 750 kb(6 个 blob)。
slot n 的数据型 Gas 的价格可以通过一个漂亮的公式计算
其中 m 是 MIN_DATA_GASPRICE
,s 是 DATA_GASPRICE_UPDATE_FRACTION
(对应连续区块 Gas 价格的波动上限12.5%),以及
是 slot n-1 为止累计超出锚定目标的数据型 gas 总额。
译者注
e(TARGET_BLOB_GAS_PER_BLOCK / BLOB_GASPRICE_UPDATE_FRACTION
) ≈ 1.125
对 Arbitrum & Optimism 的真实需求进行回测
5 个要点:
1. L2需求结构与用户需求大大不相同。L2 在以太坊上运营资源密集型业务:他们通过 定时服务发布交易,他们的需求是刚性的,并且 L1 成本是他们的主要运营成本。
2. 目前,L2 对 blob 数据的需求比锚定目标低 10 倍,并需要 1-2 年才能达到锚定目标的水平。
3. 在需求达到锚定目标前,数据型 Gas 的价格将保持在接近最低水平(见图表和冷启动章节)。
4. 当需求达到锚定目标时,数据型 Gas 的价格将指数增长。若价格最低价格为 1,L2 的成本将在几小时内增加 10 个数量级。
5. 我们探讨了一些潜在的改进方案,只会涉及对费用市场参数的最小化改动(见“能做什么?”部分)。
让我们深入了解细节……
我们使用 Arbitrum 和 Optimism 的历史 batch 数据进行了回测(涉及 L2 batch 消耗的 calldata 总量约 98%)。我们选择了2023年前两个月 batch 数据负载最高的一天(即2月24日)进行了分析。
Arbitrum 平均每 6.78 个区块发布 1055 个大小约为 99 kb 的固定批次(标准差为 600 b),总计约 100 mb/天
Optimism 平均每 2.37 个区块发布 2981 个大小平均为 31 kb 的可变批次(标准差为 19kb),总计约 93 mb/天
分析1:实践中的费用更新
Arbitrum 的数据需求为 14.6 kb/区块,Optimism 的数据需求为 13 kb/区块。根据当前费用更新机制,直到数据负载高于 ~250kb 的区块目标(约为当前负载的 10 倍)时,价格发现才会有效启动。要看到这一点,可以假设 batch的发布者很善于平衡和协调,使得没有区块高于目标,以及数据价格永不离开最初的最小值 1 wei,或者只能注意到局部超额很快被吸收,数据价格永远不会超出 1 太多。
两个回测场景中的 EIP-4844 数据 Gas 价格变化:blob 数据需求与历史相似(左),blob 数据需求是历史的 10 倍(右)。两者均假设相同的 max_fee_per_data_gas 分布:以 50 gwei 为中心的均匀分布(请参阅顶部的链接了解仿真详情)。
当潜在需求高于目标时,价格就会更新,从而舍弃支付意愿最低的 blob 交易,维持与目标的锚定。然而,该过程需要多久?从 2022 年 1 月到 2022 年 12 月,以太坊汇总的 rollup 数据增加了 4.4 倍,意味着按此速度(或者考虑到创新和 4844 带来的成本降低而略高),数据价格发现机制启动以及数据价格开始涨到 1 以上将需要约 1.5 年。
数据价格长时间处于 1 会导致对 blob 数据成本的不合理预期。L1 上的用户和应用可能会慢慢适应用 blob,然而一旦 L2 的需求(具有更高的支付意愿)高于目标,用户和应用就会被迫回归类型 2 交易。在最坏的情况下,这种严重的定价过低可能会导致扰动 blob 数据市场的traproot 类的用例。从 rollup 经济学的角度来看,这正如下一节所阐明的那样是不被欢迎的。
分析2:L2成本
今天发布一个 batch 的 Arbitrum 交易会消耗约 189 万 Gas。假设平均费 29 gwei 的价格以及 1500 美金的 ETH 价格,每个 batch 的成本约为 85 美元。其中 calldata 消耗的 Gas 约为 159 万(成本为 70 美元)。
切换到 blob 的方案会在预编译合约中消耗约 50K Gas(成本为 2.2 美元)以及 125K 数据型 Gas,数据价格为 1 时将花费 2e-10 美元(基本上免费)。
如果数据型 gas 价格为 30 gwei,那么相当于每个 blob 的数据成本为 5.62 美元,这仍然比当前 batch 交易中 calldata便宜 12 倍。这似乎是 Rollups 愿意支付的价格,而且考虑到 calldata 持久化的特性,calldata 成本是 blobdata 的 12 倍也是公平的:
“该 EIP 的持久成本远低于降低 calldata 成本替代方案 [...]。这使得实施以下策略会更为简单:blob 应在 30-60 天后删除,与执行负载历史建议的一年轮换时间相比,保存时间要短得多。” (EIP-4844)
此外,当价格从 1 开始时,一旦需求达到目标,数据价格将每 12 秒成倍上涨,直到需求开始下降;考虑到rollup 需求在如此低的价格下是刚性的,rollup 成本将在几小时内上升 10 个数量级。与此相比,2022年美联储加息就是一个笑话!
冷启动问题
随着 blob 的引入,我们正在启动一个允许 blob 数据的价格发现和负载均衡的新市场。与所有新市场一样,我们也会存在冷启动问题:初始阶段我们不会得到强烈的市场反馈而费用机制将处于待机状态。这在我们的场景下更为要命,因为我们的初始目标远高于当前的潜在需求(即使所有 rollup 都在一夜间切换为 blob,我们仍然会处于供过于求)。
在目前的设置下,上述分析突出了几个问题:
(1) 冷启动阶段较长(1-1.5年);
(2) 价格为 1 将激励垃圾应用使用 blob;
(3)价格长时间为 1 会产生错误的预期:rollup 和其他应用可能会基于低价做出假设,结局要么是被赶出市场,要么是看到成本在几个小时内增加了几个数量级。
能做什么?
想法一:设定更高的最低价格
在上述分析 2 中最低价格被考虑设为 30e9 与在 Dankrad 在 EIP PR-5862 中建议的 10e9 最低价格处于同一数量级。设置该最低价格将会引导正确的预期,抑制粉尘攻击以及在当前条件下是个公允的价格。它不会使冷启动更短,但会使冷启动问题更少,并且随着市场回暖可以简单地更改。
该 PR 随后被关闭,理由是如果 ETH 价值上涨 1000 倍,那么最低价格将会过于昂贵 & 我们不应该做出未来需要更新的设计决策。我认为这不足以成为反驳提议的充分理由。我们应该权衡在冷启动阶段设置更高的 MIN_DATA_GASPRICE
带来的好处和将来必须更新此参数的成本。
以太坊不是一成不变的,许多设计决策将在未来几个月/几年内被更新:小到不同操作码的 Gas 成本,大到 ePBS 等事情。考虑到当前计划内的更新, MIN_DATA_GASPRICE 的改动似乎相当小。
想法 2:为数据型 Gas 设置较低的区块目标
另一个简单的想法是将每个区块的 TARGET_DATA_GAS_PER_BLOCK降低为 1 个 blob,仍比当前负载高约 5 倍。该方案不会解决冷启动阶段的粉尘问题和错误预期问题,但会将冷启动阶段缩短一半。
这是个更为谨慎的选择,以后可以/将会放松。
想法3:什么都不做
如果不采取任何措施,上面强调的所有冷启动问题就会继续存在。放任不管,低价使用 blob 的垃圾业务可能会实现自我校正并缩短冷启动阶段。然而,这种情况是否/何时会发生存在不确定性,并且导致 L2 业务需要的数据型 Gas 价格波动更大。
开放式问题
我们是否修改 DATA_GASPRICE_UPDATE_FRACTIO
为对应类似于 EIP-1559 增长上限为 12.5 %的值?这应该是一个向前兼容并争议较小的改动。它不会解决上述的任何问题,但如果该值减少,数据型 Gas 的价格会更为稳定。
Related links
EIP-4844 Fee Market Analysis
https://ethresear.ch/t/eip-4844-fee-market-analysis/15078
EIP-4844: Shard Blob Transactions
https://eips.ethereum.org/EIPS/eip-4844
Rollup Economics data dashboard
https://dune.com/niftytable/rollup-economics
Transaction Fee Mechanism Design for the Ethereum Blockchain: An Economic Analysis of EIP-1559