该 EIP (EIP-7918) 旨在改进以太坊的 blob 交易定价机制。当前机制在执行 gas 成本高于 blob 数据成本时会失效,导致 blob 基础费用降至最低值。此 EIP 建议调整 calc_excess_blob_gas()
函数,确保 blob 数据的价格始终高于简单交易的价格,从而维持有效的价格信号,缓解资源消耗的波动,并为未来的扩展提供灵活性。
当前拍卖设计的相关背景(Data Always, Wahrstätter, Crapis).
此 EIP 规定目标数量 blob 的价格 TARGET_BLOB_GAS_PER_BLOCK * base_fee_per_blob_gas
必须高于一个简单的携带 blob 交易的价格 TX_BASE_COST * base_fee_per_gas
。这确保了 blob 费用拍卖可以正常运作,因为均衡总是相对于传递价格信号的费用形成的。提议的 if
语句来检查 calc_excess_blob_gas()
中的费用平价,代表了一种中立、简单且面向未来的解决方案,可以解决当前 blob 费用拍卖的特殊性。
以太坊部署了一种动态定价拍卖来设置 blob 的基础费用,如果消耗的气体少于 TARGET_BLOB_GAS_PER_BLOCK
则降低费用,如果消耗的气体多于 TARGET_BLOB_GAS_PER_BLOCK
则提高费用。当 blob 基础费用代表价格信号时,这种拍卖可以运行良好,从而允许该机制控制消费者面临的实际价格。但是,当 blob 交易中的执行Gas成本占主导地位时,价格信号就会丢失。blob 基础费用不再代表消费者面临的实际成本,并且协议无法调整 blob 基础费用以调节所消耗 blob 的均衡数量。在这种情况下,当前的机制将继续降低 blob 基础费用,直到最终稳定在 1 wei。每当需求回升时,就需要持续一系列接近满的区块才能恢复平衡,该机制会间歇性地诉诸首次价格拍卖,blob 消费者认为这是一种较差的用户体验。资源消耗由此产生的峰值对扩展 blobspace 来说不是最佳的。
图 1 显示了执行成本如何使需求曲线缺乏弹性,因此需求或执行基础费用的微小变化(箭头)可能会导致均衡 blob 基础费用的剧烈变化。为了缓解这种情况,该提案规定均衡(正方形)必须在 blob 数据成本和执行成本之间至少在费用平价下形成,沿左上象限的边缘某处,以供给曲线(蓝色)和费用平价线(虚线)为界。这确保了均衡总是相对于传递价格信号的费用形成的,从而缓解了峰值,同时保持中立和面向未来。为此,一个简单的 if
语句被添加到过剩 gas 更新函数中。
图 1. 不同执行基础费用(黑线到红线)下对 blobspace 的需求。当执行成本占主导地位时,需求曲线变得缺乏弹性并且与供给曲线平行,即使需求曲线发生微小变化(箭头),也会导致均衡费用发生巨大变化。该提案规定均衡(正方形)形成在左上象限的边缘,在供给和需求之间或费用平价和需求之间的交点处。
EIP-4844 中的函数 calc_excess_blob_gas()
被更改为添加 parent.blob_gas_used // 3
,而不是在更新 excess_blob_gas
时减去 TARGET_BLOB_GAS_PER_BLOCK
,如果 TARGET_BLOB_GAS_PER_BLOCK
的价格低于 TX_BASE_COST
的价格。
def calc_excess_blob_gas(parent: Header) -> int:
if parent.excess_blob_gas + parent.blob_gas_used < TARGET_BLOB_GAS_PER_BLOCK:
return 0
if TX_BASE_COST * parent.base_fee_per_gas > TARGET_BLOB_GAS_PER_BLOCK * get_base_fee_per_blob_gas(parent):
return parent.excess_blob_gas + parent.blob_gas_used // 3
else:
return parent.excess_blob_gas + parent.blob_gas_used - TARGET_BLOB_GAS_PER_BLOCK
该提案缓解了 blob 基础费用拍卖的特殊性。从根本上讲,问题在于,随着 blob 数据成本相对于携带 blob 交易的成本降低,需求曲线变得缺乏费用弹性。当执行成本占主导地位时,blob 消费者并不关心 blob 费用的演变方式——最终决定均衡形成的是执行成本。鉴于该协议规定了长期完全无弹性的供给曲线(图 1 中的垂直蓝线),只要执行成本对于在 TARGET_BLOB_GAS_PER_BLOCK
下形成均衡而言太高,blob 基础费用就会简单地降至 1 wei 的边界。因此,在执行费用占主导地位的情况下,需求曲线是 blob 费用非弹性的,并且只要 blob 费用占主导地位,需求曲线就是 执行费用非弹性的。图 1 将 blob 需求量 Q 映射到 blob 基础费用 b 和执行成本 c:
Q( b + c)
执行成本 c 以 “每个 blob 气体” 表示,以匹配 b,它是每个 blob 气体收取的费用。因此,c 的计算公式为:
c = TX_BASE_COST * base_fee_per_gas / (GAS_PER_BLOB * N)
在此,N
是消费者分摊其执行成本的 blob 数量(在本提案中设置为目标数量)。拍卖调整 b 以在均衡时实现理想的 Q。但是,如果 c > 0,则每个需求曲线都将具有“非弹性范围”(参见图 1),超过该范围,进一步降低 b 无法增加 Q,从而使此类费用降低变得多余:
lim b →0: Q( b + c) = Q( c).
该提案确保拍卖在达到此范围之前停止降低 b,特别是在费用平价 b = c 时。因此,均衡总是相对于传递价格信号的费用形成的,从而缓解了资源消耗的峰值。当价格信号来自执行费用时,均衡沿图 1 中的费用平价线形成,当价格信号来自 blob 费用时,均衡沿供给曲线形成。
即使在零执行成本下,需求曲线也可能在某种程度上缺乏弹性。但这仅仅是推进此提案的另一个原因。无论需求曲线的确切形状如何(当然,该形状将仍然未知并且可能随时间变化),该提案都基于有形且可衡量的东西。执行成本 必须 导致非弹性,并且可以对这种非弹性 建模。这使其成为 blob 基础费用的合理中性限制。
图 2 再次显示了图 1 中也捕获的允许区域(绿色)和限制区域(红色),但这次 x 轴上是执行基础费用。费用平价的各种设置由黑线表示。当费用平价基于携带大量 blob(例如 48 个)的交易时,其总成本将相对较高,因此 blob 基础费用将在相对较低的水平上运行。这种变化是设计固有的并且是预期的。如果 blob 消费者在其携带 blob 的交易中包含更多的 blob,则执行气体可能不再以相同的 blob 基础费用传递价格信号,并且 blob 基础费用应该能够相对较低地稳定下来。这也是为什么与 blob 数量或执行费用无关的固定阈值可能无法持续的原因。在以太坊提供多个数量级的更多 blob 的情况下,理想情况下,均衡 blob 基础费用应该具有相对较低的下限。要理解为什么在设计该机制时考虑潜在的未来 blob 扩展很重要,请考虑存储固定量数据的价格在过去 80 年中是如何下降的。
但是,随着以太坊的扩展,在平均携带 blob 的交易中提交的 blob 数量,作为 BLOBS_PER_BLOCK_TARGET
的一部分,将会减少。同样,在单个携带 blob 的交易中提交 BLOBS_PER_BLOCK_TARGET
的区块数量也会减少。可以设计该机制来解决此问题。一个自然的想法是在执行成本和目标 blob 数量的平方根之间施加费用平价。如果每个区块的目标是 49 个 blob,则费用平价设置为 7 个 blob 的成本,依此类推。这意味着 if
语句将通过将 TARGET_BLOB_GAS_PER_BLOCK
替换为 integer_squareroot(BLOBS_PER_BLOCK_TARGET * GAS_PER_BLOB**2)
来更改。请注意,如果限制携带 blob 的交易包括 BLOBS_PER_BLOCK_TARGET
,则应考虑到这一点。
图 2. 提议的对 blob 基础费用的限制,以确保理想的均衡形成。当 blob 费用是主要价格信号(绿色区域)时,均衡可以像今天一样形成。当执行费用是主要价格信号(红色区域)时,需求曲线变得过于缺乏弹性,并且强制 blob 基础费用上升到绿色区域。黑线表示 blob 数据成本和执行成本之间的费用平价。
当 if
语句得出结论认为以太坊在执行费用主导的定价体系中运行时,blob 基础费用会根据 blob_gas_used // 3
上涨,而无需减去 TARGET_BLOB_GAS_PER_BLOCK
。这是返回到 blob 费用主导的定价体系的一种直观方式,保留了相同的最大费用增加,同时不允许减少。如果执行基础费用快速上涨,则可能需要几个区块才能赶上 blob 基础费用(在此期间,TARGET_BLOB_GAS_PER_BLOCK
将永远不会被减去,并且 blob 费用会沿图 2 中箭头的方向移动)。这可以说不是一个问题,并且在这种情况下 blob 基础费用的平滑响应甚至可以被视为一种好处。
…查看 EIP 以获取更多详细信息。
- 原文链接: ethereum-magicians.org/t...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!