以太坊的每一次状态更新背后,都离不开“交易”的驱动。本文将系统解析以太坊交易的构造、生命周期和执行机制,并深入剖析 Gas 的作用、计费模型与 EIP-1559 升级影响。掌握交易与 Gas 的核心机制,是开发高性能合约与优化用户体验的基础。
📚 作者:Henry 👨💻 受众:Web3 开发者 / 区块链学习者 👉 系列持续更新中,建议收藏专栏或关注作者。
在以太坊中,任何状态的改变,皆源自一笔交易。无论是:
本质上都由一笔发起自 EOA(外部账户) 的交易完成。交易是 Ethereum 状态机的驱动器,通过它触发 EVM 执行、修改状态、扣除 Gas 并最终上链。
一笔交易,是一个结构明确的字节序列(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; // 签名字段(确定交易合法性)
}
to
为目标地址,data
为空;data
编码为 functionSelector + 参数
;to = null
,data
是创建字节码(含 constructor)。graph TD
A[构造交易] --> B[签名交易]
B --> C[通过节点广播]
C --> D[节点本地 mempool]
D --> E[打包进区块]
E --> F[EVM 执行]
F --> G[状态变更 + Gas 扣除]
交易的生命周期包含以下步骤: | 阶段 | 描述 |
---|---|---|
1️⃣ 构造交易 | 用户端构建交易结构并签名 | |
2️⃣ 广播网络 | 节点将交易转发至 P2P 网络 | |
3️⃣ Mempool | 节点暂存所有待打包交易 | |
4️⃣ 打包进区块 | 验证者选择交易排序并打包 | |
5️⃣ EVM 执行 | 调用函数、更新状态、计算 Gas | |
6️... |
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!