以太坊的每一次状态更新背后,都离不开“交易”的驱动。本文将系统解析以太坊交易的构造、生命周期和执行机制,并深入剖析 Gas 的作用、计费模型与 EIP-1559 升级影响。掌握交易与 Gas 的核心机制,是开发高性能合约与优化用户体验的基础。

✦ 1. 一切皆交易:状态更新的起点

在以太坊中,任何状态的改变,皆源自一笔交易。无论是:

本质上都由一笔发起自 EOA(外部账户) 的交易完成。交易是 Ethereum 状态机的驱动器,通过它触发 EVM 执行、修改状态、扣除 Gas 并最终上链。


✦ 2. 交易数据结构详解

一笔交易,是一个结构明确的字节序列(RLP 编码),其字段如下:

interface Transaction {
  nonce: number;               // 防止重放的计数器
  gasLimit: number;            // 可消耗的最大 Gas
  maxFeePerGas?: bigint;       // 用户愿意支付的最大单价(EIP-1559)
  maxPriorityFeePerGas?: bigint; // 给出块者的小费
  to: string | null;           // 接收地址,null 表示部署合约
  value: bigint;               // ETH 转账金额
  data: bytes;                 // 合约调用或部署代码
  v, r, s: bytes;              // 签名字段(确定交易合法性)
}

✦3. 交易的生命周期

graph TD
  A[构造交易] --> B[签名交易]
  B --> C[通过节点广播]
  C --> D[节点本地 mempool]
  D --> E[打包进区块]
  E --> F[EVM 执行]
  F --> G[状态变更 + Gas 扣除]

交易的生命周期包含以下步骤: