基本概念
以太坊的交易类型随着网络的发展和升级逐步演进,主要是为了满足不同的功能需求(如支付、合约调用、 gas 优化等)。以太坊支持多种交易类型,这些类型主要由以太坊改进提案(EIP)定义并引入。以下是主要的交易类型及其特点:
1. 传统交易(Legacy Transaction)
引入时间: 以太坊创世阶段(2015年)。
描述: 这是以太坊最早的交易类型,也是最基础的交易格式。
字段:
nonce: 账户的交易计数器。gasPrice: 用户愿意支付的 gas 单价(单位:wei)。gasLimit: 交易允许消耗的最大 gas 量。to: 接收地址(可以是外部账户或合约)。value: 转账的 ETH 数量(单位:wei)。data: 附加数据(用于合约调用)。v, r, s: 交易签名参数(基于ECDSA)。
用途: 用于转账 ETH 或调用智能合约。
特点 : 使用单一的 gasPrice,在伦敦升级(EIP-1559)前是唯一交易类型。现在仍被支持,但逐渐被新类型取代。
编码: RLP(递归长度前缀)编码,未优化 gas 机制。
2. EIP-155交易(带链ID的传统交易)
引入时间: EIP-155(2016年),因应对重放攻击引入。
描述: 在传统交易基础上增加了链ID(Chain ID),防止交易在不同以太坊网络(如主网和测试网)间重放。
字段: 在传统交易字段中新增:
chainId: 网络标识符(如主网为1,Ropsten为3)。
用途: 同传统交易,但更安全。
特点 : 通过将 chainId 纳入签名计算,避免跨链重放问题。现在的传统交易默认都包含 EIP-155。
3. EIP-2930交易(带访问列表)
- 
引入时间: EIP-2930(柏林升级,2021年4月)。
 - 
描述: 引入了访问列表(Access List),允许交易预先声明需要访问的状态(如账户余额或合约存储),以优化 gas 成本。
 - 
字段:
chainIdnoncegasPricegasLimittovaluedataaccessList: 一个列表,指定交易会访问的地址和存储键。yParity, r, s: 签名参数。
 - 
类型标识 : 前缀字节为
0x01。 - 
用途: 在复杂合约交互中降低 gas 费用。
 - 
特点:
- 通过预定义访问状态,减少因状态访问带来的额外 gas 成本。
 - 仍然使用单一 
gasPrice,与 EIP-1559 前的机制兼容。 
 
4. EIP-1559交易(动态费用交易)
- 引入时间: EIP-1559(伦敦升级,2021年8月)。
 - 描述 : 引入了动态费用机制,取代了单一的 
gasPrice,通过基础费用(Base Fee)和优先费用(Priority Fee)优化手续费市场。 - 字段 :
chainIdnoncemaxPriorityFeePerGas: 用户支付给矿工的优先费上限。maxFeePerGas: 用户愿意支付的总费用上限(包括基础费用 + 优先费)。gasLimittovaluedataaccessList: 可选的访问列表。yParity, r, s: 签名参数。
 - 类型标识 : 前缀字节为 
0x02。 - 用途: 转账 ETH 或调用合约,提供更可预测的费用。
 - 特点 :
- 基础费用由协议自动调整并销毁,优先费激励矿工。
 - 用户只需设置上限,费用更透明,目前是以太坊的主流交易类型。
 
 
5. EIP-4844交易(Blob交易,未来升级)
- 引入时间: EIP-4844(计划于Cancun-Deneb升级,2023-2024年逐步实现)。
 - 描述: 引入"Blob"数据结构,用于支持分片(Sharding)和Rollup,将大块数据(如Rollup的交易数据)存储在单独的临时空间,降低主链负担。
 - 字段 (预计):
- 类似 EIP-1559 的字段。
 blob: 附加的大数据块。blobGasLimit和blobGasFee: 用于 Blob 的 gas 参数。
 - 类型标识 : 前缀字节为 
0x03(待定)。 - 用途: 主要服务于Layer 2解决方案(如Optimistic Rollup、ZK-Rollup),降低数据存储成本。
 - 特点 :
- Blob 数据仅短期存储(约1-3个月),不永久占用主链空间。
 - 显著降低Rollup的交易费用。
 
 
交易类型对比
| 类型 | 引入时间 | 标识字节 | Gas机制 | 主要特点 | 
|---|---|---|---|---|
| 传统交易 | 2015 | 无 | 单一 gasPrice | 
基础格式,逐渐淘汰 | 
| EIP-155交易 | 2016 | 无 | 单一 gasPrice | 
增加链ID防重放 | 
| EIP-2930交易 | 2021 | 0x01 | 
单一 gasPrice | 
访问列表优化 gas | 
| EIP-1559交易 | 2021 | 0x02 | 
基础费 + 优先费 | 动态费用,主流类型 | 
| EIP-4844交易 | 2023-2024 | 0x03 | 
基础费 + Blob费用 | 支持Rollup,降低数据成本 | 
钱包中的实际应用
- 传统交易: 老版本钱包仍支持,用于兼容旧节点。
 - EIP-1559交易: 当前主流钱包(如MetaMask)默认使用,提供更好的费用预测。
 - EIP-2930交易: 在复杂DeFi操作中优化成本。
 - EIP-4844交易: 未来Layer 2钱包会广泛采用。
 
总结
以太坊的交易类型从最初的简单转账发展到支持复杂费用机制和Layer 2扩展,反映了网络对性能、成本和扩展性的持续优化。目前,开发者主要关注 EIP-1559 交易,而 EIP-4844 将进一步推动以太坊的生态发展。如果你对某种交易类型的实现细节(如构造EIP-1559交易的代码)感兴趣,可以告诉我,我会进一步展开!