基础费只看上一个区块?EIP-7378想用移动平均堵住空块贿赂 图 1
基础费只看上一个区块?EIP-7378想用移动平均堵住空块贿赂 · 图 1

以太坊自伦敦升级引入 EIP-1559 之后,每笔交易的基础费由协议自动调节:区块比目标用量拥挤,下一块的基础费就涨一点;比目标冷清,就降一点。这个调节器简单到只有一行公式,而它的简单恰恰藏着一个理论上的漏洞——公式只看上一个区块。EIP-7378 就是冲着这个漏洞来的,它发布于 2023 年 7 月,提议把公式里的单块用量换成一段历史的加权平均。

现行公式的软肋

EIP-1559 的更新规则大致是:新基础费等于旧基础费乘以一加上八分之一的用量偏差率。用量偏差率拿上一个区块的实际用量减目标用量再除以目标用量。注意主语是上一个区块,仅此一块。这意味着谁能控制上一个区块长什么样,谁就能拨动下一块的基础费开关。

学术研究(提案引用的 AGHH 论文)指出了这样一条合谋路径:一批用户凑一笔小贿赂给当前的出块人,让他提出一个几乎空白的区块。贿赂的成本大约只是小费单价乘以目标块容量,很便宜;而空块会让下一块的基础费直接下调一档。之后这批用户再在低基础费的环境里批量提交自己的交易,省下的燃烧费可能高于贿赂支出。对出块人和出价用户来说,这是一笔账面双赢的买卖,代价则由所有诚实用户分摊——基础费本该由真实需求决定,现在掺了水分。

移动平均怎么补这个洞

EIP-7378 的改法非常克制:公式框架完全不动,只把公式里那一处的上一块用量替换成指数移动平均值。这个平均值按递归方式计算——今天的新值等于平滑因子乘以本块用量,加上(一减平滑因子)乘以昨天的平均值。平滑因子取值在零和一之间,越小代表历史记忆越长、曲线越平。计算量和存储都还是常数级,不需要真的保存一段区块历史。

回到空块贿赂的例子:就算出块人真的塞了一个空块,它在平均值里只占一个平滑因子的权重,下一块基础费的降幅从原来的整个偏差被压缩到几分之一,贿赂的性价比随之塌掉。提案还注意到平滑因子的极端情形——取一的时候公式直接退化回现行规则,所以这套机制是现行机制的严格推广,参数选得越接近一就越接近现状。

它现在的状态

按 eips.ethereum.org 的标注,EIP-7378 状态为 Stagnant(因长期无活动而搁置),创建时间 2023 年 7 月 22 日,未进入任何主网升级。以太坊的基础费公式至今仍是 EIP-1559 的原样。这类研究的现实影响往往先于落地:后来关于费用市场波动的讨论普遍会引用它给出的操纵分析。对普通用户的实际含义是——在拥堵时段看到的费用预测,理论上可能已经被博弈扭曲,但这属于协议层演化问题,不改变你按钱包推荐费正常发交易的做法。

一个直觉账

把机制还原成算术最直观。平滑因子若取八分之一,一个空块只稀释当期平均值约九分之一,基础费的下调幅度也就跟着缩到原来的量级零头;想靠贿赂换低费,贿赂对象从一块变八块,收益按权重摊薄而成本按次累加,这条路基本封死。平滑因子取二分之一,平均值只记住最近几块,行为更接近现状。参数选择本身就是响应速度与抗操纵之间的刻度盘。

快速问答

问:基础费调整跟Gas上限是一回事吗? 答:不是。基础费是每单位Gas的单价,由公式逐块调节;Gas上限是单块容量,由验证者投票在弹性规则内缓慢移动。EIP-7378 只动单价公式的输入。

问:空块在现在的以太坊上常见吗? 答:主网上几乎不出现连续空块,攻击场景是单块故意留空来钓下一块的低费,靠的是时间差而不是常态。

问:提案为什么搁置了? 答:官方页只标注了因六个月无活动转入 Stagnant。可以理解为改动费用机制的收益尚未大到值得承担一次共识规则变更的风险。

风险提示:本文讨论协议机制与提案状态,不构成任何投资或交易建议;Gas与费用数据请以当前链上实际为准。