一文了解以太坊交易类型和他们之间的区别

基本概念

以太坊的交易类型随着网络的发展和升级逐步演进,主要是为了满足不同的功能需求(如支付、合约调用、 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 成本。

  • 字段:

    • chainId
    • nonce
    • gasPrice
    • gasLimit
    • to
    • value
    • data
    • accessList: 一个列表,指定交易会访问的地址和存储键。
    • yParity, r, s: 签名参数。
  • 类型标识 : 前缀字节为 0x01

  • 用途: 在复杂合约交互中降低 gas 费用。

  • 特点:

    • 通过预定义访问状态,减少因状态访问带来的额外 gas 成本。
    • 仍然使用单一 gasPrice,与 EIP-1559 前的机制兼容。

4. EIP-1559交易(动态费用交易)

  • 引入时间: EIP-1559(伦敦升级,2021年8月)。
  • 描述 : 引入了动态费用机制,取代了单一的 gasPrice,通过基础费用(Base Fee)和优先费用(Priority Fee)优化手续费市场。
  • 字段 :
    • chainId
    • nonce
    • maxPriorityFeePerGas: 用户支付给矿工的优先费上限。
    • maxFeePerGas: 用户愿意支付的总费用上限(包括基础费用 + 优先费)。
    • gasLimit
    • to
    • value
    • data
    • accessList: 可选的访问列表。
    • yParity, r, s: 签名参数。
  • 类型标识 : 前缀字节为 0x02
  • 用途: 转账 ETH 或调用合约,提供更可预测的费用。
  • 特点 :
    • 基础费用由协议自动调整并销毁,优先费激励矿工。
    • 用户只需设置上限,费用更透明,目前是以太坊的主流交易类型。

5. EIP-4844交易(Blob交易,未来升级)

  • 引入时间: EIP-4844(计划于Cancun-Deneb升级,2023-2024年逐步实现)。
  • 描述: 引入"Blob"数据结构,用于支持分片(Sharding)和Rollup,将大块数据(如Rollup的交易数据)存储在单独的临时空间,降低主链负担。
  • 字段 (预计):
    • 类似 EIP-1559 的字段。
    • blob: 附加的大数据块。
    • blobGasLimitblobGasFee: 用于 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交易的代码)感兴趣,可以告诉我,我会进一步展开!

相关推荐
倒霉男孩15 天前
挖矿------获取以太坊测试币
区块链·以太坊·挖矿·测试币·水龙头
0x派大星1 个月前
区块链中的递归长度前缀(RLP)序列化详解
区块链·以太坊
我是前端小学生2 个月前
EIP-1559升级提案中是如何确定BASEFEE的
以太坊
罗_三金3 个月前
(3)solidity文件结构介绍
web3·去中心化·区块链·solidity·以太坊
杰哥的技术杂货铺3 个月前
以太坊账户详解
以太坊
howard20053 个月前
搭建私有链
以太坊·私有链
howard20054 个月前
初试以太坊Geth客户端
以太坊·geth客户端
天涯学馆5 个月前
以太坊基础知识结构详解
web3·以太坊
Daniel_1875 个月前
区块链技术与应用-PKU 学习笔记
区块链·以太坊·比特币