EIP-1559实际Gas费怎么算? 图 1
EIP-1559实际Gas费怎么算? · 图 1

类型2交易最终每Gas价格不是maxFeePerGas,而是基础费加上受两个上限共同约束的小费。把“报价上限”误写成“实际扣款”会同时误导费用和成交判断。

站内已有通用Gas说明;本文只做EIP-1559类型2的字段、有效价格公式与具体数字复算。

三个容易造成错误结论的做法

  • 不要这样做:用maxFeePerGas乘gasLimit直接展示“最终花费”
  • 不要这样做:忘记maxFee必须覆盖当前基础费
  • 不要这样做:把普通转账21000 Gas套到合约调用或失败交易

30 Gwei基础费的算例

baseFee=30 GweimaxPriorityFeePerGas=2 GweimaxFeePerGas=50 Gwei,则有效小费是min(2, 50-30)=2 Gwei,实际Gas价格为32 Gwei。若交易实际使用21000 Gas,总费用为32 × 21000 = 672000 Gwei = 0.000672 ETH

当基础费升到49 Gwei,有效小费只剩1 Gwei,价格仍不超过50;当基础费高于50 Gwei,该报价无法在该区块按上限执行。未使用的gasLimit不会按maxFee全部扣走,结算看gas_used。

字段是什么不是什​​么
maxFeePerGas基础费与小费之和的价格上限必然支付单价
maxPriorityFeePerGas给验证者小费的上限最终一定获得的小费
gasLimit最多可消耗的Gas实际使用量
gas_used收据中的实际消耗钱包预估值

一手规范给出的结论

类型2字段表

EIP-1559类型2交易携带chain_id、max_priority_fee_per_gas、max_fee_per_gas、gas_limit、目标、金额、数据、access_list和签名字段。

实际价格公式

区块基础费被协议燃烧;实际每Gas价格等于基础费加上不超过maxPriorityFeePerGas且不突破maxFeePerGas的优先费。

基础费与小费流向

maxFeePerGas是价格上限而非预扣后必然支付值,最终总费用还取决于gas_used;基础费高于费用上限时交易不能在该区块按该报价执行。

基础费与小费流向实操清单

  1. 保存类型2交易的chainId、两个费用上限、gasLimit和data
  2. 在待打包区块读取baseFee并计算可用优先费
  3. 执行前用eth_estimateGas估算,但把估算与gasLimit分栏
  4. 交易确认后从收据读取gasUsed和effectiveGasPrice复算总费用
  5. 分别展示被燃烧基础费与验证者小费,不承诺成交时间

把报价失败边界写进回归测试

回归用例先准备一份黄金样本:对象、网络、版本和预期结果均已知。脚本完成“保存类型2交易的chainId、两个费用上限、gasLimit和data”后只保存原始数据,再由独立模块执行“在待打包区块读取baseFee并计算可用优先费”。黄金样本的作用是发现实现变化,不代表其他对象天然安全;测试报告必须注明它覆盖的具体范围。

负向用例至少两条。第一条构造“用maxFeePerGas乘gasLimit直接展示“最终花费””,第二条构造“忘记maxFee必须覆盖当前基础费”。两条用例分别运行,禁止同时改变多个字段。合格实现会保留原始错误并停止在对应层级;自动切换网络、猜测未知字段或引用旧缓存都应让用例失败。

状态用例在动作前取得类型2字段表快照,执行“执行前用eth_estimateGas估算,但把估算与gasLimit分栏”后再次取证,并对照实际价格公式和基础费与小费流向。如果状态由节点视图、缓存或索引延迟造成,结果应注明观察来源。A时点和B时点必须各自保留,不能只存一条被覆盖的最终记录。

发布前由人工检查结果页是否同时显示原始字段、推导规则、单位或版本以及三态结论。触发“把普通转账21000 Gas套到合约调用或失败交易”时,系统必须建议“交易确认后从收据读取gasUsed和effectiveGasPrice复算总费用”并停止自动动作。回归记录由此覆盖正常、错误、状态变化和人工接管四条路径。

来源、增量与风险边界

  1. Ethereum Improvement Proposals:正式接口、字段与规范语义。
  2. Ethereum Gas Docs:实现路径、兼容性或安全边界。

本文资料读取于2026-07-20。钱包的费用预测取决于未来区块拥堵和自身估算算法,本文不能把某次报价写成保证成交时间或最终支出。

站内相邻主题可继续阅读:Gas估算边界交易类型与字段。费用预测会随未来区块拥堵变化。本文算例用于核对公式,不构成价格或成交时间承诺。