仅供教育参考,不构成财务或安全建议。Gas 上限、目标、计价规则、单笔交易上限、操作码成本和客户端策略会因链、分叉及观察时间而异。
直接答案
区块 Gas 上限是记录在以太坊区块头中的执行 Gas 容量上限。区块收录的交易必须符合协议的核算规则,使总 gasUsed 不超过 gasLimit。Gas 是一种抽象计量单位,其操作码、调用数据、内存、存储和退款规则会随分叉变化;它不直接等于 CPU 指令数、字节数或交易数。
Fusaka 后,以太坊主网客户端协调采用的基准为每区块 60,000,000 gas,但实际区块头才是权威值,验证者偏好仍可依当前相对父区块规则逐步调整上限。EIP-1559 的弹性系数为 2,长期目标因此是 30,000,000 gas;区块可暂时用满上限,而父区块用量超过目标时,下一块的基础费会上升。EIP-7825 另将用户交易声明的 Gas 上限限制为 2^24 = 16,777,216 gas,EIP-7934 则独立规定 8,388,608 bytes 的 RLP 执行区块上限。这些数值只适用于特定日期的主网,并非通用 EVM 常量。
工作原理
- 固定链、网络、区块哈希和编号、已激活分叉、客户端或 RPC 以及观察时间。读取区块头的
gasLimit、gasUsed和baseFeePerGas,不要用网站的静态参数表代替。 - 区分区块 Gas 上限、EIP-1559 Gas 目标、交易声明的 Gas 上限、交易实际 Gas 使用量和每单位 Gas 价格。还要区分执行 Gas、Blob Gas、RLP 执行区块字节数以及 L2 特有计量方式。
- 按已激活的 Gas 规则复现交易有效性和执行。纳入固有 Gas、调用数据、访问列表、内存扩展、冷访问与热访问、存储写入、预编译合约和退款。估算取决于状态及区块标签,并非保证。
- 对账区块容量。汇总收据 Gas 使用量,或使用最后一张收据的累计值,确认
gasUsed <= gasLimit,并考虑交易顺序和状态相关成本。交易数既不等于 Gas 上限,也不代表固定 TPS。 - 正确应用 EIP-1559。弹性系数为
2时,目标为gasLimit / 2;父区块用量高于目标会提高下一块基础费,低于目标则会降低。依当前规则,子区块上限还必须处在相对父区块约1/1024的严格范围内。基础费为需求定价,上限则约束可接纳的执行工作量。 - 检查运行边界。即使区块仍有 Gas 空间,超过已激活单笔上限的交易也无效;即使总 Gas 低于上限,过大的 RLP 执行区块同样无效。未使用的交易 Gas 配额会释放,退款计数器则是另一个受分叉上限约束的减免机制。
REVERT会保留剩余 Gas,而顶层执行耗尽 Gas 会回滚状态并用完所提供的执行配额。 - 对满块执行时间、状态增长、区块传播、漏块、链重组、构建者与验证者容量、客户端多样性和参数变化进行压力测试和监控。将实际区块与节点指标对照后,才能把更高上限视为可持续吞吐。
实例
- 简单转账上界。 在
60,000,000 gas上限下,一个区块理论上可容纳floor(60,000,000 / 21,000) = 2,857笔普通 ETH 转账。30,000,000 gas目标可容纳1,428笔;按理想化的12-second时隙计算,即1,428 / 12 = 119 transactions/second。这只是同质交易的上界示例,并非实测 TPS。 - 混合目标区块。 假设一个目标区块包含转账
400 * 21,000 = 8,400,000 gas、兑换80 * 180,000 = 14,400,000 gas,以及合约部署6 * 1,200,000 = 7,200,000 gas。总用量为30,000,000 gas,共486 transactions;在既定时隙假设下为486 / 12 = 40.5 transactions/second。同一 Gas 目标可支持截然不同的交易数量。 - 交易上限与实际收费。 某交易声明
200,000 gas,但成功执行时gasUsed = 146,000。有效价格为22 gwei时,费用是146,000 * 22 = 3,212,000 gwei = 0.003212 ETH;未使用的54,000 gas不收费。相比之下,声明18,000,000 gas超过当前16,777,216 gas协议上限,无论区块剩余容量多少都无效。 - 基础费响应。 当
gasLimit = 60,000,000时,目标是30,000,000。基础费从24 gwei起,父区块用满60,000,000 gas会使下一块基础费按最高12.5%上升至27 gwei;空父区块则使其下降12.5%至21 gwei。这不会改变区块上限,也不保证下一块的利用率。
风险
- 使用过时的主网 Gas 上限值。
- 把以太坊参数套用到其他 EVM 链或 L2。
- 混淆区块上限与 EIP-1559 目标。
- 混淆区块上限与单笔交易上限。
- 混淆交易声明的 Gas 与实际 Gas 使用量。
- 把 Gas 当作固定的 CPU、字节或交易单位。
- 使用过时的操作码、调用数据或退款规则,或忽略独立的 RLP 区块大小上限。
- 使用
eth_estimateGas时未指定预期状态和区块标签。 - 忽略状态相关执行和交易顺序。
- 混淆未使用的交易配额与独立的退款计数器。
- 忽略执行耗尽 Gas 或回滚时仍需支付的 Gas。
- 把执行 Gas 与 Blob Gas 当作同一资源。
- 只用同质转账推导 TPS。
- 忽略漏块、链重组和最终性延迟。
- 增加最坏情况下的区块执行与传播时间。
- 加快状态增长并提高归档要求。
- 提高验证者、构建者和 RPC 的硬件要求。
- 增加中心化或客户端分歧风险。
- 漏掉验证者偏好、客户端默认值或分叉变更。
- 把更高容量误当成费用或需求必然降低。
常见误区
- 区块 Gas 上限是固定且通用于以太坊或 EVM 的常量。
60,000,000 gas上限表示每个区块都应使用 6000 万 Gas,或 EIP-1559 目标也是 6000 万。- 用区块上限除以
21,000就能得到链的真实 TPS。 - 只要区块有空间,单笔交易就可用完整个区块;当前单笔上限是独立约束。
- 提高 Gas 上限会自动降低费用,而无需承担节点、状态、传播、需求或中心化方面的权衡。
相关主题
来源
- Ethereum gas and fees: technical overview - Ethereum.org(访问日期:2026-08-18)
- EIP-1559: Fee market change for ETH 1.0 chain - Ethereum Improvement Proposals(访问日期:2026-08-18)
- EIP-3529: Reduction in refunds - Ethereum Improvement Proposals(访问日期:2026-08-18)
- EIP-7825: Transaction Gas Limit Cap - Ethereum Improvement Proposals(访问日期:2026-08-18)
- EIP-7934: RLP Execution Block Size Limit - Ethereum Improvement Proposals(访问日期:2026-08-18)
- EIP-7935: Set default gas limit to 60M - Ethereum Improvement Proposals(访问日期:2026-08-18)
- Fusaka Mainnet Announcement - Ethereum Foundation Blog(访问日期:2026-08-18)
- JSON-RPC API - Ethereum.org(访问日期:2026-08-18)