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> 解码。

❓ 自测

检验你的理解

Q1: EIP-1559 中,Base Fee 被如何处理?

✅ 正确!Base Fee 被永久销毁 🔥,这让 ETH 具有通缩属性。只有 Priority Fee(小费)给验证者。
❌ 提示:EIP-1559 最革命性的设计就是 base fee 的去向。

Q2: 如果上一个区块 Gas 利用率是 80%,Base Fee 会?

✅ 正确!80% > 50% 目标,所以 base fee 上涨。涨幅与超出 50% 的程度成正比,最高 +12.5%。
❌ 记住:50% 是目标线。高于 50% → base fee 涨,低于 50% → base fee 降。

📝 本课小结

核心要点 1. Gas 是以太坊的计算计量单位,防止滥用并实现资源定价
2. EIP-1559: 交易费 = gasUsed × (baseFee + priorityFee)
3. Base Fee 被销毁 🔥,Priority Fee 给验证者
4. Base Fee 根据利用率自动调节(目标 50%,最大 ±12.5%/块)
5. Gas Limit 设太低会导致交易失败但 Gas 不退
上一课
Lesson 4: EVM 操作码
下一课
Lesson 6: Gas 估算与优化