跳转至主要内容
Change page

燃料和费用

上次修改时间: @Fred-Porlock(opens in a new tab), 2024年3月19日

Gas 对以太坊网络至关重要。 正是这种燃料使它能够运行,正如车辆需要汽油一样。

前提条件

为了更好地理解此页面,推荐先阅读交易EVM

什么是燃料?

燃料是指在以太坊网络上执行特定操作所需的计算工作量。

由于每笔以太坊交易都需要使用计算资源来执行,因此必须为这些资源付费,以确保以太坊不容易受到垃圾信息的攻击,并且不会陷入无限的计算循环。 计算费用以燃料费的形式支付。

燃料费是用于执行某些操作的燃料数量,乘以每单位燃料的成本。 无论交易成功与否,都要支付燃料费。

显示以太坊虚拟机操作所需燃料的图表 示意图节选自以太坊虚拟机图解(opens in a new tab)

燃料费必须用以太坊的本币支付,即以太币 (ETH)。 燃料通常以 gwei 计价,gwei 是以太币的一种计量单位。 一个 gwei 等于一个以太币的十亿分之一(0.000000001 个以太币,或 10-9 个以太币)。

比如,你可以说你的燃料费是 1 gwei,而不说 0.000000001 个以太币。

"Gwei" 是 "giga-wei" 的缩写,意思是 “十亿个 wei”。 一个 gwei 等于十亿个 wei。 Wei 本身(以 b-money(opens in a new tab) 的发明者 Wei Dai(opens in a new tab) 的名字命名)是以太币的最小单位。

如何计算燃料费?

当提交交易时,你可以设置你愿意支付的燃料数量。 通过提供一定数量的燃料,你出价将你的交易添加到下一个区块中。 如果你提供的燃料太少,验证者就不太可能选择添加你的交易,这意味着你的交易可能会延迟执行或不会被执行。 如果提供太多,你可能浪费一些以太币。 那么,怎么知道你应该支付多少燃料费呢?

你支付的总燃料费分为两部分:base feepriority fee(小费)。

Base fee 由协议设定——你必须至少支付这些金额,然后你的交易才会被视为有效。 Priority fee 是基础费以外的小费,它可以吸引验证者选择将你的交易添加到下一个区块。

只支付 base fee 的交易从技术上讲是有效的,但不太可能被添加到区块,因为它没有激励验证者优先选择它而不是其他交易。 “合适的” priority 费由发送交易时的网络使用情况决定——如果有大量需求,那么你可能不得不将你的 priority 费设置得更高;但当需求较少时,你也可以减少该费用。

例如,假设 Jordan 要向 Taylor 支付 1 个以太币。 一笔以太币转账需要 21,000 单位的燃料,基础费是10 gwei。 Jordan 支付了 2 gwei 作为小费。

总费用等于:

使用的燃料单位数 *(基础费 + 优先费)

其中 base fee 由协议设置,priority fee 是用户设置的支付给验证者的小费。

21,000 * (10 + 2) = 252,000 gwei(0.000252 个以太币)。

当 Jordan 转账时,将从 Jordan 帐户中扣除 1.000252 个以太币。 Taylor 的帐户增加 1.0000 个以太币。 验证者收到价值 0.000042 个以太币的小费。 0.00021 个以太币的 base fee 被销毁。

基础费

每个区块都有一个基础费作为底价。 要想有资格添加到区块中,燃料费出价必须至少等于基础费。 基础费独立于当前区块计算,是由当前区块之前的区块决定的,这使得用户更容易预测交易费。 在创建区块时,它的基础费将被“销毁”并退出流通。

基础费由一个公式计算得出,该公式将上一个区块的大小(所有交易中使用的燃料数量)与目标大小进行比较。 如果超过目标区块大小,每个区块的基础费将最多增加 12.5%。 这种指数级增长使得区块大小无限期保持高位在经济上不可行。

区块编号已包含燃料费用增加当前基本费用
115M0%100 gwei
230M0%100 gwei
330M12.5%112.5 gwei
430M12.5%126.6 gwei
530M12.5%142.4 gwei
630M12.5%160.2 gwei
730M12.5%180.2 gwei
830M12.5%202.7 gwei

根据以上表格,要在 9 号区块创建交易,钱包会让用户明确知晓:要将交易添加到下一个区块的最高基础费等于 current base fee * 112.5%202.7 gwei * 112.5% = 228.1 gwei

还请注意,考虑到完整区块前的基础费增加速度很快,我们不大可能看到它长时间处于峰值状态。

区块编号已包含燃料费用增加当前基本费用
3030M12.5%2705.6 gwei
......12.5%...
5030M12.5%28531.3 gwei
......12.5%...
10030M12.5%10302608.6 gwei

优先费(小费)

优先费(小费)激励验证者将交易添加到区块中。 如果没有小费,验证者会发现开采空区块在经济上可行,因为它们会获得相同的区块奖励。 小额小费是对验证者将交易添加到区块的最小激励。 在相同区块中,对于要优先于其他交易执行的交易,可以添加更高的小费来尝试使出价高于竞争性交易。

最高费用

要在网络上执行交易,用户可以为他们愿意支付的交易执行费用指定最高限额。 此可选参数称为 maxFeePerGas。 为了执行交易,最高费用必须超过基础费和小费的总和。 交易完成后,会将最高费用与基础费和小费总和之间的差额退还给交易发送人。

区块大小

每个区块的目标大小为 1500 万单位燃料,但区块的大小将根据网络需求增减,最大不得超过 3000 万单位燃料的区块大小上限(目标区块大小的 2 倍)。 协议通过 tâtonnement 过程使均衡区块大小平均达到 1,500 万单位燃料。 这意味着如果区块大小超出目标区块大小,协议将增加下一个区块的基础费。 同样,如果区块大小小于目标区块大小,协议将减少基础费。 基础费的调整金额与当前区块大小和目标区块大小的差距成比例。 关于区块的更多信息

实践中的燃料费计算

你可以明确说明自己愿意支付多少交易执行费。 然而,大多数钱包提供商会自动设置推荐的交易费(基础费 + 推荐的优先费)来降低用户操作的复杂程度。

为什么存在燃料费?

简而言之,燃料费有助于确保以太坊网络的安全。 在网络上执行的每次计算都需要收费,这样可以防止不良行为者给网络带来垃圾信息。 为了防止代码中出现无意或恶意的无限循环或其他计算浪费,要求每笔交易对可以采用的代码执行计算步骤设置一个限制。 基本计算单位是“燃料”。

尽管交易中包含费用限制,但交易中未使用的所有燃料将退还给用户(即退还 max fee - (base fee + tip))。

未使用燃料退还示意图 示意图节选自以太坊虚拟机图解(opens in a new tab)

什么是燃料限额?

燃料限额是指你愿意在交易中消耗的最大燃料数量。 涉及智能合约的更复杂交易需要进行更多的计算工作,因此相比简单的支付,它们需要更高的燃料限额。 标准以太币转账要求燃料限额为 21,000 单位燃料。

例如,如果你对简单的以太币转账设置 50,000 单位燃料限额,以太坊虚拟机将消耗 21,000 单位,你将收到剩余的 29,000 单位。 然而,如果你设置的燃料太少,比如说,对于简单的以太币转账,设置燃料限额为 20,000 单位,以太坊虚拟机将消耗 20,000 单位燃料并尝试执行交易,但最后不会完成。 然后,以太坊虚拟机回滚所有变化,但由于验证者已经完成了价值 20k 单位燃料的工作,这些燃料就被消耗了。

为什么燃料费会变得如此高?

燃料费高是由于以太坊广受欢迎。 如果需求量太大,用户必须提供更高的小费,力争使出价高于其他用户的交易。 小费越高,交易进入下一个区块的可能性就越大。 此外,更复杂的智能合约应用可能会执行许多操作来支持其功能,使它们消耗大量的燃料。

减少燃料成本的举措

以太坊可扩展性升级最终应该可以解决部分燃料费问题,并让以太坊平台有能力每秒处理数千笔交易,从而实现全面扩容。

二层网络扩容是一项主要举措,可大大优化燃料成本、用户体验和可扩展性。 关于二层网络扩容的更多信息

监控燃料费

如果想要监控燃料价格,用较少的费用发送以太币,你可以使用多种不同的工具,例如:

延伸阅读

本文对你有帮助吗?

网站最后更新: 2024年7月10日

学习

  • 学习中心
  • 什么是以太坊?
  • 什么是以太币 (ETH)?
  • 以太坊钱包
  • 什么是 Web3?
  • 智能合约
  • Gas fees
  • 运行节点
  • 以太坊安全和预防欺诈措施
  • 测试中心
  • 以太坊词汇表
(opens in a new tab)(opens in a new tab)(opens in a new tab)
  • 关于我们
  • 以太坊品牌资产
  • 行为守则
  • 工作机会
  • 隐私政策
  • 使用条款
  • 缓存政策
  • 媒体联系方式(opens in a new tab)