EIP-3756 解读:为以太坊区块 Gas Limit 设定协议内上限(30,000,000)
2026/9/15 13:11:08 网站建设 项目流程

EIP-3756 解读:为以太坊区块 Gas Limit 设定协议内上限(30,000,000)

【免费下载链接】EIPsThe Ethereum Improvement Proposal repository项目地址: https://gitcode.com/GitHub_Trending/ei/EIPs

导读

EIP-3756(Gas Limit Cap)是一项提交于 2021 年、面向以太坊共识层(Core 类别)的标准轨道提案:它建议在协议层面直接设定区块gas_limit的硬性上限为 30,000,000,凡是gas_limit超过该值的区块一律视为无效。本文以 EIPS/eip-3756.md 为骨架,结合本仓库中 EIP-7783、EIP-7790、EIP-7825、EIP-1559 等关联提案,系统讲解该提案的动机、规范、设计权衡与安全考量,帮助你理解"谁来控制区块大小"这一以太坊治理与扩容议题中的关键一环。

提案概览

该文档的元信息(Preamble)记录了提案的基本身份:

字段
EIP 编号3756
标题Gas Limit Cap(Gas Limit 上限)
描述Set an in-protocol cap for the gas limit
作者lightclient (@lightclient)
状态Stagnant(停滞)
类型Standards Track(标准轨道)
类别Core(核心,需共识分叉)
创建日期2021-08-21

按照 EIP-1 的流程定义,Core 类别意味着该改动需要一次网络升级(consensus fork)才能生效;而Stagnant状态表示提案在 Draft/Review/Last Call 阶段超过 6 个月无进展后被算法性地标记为停滞,作者或 EIP 编辑可以将其重新激活回 Draft 状态。当前仓库中该提案处于停滞状态,说明它未被纳入任何已确定的主网升级,属于"已归档但可复活"的候选设计。

摘要:一行话的规范

提案的 Abstract 非常简洁:

为 gas limit 设定一个协议内上限:30,000,000。

即:自某个分叉区块N起,任何gas_limit大于30,000,000的区块被视为无效区块。这是整份 EIP 的技术核心——一个共识级的区块有效性约束,不依赖矿工或验证者自律,而是由协议直接拒绝违规区块。

动机:高 Gas Limit 带来的双重压力

提案指出,过高的 gas limit 会给网络带来两类压力:

  1. 良性情形下的不可持续增长:更大的区块意味着状态(state)与历史数据(history)的增长速度超过网络可持续承载的能力。区块越大,全节点存储、同步、执行的开销越高,去中心化程度随之下降。
  2. 恶意情形下的攻击放大:过高的 gas limit 会放大某些拒绝服务(Denial-of-Service)攻击造成的破坏。攻击者可以把更多恶意/重计算交易塞进单个区块,使受害节点在单个区块内承受远超预期的处理负担。

这一动机与仓库中其他提案相互印证:例如 EIP-2045 明确指出,提高区块 gas limit 会成比例地加快状态增长,除非同时等比例上调SSTORECREATE等状态膨胀操作码的费用——这正是 EIP-3756 所担忧的"良性情形"的量化版本。

规范:最小化的共识改动

规范部分只有一句话,这是以太坊 Core EIP 中罕见的极简设计:

自分叉区块N起,gas_limit大于30,000,000的区块视为无效。

实现层面的含义非常直接:

  • 客户端在区块验证逻辑中新增一条硬性检查:if block.gas_limit > 30_000_000: reject
  • 分叉区块N需要在实际激活时确定(提案中未定死,属于 TBD 项);
  • 该检查属于区块有效性(block validity)判定,而不是交易有效性判定——它约束的是出块方提交的区块头,而不是单笔交易。

参考同类提案的写法,EIP-7783 在描述"受控 gas limit 增长策略"时,将当时主网的当前 gas limit 记为30_000_000("initialGasLimit to the current gas limit (30_000_000)"),这印证了 EIP-3756 选值的历史背景:30M 是 2021 年前后以太坊主网的实际运行水位,将其固化为上限相当于"以现状为天花板"。

理由(Rationale):为什么这样设计

为什么要给 Gas Limit 设上限

提案的核心论据是治理与安全主权的归属问题

  • 当前 gas limit 由区块提议者(block proposer)控制,他们理论上可以把 gas limit 调到任意他们想要的值;
  • 这给了提议者绕开 EIP 流程和 All Core Devs(核心开发者)会议共识的能力——他们可以单方面做出影响网络安全性与去中心化的协议级决定;
  • 通过协议内硬上限,把"区块大小能膨胀到什么程度"这一安全关键参数从提议者手中收回,交还给社区协商流程。

换言之,EIP-3756 不是要取消提议者调节区块大小的能力,而是要剥夺他们无限上调的能力。这一立场与后续提案一脉相承:EIP-7783 批评"gas limit 常由矿工/验证者按个人偏好手动调整,导致区块大小与网络性能不可预测",EIP-7790 则为受控增长设定了60_000_000的上限,明确"防止 gas limit 无限增长、避免网络被超大区块压垮"——两者都延续了 EIP-3756 提出的"上限必须存在"这一核心思想。

为什么不是固定 Gas Limit

提案特别强调保留提议者下调gas limit 的能力:

  • 如果网络变得不稳定,或正遭受特定类型的攻击,提议者需要能快速把 gas limit 降下来
  • 因此本提案只约束上限(30,000,000以上无效),低于30,000,000 的任意值仍然合法。

这是"上限(cap)"与"固定值(fixed value)"的关键区别:cap 是单向约束,保留了系统的弹性伸缩能力;fixed value 则是双向锁死,会剥夺网络在压力下的自救手段。这一设计在 EIP-1559 的框架下也自洽——EIP-1559 将区块 gas target 设定为block_gas_limit / elasticity_multiplier,并依据上一区块的实际用量上下调节 base fee,区块 gas limit 本身仍是一个可被协议内规则约束的独立参数。

与生态中相关提案的关系

EIP-3756 虽然停滞,但它提出的"gas limit 上限"概念在后续提案中被反复继承与细化:

关联提案关系状态
EIP-7783(受控 gas limit 增长策略)提出线性/阶梯式自动上调 gas limit,同样以30_000_000为主网现状、并引入gasLimitCap上限参数Stagnant
EIP-7790(EIP-7783 的参数化)为受控增长指定具体参数,gas limit cap 为60_000_000,并同样强调防止网络被超大区块压垮Stagnant
EIP-7825(交易级 gas limit 上限)把"上限"思想从区块级延伸到单笔交易的 gas limit(主网示例为2^24 = 16,777,216进行中
EIP-2045(燃料成本与容量)论证提高 gas limit 与状态增长、操作码定价之间的耦合关系,是 EIP-3756 动机的量化支撑Draft
EIP-1559(费用市场)定义了区块 gas target 与弹性系数,gas limit 仍是区块有效性中的独立参数Final

从这些提案可以看出,围绕"区块/交易 gas limit 到底该由谁、以何种规则决定",社区逐步形成了"协议内上限 + 受控增长 + 交易级上限"的组合方案,而 EIP-3756 正是这一思路最早的简洁表达之一。

向后兼容性、测试与安全考量

向后兼容性

提案原文声明"无向后兼容问题(No backwards compatibility issues)"。原因在于:30,000,000 是当时主网的实际 gas limit 水平,规范只拒绝高于该值的区块,而历史区块与现有交易格式均不受影响。不过需要说明,任何 Core 类共识改动实际激活时都需要客户端升级与网络协调(fork),这一点可以从 EIP-1 对 Core EIP 需经 All Core Devs 流程并取得实施支持的描述中确认。

测试用例

原文档标注为TBD(待定)。从规范的可测试性出发,可以推断理想的测试覆盖包括:

  • 构造gas_limit恰为30,000,000的区块——应为合法;
  • 构造gas_limit30,000,001的区块——应被拒绝;
  • 分叉区块N前后的行为差异(N之前不受限,N之后受限);
  • 确认低于上限的区块(例如紧急下调场景)不受影响。

需要注意的是,这些测试细节是本文基于规范语义的推演,原提案尚未提供具体测试向量。

安全考量

原文档标注"无安全考量(No security considerations)"。结合动机与理由可以理解其立场:该改动降低了由 gas limit 无上限膨胀带来的 DoS 放大与状态增长风险,同时通过保留下调能力避免削弱网络应对攻击的灵活性,因此作者认为不引入新的安全面。当然,停滞状态的提案未经过完整的社区安全评审,这一点应在引用时如实说明。

如何继续深入

  • 阅读提案原文:EIPS/eip-3756.md;
  • 了解 Core EIP 的流程与状态定义:EIPS/eip-1.md;
  • 对比受控增长与上限思路:EIPS/eip-7783.md、EIPS/eip-7790.md;
  • 了解交易级 gas limit 上限的最新演进:EIPS/eip-7825.md;
  • 结合费用市场机制理解 gas limit 的角色:EIPS/eip-1559.md。

总结

EIP-3756 是一份极简但立意明确的 Core 提案:用一行协议规则,把区块 gas limit 的膨胀空间锁死在 30,000,000 之内,同时保留提议者向下调节的灵活性。它提出的"协议内上限"理念,在此后的受控增长(EIP-7783/7790)与交易级上限(EIP-7825)提案中持续回响。尽管该提案目前处于 Stagnant 状态、未被纳入任何已确定升级,但它清晰呈现了"区块大小上限"这一参数在以太坊治理、安全与扩容三角中的核心位置,是理解以太坊 gas 机制演进的重要历史节点。

【免费下载链接】EIPsThe Ethereum Improvement Proposal repository项目地址: https://gitcode.com/GitHub_Trending/ei/EIPs

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询