什么是 Ethereum Gas 费用?
“Gas”(天然气)是 以太坊 世界里最常被提起的名词之一。它没有神秘配方,只是衡量 每笔交易或智能合约 需要多少 计算量 的统一单位。把 Gas 想成汽车的汽油:路程越远、车子越重,耗油越多;链上操作越复杂,Gas 就越多。
为方便计算,Gas 价格以 gwei 标价,1 gwei = 10⁻⁹ ETH。换句话说,Gas 是以太坊的“油表”,而 gwei 是你的“油价”。
核心关键词已经呼之欲出:以太坊 gas 费用、gwei、Gas 成本、矿工优先费、智能合约优化、Layer-2 降手续费。
为什么 Gas 不得不收?下面 6 点看完你就懂:
- 资源分配:让愿意付费的人先上链,避免拥堵。
👉 想实时查看当前网络 gwei 多少钱?点这里预判高峰期 - 防垃圾交易:无成本时,机器人 1 秒可刷上万笔交易;收费就能让“刷屏”变成亏本买卖。
- 激励矿工 / 验证者:他们帮你打包交易,小费越高越优先。
- 网络安全性:恶意攻击需要烧钱,达成“以攻制攻”。
- 鼓励代码精简:开发者每写一行多余逻辑都要付费,自然更愿意做 智能合约优化。
- 经济模型可持续:手续费被部分销毁(EIP-1559 后),ETH 流通量下降,形成稀缺性。
Gas 费用的构成
在 2025 年的以太坊主网,一项标准交易会拆成两部分计费:
- Base Fee(基础费):协议根据上一区块拥挤程度自动调整,无法商议。
- Priority Fee(优先费 / 矿工小费):由发送者自行设置,交给验证者作为插队费。
如果只付 Base Fee,虽然交易“理论上”合法,却没有验证者愿意打包,最终石沉大海。想保证时效,就需要在上面的“插队费”里加 gwei。
Gas 费用如何计算?
来一个最短转账例子:Jordan 要给 Taylor 汇 1 ETH,按当前网络估算:
- Gas Limit = 21,000(标准 ETH 转账固定值)
- Base Fee = 10 gwei
- Priority Fee = 2 gwei
总费 = 21,000 × (10+2) = 252,000 gwei ≈ 0.000252 ETH
其中 Base Fee 部分会被协议直接销毁,其余 Priority Fee 归验证者。
“读”还是“写”——费用由这里开始分叉
| 操作类型 | 是否付 gas | 目的 | 是否被打包入区块 |
|——|——|——|——|
| Transaction(写链) | ✅ 需要 | 修改链上状态 | 是 |
| Call(读链) | ❌ 免费 | 查询当前状态、获取返回值 | 否 |
读者可以用 Metamask 切到本地测试网,分别跑“写”与“读”两类操作:就能看到控制台对 调用方法 与 发送交易方法 的 gas 预估差异,对上述列表有更直观认识。
Transaction Object 参数速查
当你手动构造交易或 DApp 前台替用户签名时,务必设置下列字段:
gasLimit:最多愿意耗多少 gas 单位。值过小会导致 Out of Gas 失败,已耗 gas 不会退还。maxFeePerGas:你愿意为每单位 gas 出的最高价 (Base + Priority)。maxPriorityFeePerGas:你给验证者的 最大 小费出价,实际可能更低。
London 升级(EIP-1559)前后的巨变
| 阶段 | 费用模型 | 参数 | 计算方式 |
|——|——|——|——|
| 2021 年 8 月前 | 单一 gasPrice | gasLimit & gasPrice | gasLimit × gasPrice |
| 2021 年 8 月后 | 拆分 Base + Priority | gasLimit & maxFeePerGas & maxPriorityFeePerGas | gasLimit × (Base + Priority) |
以 Alice 向 Bob 转 1 ETH 为例:
- 旧模型 200 gwei × 21,000 = 0.0042 ETH
- 新模型 12 gwei × 21,000 = 0.000252 ETH(Base Fee 被销毁)
可见 EIP-1559 引入 动态 Base Fee 后,一般用户享受到了明显的 以太坊 gas 费用 下降体验。
复杂交易如何预估 Gas?
EVM 每次操作都由 opcode(操作码)组成,官网给出精确到 1 个 gas 的计价表:
function doMath(uint a, uint b) {
a + b;
b - a;
a * b;
a == 0;
}- ADD:3 gas
- SUB:3 gas
- MUL:5 gas
- EQ:3 gas
共计 14 gas 单位。若你在 gasLimit 只填 6,交易会在第二句 subtraction 处停止,已消耗的 6 gas 不会返还,ETH 照扣。
真实项目中常用 web3.eth.estimateGas()(web3.js)或 provider.estimateGas()(ethers.js)提前算好,但 ⚠️ 遇到 循环长度未知、外部合约调用 时仍可能出现较大误差,最终把 max 提高 20–30% 作为保险。
降本 7 大策略
1. Layer-2 扩容方案
借助 Arbitrum、Optimism 这类 rollups,数百笔交易被“打包”成一笔上链,下层 gas 直接除以 50~100。
2. 选低谷时段上链
Etherscan 的 Gas Tracker 提供实时图:凌晨 2-7 UTC、gwei 常降至个位数。👇
👉 夜间交易真有那么潇洒?戳这里看看历史低值实例
3. 合并操作
把 5 次 DeFi 换币、质押、转账合成一个 multicall,省去 4 次基础费。
4. 精简合约代码
不要多余的大数组、不用的 mapping、冗余的 modifier,每 1 字节 写入状态都要 20,000 gas。
5. 使用 gas-efficient 模式
- 将
storage常数改用immutable或constant - 缓存到
memory再批量写storage - 复用逻辑库,模板合约再 clone 而非重复 deploy
6. 利用事件日志
事件日志(Event Logs)每字节仅 8 gas,远低于 storage 的 20,000 gas/32 字节。凡是 DApp 前端需要但合约本身不需要 on-chain 读取的数据,全用 emit 打日志。
7. 用 批量查询脚本 离线算
先做离线看板查询,再批量推送,别在前端动一动按钮就签一次名。
常见问题 FAQ
Q1:钱包显示的“推荐 gwei”就是一成不变的吗?
A:不是。Base Fee 每区块动态调整,钱包只是基于最近 1~3 个区块推测均值;当链上涌入 NFT 抢购、DeFi 黑客套利时,推荐的 30 gwei 也可能瞬间飙到 300 gwei。
Q2:为何在 Polygon、BSC 上几乎感觉不到 gas?
A:这些链目前采用 PoS/DPoS 与更少节点数,出块间隔短、容量大,因此单笔交易 gas 极低。不过它们并不是以太坊主网,需要桥接资产。
Q3:交易失败后,以太坊 gas 费用 会给退吗?
A:失败交易已耗 gas 不会退;只有当你给的 gasLimit 用“超出”系统实际所需时,剩余 gas 会立即返还。
Q4:优先费给少了,交易会卡多久?
A:理论上只要网络没被填满,48 小时内仍有机会被打包;但高峰期九成交易会在 5 分钟内暴跌出打包队列,长时间 Pending 最终失效,须手动 Speed Up 或 Cancel。
Q5:省 gas 与安全如何权衡?
A:一味砍存储变量、事件日志,可能导致业务逻辑难以审计。因此在 智能合约优化 过程中,每改一行代码都要跑完整单元测试与形式化验证。
Q6:有没有不开发也能省的手续费工具?
A:监控 “ETH Gas 实时看板”、使用“调度交易脚本”(定时+低谷 gas)、交易所内部转账(走中心化记账不耗链上 gas)都是入门捷径。
写在最后
Gas 是以太坊生态 安全、扩容、公平性 的三重保障。只要我们学会阅读网络深度、采用 Layer-2 以及代码层 降本增效 组合拳,任何级别的用户都能在 2025 年的链上世界畅享顺畅体验。祝各位下一次点击“Confirm”时,钱包再也不会弹出天价 gwei!