Alert Source Discuss
🛑 Withdrawn Standards Track: Core

EIP-7788: 动态目标 blob 数量

目标 blob 数量动态变化,旨在实现恒定的 blob 成本

Authors Marc Harvey-Hill (@Marchhill)
Created 2024-10-15
Discussion Link https://ethereum-magicians.org/t/eip-7788-dynamic-target-blob-count/21399
Requires EIP-7742

摘要

本 EIP 提议使目标 blob 数量动态调整到安全的最大目标值。此调整将以 ETH 计价的 blob 价格为目标,旨在实现 L2 交易的一致成本。

动机

以太坊目前使用 50% 容量作为 blob 计数的target,EIP-1559平滑了短期峰值,并将平均吞吐量推向目标。动态目标与 EIP-1559 正交,在更长的时间尺度上调整目标本身,以达到期望的 blob 成本。

通过静态目标,目标可能高于实际需求,导致协议对 blob 空间收费不足。这减少了燃烧的费用量,对 ETH 的价格和总网络安全性产生负面影响。

例如,考虑如果由于 DAS 的实施而导致最大 blob 数量大幅增加,但目标保持在 50% 会发生什么。需求不太可能立即跃升至接近目标的任何水平,因此几个月或几年内,协议实际上不会对 L2 交易收取任何费用。使用动态目标,目标 blob 数量将下降,直到 L2 交易的 blob 空间成本接近某个可承受的恒定值。通过这种方式,协议仍然会燃烧一些费用,但不会阻止新的 L2 使用以太坊 blob 空间,因为它们知道目标会响应需求的增加而增加,并且 blob 费用将保持合理的一致性。

虽然最大 blob 数量和最大目标是基于资源利用率限制的硬约束,但设置目标本身更为主观。动态目标可以优化恒定且经济实惠的 L2 交易成本,而无需核心开发人员定期干预以根据需求变化进行调整。

规范

参数

Parameter Value
FORK_TIMESTAMP TBD
TARGET_BLOB_COUNT_CHANGE_RATE 1
MIN_TARGET_BLOB_COUNT 1
MAX_TARGET_BLOB_COUNT 3
BLOB_COST_CHANGE_MARGIN 2^48
TARGET_BLOB_COST 2^49

动态目标

目标 blob 数量根据前一个 epoch 的平均 blob 成本在每个 epoch 变化。如果平均成本超过期望的量超过某个边际,则目标增加;同样,如果低于期望的量某个边际,则目标将减少。目标可以增加到 MAX_TARGET_BLOB_COUNT,这被认为是网络的安全平均吞吐量,并且可以减少到最少 MIN_TARGET_BLOB_COUNT

计算目标:

blob_cost_diff = mean_blob_cost - TARGET_BLOB_COST
target_change_direction = -1 if blob_cost_diff < -BLOB_COST_CHANGE_MARGIN else (1 if blob_cost_diff > BLOB_COST_CHANGE_MARGIN else 0)
next_epoch_blob_count = max(min(MAX_TARGET_BLOB_COUNT, previous_epoch_blob_count + (target_change_direction * TARGET_BLOB_COUNT_CHANGE_RATE)), MIN_TARGET_BLOB_COUNT)

Engine API 变更

扩展 Engine API 以在 CL 从 EL 请求时,提供当前 epoch 的 mean_blob_cost。CL 在 epoch 结束时请求此数据以设置下一个 epoch 的目标(取决于 EIP-7742)。

原理

恒定的 blob 成本目标

恒定的 blob 成本目标可以保持 L2 交易成本对最终用户来说是可承受的。ETH 价格的波动会影响可负担性,但与由于活动峰值导致的 blob gas 成本的正常波动相比,不太可能具有重要意义。将来,如果 ETH 价格的数量级发生变化,则可以调整成本。

另一种方法是以法币跟踪目标 blob 成本。但是,选择特定的法币不具有可信的中立性,并且将汇率预言机引入协议可能成为攻击媒介。

另一种选择是让验证者投票决定目标 blob 成本,但他们可能存在利益冲突(例如,如果他们运营 rollup),因此这再次不具有可信的中立性。

目标区块 gas

相同的逻辑可以应用于目标区块 gas,但通常对区块空间的需求很高,因此可以说 gas 成本永远不会太低。目标应设置为网络可以安全处理的最大平均吞吐量,动态目标不是必需的。

参数选择

选择 TARGET_BLOB_COST,以便系统以经济实惠的 L2 交易为目标。假设简单传输的理论压缩大小为 23 字节,则 L2 交易的 blob 空间成本为:

(23 / 125000) * TARGET_BLOB_COST ≈ 104 gWei

按照今天的价格,1 美元将覆盖 L2 上大约 3700 次简单传输的 blob 空间。blob 成本目标应通过广泛的社区参与来选择。请注意,这是 L2 交易的 blob 空间成本;由于 rollup 执行成本,总成本将会更高。

选择 TARGET_BLOB_COUNT_CHANGE_RATE 作为系统对需求变化做出反应以及平均吞吐量没有大幅跳跃之间的折衷方案。 设置 BLOB_COST_CHANGE_MARGIN,以便当 blob 成本在 TARGET_BLOB_COST 的 ±50% 范围内时,目标 blob 数量将保持静态。

MAX_TARGET_BLOB_COUNT 设置为 3 以匹配当前的静态目标。当认为增加平均 blob 吞吐量是安全的时,将来应增加此值。

向后兼容性

不适用

测试用例

不适用

参考实现

不适用

安全考虑事项

需要讨论。

版权

CC0 下放弃版权及相关权利。

Citation

Please cite this document as:

Marc Harvey-Hill (@Marchhill), "EIP-7788: 动态目标 blob 数量 [DRAFT]," Ethereum Improvement Proposals, no. 7788, October 2024. [Online serial]. Available: https://eips.ethereum.org/EIPS/eip-7788.