:2026-03-26 18:21 点击:6
在以太坊生态中,每一笔转账、合约交互或链上操作都离不开一个核心载体——交易格式,它如同每笔交易的“数字身份证”,规定了数据如何被网络识别、验证和执行,从最初的以太坊经典(Ethereum Classic)分叉到EIP(以太坊改进提案)的不断迭代,以太坊交易格式始终在平衡安全性、灵活性与可扩展性,本文将深入拆解以太坊交易格式的结构、核心字段、演进历程及实践应用,帮助读者理解这笔“数字身份证”如何支撑起庞大的去中心化应用生态。
以太坊交易格式本质是一个RLP(递归长度前缀编码)编码的数据结构,由多个字段按固定顺序排列而成,无论是早期的传统交易(Legacy Transaction),还是EIP-1559引入的新型交易,其核心字段逻辑一脉相承,以下以当前主流的EIP-1559交易(伦敦硬分叉后成为标准)为例,拆解其结构:
transfer函数时,data为0xa9059cbb+接收地址+金额); 伦敦硬分叉(2021年)通过EIP-1559引入了“基础费+小费”的gas定价模型,新增以下字段:
上述字段按固定顺序(nonce, gasPrice, gasLimit, to, value, data, v, r, s,EIP-1559新增maxPriorityFeePerGas和maxFeePerGas)通过RLP编码串联成最终的交易数据,RLP的优势是简洁高效,适合区块链网络传输和存储。
以太坊交易格式的演进始终围绕gas机制优化和安全性增强展开,主要经历了三个阶段:
以太坊早期采用固定gasPrice机制,发送者需手动预估gas价格,网络拥堵时易出现“gas战争”(用户竞相抬高gas价抢跑),此时交易格式不含maxPriorityFeePerGas和maxFeePerGas,v字段格式为{27, 28} + 链ID,存在跨链重放攻击风险。
柏林硬分叉引入EIP-2930,新增accessList(访问列表)字段,允许发送者预先声明交易将访问的合约地址和存储槽,使验证者(矿工)提前缓存数据,降低合约交互的gas消耗,但该格式未改变gas定价核心,普及度有限。
伦敦硬分叉通过EIP-1559彻底重构gas定价模型:
理解交易格式后,我们通过一个“发送ETH”的实例,看看交易如何在链上流转:
使用以太坊官方库web3.js或ethers.js构建一笔EIP-1559交易:
const transaction = {
nonce: await web3.eth.getTransactionCount(senderAddress), // 获取发送者nonce
to: recipientAddress, // 接收地址
value: web3.utils.toWei('0.1', 'ether'), // 转账0.1 ETH
maxPriorityFeePerGas: web3.utils.toWei('2', 'gwei'), // 优先费2 Gwei
maxFeePerGas: web3.utils.toWei('20', 'gwei'), // 最高总费用20 Gwei
gasLimit: 21000, // 普通转账gas限额固定为21000
chainId: 1, // 以太坊主网链ID
type: 0x2 // EIP-1559交易类型(0x2)
};
发送者通过私钥对交易进行ECDSA签名,生成r、s、v字段,然后将RLP编码后的交易数据广播到以太坊网络,验证者(节点)收到交易后,会验证:
验证者打包交易后,执行交易并扣除gas费:
随着以太坊向“分片+Rollup”架构演进,交易格式将继续迭代:

本文由用户投稿上传,若侵权请提供版权资料并联系删除!