MODULE 2 · GAS 机制
Lesson 5: EIP-1559 与 Gas
📖 阅读 ~12 分钟🧪 3 个实验❓ 2 道测验
为什么需要 Gas?
Gas 是以太坊的计算计量单位。没有 Gas,任何人都可以写一个死循环合约,免费耗尽全网算力。Gas 解决两个问题:
🛡️ 防止滥用
- ✅ 每个操作都有 Gas 成本
- ✅ Gas 用完 → 交易回滚
- ✅ 死循环会因 gas limit 终止
📊 资源定价
- ✅ 网络繁忙 → Gas 贵
- ✅ 网络空闲 → Gas 便宜
- ✅ 市场化的区块空间拍卖
EIP-1559:Gas 定价革命
2021 年 8 月的伦敦升级引入了 EIP-1559,彻底改变了 Gas 定价方式:
❌ 旧模型(拍卖式)
- 💰 用户出价 gasPrice
- ⛏️ 矿工选最高价的交易
- 📈 价格波动剧烈,难以预测
- 💸 所有费用归矿工
✅ EIP-1559(动态调整)
- 🔥 Base Fee 由协议自动定价
- 💰 Priority Fee(小费)给验证者
- 📉 Base Fee 可预测,用户体验好
- 🔥 Base Fee 被销毁 → ETH 通缩
费用计算公式
// EIP-1559 交易费用
交易费 = gasUsed × (baseFee + priorityFee)
// 各部分去向:
baseFee × gasUsed → 🔥 销毁 (永久从流通中移除)
priorityFee × gasUsed → 💰 给验证者 (区块提议者)
// 用户设置:
maxFeePerGas = 你愿意支付的最高单价
maxPriorityFeePerGas = 你愿意给验证者的小费
// 实际支付:
effectiveGasPrice = min(maxFee, baseFee + priorityFee)
多付的部分会退还给你
Base Fee 的自动调节
Base Fee 不是固定的 —— 它根据上一个区块的 Gas 利用率自动调整:
// Base Fee 调节规则
目标利用率 = 50% (区块 gas limit 的一半)
上个区块利用率 > 50% → base fee 上涨 (最多 +12.5%)
上个区块利用率 < 50% → base fee 下降 (最多 -12.5%)
上个区块利用率 = 50% → base fee 不变
// 例:连续满块(100%利用率)
Block N: base fee = 10 gwei
Block N+1: base fee = 10 × 1.125 = 11.25 gwei
Block N+2: base fee = 11.25 × 1.125 = 12.66 gwei
// 指数增长!连续满块 20 个区块后,base fee 翻 10 倍
// 这就是为什么 NFT mint 高峰期 gas 飙升那么快
💡 关键理解
Base Fee 的调节机制让 Gas 价格可预测。你只需看当前 base fee,就知道下一个区块的 base fee 最多变化 ±12.5%。不再需要盲目出高价竞拍。
常见操作的 Gas 成本
| 操作 | Gas | 约 $(@10 gwei, ETH=$2500) |
| ETH 转账 | 21,000 | $0.53 |
| ERC-20 transfer | ~65,000 | $1.63 |
| ERC-20 approve | ~46,000 | $1.15 |
| Uniswap V3 Swap | ~150,000 | $3.75 |
| NFT Mint | ~100,000 | $2.50 |
| 合约部署(简单) | ~300,000 | $7.50 |
| 合约部署(复杂) | ~3,000,000 | $75.00 |
🔍 为什么 L2 便宜 100 倍
同样的 Uniswap swap 在 Arbitrum/Base 上只要 ~$0.01-0.05。L2 的 Gas 来自执行成本 + 向 L1 提交数据的成本(DA 费),后者被多笔交易平摊。
Gas Limit vs Gas Used
Gas Limit(区块级)
一个区块能容纳的最大 Gas 总量。当前以太坊约 30M gas
验证者可微调 ±1/1024
Gas Limit(交易级)
用户设定的 Gas 上限。用不完的会退还
ETH 转账: 设 21000 即可
Gas Used
交易实际消耗的 Gas。决定你真正支付多少
未用完的 gas 不收费
Gas Refund
清理 Storage(非零→零)可获得退款
最高退还 gasUsed 的 20%
⚠️ Gas Limit 设太低
如果交易执行到一半 Gas 用完了,交易会回滚(所有状态变更撤销),但Gas 不退!因为计算已经发生了。所以 Gas Limit 要设够。
🧪 动手实验
🔬 实验 1:查看实时 Gas 价格
多链 Gas 对比 —— 感受 L1 和 L2 的价格差异。
chainlab tool gas
思考:以太坊和 Arbitrum/Base 的 Gas 价格差多少倍?为什么?
🔬 实验 2:分析当前区块的 Gas 利用率
看看 base fee 是在上涨还是下降(利用率 vs 50% 目标)。
chainlab lab evm gas --chain ethereum
思考:如果利用率是 43%,下一个区块的 base fee 会怎样变化?
🔬 实验 3:解码交易看 Gas 消耗
找一笔真实交易,看它设了多少 Gas Limit,实际用了多少。
chainlab lab evm block latest --chain ethereum
从区块中挑一笔交易哈希,用 chainlab lab evm tx <hash> 解码。
❓ 自测
📝 本课小结
核心要点
1. Gas 是以太坊的计算计量单位,防止滥用并实现资源定价
2. EIP-1559: 交易费 = gasUsed × (baseFee + priorityFee)
3. Base Fee 被销毁 🔥,Priority Fee 给验证者
4. Base Fee 根据利用率自动调节(目标 50%,最大 ±12.5%/块)
5. Gas Limit 设太低会导致交易失败但 Gas 不退
←
→