十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

以太坊出块流程与区块高度:从交易打包到最终确认的完整指南

以太坊出块流程与区块高度:从交易打包到最终确认的完整指南 1. 引言以太坊作为全球最大的智能合约平台,其核心机制之一就是「出块」。每一笔交易从用户发起,到最终被确认写入区块链,中间经历了一系列复杂而精密的流程。理解以太坊的出块流程,不仅有助于开发者优化 DApp 的交易体验,也能帮助普通用户更好地理解 Gas 费为何波动、交易为何有时会卡住。本文将带你完整梳理以太坊(以 PoS 共识机制为主)的出块全流程,从交易进入交易池开始,到区块被最终敲定上链为止。2. 出块前的准备:交易的生命周期在讨论出块之前,我们先看一笔交易是如何进入待处理队列的。2.1 交易的创建与签名用户通过钱包(如 MetaMask)发起一笔交易,交易内容包括:nonce:该地址发起的交易序号,防止重放攻击;to:接收方地址;value:转账金额(以 wei 为单位);gasLimit:本次交易允许消耗的最大 Gas;maxFeePerGas/maxPriorityFeePerGas:EIP-1559 引入的费率字段;data:合约调用的 calldata。交易必须由发送方私钥签名,签名后的交易才能被广播到网络中。2.2 交易广播与交易池(Mempool)签名后的交易被广播到以太坊 P2P 网络,各节点收到后将其放入本地「交易池」(Mempool / TxPool)。交易池中的交易处于待确认状态,等待被区块提议者打包。节点在接收交易时会做基础校验:签名是否合法;nonce 是否合理;账户余额是否足够支付 Gas;Gas 上限是否超过区块 Gas 上限。校验通过后,交易进入交易池,并按 Gas 价格排序,等待被选中。3. 共识机制:PoS 下的出块角色以太坊在 2022 年 9 月完成「合并」(The Merge),共识机制从 PoW 切换为 PoS(权益证明)。在 PoS 下,出块不再依赖矿工算力,而是由验证者(Validator)负责。3.1 验证者与质押用户需要质押至少 32 ETH 才能成为验证者。验证者负责:提议新区块;对区块进行证明(Attestation);参与共识投票。3.2 出块角色的随机选取以太坊使用 RANDAO 机制,从所有活跃验证者中随机选出每一轮的「区块提议者」(Block Proposer)。RANDAO 的随机性来源于验证者提交的随机数混合,保证出块权分配的公平性与不可预测性。4. 出块流程:从提议到上链下面是以太坊 PoS 出块的核心流程,按时间顺序展开。4.1 第一步:提议者打包交易被选中的区块提议者从交易池中挑选交易,打包成一个候选区块。打包时遵循以下原则:按 Gas 价格从高到低优先打包;受区块 Gas 上限约束(当前约为 3000 万 Gas);优先打包高小费(priority fee)的交易,以最大化提议者收益。4.2 第二步:执行交易并计算状态提议者在本地的 EVM(以太坊虚拟机)中逐笔执行打包的交易,更新世界状态(账户余额、合约存储等),并计算:新的状态根(State Root);交易根(Transactions Root);收据根(Receipts Root)。这三个根会写入区块头,用于验证区块的正确性。4.3 第三步:广播候选区块候选区块构建完成后,提议者将其广播到网络中,其他验证者开始对该区块进行验证和证明。4.4 第四步:验证者证明(Attestation)其他验证者收到候选区块后,会独立执行区块中的交易,验证状态根是否一致。验证通过后,验证者对该区块投出「证明票」(Attestation),表明认可该区块。证明票包含:对当前区块的投票;对来源检查点(Source)和目标检查点(Target)的投票;验证者的签名。4.5 第五步:区块确认与敲定(Finality)以太坊采用 Casper FFG 最终性机制。当某个检查点(Checkpoint)获得超过 2/3 验证者的投票支持后,该检查点即被「敲定」(Finalized)。被敲定的区块不可回滚,交易被视为最终确认。从提议到最终敲定,通常需要约 12.8 分钟(两个 epoch)。5. 区块高度:链的「坐标」与「时钟」在以太坊中,每个区块都有一个唯一的整数编号,称为「区块高度」(Block Height)。创世区块的高度为 0,之后每出一个新区块,高度就加 1。区块高度看似只是一个简单的计数器,却在链的运转中扮演着多重关键角色。5.1 区块高度的定义与生成区块高度由区块头中的number字段记录。它由父区块高度加 1 得到,因此天然形成一条严格递增的链条。任何两个区块的高度都不会重复,这保证了链上区块的全局有序性。5.2 区块高度的作用一:定位与索引区块高度是定位链上数据的「坐标」。无论是查询某笔历史交易、某个合约状态,还是同步节点数据,都可以通过高度快速定位到对应区块。相比用区块哈希定位,高度更直观、更易比较大小。5.3 区块高度的作用二:衡量链的长度与进度区块高度直接反映了链的长度。高度越高,说明链上积累的区块越多、历史越久。对于新加入的节点,同步进度就是追赶当前高度;对于开发者,可以通过高度差估算网络处理了多少区块。5.4 区块高度的作用三:作为时间参考由于以太坊 PoS 下每个 Slot 约 12 秒、每个区块对应一个 Slot,区块高度可以近似当作「链上时钟」。通过两个区块的高度差,可以估算经过的时间。许多协议(如借贷、质押解锁)会用区块高度作为时间条件,而非依赖墙钟时间。5.5 区块高度的作用四:分叉与重组中的角色当网络出现分叉时,不同分支的区块高度可能相同。客户端遵循「最长链规则」选择累积难度更高(PoS 下为累积权重更高)的分支。区块高度帮助节点判断哪条链更长、更权威,从而在重组(Reorg)时正确切换。5.6 区块高度与最终性区块高度与最终性紧密相关。Casper FFG 机制中,检查点(Checkpoint)按高度对齐到每个 Epoch 的起始区块。当某个高度的检查点获得 2/3 验证者投票后即被敲定,该高度及之前的区块不可回滚。因此,区块高度也是判断「交易是否最终确认」的重要参考。5. 出块时间与 Slot / Epoch以太坊 PoS 的时间被划分为:Slot(时隙):每 12 秒一个 Slot,每个 Slot 最多出一个区块;Epoch(纪元):每 32 个 Slot 组成一个 Epoch,约 6.4 分钟。每个 Slot 开始时,系统从验证者集合中随机选出一名提议者。若提议者离线或未能及时出块,该 Slot 将产生「空区块」(Skip Slot),网络继续推进到下一个 Slot。6. 出块流程全景图下面用一张 Mermaid 流程图概括以太坊出块的全流程:
返回列表