引言
以太坊是一个基于交易的状态机,交易是唯一能够修改网络状态的方式。一笔简单的ETH转账从用户点击“发送”到最终链上确认,需要经过交易创建与签名、Gas费用设定、网络广播、交易池排队、区块构建与执行、共识确认等多个技术环节。本文将完整剖析ETH交易的生命周期。
一、交易发起与签名
1.1 以太坊账户模型
以太坊中有两种账户类型:外部拥有账户(EOA)和合约账户。EOA由私钥控制,与个人用户直接关联,可以发送交易并持有ETH。合约账户则受智能合约代码控制,无法主动发起交易,只能在收到交易时被动执行。因此,所有交易的发起者必须是EOA。
每个以太坊账户包含四个核心字段:nonce(交易计数器)、balance(ETH余额)、codeHash(合约代码哈希)和storageRoot(存储根哈希)。其中nonce是一个递增的整数,记录从该账户发送的交易次数,用于防止重放攻击——同一nonce的交易只能被执行一次。
1.2 交易的数据结构
一笔完整的以太坊交易需要包含以下信息:
from:发送方地址(EOA)
to:接收方地址(可以是EOA或合约地址)
value:转账的ETH数量(以wei为单位,1 ETH = 10¹⁸ wei)
nonce:发送方已发起交易的序号
gasLimit:用户预设的最大Gas消耗量
maxFeePerGas:愿意支付的每单位Gas的最高总费用
maxPriorityFeePerGas:支付给验证者的小费上限
input data:可选的附加数据字段
signature:发送方的数字签名
交易数据经过RLP(递归长度前缀)序列化编码后,再通过私钥签名,最终形成一条可广播的原始交易。
1.3 交易类型的演进
以太坊的交易格式经历了多次演进。最初是Legacy交易(Type 0),采用单一的gasPrice参数进行竞价。伦敦硬分叉后引入了EIP-1559交易(Type 2),将费用拆分为Base Fee和Priority Fee两部分。此后陆续增加了EIP-2930访问列表交易(Type 1)、EIP-4844 Blob交易(Type 3)以及Pectra升级中的EIP-7702授权交易(Type 4)。目前EIP-1559交易是绝大多数用户使用的默认格式。
二、Gas费用机制
2.1 Gas的本质
Gas是以太坊网络中衡量计算复杂度的核心单位,本质上是计算资源的量化指标。每一条EVM指令都有对应的Gas消耗量,转账操作约消耗21,000 Gas,而复杂的智能合约交互可能消耗数十万甚至上百万Gas。
2.2 EIP-1559的费费用结构
EIP-1559将交易费用分为两个部分:
基础费用(Base Fee):由协议根据网络拥堵程度动态计算的固定部分,是交易被打包必须支付的最低金额。基础费用会被系统直接销毁(burn),不再支付给验证者。这一销毁机制使ETH具备通缩潜力,网络活跃时销毁速度可能超过增发速度。
优先级费用(Priority Fee):用户自愿支付给验证者的“小费”,用于激励验证者优先处理该交易。优先级费用越高,交易越容易被提前打包进区块。
2.3 费用计算公式
EIP-1559下的Gas费用计算方式如下:
总费用 = Gas Used × (Base Fee + Priority Fee)
其中Gas Used是交易实际消耗的Gas数量(不超过gasLimit)。用户在交易中设置的maxFeePerGas是愿意支付的每单位Gas最高总价,实际支付时,若Base Fee + Priority Fee ≤ maxFeePerGas,则按实际值支付,差额部分退还;若Base Fee本身已超过maxFeePerGas,则交易无法被验证者接受。
2.4 费用优化策略
降低Gas费用有多种方法:在网络不拥堵的时段操作、调整优先级费用以平衡速度与成本、以及使用Layer 2网络(如Arbitrum、Optimism)进行交易,L2的Gas费用远低于主网。
三、Mempool:交易的等候区
3.1 交易池的运作机制
用户将签名后的交易广播到以太坊网络后,接收交易的节点首先验证签名的有效性、发送方余额是否充足以及nonce是否正确。验证通过后,交易被存入节点的内存池(Mempool)——节点RAM中的一个临时存储区域,存放所有已验证但尚未被打包进区块的交易。
Mempool本质上是一个等候区。由于区块有大小限制,每12秒左右只能打包有限数量的交易,因此交易必须在池中排队等待。节点的Mempool并不完全一致——由于网络传播的异步性,不同节点可能持有不同的待处理交易集合。
3.2 交易的传播
交易通过以太坊的去中心化P2P网络传播,使用RLPx和Wire Protocol等网络协议,确保区块生产者和验证者能够在Mempool中找到待处理的交易。当一个节点收到有效交易后,会将其转发给相邻节点,使得交易在整个网络中逐步扩散。这种广播机制保证了即使交易只发送给一个节点,最终也能被所有验证者知晓。
3.3 交易的替换与取消
用户可以通过发送相同nonce但费用更高的新交易来“替换”原交易,使其更快被打包。同样地,发送相同nonce但value为0的交易可以“取消”原交易——前提是原交易尚未被打包。如果费用设置过低,交易可能被从Mempool中“丢弃”,永久不会被打包。
四、区块构建与执行
4.1 验证者选择与区块提议
在以太坊的权益证明(PoS)共识下,时间被划分为12秒的“时隙”(slot)和32个时隙组成的“时段”(epoch)。每个时隙中,协议会随机选择一名验证者来提议区块,该验证者从Mempool中挑选交易并将其打包进新区块。
4.2 交易选择与排序
验证者(或区块构建者)在选择交易时并非遵循先进先出原则,而是优先选择优先级费用更高的交易,因为这部分费用直接作为小费归验证者所有。这解释了为何在高需求时期Gas费用会急剧飙升——用户通过竞价争夺有限的区块空间。
4.3 EVM执行与状态转换
以太坊可以理解为一个交易驱动的状态机:输入一笔交易(T),经过状态转换函数(Υ)处理后,从当前状态(σ)转换到新状态(σ′)。
当区块被提议后,其中的每一笔交易都会在以太坊虚拟机(EVM)中依次执行。对于一笔简单的ETH转账,EVM执行以下操作:
验证发送方的nonce与签名
扣除发送方的余额
增加接收方的余额
将发送方的nonce加1
如果交易调用的是智能合约,EVM会加载合约代码并逐条执行指令,每次状态变更都被记录在StateDB中。
4.4 交易回滚机制
交易执行过程中,如果任何一步出错(例如Gas不足、余额不足、合约调用失败),整个交易会被回滚,但已消耗的Gas费用不会退还。这就是为何gasLimit设置过低可能导致交易失败且损失Gas费用的原因。
五、共识与区块最终性
5.1 Gasper共识协议
以太坊的共识协议名为“Gasper”,由LMD GHOST和Casper FFG两个独立协议组合而成。LMD GHOST负责分叉选择规则,提供网络的活性(liveness);Casper FFG作为最终确定性小工具,为区块提供最终性(finality)。
5.2 见证投票与区块确认
每个验证者在每个时段中会以“见证”(attestation)的形式投出一票,投票内容包括对当前链头的认可和对最新两个时段的检查点投票。验证者的投票权重与其质押的ETH数量成正比,质押32 ETH即可成为验证者。
区块从被提议到最终确认需要经历多个阶段:
Latest:交易刚被包含在区块中,后续区块仍可能产生分叉导致重组
Safe(Justified):区块已获得超过2/3验证者投票支持,不太可能被重组
Finalized:区块已通过Casper FFG的最终确认机制,极不可能被回滚
5.3 最终性的时间与安全性
在当前以太坊网络中,一笔交易实现最终确定性通常需要64到95个区块,即大约15分钟。Casper FFG的两个时段(约12.8分钟)后,区块被最终敲定,此后若要回滚该区块,需要至少1/3的验证者销毁其质押ETH——攻击成本超过400万ETH。这种经济安全性使得已最终确认的交易几乎不可逆转。
六、交易生命周期的完整流程
综合以上各个环节,一笔ETH交易从用户发起到达成最终确认,经历以下完整的生命周期:
第一步——交易创建:用户在钱包中输入接收地址、转账金额和Gas设置,钱包构造交易对象。
第二步——交易签名:钱包使用用户的私钥对交易进行数字签名,证明交易的发起者是账户的合法持有人。
第三步——广播到网络:签名后的交易被发送到以太坊节点(可通过RPC调用直接提交,或通过钱包服务商间接转发)。
第四步——节点验证与入池:接收节点验证签名、余额和nonce,通过后将交易存入Mempool,并向相邻节点转发广播。
第五步——等待打包:交易在Mempool中等待被验证者选中。验证者按优先级费用从高到低排序,将交易打包进新区块。
第六步——区块提议:被选中的验证者在12秒时隙内生成区块,包含所选交易及见证投票信息,并广播到全网。
第七步——EVM执行:网络中的其他节点接收区块后,依次执行区块内的每笔交易,验证状态转换的正确性。
第八步——区块确认:区块被添加到链上后,其中的交易获得第一次确认。随着后续区块的追加,确认次数不断增加。
第九步——最终确认:经过约64-95个区块(约15分钟)和Casper FFG的最终性机制验证后,交易被最终确认,理论上不可逆转。
七、结语
一笔简单的ETH转账背后,是账户模型、Gas机制、Mempool队列、EVM执行和PoS共识等多个子系统协同工作的结果。从用户点击“发送”到15分钟后交易最终确认,交易经历了签名、广播、排队、打包、执行、见证、最终化等一系列精密流程。理解这些底层机制,不仅有助于开发者编写更高效的DApp,也能帮助普通用户在Gas费用高企时做出更明智的决策。随着以太坊的持续演进(如EIP-4844 Blob交易、EIP-7702账户抽象等新特性的引入),交易流程也在不断优化,朝着更高效率和更低成本的方向持续发展。
转载自CSDN-专业IT技术社区
原文链接:https://blog.csdn.net/weixin_38717458/article/details/159927688



