在以太坊网络上进行交易时,Gas(燃料)和手续费(Fee)是核心概念。理解它们的运作机制,有助于优化交易成本并提升操作效率。
什么是 Gas?
在以太坊上,每笔交易本质上都是执行特定操作,例如转移账户余额、部署新合约或与合约交互。这些操作会消耗节点的计算资源。
基于使用者付费原则,发起交易的账户需要为这些计算资源支付手续费。Gas 就是一种用来衡量“被消耗的计算资源”的单位。
你可能会好奇:为什么不用电力消耗(瓦特*小时)或硬件资源(CPU 时间、内存占用)来计费?这是因为以太坊节点运行在各种设备上——从台式机、笔记本到开发板甚至手机。硬件规格差异巨大,无法统一计价。
以太坊通过以太坊虚拟机(EVM)解决了这个问题。EVM 将所有计算资源抽象化,并为每种操作指令明确定价,从而统一评估资源消耗。关于 EVM 的详细内容,我们将在后续章节深入探讨。
燃料数量上限(GasLimit)
GasLimit 是指一笔交易中,发起者愿意支付的最大 Gas 数量。
执行越复杂的操作,需要消耗的 Gas 就越多。因此在部署合约或与合约交互时,通常需要设置较高的 GasLimit,以确保交易顺利完成。
如果只是转移 Ether 给其他账户,这个操作需要 21,000 单位的 Gas。
以转账为例
假设 Alice 要向 Bob 转账 1 个 Ether:
- 如果 Alice 将 GasLimit 设置为 40,000,而实际转账只消耗了 21,000 Gas,那么她将收到 19,000 单位的 Gas 退款。
- 如果 Alice 过于节省,将 GasLimit 设置为仅 10,000,会导致 Gas 不足。交易将失败并被标记为
revert状态,且所有已消耗的 Gas 都不会退回。
伦敦升级后的计价模式
以太坊在伦敦升级中彻底改变了 Gas 计价模式。由于这个话题涉及内容较多,我们将在下一章节详细讨论。以下主要介绍升级后的现行机制。
基础费用(Base Fee)
每个区块都有一个基础费用,发送交易时设置的基础费用不得低于该区块的基础费用。
基础费用是通过公式计算的,其数值与前一个区块消耗的 Gas 数量相关。当交易被收入区块后,基础费用部分将被直接销毁——这意味着这些 Ether 将永久退出流通。
销毁的手续费 = 基础费用 × 实际消耗的 Gas 数量
优先费用(Priority Fee)
在资本化的世界里,付费可以提升体验——就像在迪士尼乐园购买快速通行券一样。以太坊也类似:通过支付优先费用(小费)给矿工,可以让交易优先被打包进区块。
与基础费用不同,优先费用产生的全部手续费都会归矿工所有。
给矿工的小费 = 优先费用 × 实际消耗的 Gas 数量
单位燃料费用上限(Max Fee)
每次发送交易都要分别设置基础费用和优先费用非常繁琐。为了提升用户体验,引入了单位燃料费用上限(Max Fee)的概念:
单位燃料费用上限 = 基础费用 + 优先费用
由于基础费用由公式决定且用户无法更改,用户实际上只需要设置“单位燃料费用上限”,钱包工具会自动计算出合适的“优先费用”。
手续费(Fee)计算总结
总手续费的计算公式为:
总手续费 = 单位燃料费用上限 × 实际消耗的 Gas 数量
如果实际消耗的 Gas 数量超过 GasLimit,交易将失败,此时消耗的 Gas 数量会等于 GasLimit。
常见问题
Gas 为什么不能直接用 Ether 计价?
因为 Ether 价格波动较大,而计算资源消耗相对稳定。使用 Gas 作为中间单位,可以隔离价格波动对计算成本的影响。
如何设置合理的 GasLimit?
简单转账固定为 21,000。合约交互则需要根据合约复杂度估算,一般钱包会提供推荐值。设置过低可能导致失败,设置过高则可能增加不必要的成本。
基础费用销毁机制有什么意义?
基础费用销毁相当于通缩机制,可以减少 Ether 流通量。同时它消除了矿工操纵基础费用的动机,使网络更加去中心化。
优先费用设置多少合适?
这取决于网络拥堵程度和你对交易速度的要求。👉 获取实时 Gas 价格与进阶优化方法 可以帮助你做出最佳决策。
交易失败后 Gas 会退回吗?
不会。即使交易失败,所有已消耗的 Gas 都不会退回。这是因为矿工已经为验证交易付出了计算资源。
伦敦升级主要改变了什么?
最大的变化是引入了基础费用和优先费用的分离机制,以及基础费用销毁制度。这使得手续费机制更加合理且可预测。