区块链技术原理(13)-以太坊燃料费Gas
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 前言
- 什么是Gas?
- 为什么需要 Gas?
- 什么是燃料限额(Gas Limit)?
- 如何估算复杂合约调用的 Gas Limit?
- 为什么燃料费会变得如此高?
- 如何计算燃料费?
- EIP-1559 前的拍卖机制(2021 年 8 月前)
- EIP-1559 后的双层结构(伦敦升级后)
前言
Gas 对以太坊网络至关重要。 正是这种燃料使它能够运行,正如车辆需要汽油一样。
什么是Gas?
在以太坊中,Gas(燃料) 是衡量网络执行操作所需计算资源的单位,类似于汽车的燃油。它不仅是支付验证者(矿工)的报酬,更是维持网络安全、防止滥用的核心机制。以下从技术原理、费用模型、优化策略和未来趋。
燃料是指在以太坊网络上执行特定操作所需的计算工作量。
由于每笔以太坊交易都需要使用计算资源来执行,因此必须为这些资源付费,以确保以太坊不容易受到垃圾信息的攻击,并且不会陷入无限的计算循环。 计算费用以燃料费的形式支付。
燃料费是用于执行某些操作的燃料数量,乘以每单位燃料的成本。 无论交易成功与否,都要支付燃料费。
燃料费必须用以太坊的本币支付,即以太币 (ETH)。 燃料通常以 gwei 计价,gwei 是以太币的一种计量单位。 一个 gwei 等于一个以太币的十亿分之一(0.000000001 个以太币,或 10-9 个以太币)。
比如,你可以说你的燃料费是 1 gwei,而不说 0.000000001 个以太币。
“Gwei” 是 “giga-wei” 的缩写,意思是 “十亿个 wei”。 一个 gwei 等于十亿个 wei。 Wei 本身(以 b-money的发明者 Wei Dai的名字命名)是以太币的最小单位。
为什么需要 Gas?
- 资源定价:以太坊作为 “世界计算机”,需为每笔操作(如转账、合约调用)消耗的 CPU、内存、存储等资源定价,防止恶意用户通过无限循环或垃圾交易瘫痪网络。
- 经济激励:验证者(质押 32 ETH 的节点)通过打包交易获得 Gas 费奖励,确保其持续维护网络安全。
- 状态一致性:通过 Gas 限制(Gas Limit)控制单笔交易的最大计算量,避免因逻辑错误导致区块处理超时。
什么是燃料限额(Gas Limit)?
燃料限额是指你愿意在交易中消耗的最大燃料数量。 涉及智能合约的更复杂交易需要进行更多的计算工作,因此相比简单的支付,它们需要更高的燃料限额。 标准以太币转账要求燃料限额为 21,000 单位燃料。
例如,如果你对简单的以太币转账设置 50,000 单位燃料限额,以太坊虚拟机将消耗 21,000 单位,你将收到剩余的 29,000 单位。 然而,如果你设置的燃料太少,比如说,对于简单的以太币转账,设置燃料限额为 20,000 单位,以太坊虚拟机将消耗 20,000 单位燃料并尝试执行交易,但最后不会完成。 然后,以太坊虚拟机回滚所有变化,但由于验证者已经完成了价值 20k 单位燃料的工作,这些燃料就被消耗了,不会退回。
如何估算复杂合约调用的 Gas Limit?
- 使用 Hardhat 等开发工具在本地模拟执行,获取精确的 Gas 用量。
- 在主网交易时,将估算值上浮 20% 作为安全边际(如预估 100 万 Gas 则设为 120 万)。
为什么燃料费会变得如此高?
燃料费高是由于以太坊广受欢迎。 如果需求量太大,用户必须提供更高的小费,力争使出价高于其他用户的交易。 小费越高,交易进入下一个区块的可能性就越大。 此外,更复杂的智能合约应用可能会执行许多操作来支持其功能,使它们消耗大量的燃料。
如何计算燃料费?
- Gas Price:用户愿为每单位 Gas 支付的 ETH 数量(单位:Gwei,1 Gwei = 10⁻⁹ ETH)。它分为两部分:
- 基础费(Base Fee):由协议动态调整,反映网络拥堵程度(如区块利用率超 50% 时自动上涨),且100% 被销毁以调节通胀;
- 优先费(Priority Fee):用户额外支付的小费,激励验证者优先打包交易。
- 总费用公式:
总费用=Gas用量×(基础费+优先费)
例如,假设 Jordan 要向 Taylor 支付 1 个以太币。 一笔以太币转账需要 21,000 单位的燃料,基础费是50 gwei。 Jordan 支付了 2 gwei 作为小费。总费用为 21,000 × 52 = 1,092,000 Gwei = 0.001092 ETH。
EIP-1559 前的拍卖机制(2021 年 8 月前)
- 无序竞价:用户直接指定 Gas Price,验证者优先打包出价高的交易。
痛点: - 费用波动剧烈(拥堵时 Gas Price 可达 1000+ Gwei,约 100 美元 / 笔);
- 用户需盲目猜测合理价格,易超额支付。
EIP-1559 后的双层结构(伦敦升级后)
- 基础费动态调整:
- 每区块基础费根据前一区块的 Gas 利用率自动增减(±12.5%/ 区块),公式为:
下一区块基础费=当前基础费×(1+(实际用量-目标用量)/目标用量×8)
(目标用量为 1500 万 Gas / 区块,弹性上限 3000 万)。
基础费销毁机制减少 ETH 流通量,形成通缩效应(如 2023 年销毁超 400 万 ETH)。
- 优先费市场化:用户通过调整优先费控制交易速度(如 DeFi 套利需支付高优先费抢占区块空间)。
- 费用可预测性提升:用户只需关注基础费(公开透明)和优先费(自主选择),避免传统模型的竞价博弈。