Alert Source Discuss
⚠️ Review Standards Track: Core

EIP-7762: 增加 MIN_BASE_FEE_PER_BLOB_GAS

调整 MIN_BASE_FEE_PER_BLOB_GAS 以加速 blob 空间的价格发现

Authors Max Resnick (@MaxResnick), Davide Crapis (@dcrapis), Ansgar Dietrichs (@adietrichs)
Created 2024-08-31
Requires EIP-4844

摘要

此 EIP 提议增加 MIN_BASE_FEE_PER_BLOB_GAS 以加速 blob 空间的价格发现。它还将剩余 blob gas 重置为 0,以避免 blob 基础费的飙升。

动机

在确定 4844 的范围时,当时的考虑是 blob 只会在 blob 推出后相对较快地进入一次价格发现;然而,情况并非如此。事实上,blob 已经多次进入价格发现,并且随着我们接近容量饱和,价格发现事件的频率可能会在短期内增加。此外,路线图要求在随后的硬分叉中进一步增加 blob 容量,这可能会导致未来围绕这些变化发生价格发现事件。

增加 MIN_BASE_FEE_PER_BLOB_GAS 将加速 blob 空间的价格发现。

规范

MIN_BASE_FEE_PER_BLOB_GAS 增加

此 EIP 引入的主要规范更改是将 MIN_BASE_FEE_PER_BLOB_GAS 设置为 2**25:

+ MIN_BASE_FEE_PER_BLOB_GAS  =  2**25
- MIN_BASE_FEE_PER_BLOB_GAS = 1

excess_blob_gas 重置

为了避免 blob 基础费的飙升,calc_excess_blob_gas 被修改为在分叉时将 excess_blob_gas 重置为 0。为了检测分叉高度,需要将区块时间戳传递到 calc_excess_blob_gas 中。

def calc_excess_blob_gas(parent: Header, block_timestamp: int) -> int:
    # 在分叉时,将 excess_blob_gas 设置为 0
    if parent.timestamp < FORK_TIMESTAMP and block_timestamp >= FORK_TIMESTAMP:
        return 0
    
    # 否则,正常计算
    ...

需要更新 validate_block 以将区块时间戳传递到 calc_excess_blob_gas 中:

def validate_block(block: Block) -> None:
    ...

    # 添加时间戳参数
    assert block.header.excess_blob_gas == calc_excess_blob_gas(block.parent.header, block.header.timestamp)

    ...

理由

当前的 MIN_BASE_FEE_PER_BLOB_GAS 是 1 wei。这比 blob 进入价格发现时 blob 的现行价格低很多个数量级。每当对 blob 的需求超过供应时,blob 就会进入价格发现,但是要遍历 1 wei 和需求弹性开始下降的点之间的 8 个数量级需要很长时间。

当区块使用所有可用的 blob 空间时,blob 基础费用最多每 $\log_{1.125}(10) = 5.885$ 个区块翻一番。当 blob 进入价格发现时,它们必须攀升多个 2 的因子才能达到现行价格。

为了适当地设置参数,一种方法是查看当基础费用较低时简单转账的成本。按照今天的价格(2,445.77$ ETH/USDC),当基础费用为 1 GWEI 时,简单转账的成本约为 5 美分。我们可以尝试将 blob 的最低价格与此挂钩。今天,要达到这个价格,需要 63070646 的剩余 blob gas。当您计算从 0 剩余 blob gas 开始需要多长时间才能达到这个值时,您会得到:

63070646/(3 * 2**17) = 160.396947225

与相应准备金价格最接近的 2 的幂是 MIN_BASE_FEE_PER_BLOB_GAS = 2**27。出于谨慎考虑,我们将采用 MIN_BASE_FEE_PER_BLOB_GAS = 2**25,以确保即使 ETH 的价格大幅上涨,准备金价格也不会设置得太高。按照今天的价格(2,445.77$ ETH/USDC),此值对应于约 1 美分的最低 blob 价格。此外,将 MIN_BASE_FEE_PER_BLOB_GAS 降低到 2**25 以下会减慢价格发现,而不会显着降低网络未饱和时 blob 的价格。

您将在下面找到 @dataalways 提供的图,该图显示了对于不同的 MIN_BASE_FEE_PER_BLOB_GAS 值,类型 3 交易费用中以 blob 基础费用支付的比例。请注意,即使在提议的更改之后,对于 l1 gas 的历史值,blob 的价格仍将由 L1 gas 的价格主导。

Base Fee 1

Base Fee 2^25


向后兼容性

此 EIP 不向后兼容,需要所有客户端在特定区块号上进行协调升级。

安全考虑

将 blob 用作数据可用性层的 Rollup 需要更新其发布策略。

版权

通过 CC0 放弃版权和相关权利。

Citation

Please cite this document as:

Max Resnick (@MaxResnick), Davide Crapis (@dcrapis), Ansgar Dietrichs (@adietrichs), "EIP-7762: 增加 MIN_BASE_FEE_PER_BLOB_GAS [DRAFT]," Ethereum Improvement Proposals, no. 7762, August 2024. [Online serial]. Available: https://eips.ethereum.org/EIPS/eip-7762.