以太坊在更新每个区块的 blob 基础费用时使用常量BLOB_BASE_FEE_UPDATE_FRACTION
,费用的比例变化计算如下:
math.exp((blob_gas_used - TARGET_BLOBS * GAS_PER_BLOB) / BLOB_BASE_FEE_UPDATE_FRACTION)
每个更改目标 blob gas 的 EIP 中都包含一个该常数的新值。事实证明,存在一个简单的通用计算方法,与EIP-4844和EIP-7691中设置的值一致,并且适用于EIP-7892的仅限 blob 参数 (BPO) 硬分叉。这个通用的更新分数计算方法(也在此处指定)如下:
BLOB_BASE_FEE_UPDATE_FRACTION = round (MAX_BLOBS * GAS_PER_BLOB / ( 2 * math.log( 1.125 )))
从数学上讲,我们可以将理想(未四舍五入)值表示为
其中m m是每个区块的最大 blob gas 量。为了理解为什么这可以推广 EIP-4844 和 EIP-7691,我们现在将建立这些 EIP 使用的方程式,并从中推导出广义公式。
博览会
将t定义为每个区块的目标 blob gas 消耗量。根据 EIP-4844,目标值为最大值的一半: t=m/2 ,并且blob基础费用 设计为,当 blob 使用量达到最大值或最小值时,每个区块最多增加 1.125 或减少 1/1.125。当 blob gas 消耗量达到最大值时,费用比例变化的公式为
对两边取自然对数并重新排列b b ,然后代入t=m/2 t = m / 2 ,得出指定的方程:
根据 EIP-7691, BLOB_BASE_FEE_UPDATE_FRACTION
计算结果是“保持对满 blob 的响应速度和无 blob 的响应速度恒定之间的中点”。保持对“满 blob”的响应速度恒定的b b是
保持对“无斑点”的响应恒定的b b是
根据对数规则: \ln(1/x) = -\ln(x) ln ( 1 / x ) = −ln ( x ) ,变成
“中点” (b_\text{full}+b_\text{empty})/2 ( b full + b empty ) / 2简化为广义方程:
应用
广义方程可给出任意比例的令人满意的百分比变化。表1列出了几个示例。
最大:目标 | 满的 % | 空的 % | 全因子1.125^k 1.125 k | 空因子1.125^k 1.125 k |
---|---|---|---|---|
5{:}4 5 : 4 | +4.82% + 4.82 % | -17.18% − 17.18 % | k = \tfrac{2}{5} k = 2 5 | k = -\tfrac{8}{5} k = − 8 5 |
4{:}3 4 : 3 | +6.07% + 6.07 % | -16.19% − 16.19 % | k = \tfrac{1}{2} k = 1 2 | k = -\tfrac{3}{2} k = − 3 2 |
3{:}2 3 : 2 | +8.17% + 8.17 % | -14.53% − 14.53 % | k = \tfrac{2}{3} k = 2 3 | k = -\tfrac{4}{3} k = − 4 3 |
2{:}1 2 : 1 | +12.50% + 12.50 % | -11.11\% − 11.11 % | k = 1 k = 1 | k = -1 k = − 1 |
3{:}1 3 : 1 | +17.00\% + 17.00 % | -7.55\% − 7.55 % | k = \tfrac{4}{3} k = 4 3 | k = -\tfrac{2}{3} k = − 2 3 |
4{:}1 4 : 1 | +19.32% + 19.32 % | -5.72% − 5.72 % | k = \tfrac{3}{2} k = 3 2 | k = -\tfrac{1}{2} k = − 1 2 |
5{:}1 5 : 1 | +20.74% + 20.74 % | -4.60% − 4.60 % | k = \tfrac{8}{5} k = 8 5 | k = -\tfrac{2}{5} k = − 2 5 |
表 1.使用广义更新分数对各种最大:目标比率下的满块和空块的影响。
请注意,在第 4 列和第 5 列中,基本费用变化了1.125^k 1.125 k的倍数,其中k k是消耗的 blob gas g g的函数:
在 2:1 附近存在补比对称性。当目标在中点 ( m/2 m / 2 ) 上下移动相同距离时, k k的大小保持不变。具体而言, k_\text{full}(m{:}t) = -k_\text{empty}(m{:}(mt)) k full ( m : t ) = − k empty ( m : ( m − t ) )和k_\text{full}(m{:}(mt)) = -k_\text{empty}(m{:}t) k full ( m : ( m − t ) ) = − k empty ( m : t ) ,例如,这适用于补比3{:}1 3 : 1和3{:}2 3 : 2以及4{:}1 4 : 1和4{:}3 4 : 3 。
扩展至气体标准化
广义方程可以自然地扩展到EIP-7999中概述的 Gas 归一化方法。这种方法通过更直接的方式将更新分数与任何特定的资源限制解耦:在更新正在运行的excess_gas
Gas 时,它将 Gas 增量(GT) ( g - t )除以最大 Gas m m (在 EIP-7999 中称为限制),从而对其进行归一化。这样一来,所有资源都可以使用一个单一的、通用的更新分数——与m m无关——无论它们各自的限制如何。
这两种方法仅在除以m m时有所不同。在广义方程中, m m放在更新分数b b 的分子中。由于b b本身用作费用更新指数(GT)/b ( g − t ) / b的分母,因此这实际上将m m放在了整个计算的分母中。
最终,最终费用变化因素:
保持不变。然而,标准化使架构更加稳健,确保当资源限制发生变化时价格保持稳定,因为该限制已经是标准化excess_gas
更新的一部分。
结论
这篇文章的目的如下:
- 揭示为什么所提出的方程可以概括以前的 EIP。
- 展示所提出的方程对各种最大值:目标比率的影响,说明合理的百分比变化和互补比率对称性。
- 为 EIP-7999 中的进一步优化奠定基础。最后一个难题是利用方程的泛化特性,但在更早的阶段(即在更新
excess_gas
时)应用m m 。 - 在上一次 ACDE中,几位参与者直到讨论结束后(通过聊天)才意识到这些通用属性。这篇文章可以作为一个平台,供大家进行更深入的讨论,探讨如何将提议的方程式确立为未来更新分数的默认值。