EIP-7915 自适应均值回归 Blob 定价:基于长期平均费用的平滑均衡恢复机制
2026/9/15 23:40:30 网站建设 项目流程

EIP-7915 自适应均值回归 Blob 定价:基于长期平均费用的平滑均衡恢复机制

【免费下载链接】EIPsThe Ethereum Improvement Proposal repository项目地址: https://gitcode.com/GitHub_Trending/ei/EIPs

导读

EIP-7915(Adaptive mean reversion blob pricing)是 Ethereum Improvement Proposal 仓库(EIPS 目录)中一项针对 EIP-4844 blob 费用机制的核心改进提案。它重写了calc_excess_blob_gas()中的超额 blob gas 更新逻辑,引入以长期平均基础费率为锚的「均值回归权重」,使费用在低于长期平均值时上涨更快、下跌更慢,从而平滑均衡恢复过程。读完本文,你将掌握该提案的完整参数体系、数学原理、Python 伪代码实现、Header 扩展方式与执行层校验规则,并能对照 EIP-4844、EIP-7691、EIP-7762 等关联提案理解其在 blob 定价演进脉络中的位置。

背景:为什么 blob 费用需要均值回归

弹性缺失导致的费用尖峰

自 blobs 引入以来,blobspace 的需求在费用上缺乏弹性(fee-inelastic),而供给曲线却是完全无弹性的——每个区块的供给被固定为TARGET_BLOB_GAS_PER_BLOCK。当一条无弹性需求曲线与无弹性供给曲线形成均衡时,聚合需求的微小偏移就会导致均衡费用的大幅移动。这使得 blob base fee 可能对需求的微小变化过度波动。

更具体地说,费用区间的下端(1 wei)在当前环境下经济意义几乎为零,但在连续若干个区块消耗的 blobs 低于目标值后即可触及。当需求回升时,现有费用机制需要持续一段时间的近满块才能重新建立均衡,这会加剧资源消耗的尖峰化(spikiness),阻碍吞吐量的高效扩展;同时用户可能间歇性地被迫参与首价拍卖(first-price auction)争夺包含资格,恶化使用体验。

相对锚定的必要性

合适的费用区间未来会因 ETH 代币价格、流通供应量以及协议扩展吞吐量的能力而意外变化。为了保持中立且面向未来,运营区间应当相对于长期平均费用建立,平滑地影响 blobs 的均衡消费量。这正是 EIP-7915 的核心动机:引入一个把长期平均费用纳入考量的新费用更新机制,使协议能快速收敛到理想的均衡,同时保持中立与前瞻性。

下图对比了提案机制(绿色)、当前机制(黑色)以及 EIP-7762 的阈值机制(红色)对不同 blob 数量的响应:

图 1.提案机制(绿色)、当前机制(黑色)与 EIP-7762 阈值机制(红色)对不同 blob 数量的响应。提案机制在需求变化时平滑收敛到适当均衡,将费用相对于长期平均基础费率 $\bar{f}_g$(此例为 4 gwei)建立;从下方收敛到 $\bar{f}_g$ 比从上方发散更快。

提案参数一览

EIP-7915 定义了三个新常量:

| 常量 | 值 | 说明 | | - | - | - | |EMA_DECAY|2**18| EMA 衰减率的倒数(每 slot) | |MEAN_REVERSION_DEADBAND|64| 均值回归效应加速时的费用比率 | |MEAN_REVERSION_FULLBAND|10**6| 均值回归效应停止增大的费用比率 |

其中MEAN_REVERSION_DEADBAND = 64对应均值回归权重公式中的 $D$ 常量;MEAN_REVERSION_FULLBAND = 10**6用于截断极端费用比率,防止费用调度表爆炸并避免高比率下的溢出(这也是calc_excess_blob_gas()内部可以依赖uint64类型的原因之一)。

核心规范:更新calc_excess_blob_gas()

基线机制回顾(EIP-4844)

在 EIP-4844 的原始设计中,超额 blob gas 按简单的加减法更新:

def calc_excess_blob_gas(parent: Header) -> int: if parent.excess_blob_gas + parent.blob_gas_used < TARGET_BLOB_GAS_PER_BLOCK: return 0 else: return parent.excess_blob_gas + parent.blob_gas_used - TARGET_BLOB_GAS_PER_BLOCK

随后get_base_fee_per_blob_gas()通过fake_exponential()excess_blob_gas映射为基础费率(MIN_BASE_FEE_PER_BLOB_GAS = 1BLOB_BASE_FEE_UPDATE_FRACTION = 3338477,目标为每块TARGET_BLOB_GAS_PER_BLOCK = 393216),其设计意图是近似base_fee_per_blob_gas = MIN_BASE_FEE_PER_BLOB_GAS * e**(excess_blob_gas / BLOB_BASE_FEE_UPDATE_FRACTION),单块最大变化率约为 12.5%。相关实现细节可参阅 eip-4844.md。

EIP-7915 的新逻辑

EIP-7915 更新了calc_excess_blob_gas():基于长期基础费率与当前基础费率的比值计算均值回归权重w,当当前基础费率低于长期平均费率时,平滑地增大 gas 用量、减小 gas 目标,从而影响超额 gas 的更新。变量Upw进行上采样以保留精度。注意该函数使用了integer_squareroot(),它目前实现于共识层(consensus layer),需要同步在**执行层(execution layer)**实现;配合MEAN_REVERSION_FULLBAND的阈值截断与Up的策略性部署,机制内部可以依赖uint64类型:

def calc_excess_blob_gas(parent: Header) -> int: if parent.excess_blob_gas + parent.blob_gas_used < TARGET_BLOB_GAS_PER_BLOCK: return 0 # Compute upsampled mean reversion weight w based on the EMA fee ratio Up = 2**16 if get_base_fee_per_blob_gas(parent) > parent.base_fee_per_blob_gas_ema: w = Up else: if parent.base_fee_per_blob_gas_ema // get_base_fee_per_blob_gas(parent) > MEAN_REVERSION_FULLBAND: ratio = Up * MEAN_REVERSION_FULLBAND else: ratio = Up * parent.base_fee_per_blob_gas_ema // get_base_fee_per_blob_gas(parent) w = (ratio + Up * MEAN_REVERSION_DEADBAND) // (MEAN_REVERSION_DEADBAND + 1) for _ in range(3): w = integer_squareroot(w * Up) # Return excess blob gas based on adjusted gas usage and target under mean reversion return parent.excess_blob_gas + parent.blob_gas_used * w // Up - TARGET_BLOB_GAS_PER_BLOCK * Up // w

指数移动平均(EMA)更新

长期平均基础费率存储在 Header 字段base_fee_per_blob_gas_ema中,每 slot 依据上一区块的base_fee_per_blob_gasbase_fee_per_blob_gas_ema更新:

def calc_base_fee_per_blob_gas_ema(parent: Header) -> int: return parent.base_fee_per_blob_gas_ema + get_base_fee_per_blob_gas(parent) // EMA_DECAY - parent.base_fee_per_blob_gas_ema // EMA_DECAY

注意此处计算的是线性域中的指数移动平均,其数学形式为:

$$ \bar{f}{g(n)} = \bar{f}{g(n-1)} + \frac{f_{g(n-1)} - \bar{f}_{g(n-1)}}{m}, $$

其中 $m = \text{EMA_DECAY} = 2^{18}$,对应约一个月的半衰期(half-life)。选择线性域是为了保持可加性与可解释性:若在 log 域(即对 excess gas 做类几何平均)进行平均,低费用处的细微波动会被赋予过大权重,容易形成难以解释与推演的反馈回路——尤其是 1 wei 阈值始终固定、长期可能因供需变化逐渐进入视野的情况下。

Header 扩展

当前 Header 编码扩展一个uint字段base_fee_per_blob_gas_ema。对分叉后的首个区块,parent.base_fee_per_blob_gas_ema被求值为4*10**9(4 gwei)。

执行层校验

执行层的区块有效性条件扩展为断言base_fee_per_blob_gas_ema被正确更新:

... # Check that the base fee per blob gas EMA was updated correctly assert block.header.base_fee_per_blob_gas_ema == calc_base_fee_per_blob_gas_ema(block.parent.header)

设计原理:供需分析与费用更新调度

供给与需求

EIP-7915 的 Rationale 从供需框架出发:当需求与供给之间形成均衡时,由于需求缺乏弹性,聚合需求的小幅偏移即可造成均衡费用的大幅移动。本提案通过平滑增加供给曲线的弹性(随着费用偏离长期平均值)来限制均衡费用远低于平均值;再结合向平均值方向更快的费用调整,临时需求偏移时可迅速建立理想均衡。

更重要的是,Ethereum 可以应对暂时性的需求下行——通过平滑地同时降低价格与均衡吞吐量(即降低价格保持固定时所消费的 blobs 数量),这通过让费用更新对低 gas 用量变得不那么敏感、隐含地控制输出来实现;但协议无法应对持续性的需求下行,因为那可能意味着环境已变、价格已经过高。当前协议其实已经通过 1 wei 阈值在需求下行时降低吞吐量——任何阻止价格进一步下跌的固定阈值都会让低于阈值的 gas 用量不再影响未来费用,从而降低吞吐量;然而从固定响应调度到完全无响应的瞬间切换,未必符合协议 blobspace 生产的扩张路径(参考图 1)。

费用更新调度的设计原则

  1. 对供需变化保持中立且面向未来;
  2. 当基础费率高于或仅略低于长期平均值时,沿用正常费用更新调度;
  3. 随着比值 $\bar{f}_g/f_g$ 增大,平滑调整费用更新——对低 gas 用量响应变弱、对高 gas 用量响应变强;
  4. 当价格相对较低($f_g < \bar{f}_g$)时,需求上升则快速提价、需求下降则缓慢降价——即加入均值回归效应;
  5. 费用更新必须在所有适用的 $\bar{f}_g/f_g$ 比率下随 blob 数量平滑变化,避免用户或验证者策略性地在每个区块包含特定数量的 blobs;
  6. 即使 $\bar{f}_g/f_g$ 比率大幅发散,也要避免极端响应。

数学形式:均值回归权重

先计算均值回归权重:

$$ w = \sqrt[8]{\frac{\bar{f}_g/f_g + D}{D+1}}, $$

其中 $D = \text{MEAN_REVERSION_DEADBAND} = 64$。八次方根可以通过对共识层已有的integer_squareroot()连续应用三次求得(即规范代码中的三次循环)。超额 gas 字段 $e_g$ 在 slot $n$ 的更新从

$$ e_{g(n)} = e_{g(n-1)} + c_g - t_g $$

变为

$$ e_{g(n)} = e_{g(n-1)} + c_gw - t_g/w. $$

下图展示了应用 Pectra blob 参数时的费用更新调度:

图 2.在 Pectra blob 常量下,跨 $f_g/\bar{f}_g$ 比率的提案 blob 费用更新调度。比率接近或高于 1 时应用基线调度;费用低于平均值时,保持费用固定所需的 blobs 数量减少。

全带宽截断与可选常数项

费用调度在整个范围MEAN_REVERSION_FULLBAND = 10**6上计算:若图 2 中的比率低于 $10^{-6}$,则应用 $10^{-6}$ 处的调度。这可以防止费用调度表爆炸、允许在完全没有 blobs 消费时费用逐步下降,并防止高比率下的溢出(从而允许calc_excess_blob_gas()使用更小的uint64)。可选地,操作区间还可以通过向费用更新调度中加入常数 $c$(设为约 1–2 个 blob 的 gas 量)来界定:

$$ e_{g(n)} = e_{g(n-1)} + c_gw - t_g/w + c(w-1). $$

不对称性与吞吐量考量

机制仅在 $f_g < \bar{f}_g$ 时应用均值回归。虽然双向均值回归可能带来好处,但 $f_g < \bar{f}_g$ 的情形远更重要;且当 $f_g \geq \bar{f}_g$ 时,EIP-7691 的更新调度在 0 blobs 时已经比最大值时下降得更多。

最初曾考虑在比率 1 附近采用对称更新调度(因为 Pectra 的目标值并不以MAX_BLOB_GAS_PER_BLOCK/2为中心),但一个构造良好的对称调度很可能无法达到TARGET_BLOB_GAS_PER_BLOCK吞吐量——尽管它会响应目标 gas 消费而保持费用固定。原因在于:高于目标 $x$ 个 blobs 与低于目标 $x$ 个 blobs 的费用更新并不互逆,均衡因此会落在略低于TARGET_BLOB_GAS_PER_BLOCK的吞吐量、略高于非对称调度(相同目标)下的价格。提案的调度改为随费用比率下降中间过渡到对称调度(见图 2)。

长期平均基础费率的计算

如前所述,$\bar{f}_g$ 作为 Header 变量base_fee_per_blob_gas_ema以指数移动平均方式维护,每 slot 更新。EMA_DECAY = 2**18给出约一个月的半衰期。若EMA_DECAY设置得略高,机制可以保证在未来数年内持续影响 blob 定价:例如以 $\bar{f}_g = 4\times10^9$ 初始化(提案设定)、半衰期设为四个月(EMA_DECAY = 2**20),则激活一年后仍保证 $\bar{f}_g > 5\times10^8$。如果该机制与同时提升吞吐量的硬分叉一同部署,考虑到平滑地板运行在比 $\bar{f}_g$ 低数个数量级的位置,这可以视为一种红利。

下图展示了以 $4\times10^9$ 为起点,$\bar{f}_g$ 在 2024 年 11 月至 2025 年 3 月间的历史回溯演化:

图 3.以提案设置对数月历史 blob 基础费率数据应用指数移动平均。灰色柱为每日平均 $f_g$,黑色线为平滑后的 $\bar{f}_g$。

需要说明的是,EMA 费用理论上可以允许每个更新步骤至少减 1 从而降至EMA_DECAY以下,但这不属于规范的功能范畴。

备选方案:log 域 excess blob gas EMA

规范中提及一种可替代的结构方式:协议存储并依赖 log 域表示excess_blob_gas_ema。EMA 计算仍在线性域进行,但在计算过程中通过get_base_fee_per_blob_gas()及其逆函数(依赖新的fake_log()函数)先进入线性域、再回到 log 域:

$$ \bar{e}_{g(n)} = \log\Biggl[\exp\bigl(\bar{e}{g(n-1)}\bigr) + \frac{\exp\bigl(e{g(n-1)}\bigr) - \exp\bigl(\bar{e}_{g(n-1)}\bigr)}{m}\Biggr]. $$

calc_excess_blob_gas()中的权重计算原则上可以在 log 域进行:

$$ w = \frac{\bar{e}_g-e_g + D}{D+1}, $$

其中 $D$ 会根据适用硬分叉的相关 excess gas 缩放进行调整。两种方式的费用更新调度会非常相似,因此选择主要取决于架构偏好。

安全考量

当当前费用比平均值低数个数量级时,满块会使 blob 基础费率翻倍,因此单区块的包含延迟会导致用户支付两倍费用,可能影响包含与费用市场策略。不过,鉴于这种激进的费用调度仅在远低于平均值的费用区间运行,实际影响应当有限。

关联提案与演进脉络

要完整理解 EIP-7915 在仓库中的位置,可对照以下关联文档:

  • EIP-4844:引入 blobs 与calc_excess_blob_gas()/get_base_fee_per_blob_gas()的基线机制,本提案直接在其上重写;
  • EIP-7691:Pectra 将 blob 目标/上限提升至 6/9 blobs(TARGET_BLOB_GAS_PER_BLOCK = 786432MAX_BLOB_GAS_PER_BLOCK = 1179648BLOB_BASE_FEE_UPDATE_FRACTION_PRAGUE = 5007716),并打破了满块与空块费用响应的对称性——EIP-7915 的费用更新调度图即基于 Pectra 常量绘制;
  • EIP-7762:通过提高MIN_BASE_FEE_PER_BLOB_GAS与重置excess_blob_gas加速价格发现,是图 1 中红色曲线的阈值机制对照;
  • EIP-7742 与 EIP-7892:分别探讨 blob 目标/上限在 CL/EL 间的解耦以及仅修改 blob 参数的专用硬分叉,展现 blob 定价与容量治理的宏观演进方向。

总结

EIP-7915 的核心贡献在于:把 blob 费用的调节锚定到自身长期平均费率上,通过一个可由integer_squareroot()三次迭代计算的八次方根权重,平滑地把非对称均值回归注入calc_excess_blob_gas(),并配合 Header 中新增的base_fee_per_blob_gas_ema字段与执行层断言完成闭环。它既不改变高于平均值时的正常调度,又在低于平均值时快速恢复均衡,从而在不牺牲中立性的前提下缓解费用弹性缺失带来的尖峰、拍卖式竞争与吞吐扩展障碍。该 EIP 当前状态为 Stagnant,其参数(EMA_DECAYMEAN_REVERSION_DEADBANDMEAN_REVERSION_FULLBAND)与全部规范细节均以上述仓库文档为准。

【免费下载链接】EIPsThe Ethereum Improvement Proposal repository项目地址: https://gitcode.com/GitHub_Trending/ei/EIPs

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询