伦敦硬分叉后交易gas使用量大幅上升的原因是什么?
伦敦硬分叉下gas使用量上涨原因解答
核心成因
你观察到的gas上涨和EIP-1559无关,是伦敦硬分叉包含的另外两个EIP调整导致的:
- EIP-3529:将SSTORE操作把存储值清零的gas退费从20000降低至4800,同时移除了SELFDESTRUCT操作的24000gas退费
- EIP-3298:后续彻底移除了所有剩余的gas退费规则
你在Berlin环境下拿到的gasUsed是已经扣除了上述退费后的实际收费值,而伦敦硬分叉后几乎所有存储相关的退费都被取消,相同逻辑的交易最终gasUsed自然会上涨。如果你的合约逻辑中包含大量存储清零、临时存储变量写入后删除、合约自毁类操作,gas涨幅达到50%属于典型表现。
opcode成本相关说明
伦敦硬分叉没有调整任何常规opcode的执行gas成本,Berlin硬分叉生效的EIP-2929(存储访问gas调价)、EIP-2930(访问列表)规则在伦敦版本中完全沿用,不存在存储读取/写入的基础gas成本上调的情况。
你可以直接参考EIP-2929文档中的opcode成本列表,没有单独针对伦敦版本的opcode调价说明。
快速验证方法
你可以通过极简测试用例复现差值:
- 编写测试合约,实现将某存储槽位写入非零值后再清零的逻辑
- 分别在Berlin、伦敦硬分叉环境下执行该逻辑
- 两次交易的扣费前gas消耗完全一致,差值就是伦敦版本取消的退费额度,和你观察到的涨幅完全匹配
内容的提问来源于stack exchange,提问作者ashhanai
相关产品推荐
相关产品推荐

