一句话定位
EIP-7778 是 2024 年 10 月 1 日创建、截至本文撰写时状态为 Review 的提案。它只动一处账本规则:Gas 退款继续退给用户,但不再从区块 gas 用量的计数中扣减。换句话说,用户钱包看到的费用不变,区块上限看到的用量变大。目的在提案标题的副线里写得很直白——防止区块 gas 上限被绕开。
一笔真实区块的账
提案的动机段引用了主网区块 20878522 做算例:这个区块的净用量显示为 28.5M gas,看起来没有触及 30M 上下的区块上限;但它内含 4.01M gas 的退款,把退款加回去,真实执行掉的工作量是 32.51M gas,比上限多出 2.51M。也就是说,现行规则下,一个区块只要塞进足够多清存储的操作,就能在执行层实际完成超过上限的计算量,而所有指标显示它合规。提案把这称为 gas 走私——字面意义是把超额计算夹进账面的缝隙里。
双重账本从哪来
退款机制的初衷是补偿:清空一个存储槽替网络减负,先收高费再返还一部分是合理激励。问题出在退款同时作用于两本账。交易层面,退款减少发送者实付,这符合激励本意;区块层面,退款直接冲减区块已用量,等于让一笔操作占用的执行时间与其计入上限的数字脱钩。验证一个区块的真实成本是它执行的全部指令,不是指令减去返还。EIP-7778 的处方即把两本账分开:面向用户的交易 gas 公式保持不变,面向共识的区块计数改用毛用量。
谁会疼
改动不改任何人的实付费用,受影响的是一类特定构造:靠批量清存储换取大额退款、再借退款余量追加计算的交易模式。对普通转账与绝大多数合约调用,区块毛用量与净用量差异本就微小。提案在安全考量里也给了另一视角:退款带来的账面折扣历来是一种隐性扩容——让网络在标称上限之上多跑计算;关掉这条缝隙,等于承认过去的部分吞吐是记账幻觉,真实的硬件负载一直在上限之外,这恰好也是 DoS 研究的观察。
与 3529 的分野
读者常把它和 EIP-3529 混为一谈。3529 在 2021 年削减的是退款本身的额度——把单笔交易可获退款封顶在所用 gas 的五分之一,同时下调单项操作的退款数额,从源头缩小账面折扣;7778 则不碰退款额度,只把退款从区块计数里拿掉。一个管退款有多少,一个管退款记在哪本账。两者理论上可叠加:先砍额度再改记账,夹带空间被双保险封住。截至本文撰写时,7778 仍在 Review,尚未进入任何已激活升级的清单。
一个直觉类比
两本账的脱钩在其他领域早有原型:信用卡账单显示你花了多少,商户与银行清算的是另一套数字;体重秤显示脱掉外套的重量,体检需要穿同样的衣服测量。EIP-7778 做的事就是统一测量着装——执行工作量按裸重记,退款继续在用户账单里抵扣。这类机制修复的共同教训是:一个数字同时回答两个问题时,多半有一个问题在拿到近似答案,审计协议规则时值得先问一句——这个数字现在同时在给谁记账?
快速问答
问:这个提案会让手续费变贵吗? 答:用户端公式不变,实付不变;变化只发生在区块用量计数,间接影响是拥堵时上限更真实、有效容量略降。
问:为什么退款以前能抵区块用量? 答:早期规则把两本账合并成一本,退款同时出现在交易费用与区块计数两侧;这是历史实现选择,不是深思后的设计。
问:清存储激励会不会因此失效? 答:退款金额本身不动,激励仍在;只是清槽不再附带额外的塞车空间。
一个常见误会
流行的简化说法是”退款让你白赚 gas”。更准的说法:退款让你在同样实付下多干了活,而区块上限当时看不见这部分活。EIP-7778 不是消灭退款,而是把真实工作量重新照进上限镜像。协议里很多看似慷慨的机制,拆开看只是某本账记漏了一行。
风险提示:本文仅作技术科普,不构成任何投资建议。
发表评论
还没有评论,来说两句吧。
评论区为展示样式,提交不会被处理。