关于 Blob Markets、基本费用的调整和优化

本文为机器翻译
展示原文
以下是文章的简体中文翻译:

关于Blob市场、基础费用调整和优化

特别感谢AnsgarBarnabéAlexGeorgiosRomanDankrad的意见和讨论,以及BertGajinderMax在这个话题上的努力!

总结:
所有建议的更新在理论上都是有意义的。我们是否应该在Pectra中实施它们,这取决于具体情况。

  1. 提高最低Blob费用可以加快价格发现。
  2. 自动化Blob gas更新分数可以使其具有未来可扩展性。
  3. 标准化超额gas可以防止在增加目标后分叉导致Blob基础费用下降的边缘情况,但如果我们不这样做也不会发生任何坏事。
  4. 使基础费用缩放对称可以确保机制保持不变(在0和6个Blob的极端情况下,缩放±12.5%)

我建议将所有这些变更总结在EIP-7762中,并在我们将目标/最大值从3/6改为4/6时一起发布。如果我们担心Pectra添加更多变更可能会变得太大,我建议按以下顺序实施,重要性递减:

  1. 增加Blob数量。
    a) 保守地做4/6,或者如果我们更有信心的话,做6/9。
    b) 发布EIP-7623以确保EL有效载荷大小显著减小,为更多Blob腾出空间。
  2. 发布概述的基础费用变更。

Blob费用机制概述

随着EIP-4844的推出,以太坊为其费用市场增加了一个新的维度。Blob附带自己的基础费用,为数据提供专用空间,允许应用程序和Rollup在不需要EVM执行的情况下在链上发布信息。
Blob费用结构由基础费用更新规则管理,该规则近似于以下公式:

base_fee_per_blob_gas = MIN_BASE_FEE_PER_BLOB_GAS * e**(excess_blob_gas / BLOB_BASE_FEE_UPDATE_FRACTION)

在这个等式中,excess_blob_gas代表Blob gas使用总量与目标量(TARGET_BLOB_GAS_PER_BLOCK每块)的差额。与EIP-1559费用机制类似,该公式是自我调整的:随着超额Blob gas的增加,base_fee_per_blob_gas呈指数上升,这会抑制过度使用并推动超额回到Rollup认为基础费用是"公平"价格的水平。

该过程如下进行:如果第N块消耗X个Blob gas,那么在第N+1块,excess_blob_gas增加X - TARGET_BLOB_GAS_PER_BLOCK。因此,第N+1块的base_fee_per_blob_gas会以e**((X - TARGET_BLOB_GAS_PER_BLOCK) / BLOB_BASE_FEE_UPDATE_FRACTION)的因子进行调整。

参数BLOB_BASE_FEE_UPDATE_FRACTION控制Blob基础费用的最大可能变化率。该费率设置为实现大约1.125每块的最大增加和减少,基于e**(TARGET_BLOB_GAS_PER_BLOCK / BLOB_BASE_FEE_UPDATE_FRACTION)

在初始推出时,Blob价格预计会很低,并逐步上升,直到市场找到平衡或"公平"价格(即价格发现)。EIP-4844引入的Blob费用市场遵循与EIP-1559类似的结构,具有根据需求动态调整的基础费用。

达到"价格发现"的时刻

截至2024年11月,以太坊已达到一定需求水平,Rollup将不再无论基础费用如何都发布Blob,而是发布一定数量的Blob以保持基础费用相当稳定。人们喜欢称之为"价格发现"阶段,尽管它只意味着在某个特定时间点,某个特定基础费用X被视为公平价格。在"价格发现"时,Rollup将不再无视Blob基础费用而持续发布6个Blob,因为它已不再可忽略。然而,在没有增加供给(即更多可用Blob)的情况下,对Blob的需求增加将导致Blob费用上升。对于以下内容,请原谅我使用这个简化的"价格发现"概念,尽管价格每12秒都会随每个时隙发现。

建议的调整及其优缺点

展望即将到来的Pectra分叉,对扩展Blob(从3/6到4/6或更复杂的6/9)的需求很明显,这可能需要对Blob费用市场进行调整。

在以下部分,我将概述4个对Blob费用市场的潜在变更,并讨论每个变更的相关利弊。

  1. 调整最低基础费用:最简单的调整之一是修改MIN_BASE_FEE参数,正如Max Resnick所建议的。
  2. 自动化Blob基础费用更新分数:一个简单的变更,以确保Blob基础费用更新分数随目标Blob数量的变化而缩放。
  3. 标准化超额gas:Bert Kellerman和Gajinder提出的另一个建议是"标准化"超额gas使用的计算。
  4. 对称化基础费用更新:调整基础费用公式的一个建议。

1. 增加MIN_BASE_FEE_PER_BLOB_GAS (EIP-7762)

Blob基础费用从0开始,然后缓慢上升,直到达到价格发现的点。每~6个块(6个Blob),基础费用翻倍,但从1 wei到一个更合理的价格(例如5 gwei)还有很长的路要走。在达到那个水平之前,价格可能会大幅波动,Rollup基本上获得了"过于便宜"的去中心化应用。

上述EIP提议将最低基础费用从1 wei提高到约0.034 gwei。这将缩短达到价格发现的时间,从而更快地推动Rollup向被视为"公平"的更稳定价格范围发展。

对于基础费用从1上升到5 gwei,需要...
\frac{\ln\left(\frac{\text{base_fee_target}}{\text{base_fee_start}}\right)}{\text{growth_rate}} = \frac{\ln(5 \times 10^9 / 1)}{0.117} \approx 190 \text{ blocks}ln(base_fee_targetbase_fee_start)growth_rate=ln(5×109/1)0.117190 个块,而且所有这些块都需要有6个Blob。这相当于大约38分钟。

以下是文章的简体中文翻译: 随着新的、增加的MIN_BASE_FEE_PER_BLOB_GAS,我们将把这个持续时间降低到... \frac{\ln(5 \times 10^9 / 2^{25})}{0.117} \approx \text{42 blocks},相当于8.4分钟。 有一个非常重要的警告/实施细节: 我们必须在更新MIN_BASE_FEE_PER_BLOB_GAS时重置多余的gas。 原因是,否则我们会在分叉后立即看到不可预测的、极端的blob基础费用峰值。这是因为最低基础费用充当基础费用的乘数,对它的小调整可能会极大地影响基础费用,如果在此之前累积的多余gas没有被重置。 这里有一个例子:一个看似"无关紧要"的从1 wei增加到5 wei的增加就足以使基础费用飙升,然后rollups将不得不等待一段时间,直到价格再次平静下来。

总结

优点:

  • 更快的"价格发现"。
  • 在供给 < 需求的时候,波动性更小。

缺点:

  • 需要触碰协议,而我们通常不会"微调"那些没有问题的东西。
  • 由于多余的gas被重置,我们必须再次经历价格发现的阶段,尽管从一个更高的水平开始,从而缩短了这个时间。

这可以简单地归结为"固化与优化",在我看来,没有对错,尽管我个人认为不触碰协议也有价值。

2. 自动化Blob基础费用更新比例

这个变化非常简单:目前,更新比例设置为3338477,如EIP-4844中所指定的。这个数字是通过做\frac{target\_gas}{ln(1.125)}得到的。如果我们现在用这个公式替换硬编码的数字,我们就可以确保维持所需的\pm 12.5%变化。

3. 多余gas的标准化

这是一个旨在避免在增加blob目标后分叉出现陡峭基础费用下降的提议。

为了避免在增加blob目标的分叉后立即出现基础费用的突然下降,这个提议建议调整我们计算多余gas的方式。通常,基础费用应该平稳变化 - 每个时隙最多12.5%。通过标准化多余gas,我们可以确保基础费用保持稳定,不会超出预期的12.5%限制而急剧下降,从而保持费用调整的可预测性和渐进性。

简单地说,我们不是累积多余gas,而是累积标准化的多余gas。这样目标blob数量就不重要了。

通过在多余gas计算中引入标准化因子,我们可以调整累积的多余gas,使其与新目标保持成比例。这确保了基础费用平稳调整,即使目标发生变化,费用动态也能保持一致。

标准化涉及使用恒定因子缩放多余gas,使其无论目标值如何,都能以一致的方式反映偏离目标的程度。这种方法将基础费用调整保持在预期的限制范围内,防止突然下降或飙升,从而扰乱网络的费用市场。

总结

优点

  • 避免了目标增加后分叉导致的基础费用下降。
    • 为blob用户提供更多可预测性

缺点

  • 另一个潜在的"微优化"。

使blob基础费用更新对称于目标

通过将目标改为target=\frac{max}{2}不再成立,我们改变了目标与最小/最大值之间的距离。例如,将blob目标设为4,最大值设为6,则向上有2个blob的空间,向下有4个blob的空间。

现在,负面方向的空间比正面方向的空间大,基础费用可以下降得更快,而不是上升。

一个简单的修复方法如下:
我们首先确定gas使用量与目标之间的差额(与我们现在做的一样)。然后我们应用一个缩放因子,该因子只是target/(max-target)应用于"空间"较少的一侧(例如,在4/6目标/最大值时应用于"向上"一侧)。

calc_excess_blob_gas函数将如下所示:

定义 计算超额blob gas(父区块头: Header) -> int:缩放因子 = 目标blob gas每块 / (最大blob gas每块 - 目标blob gas每块)blob gas差值 = 父区块头.blob gas使用 - 目标blob gas每块如果 blob gas差值 > 0:缩放差值 = blob gas差值 * 缩放因子否则:缩放差值 = blob gas差值超额blob gas = 最大(0, 父区块头.超额blob gas + 缩放差值)返回 超额blob gas

当然,这只在最大-目标<目标的情况下有效maxtarget<target的情况下,我们甚至可以更一般化,但我想这可能没什么用。

为了更好地理解这个对称化过程的影响,让我们来看一个简单的例子:

  1. 假设我们有三个槽位:
    • 前两个槽位各包含6个blob。
    • 最后一个槽位包含0个blob。
  2. 这导致总共有12个blob跨越这3个槽位。
  3. 目标设置为每块4个blob,最大为6个blob。

对称与非对称基础费用调整:

  • 对称基础费用:

    • 基础费用大约增加12.5%两次(对应两个6-blob槽位),然后减少12.5%一次(对应0-blob槽位)。
    • 经过这些调整后,基础费用最终高于其初始值。
  • 非对称基础费用:

    • 在6-6-0 blob序列之后,基础费用保持不变。

这个例子突出了对称调整的好处:

  • 6-6-0 blob序列推动我们走向极端(最大利用率followed by none),这是不可取的。
  • 理想情况下,负载应该在三个槽位之间更均匀分布(例如,每个块4个blob)。
  • 对称基础费用通过"惩罚"不均匀使用(6个blob而不是4个)来抑制极端行为,从而促进更平衡的负载。
  • 当然,人们可以争辩说blob用户可能不关心推高基础费用,因为他们可能只需要在每个时期发布几次blob,因此不关心他们6-blob发布之后的槽位。不过,这种论点是短视的。

总结

优点

  • 确保"价格发现"的速度与现在一样快。
  • 确保"极端"(0和6个blob)导致相同百分比的增加/减少。

缺点

  • 又一个"微优化",即使不这样做一切也可能很好。
  • 引入一些路径依赖性。例如,在gas\_used= target \pm 1\ blobsgas_used=target±1 blobs之间跳跃会导致基础费用随时间稳步上升。通过避免发布超过目标的blob,可以抵消这种行为,甚至可能激励更平衡的发布策略。

来源
免责声明:以上内容仅为作者观点,不代表Followin的任何立场,不构成与Followin相关的任何投资建议。
喜欢
1
收藏
评论