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 流程图概括以太坊出块的全流程:
企业数字化 ERP 产品动态
相关推荐
明富MF-8501包埋柠檬酸:为什么更适合糖果外撒酸粉 明富MF-8501包埋柠檬酸:为什么更适合糖果外撒酸粉
直接答案
明富MF-8501是一款油脂疏水型包埋柠檬酸,主要面向软糖、硬糖、夹心糖、糖果棒表面外撒酸粉。它要解决的核心问题是:普通柠檬酸易吸潮并可能与体系中其他组分提前接触,造… · 2026/9/24 5:14:26
LeetCode 438:找到字符串中所有字母异位词——定长窗口 + 欠债种类数 题目描述给定两个字符串 s 和 p,找到 s 中所有 p 的异位词子串,返回这些子串的起始索引。答案顺序任意。异位词:字符种类相同,每个字符出现次数也相同,只是顺序可以不同。例如 s "cbaebabacd",p… · 2026/9/24 5:14:20
私有化办公IM选型指南:从消息可靠性到运维成本的全维度评估 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/24 5:53:36
如何评价 OpenAI 最新推出的 GPT-6 Sol 和 GPT-6 Luna? 我这两天看 GPT-6 Sol 和 GPT-6 Luna,第一感觉其实不是“GPT-6 终于全面来了”,反而觉得 OpenAI 现在越来越喜欢把同一代模型拆成不同档位了。以前大家讨论模型,比较容易变成哪个最聪明、跑分高多少,现在到了 GPT-6 这一代&#x… · 2026/9/24 5:53:36
AC5与AC6编译器对比:从armcc到armclang的Keil工程迁移指南 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/24 5:53:11
Nginx UI 在 Kubernetes 上的 Helm 安装部署指南:从裸机到集群的一站式实践 后端前端运维MCP 服务 【免费下载链接】nginx-ui Yet another WebUI for Nginx 项目地址: https://gitcode.com/gh_mirrors/ngi/nginx-ui 点击查看 免费下载 本指南完整讲解如何基于官方 Helm Chart 将 Nginx UI(含其内置 Nginx 实例的 Web 管理面板&am… · 2026/9/24 5:52:59
C 语言入门:函数、函数调用与递归 1. 引言
在 C 语言的学习路径中,函数是从「会写简单程序」走向「能写结构化程序」的分水岭。把一段逻辑封装成函数,不仅能避免重复代码,还能让程序更清晰、更容易维护。而递归(Recursion)则是建立在函数调用之上的一种… · 2026/9/24 5:52:59
基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程 简介:这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源,围绕YOLOv8实现渔船作业监控系统,可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件,约24.21MB,以70个Python源码文件为… · 2026/9/24 0:00:13
1D-CNN时间序列建模实战:从Conv1d原理到工业落地 简介:面向时间序列数据建模的一维卷积神经网络完整实现,适合深度学习入门者及需要快速验证时序模型的研究者,能够从音频、文本、传感器或股价等序列中挖掘局部特征与时间依赖。压缩包体积很小,只有3KB,内含3个Python脚… · 2026/9/24 0:00:26
柔软的L:汉语语流中被忽视的舌肌张力控制 1. 这个“L”不是字母表里的L,而是舌尖上的L最近在几个方言群和语音教学社群里,反复看到有人发一句:“也说字母L:柔软的长舌”。初看以为是英语发音课笔记,点开才发现全是方言爱好者、播音系学生、语言康复师甚至戏曲演… · 2026/9/24 0:00:44