Ethereum TPS 与 Gas Limit 机制

引言

 

上个月(2022年9月15日) 以太坊完成了The Merge 升级,从工作量证明(PoW)转向权益证明(PoS)。这次升级让以太坊网络的出块时间更加稳定,从之前通过难度调整算法动态维持 12-15 秒出块,变为通过固定 Slot 时间稳定在 12 秒出块。然而,这个改变对整个网络的 TPS(每秒交易数)性能影响并不明显。

当前两个主流公链的 TPS 数据:

  • Bitcoin: 5-7 TPS
  • Ethereum L1: 12-17 TPS
  • Ethereum Layer 2: 数千 TPS(Arbitrum、Optimism 等)

TPS 的决定因素

那么,是什么决定了以太坊的 TPS 性能?我们先看一下 TPS 的计算公式:

TPS = 区块包含的交易数量 / 区块时间(12秒)

因此,在区块时间(分母)固定的前提下,要提升 TPS,就只能增加区块大小(分子),从而增加单位时间内的交易数量。

而增加区块大小并非没有代价,需要考虑以下技术限制因素:

1. 计算资源限制

根据以太坊扩容文档

  • 所有交易必须在 12 秒内执行完成
  • 验证者需要足够的计算能力处理更大的区块
  • 约 50 万验证者需要实时执行和投票

2. 网络传播限制

  • 区块必须在 4-8 秒内快速传播到全网
  • 更大的区块传播时间更长,影响网络同步效率
  • 延迟过高会导致更多的分叉和孤块

3. 存储要求

  • 全节点存储: ~1-2 TB(Pruned Mode,只保留最近 128 个区块的状态)
  • 归档节点存储: ~12+ TB(保留所有历史状态,持续增长)
  • 存储成本: 更大的区块意味着链上数据增长越快,成本越高

4. 去中心化平衡

  • 更大的区块会提高节点运行门槛(计算、存储、网络带宽)
  • 节点运行成本过高可能导致节点数量减少
  • 需要在性能和去中心化之间找到平衡

"The larger the block, the greater the computing power required to process them in time for the next slot. This is a centralizing force, which is resisted by capping block sizes."

Ethereum.org

综合以上限制因素,单个区块的容量不能随意增大,需要合理控制。 

Gas Limit: 灵活的区块容量控制

与比特币通过硬编码常量将区块大小固定在代码中不同,以太坊采用了更灵活的 Gas Limit 机制来控制区块大小。可以简单理解为:

Gas Limit = 区块容量上限  

下表回顾了以太坊从创世区块到现在的 Gas Limit 增长历程:

时间 Gas Limit 变化说明
2015-07-30 5,000 世区块(不包含交易)
2015-08-07 21,000 ↗ 首次提升
2015-08-08 3,141,592 ↑ 24小时内快速提升
2016-03-04 4,712,388 ↗ 继续提升
2016-09-22 1,000,000 ↘ DDoS 攻击,紧急降低
2016-10-14 500,000 ↘ 准备硬分叉,再次降低
2016-10-23 2,000,000 ↗ 硬分叉后恢复
2016-12-04 4,000,000 ↗ 恢复到攻击前水平
2017-05-31 4,712,388
2017-06-30 6,720,000
2017-12-10 8,000,000
2019-09-14 10,000,000 ↗ +25%
2020-06-19 12,000,000
2020-07-24 12,500,000
2021-04-19 15,000,000
2021年后 30,000,000 ↗ 翻倍(为 Layer 2 铺路)
2022-09-15 30,000,000 The Merge,保持不变

从历史数据可以看出明显的阶段性特征,在早期(2015-2017),由于用户少,提升 Gas Limit 风险小,2年内从 21K → 8M(380倍增长),到 2017-2022 开始放缓,随着网络规模增大(节点数量增多),5年内从 8M → 30M(3.75倍增长),之后的增加将会更加谨慎。

渐进式调整机制

历史上的每一次gas limit调整并非某个时刻突然发生,而是基于以太坊协议的原生特性——渐进式调整机制实现的。该机制从创世区块(2015年7月30日)就存在,在以太坊黄皮书中有明确定义:

验证者可通过共识调整,每个区块的 Gas Limit 可以在父区块 Gas Limit 的基础上 ±1/1024

举个具体例子,如果要从 45M 提升到 150M:

理论最快时间 = (150M - 45M) / (45M / 1024) ≈ 2,389 个区块 ≈ 8 小时

但实际上需要数天甚至数周,因为:

  • 不是所有验证者都会立即投票增加
  • 需要社区讨论达成共识
  • 客户端需要更新配置
  • 需要观察网络表现

为什么采用渐进式机制?

  1. 防止单点控制:单个验证者无法突然大幅改变网络参数
  2. 给节点反应时间:节点运营者有时间升级硬件或调整配置
  3. 应急响应能力:可以快速降低 Gas Limit 应对攻击(2016年 DDoS 攻击证明)
  4. 市场化共识:验证者用"脚"投票,多数倾向决定方向

Gas 消耗机制

接下来我们看一下 Gas Limit 如何控制区块大小。根据以太坊 Gas 文档,所有链上交易都会消耗 Gas,例如:

  • 简单 ETH 转账: 21,000 Gas
  • ERC-20 代币转账: ~65,000 Gas
  • Uniswap 交易: ~150,000 Gas
  • 复杂智能合约: 200,000+ Gas
  • 实际平均: ~150,000 Gas(混合交易类型)

以太坊对 Gas 费计算有一套严格的官方定义,详见 Gavin Wood 编写的以太坊黄皮书(Yellow Paper),其中对每个 EVM 操作都有精确定义的 Gas 消耗。

Gas 费计算公式

Gas 费 = Gas 使用量 × Gas 价格(Gwei)

EVM 操作码 Gas 消耗表

基于官方技术规范,每个操作的固定成本:

// 基础操作(低成本)
const basicOperations = {
    ADD: 3,           // 加法运算
    SUB: 3,           // 减法运算
    MUL: 5,           // 乘法运算
    DIV: 5,           // 除法运算
    LT: 3,            // 比较运算
    POP: 2,           // 栈操作
    PUSH1: 3,         // 推入数据
};

// 存储操作(高成本)
const storageOperations = {
    SLOAD: 800,       // 从存储读取
    SSTORE: 20000,    // 写入新存储槽
    SSTORE_RESET: 5000, // 修改现有存储槽
};

// 系统操作(最高成本)
const systemOperations = {
    CALL: 700,        // 调用合约
    CREATE: 32000,    // 创建合约
    SELFDESTRUCT: 5000, // 销毁合约
};

常见交易类型 Gas 分解

简单 ETH 转账(21,000 Gas)

  • 基础交易成本:21,000 Gas(协议层优化的固定值)
  • 包含:签名验证、状态更新、余额修改等所有操作

ERC-20 代币转账(~65,000 Gas)

  • 基础交易成本:21,000 Gas
  • 合约调用:700 Gas
  • 存储读写:~43,000 Gas(读取和更新余额)
  • 事件日志:~300 Gas

复杂 DeFi 操作(200,000+ Gas)

  • 多个合约调用
  • 大量存储读写操作
  • 复杂计算逻辑
  • 多个事件日志

基于 Gas Limit 的 TPS 计算

现在我们可以更准确地计算 TPS:

TPS = (Gas Limit / 平均每笔交易 Gas 消耗) / Slot 时间(12秒)

参考Chainspect 实时数据,以当前 Gas Limit 45,000,000 为例:

  • 理论最大 TPS: (45,000,000 / 21,000) / 12 ≈ 179 TPS
  • 实际 TPS: (45,000,000 / 150,000) / 12 ≈ 25 TPS

可以看到实际 TPS 远低于基于简单 ETH 转账评估的理论最大值,主要原因是交易类型多样化,复杂合约调用占比高

操作类型 Gas 消耗 相对倍数
ETH 转账 21,000 1x(基准)
ERC-20 转账 65,000 3x
Uniswap Swap 150,000 7x
复杂合约调用 500,000+ 24x+

以太坊的价值在于智能合约,而非简单支付。网络上充斥着各种复杂操作,如:

  • DeFi 协议(Uniswap、Aave、Compound)
  • NFT 交易(OpenSea)
  • 稳定币转账(USDT、USDC)
  • 跨链桥操作
  • DAO 治理投票

这些复杂交易拉高了平均 Gas 消耗,导致实际 TPS 显著低于理论值。

结语

通过以上原理探讨,我们可以得出一些关键结论:

  1. Gas Limit 是区块容量的核心控制机制
    • 直接决定每个区块能包含多少交易
    • 通过渐进式调整机制(±1/1024)实现去中心化治理
  2. TPS 受多重因素制约
    • 固定的 12 秒区块时间(PoS 共识机制设计)
    • 交易复杂度差异巨大(21K - 500K+ Gas)
    • 实际 TPS 远低于理论值是正常现象
  3. 性能与去中心化的权衡
    • 更大的区块需要更强的硬件支持
    • 节点运行成本上升可能损害去中心化
    • 以太坊选择优先保证去中心化和安全性
  4. Layer 2 将是ETH主要扩容方向
    • L1 专注于安全性和去中心化
    • L2 提供高性能执行环境(数千 TPS)
    • 两层协同实现整体扩容目标

Ethereum 的 17-25 TPS 不是"慢",而是"复杂"。每笔交易执行的是图灵完备的智能合约,需要全网几十万验证者独立验证,并永久存储状态变化。这是在去中心化 + 可编程性 + 安全性三角平衡下的理性选择。

Next Post Previous Post
No Comment
Add Comment
comment url