以太坊 Gas 费由什么组成? 图 1
以太坊 Gas 费由什么组成? · 图 1

“Gas 费是多少”这句话里,往往混在一起的是两件事:交易要做多少计算,以及每单位计算愿意支付多少 ETH。把两者分开,才看得懂钱包中的估算、最高费用和最终扣款。Gas 是以太坊 EVM 执行操作所需计算工作的计量单位,不是代币,也不是一个固定价格。

费用可以拆成工作量和单位价格

可把费用直观写成“实际消耗的 Gas × 每单位 Gas 的价格”。简单 ETH 转账通常比复杂合约调用需要更少计算,但实际值仍取决于交易执行内容。调用代币合约、交换或执行多步操作,可能需要更多 Gas。交易金额本身并不能决定计算量,因此相同金额的两笔交易也可能有不同费用。

Gas limit 是用户允许这笔交易最多消耗的计算单位。它不是交易保证成功的金额。若执行所需计算超过 limit,EVM 会停止执行;是否消耗费用取决于交易失败发生在哪一阶段以及已完成的工作。以太坊官方文档说明,执行中耗尽 Gas 的交易会回滚状态变化,但已完成的计算仍可能收费。对于具体失败交易,应查看回执和费用字段,而非只看钱包提示。

EIP-1559 下的基础费与优先费

EIP-1559 引入的费用结构把每单位价格分成基础费和优先费。基础费由协议根据区块使用情况调整并销毁;优先费由用户设置,用来提高提议者选择该交易的吸引力。拥堵和操作复杂度会影响钱包对费用的估算,但优先费并不构成固定“插队承诺”。

maxFeePerGas 是发送者愿意为每单位 Gas 支付的最高值。纳入区块时,费用上限至少应覆盖该区块基础费,且优先费上限不能高于费用上限。实际优先费等于优先费上限与“最高费用上限减基础费”两者中的较小值。因此,费用上限不必覆盖完整的优先费上限;不足部分会压低实际优先费。若上限高于实际需要,差额不是自动全数扣走。要估算最高可能支出,还需结合 Gas limit;不能把 maxFeePerGas 单独当作整笔交易总成本。

阅读钱包估算时看三项

  • Gas limit:本次操作允许使用的计算量上限。
  • Max fee:每单位 Gas 的费用上限。
  • Priority fee:给区块提议者的优先费部分。

最终费用通常按实际消耗量和实际适用费率计算。估算值是签名前的参考,不是市场报价保证。不同钱包可能展示“慢、中、快”选项,也可能代为填写字段;背后的选择仍受网络状态影响。

若交易迟迟 pending,先结合 nonce 队列和费用字段排查,参考pending交易排查。发送前也应确认钱包使用的是正确网络,测试网余额与主网余额不能混为一谈,参见网络切换。

Gas 机制限制计算资源被无限占用,但并不能消除合约风险、价格波动或错误签名风险。费用页面和网络数据会变化,使用时应查看当前钱包及官方文档。本文用于解释技术概念,不构成投资建议或费用承诺。

用一个假设数值读懂费用上限

实际排查时,可把估算值、签名前确认值和回执中的实际费用分开保存。三者回答的问题不同:估算用于预判,签名字段表达用户授权的上限,回执则反映已经执行的结果。若钱包仅显示一个总额,应打开交易详情确认字段名称和单位,避免把 ETH、Gwei 与 Gas 单位混为一谈。

假设费率示例

以下仅为单位计算示例,不代表当前费率:假设基础费为二十、优先费上限为三、最高费用上限为二十二,单位均为同一种每单位计算价格。此时实际优先费最多为二,单位总价为二十二,而不是二十三。最终还要乘以实际消耗的计算单位。比较钱包估算与回执时,先统一单位并区分总费用和单位价格;否则即使数字抄写正确,结论也可能错误。基础费继续变化时,之前的例子不能用于预测下一笔交易的实际支出。