以太坊 Gas 费详解:基础费、优先费与 Gas 上限
了解 Gas 单位、Gas 上限、基础费、优先费和最高费用的含义,并计算一笔以太坊交易的实际成本。
本指南内容Gas 衡量计算工作,不是转账金额
简短摘要
以太坊 Gas 费的计算方式是:交易实际使用的 Gas 数量乘以交易所在区块中的有效 Gas 单价。协议设定并销毁基础费;优先费可能支付给验证者。最高费用是价格上限,不一定是你最终支付的单价。
Gas 衡量计算工作,不是转账金额
在以太坊上,Gas 是衡量 EVM 处理交易所需计算量的单位。简单的 ETH 转账所需的操作相对较少;转移代币或执行智能合约中的多个条件则可能需要更多计算。因此,即使两笔交易发送相同数量的 ETH,只要执行的工作不同,使用的 Gas 数量也可能不同。
Gas 单位表示工作量,Gas 单价表示你愿意为每个单位支付多少 ETH。两者相乘才是费用。Gas 上限是交易获准消耗的最大单位数,maxFeePerGas 则是每单位价格的上限。这些字段各有含义,不能互相替代,也不是同一个“最高费用”的不同写法。
本文介绍以太坊主网上的标准 EIP-1559 交易。其他区块链和二层网络可能采用不同的费用结构、支付资产和字段名称。不要把以太坊的术语直接套用到所有网络。Ethereum.org 的 Gas 指南和交易指南解释了这些字段。
Gas 使用量取决于交易执行的工作
EVM 会为计算和状态更改分配 Gas 成本。合约调用可能涉及执行函数、读取或写入存储,以及记录事件;这些都是简单转账通常不需要的额外操作。操作越多或执行路径越长,使用的 Gas 可能越多。Gas 使用量不是通过转出的 ETH 数量或代币市场价格相乘得出的。
ETH 转账、代币转账和 dApp 调用执行的操作各不相同。合约调用可能运行额外函数并读取或更新存储数据,因此可能比简单转账使用更多 Gas。已进入区块的交易回执会报告实际使用的 Gas 数量。
Ethereum.org 以 21,000 Gas 作为标准 ETH 转账示例。这是简单转账的参考值,不是合约调用的通用 Gas 上限,因为所需工作取决于调用的函数和存储访问。
网络 Gas 也不同于服务商的提现费。交易所可能加收运营费用或采用自己的费率表。链上 Gas 是对网络处理计算资源的支付。如果提现页面只显示一个总额,请确认它是否合并了平台费用和网络成本。
Gas 上限和实际使用量是两个不同的数字
Gas 上限(gasLimit)是交易获准消耗的最大 Gas 单位数。实际使用量(gasUsed)是执行结束时真正消耗的数量。提高上限不代表上限中的每个单位都会自动收费。已进入区块的交易按实际消耗的 Gas 和有效 Gas 单价计费;未使用的上限部分不会被消耗。
如果交易本身在执行期间耗尽 Gas,整个 Gas 上限都会被消耗,交易也会失败。交易的状态更改会回滚,但已进行的计算仍会产生费用。较高的上限允许执行更多工作,同时也会提高最高 Gas 成本敞口:gasLimit × maxFeePerGas。实际扣费仍取决于已使用的 Gas 和有效单价。
Gas 上限是一个上限值,不是对实际使用量的预测。它不是单价,提高单价也无法弥补 Gas 单位不足。如果你不了解调用会执行什么操作,请先查看钱包或应用的官方说明,不要随意修改上限。
基础费随区块空间需求变化
对于 EIP-1559 交易,基础费是协议为某个区块设定的每 Gas 单价。交易的最高费用必须足以覆盖收录该交易的区块基础费。协议会根据前一个区块的 Gas 使用量与目标值之间的差距,逐区块调整基础费。它可能上升或下降,并非永久固定费率。
实际使用的每个 Gas 单位所对应的基础费部分会被销毁。验证者不会把这部分作为小费收取。基础费会逐区块变化,因此待处理交易被收录时遇到的基础费可能与提交时不同。
Gwei 是 ETH 的较小单位:1 gwei 等于 0.000000001 ETH。即使 Gas 使用量不变,Gas 单价上升也会增加以 ETH 计的成本。即使单价不变,使用更多 Gas 也会增加成本。这两项因素都能独立于 ETH 的美元价格改变 ETH 计价的费用。
优先费是可能促使交易被优先收录的小费
优先费是你为每个 Gas 单位向收录交易的验证者提出的小费。用户竞争有限的区块空间;其他条件相近时,较高的小费可能让交易更有吸引力。它表示紧急程度,但不保证交易一定进入某个区块或在某个时间前收录。
界面上显示较高的 priority fee,与交易所需的 Gas 单位数量是两回事。优先费改变单价,Gas 上限限制获准执行的工作量。复杂的合约调用即使小费很高,也可能因 Gas 不足而失败。反过来,如果价格上限无法覆盖区块基础费,Gas 单位充足也无济于事。
验证者会在选择交易时考虑区块空间和其他交易条件。基础费和可用区块空间会随时间变化,因此提高小费也不能保证交易在某个特定时间被收录。EIP-1559 规范为基础费和优先费规定了不同作用,并限制两者形成的有效总单价不超过最高费用。
最高费用是价格上限,不是实际单价
maxFeePerGas 是你愿意为每个 Gas 单位承担的最高单价。maxPriorityFeePerGas 是你愿意支付的最高单位小费。交易被收录时,有效单价由基础费加上符合两个上限的小费组成。实际小费不得高于 maxPriorityFeePerGas 与 maxFeePerGas - baseFee 两者中较小的值,因此有效单价不会超过最高费用。
例如,最高费用为 30 gwei,最高小费为 2 gwei,区块基础费为 18 gwei。可应用的小费为 2 gwei,有效单价就是 20 gwei。最高费用设为 30 gwei,并不意味着交易会自动支付 30 gwei。如果基础费升到 31 gwei,30 gwei 的上限无法覆盖该区块,交易就不能被收录到这个区块。
基础费越接近最高费用,留给小费的空间越少。即使小费上限设为 5 gwei,如果 maxFeePerGas - baseFee 只有 1 gwei,实际小费也最多为 1 gwei。应同时查看两个上限和当时的基础费。

用一组示例数字计算费用
以下数字仅用于说明计算方法。假设交易的 Gas 上限为 30,000 单位,实际使用 24,000 单位,所在区块的基础费为 18 gwei,最高小费设为 2 gwei,最高费用设为 30 gwei。实际小费为 min(2, 30 - 18) = 2 gwei,因此有效单价为 18 + 2 = 20 gwei。
实际 Gas 费为 24,000 × 20 = 480,000 gwei。由于 1 ETH 等于 1,000,000,000 gwei,这相当于 0.00048 ETH。基础费部分为 24,000 × 18 = 432,000 gwei,即 0.000432 ETH。小费部分为 24,000 × 2 = 48,000 gwei,即 0.000048 ETH。两部分相加正好是 0.00048 ETH 的实际费用。
将完整 Gas 上限乘以最高单价,得到 30,000 × 30 = 900,000 gwei,即 0.0009 ETH。这是在这些设置下、假设上限和单位最高价格都全部用满时的 Gas 成本上限,不是示例中的实际费用。发送给接收方的 ETH 金额与 Gas 费分开计算。不要把上限当成固定扣款,也不要把费用理解为转账金额的百分比。这些数字只用于说明,并非当前网络报价。
交易失败仍可能消耗 Gas
不要以为钱包显示“失败”就代表 Gas 费会退还。如果交易进入区块且 EVM 已开始执行,之后才发生回滚,那么状态更改可能被撤销,但已使用的 Gas 仍会产生费用。如果交易本身在执行期间耗尽 Gas,整个 Gas 上限都会被消耗。即使没有得到预期结果,计算仍然发生了。
交易在进入区块前未通过有效性检查,是另一种情况。例如,ETH 转账提交的 Gas 上限低于所需数量,可能会在进入区块前被拒绝;这种情况下不会消耗执行 Gas。“进入区块前被拒绝”和“已进入区块、执行后回滚”不是同一种状态。
请通过交易哈希检查状态、Gas 使用量、有效 Gas 单价和执行结果。钱包简短的错误提示可能无法说明原因。Ethereum.org 也将收录前的验证拒绝与执行期间 Gas 耗尽区分开来。
分别查看上限、价格和转账金额
签名前,先确认自己使用的网络,并弄清交易是简单转账还是合约调用。钱包可能显示预计费用、Gas 上限、估算基础费、优先费上限、最高费用上限,以及要发送的 ETH 或代币数量。这些值回答的是不同问题。如果页面只显示最高 Gas 成本,请打开详情确认它指的是哪个上限,不要把它当成确定会扣除的金额。
钱包的自动估算可以帮助你无需手动调整费用字段就提交交易。但这仍是基于当时网络情况的估算,不保证收录时间或最终费用。较低的价格上限可能让交易一直等待;不了解调用内容就提高上限或小费,可能增加潜在成本却没有解决根本问题。查看当前参数,确认交易内容合理后再签名。
本文介绍以太坊主网的标准交易流程。二层网络或其他链可能显示额外的数据费用、使用不同的费用资产,或采用不同的计算方式。未查看相应文档前,不要把以太坊公式套用到其他网络。关于目标网络和地址,请参阅加密货币转账检查清单;关于合约使用代币所需的另一项权限,请参阅代币授权指南。
常见问题
Q1为什么失败的交易仍可能花费 ETH?
如果交易已进入区块并开始执行,即使状态更改被回滚,计算也可能消耗 Gas。查看交易哈希,区分执行失败和收录前被拒绝。
Q2maxFeePerGas 是钱包显示的实际 Gas 单价吗?
不是。它是每单位价格上限。有效单价由收录交易的区块基础费和符合上限的小费组成,因此交易可能低于最高值收费。
Q3以太坊主网交易用 ETH 支付 Gas 吗?
标准以太坊主网交易使用网络原生资产 ether 支付 Gas。如果钱包显示其他代币或第三方赞助方,请确认是否使用了单独的费用支付机制。其他链的规则可能不同。
资料来源与延伸阅读
报告问题
我们会准备一封包含本文链接的邮件。发送后,Mark 才会收到你的反馈
快速检查
读完指南后,用 3 道题检查一下
问题 01
gasLimit 表示什么?
选择答案即可查看解释