先别急着谈区块:账本究竟是什么?
“账本”这个词容易让人只想到余额表。对以太坊,它至少同时包含历史、当前状态和改变状态的规则。
传统银行的账本有一个天然中心:银行数据库说你有多少钱,它就是业务上的标准答案。 分布式账本取消了这台唯一权威机器,却仍要让陌生参与者能够回答: 谁提交了什么、先后顺序如何、现在的有效状态是什么?
因此,分布式账本不能只是一份静态表格。它更接近一套由多台计算机共同维护的 复制状态机:节点保存协议数据,接收输入,按同一规则验证与执行, 再用共识决定哪一段有序历史是规范历史。
在以太坊里,“账本”也是一个不够完整但很有用的入门比喻。它不仅记录 ETH 转账, 还维护账户、合约代码与合约存储。官方 EVM 文档把它描述为一台状态转换机器: 给定旧状态和一组有效交易,规则会产生新状态。[1]
有序历史
已经进入规范链的区块与交易。它回答“发生过什么、顺序是什么”。
B102 → B103 → B104Tx A before Tx B
当前状态
执行规范历史后得到的结果。它回答“账户、余额和合约数据现在是什么”。
Alice · 2 ETH · nonce 8Vault · locked = true
公开规则
交易、区块和状态转换的有效条件。它让节点不必相信发送者,只需自行验证。
valid signaturecorrect nonce · enough gas
“分布式”描述部署方式,“账本”描述共同事实
分布式意味着数据与计算存在于多台相互连接的机器上;它本身并不自动带来去中心化。 一家公司也可以在全球运行一百台数据库服务器,却仍由同一个管理员控制。 区块链还要进一步处理开放参与、互不信任、恶意行为和谁能改变规则。
所以更准确的定义是:分布式账本是一套由多个独立参与者持有或验证副本, 并用共同协议决定有效更新与规范历史的记录系统。 以太坊则把这套记录系统扩展成可编程的共享状态机。
复制很容易,保持一致才是难题
网络不是一间所有人同时听见发言的会议室。消息需要时间传播,机器会掉线,参与者也可能故意发送冲突信息。
假设 Alice 几乎同时发出两条相互冲突的请求:一条把同一笔钱给 Bob,另一条给 Carol。 位于纽约的节点可能先看见第一条,位于新加坡的节点可能先看见第二条。 两台机器都没有坏,它们只是处在不同的网络视角。
已收到交易 A,尚未收到 B。
消息到达顺序与 A 相反。
网络延迟,暂时两条都没看到。
恶意节点广播了伪造输入。
消息不会瞬间到达
节点相隔很远,带宽和路径不同。你无法仅凭“我还没收到”判断消息不存在,还是只是仍在路上。
到达顺序不是全局顺序
网络 A 先 B 后,不代表另一节点也会按这个顺序收到。涉及余额、竞拍或合约状态时,先后会改变结果。
机器会掉线和恢复
节点可能崩溃、断网或落后数千个区块。系统不能因为任意一台机器消失就停止,也不能无条件相信它恢复后的说法。
有人会主动欺骗
开放网络必须假设参与者可能伪造签名、提出无效区块、重复投票或试图让不同节点接受不同历史。
一致不等于“所有副本每毫秒完全相同”
分布式系统通常区分安全性与活性。 安全性关心“系统是否避免确认互相冲突的历史”;活性关心“在网络条件恢复正常后,系统是否还能继续产生并确认新记录”。 一个设计可能为了避免错误确认而暂时停止最终确认,也可能为了快速前进而接受更弱的确定性。
以太坊允许节点在链头附近短暂看见不同候选区块,再用分叉选择规则收敛; 对已经达到最终性的检查点,则给出更强的不可逆保证。 因此“看到交易”“进入区块”“位于当前链头”“已经最终确认”是四种不同状态。
一条记录,怎样从“有人声称”变成“网络认可”?
没有中央记账员后,可信度来自一条可复查的处理链:签名、传播、独立验证、排序、复算和最终性。
想象 Alice 的钱包提交一笔转账。任何节点都可以听见这条请求, 但没有节点因为“钱包说了”就直接改余额。每个接收节点先检查格式和签名等基本条件; 交易被纳入候选区块后,其他全验证节点还会重新执行整个区块,验证新状态是否正确。
钱包生成带签名的交易。签名证明授权,不证明交易一定会成功。
执行客户端把交易转发给相邻节点,消息逐步扩散。
每个节点自行检查编码、签名、nonce 与费用条件,并维护本地交易池。
当期提议者从其本地视图组织交易,形成候选执行载荷与区块。
其他全验证节点逐笔复算,拒绝任何违反协议规则或产生错误状态根的区块。
验证者投票形成权重;分叉选择规则决定当前应跟随的候选链。
超级多数先证明目标检查点;后续链接再让较早检查点获得加密经济最终性。
它合规则吗?
签名、交易字段、余额、Gas、EVM 执行和状态根都必须满足协议。无效候选不会因为获得许多人支持就变有效。
输出:有效 / 无效现在跟哪条链?
当链头附近出现多个有效候选,节点依据验证者最新投票的权重,选择当前规范链头。
输出:当前 head何时难以回退?
source → target 链接先让目标检查点 justified;后续链接再让较早的 justified checkpoint 最终确认。
输出:justified → finalized共识不是对计算结果“少数服从多数”
这是极重要的边界。若一个区块包含伪造签名或错误状态转换,你的节点可以直接按规则判定无效; 即使很多节点声称它有效,也不应接受。投票权重用于在多个有效候选之间决定规范顺序, 不是用来把 2 + 2 投票成 5。
这就是“不要信任,亲自验证”的工程含义:节点信任公开规范与自己执行的验证, 而不是信任某个 API、浏览器页面、区块提议者或邻居节点的名声。 运行全节点的价值之一,正是能够自行验证交易和区块。 [2]
在今天的以太坊里,谁负责哪一步?
一个完整以太坊节点通常由执行客户端与共识客户端协作;参与出块与投票时,还会连接验证者软件。
The Merge 之后,以太坊把“交易与状态计算”和“权益证明共识”分成两个紧密配合的客户端。 这种分层不是两条链,而是同一个以太坊节点内部的职责划分。官方节点文档也明确: 节点需要执行客户端和共识客户端。[2]
执行客户端
处理“交易是否有效、执行后状态是什么”。它维护 EVM、执行状态、收据和本地交易池。
- 01通过执行层 P2P 网络接收与传播交易
- 02检查交易并维护本地 transaction pool
- 03执行或重新执行交易,验证状态变化
- 04为本地构建路径生成 execution payload;外部 builder 也可经 Builder API 提供候选
共识客户端
处理“哪个区块是当前链头、哪些检查点已经证明或最终确认”。它维护 Beacon 状态。
- 01通过共识层 P2P 网络传播区块与 attestations
- 02运行分叉选择算法并跟踪规范链头
- 03处理证明、奖励、惩罚与 slashing 规则
- 04跟踪 justified 与 finalized checkpoints
提议者给出候选,其他节点仍要亲自复算
每个 slot 会选出一个验证者作为区块提议者。它可以让共识客户端向本地执行客户端请求候选执行载荷, 也可以通过 Builder API 获取外部 builder 构造的载荷,再把所选载荷包装进 Beacon 区块。 其他全验证节点收到区块后,会把 execution payload 交给自己的执行客户端重新执行; 通过后,节点才把它视为有效候选。其中只有运行验证者客户端并承担当期职责的验证者才会发布 attestation。
因此验证者不是传统意义上的“中心记账员”。它有机会提出下一页写什么,却不能单方面改写校验规则。 如果它写入一笔无效交易或错误状态根,遵循规范的节点会拒绝该区块。
Gasper:链头选择与检查点最终性的组合
今天以太坊的共识机制通常称为 Gasper: 它组合了用于链头选择的 LMD-GHOST 与用于检查点最终性的 Casper FFG。 当链头附近有多个有效分支时,分叉选择看验证者最新证明所形成的质押权重; 当 source → target 检查点链接获得至少三分之二活跃验证者总有效余额的证明权重时, target 可被 justified;后续检查点继续满足 Casper FFG 的链接条件后,较早的 justified checkpoint 才被 finalized。 [4]
12s slot
32 slots = 1 epoch
以太坊当前主网协议参数是 12 秒一个 slot,32 个 slot 恰好构成一个 epoch,即 384 秒、6.4 分钟。 slot 是提议区块的机会,不保证每个 slot 都一定有区块;最终性按检查点与 epoch 形成。 这些是当前协议参数,不是“区块链”这个概念的永恒定义。 [5]
“三分之二”是有效余额权重,不是节点数量
新手常把“66% 同意”理解成互联网中 66% 的电脑点击赞成。正式分母是活跃验证者的 总有效余额。非验证者全节点不产生质押投票,但仍会独立验证区块; 验证者是在完整节点能力之上增加提议和证明职责的角色,验证者所在节点同样要验证区块。
若要制造冲突的最终化历史,至少约三分之一活跃有效余额必须做出可被罚没的冲突证明, 相关验证者将面临 slashing;实际回退客户端已经 finalized 的历史还可能需要社会层协调。 这就是“加密经济最终性”:它不是说物理世界里绝对不可能发生任何故障, 而是让违反最终性的行为可证明、可归责且代价极高。 [6]
亲手让四个节点从分歧走向一致
按顺序切换四个阶段。观察“看见消息”“接受候选”“跟随链头”和“最终确认”为什么不是同一件事。
多节点一致性实验
这是教学模型,不按真实速度模拟网络;它保留的是关键因果关系。
物理上:许多不同副本
节点的磁盘、软件实现、同步进度、邻居和本地交易池都可能不同。有的保存较多历史,有的只做轻量验证。
逻辑上:一个规范状态
对同一规范链头,遵循协议的执行客户端应得到相同状态。一致的是可验证结论,不是所有机器内部每个字节都相同。
为什么客户端可以由不同团队、不同语言实现?
以太坊有多个执行客户端与共识客户端实现。它们的内部数据库结构、性能策略和编程语言可以不同, 但都必须遵循同一协议规范。多实现降低整个网络依赖单一代码库的风险; 同时也提出更严格要求:规范必须精确,不同实现必须在共识边界上得出相同结果。
如果某个客户端因 bug 产生错误结果,其他独立实现不会因为它“是知名软件”就自动接受。 客户端多样性因此既是工程生态,也是去除单一故障点的一部分。
为什么大家必须同意的不只是“有哪些交易”?
状态转换不满足随意交换顺序。对同一组交易,顺序不同,最终状态可能不同。
设 Alice 当前有 3 ETH,账户 nonce 是 7。她签出两笔都使用 nonce 7 的冲突交易: X 想给 Bob 2 ETH,Y 想给 Carol 2 ETH。为了突出顺序,本例暂时省略交易费。
两笔签名都可能是真实的,单独看也都可能满足余额条件;但一个账户的同一个 nonce 只能在规范历史中使用一次。 哪笔被纳入最终成为规范历史的有效区块,会把 Alice 的 nonce 从 7 更新为 8; 另一笔随后因 nonce 过旧而不能再被纳入有效区块。若把两笔强行放入同一执行序列,包含第二笔的区块会无效。 所以网络必须对有效交易集合与确定顺序同时形成一致。
冲突交易选择实验
切换两个有效候选区块,观察同一组冲突候选为什么只能有一笔进入规范历史。
候选区块 A:纳入 X,Alice 的 nonce 更新为 8;Y 不再满足有效 nonce,未被纳入。
区块提供“批次”,链提供“批次的顺序”
区块把一组交易与元数据组织为可验证单元;每个区块又指向父区块,由此形成有序历史。 下一课会拆开区块头、时间戳、交易数据与哈希。本课先抓住最重要的一点: 区块不是为了把文件压缩成包,而是为了让分布式网络对一批状态转换的边界和顺序形成共同参照。
在链头附近,同一提议者双重提议,或不同 slot 的提议者因网络延迟建立在不同父块上,都可能形成短暂分叉。节点用分叉选择决定当前 head, 并随着更多证明和最终性逐步提高确定性。应用因此会区分“已广播”“已包含”“若干确认”“已最终确认”。
它和普通分布式数据库,究竟差在哪里?
两者都可以复制数据、容忍机器故障。核心差异不是“有没有多台服务器”,而是谁有权写入、谁定义规则、参与者要信任谁。
一家公司的分布式数据库通常已经知道服务器身份,并有管理员、访问控制和法律责任链。 公共区块链面对的是开放环境:任何人可提交交易,节点和验证者来自不同主体, 系统不能把某位管理员的话当成最终答案。
三个词也不要混用:分布式数据库强调数据跨多台机器存放与协作; 分布式账本强调多个参与方依协议共同维护可验证记录; 区块链则是把记录按区块组织并链式关联的一类分布式账本结构。 不是所有分布式数据库都去中心化,也不是所有分布式账本都必须采用区块链;以太坊三者特征兼具,但其信任模型属于开放公共区块链。
| 比较维度 | 普通分布式数据库 | 公共区块链 / 以太坊 |
|---|---|---|
| 控制边界 | 通常由一个组织或明确联盟管理。 | 节点、验证者和用户可由互不隶属的主体运行。 |
| 写入权限 | 账号、角色和服务器权限决定谁能写。 | 任何人可提交请求;是否有效由协议、签名与状态共同决定。 |
| 标准答案 | 主库、管理员或组织治理可给出最终裁决。 | 有效性由公开规则验证;规范顺序由共识形成。 |
| 故障假设 | 主要防机器宕机、网络分区与操作错误。 | 还要防经济上有动机的恶意参与者与互相冲突的消息。 |
| 审计方式 | 依赖组织日志、权限与外部审计。 | 协议数据和状态承诺可由独立节点复查与验证。 |
| 性能取向 | 可优先吞吐、低延迟与内部效率。 | 用重复传播、执行和验证换取开放环境中的可验证一致。 |
为什么区块链看起来“重复又昂贵”?
因为重复正是安全模型的一部分。多个节点传播同一数据、重新执行同一交易、保存可验证承诺, 会比一台受信服务器直接写数据库慢,也消耗更多资源。以太坊优化的不是单机效率, 而是在没有共同管理员的环境中,任何参与者仍能验证结果。
这也解释了为什么去中心化、安全性与吞吐量之间存在长期取舍,以及为什么以太坊需要 Layer 2。 后续扩容章节会讨论如何把大量执行移到链下或二层,同时把结算与数据可用性安全锚定到以太坊。
不同节点不一定保存同样多的数据
全节点会验证区块与交易,但为了节省磁盘,常只保留较新的完整状态数据; 归档节点保留可查询的历史状态;轻客户端使用更少数据验证关键承诺。 所以“每个节点都永久保存从创世以来的所有细节”并不准确。 真正重要的是不同类型节点依据协议获得与其安全模型相匹配的可验证结论。 [2]
六个常见误解,一次校准
把边界说准,比记住一句“去中心化账本”更重要。
“分布式就一定去中心化”
一家公司的服务器也可以分布全球。去中心化还要看控制权、验证权、参与门槛与规则变更权是否集中。
“所有节点始终一模一样”
本地交易池、同步进度和保存范围可能不同。节点对规范历史执行后应收敛到相同有效状态,而非每个瞬间每个字节都相同。
“共识就是所有人一致同意”
网络不等待全体参与者逐一表态。协议在明确故障假设下,用质押权重、分叉选择和最终性形成足够强的一致。
“多数投票能让无效交易生效”
节点先按协议独立验证有效性。投票用于选择有效候选历史;伪造签名或错误状态转换应直接被拒绝。
“链上记录就代表现实真相”
共识能确定链上输入与顺序,不能自动知道天气、房屋或身份真假。链外事实仍需要预言机、法律或其他信任机制。
“最终确认等于数学上绝不可能改变”
以太坊提供加密经济最终性。冲突回退会要求可被惩罚的大规模违规,并可能触发社会层协调;保证来自代价和可追责性。
共识也不能替你判断“值得不值得”
网络可以一致记录某合约执行成功,却不能说明这个合约设计合理、代币有价值、借贷风险可控, 或你签名时真正理解了授权。分布式账本保证的是协议范围内的可验证一致, 不是投资质量、法律效力或现实世界真相。
把整课压缩成七层心智模型
如果你能按顺序解释下面七层,就已经真正理解“多个独立节点如何维护一致记录”。
现在检查你的理解
每题都在测试一个最容易混淆的边界。先作答,再阅读解释。
1. 分布式账本与“把同一个表格复制到四台电脑”最关键的差异是什么?
答案 B。复制只能产生副本;协议还必须说明哪些更新有效、顺序如何确定、出现分叉时跟随哪段历史。
2. 两个诚实节点短时间看到不同交易池,说明什么?
答案 C。交易池不是规范账本。协议要让诚实节点在获得数据、验证区块并应用分叉选择后收敛。
3. 如果许多验证者投票支持一个含伪造签名的区块,你的全节点应该怎样做?
答案 A。有效性先由节点独立检查。分叉选择只在有效候选之间决定当前规范链头。
4. 执行客户端与共识客户端最准确的分工是什么?
答案 C。执行客户端维护 EVM、状态和交易池;共识客户端处理区块、证明、分叉选择与检查点最终性。
5. 以太坊最终性所需的“三分之二”主要指什么?
答案 B。最终性依据活跃验证者总有效余额权重的超级多数链接,不是按 IP 地址或电脑台数一机一票。
6. 为什么网络必须对有效交易集合和交易顺序都形成一致?
答案 A。共享合约状态或余额竞争会让先后顺序改变结果;同 nonce 冲突则使最多一笔能够被纳入有效区块。集合与顺序都是共享状态的必要输入。
打印提示:每题答案与解释已直接列在选项下方。
术语与一手资料
下面把本课用到的词收紧到可复述的定义,并提供用于核对当前以太坊机制的官方资料。
节点 NODE
连接到以太坊点对点网络的客户端软件实例。完整节点通常运行执行客户端与共识客户端;验证者软件是参与 PoS 提议和证明的额外角色。
副本 REPLICA
某节点本地持有的协议数据与派生状态。不同类型节点保存的数据范围可以不同,但都依其验证模型判断规范链与状态。
交易池 TRANSACTION POOL
执行客户端本地维护的候选交易集合。不同节点的交易池可因传播、费用策略和本地配置而不同;进入交易池不等于进入区块。
规范链 CANONICAL CHAIN
节点依据有效性与分叉选择规则当前认可的区块历史。链头附近可能短暂变化;最终确认的检查点提供更强稳定性。
分叉选择 FORK CHOICE
当存在多个有效候选分支时,用来确定当前链头的规则。以太坊 PoS 的链头选择使用验证者最新证明形成的质押权重。
证明 ATTESTATION
验证者对其所见链头以及 source / target 检查点等共识信息签名投票的消息。证明被聚合并影响分叉选择与最终性。
最终性 FINALITY
某区块已经成为规范历史中极难回退部分的保证。以太坊通过 source → target 检查点链接先证明目标,再在后续条件满足时最终确认较早检查点;冲突最终化需要大规模可惩罚违规。
安全性与活性 SAFETY / LIVENESS
安全性要求系统不确认互相冲突的历史;活性要求在合理网络与参与条件下,系统能够继续产生和确认新区块。
继续阅读
-
01
ethereum.org — Ethereum Virtual Machine以太坊状态、状态转换函数与 EVM 的官方技术导论。
-
02
ethereum.org — Nodes and clients节点、执行客户端、共识客户端、全节点与归档节点的职责和差异。
-
03
ethereum.org — Node architecture执行层与共识层的 P2P 网络、Engine API、交易传播、区块提议与重新执行。
-
04
ethereum.org — Consensus mechanisms共识机制、验证者证明、分叉选择以及 Gasper 的官方概览。
-
05
ethereum.org — Proof-of-stakeslot、epoch、区块提议、证明、检查点、超级多数链接与最终性。
-
06
ethereum.org — Proof-of-stake FAQ: finality三分之二活跃有效余额权重与冲突最终化历史所需的加密经济代价。
-
07
ethereum.org — Networking layer执行层与共识层各自的发现、连接和消息传播网络。
-
08
Ethereum Consensus Specs — Beacon Chain fork choiceLMD-GHOST 存储、justified / finalized checkpoints 与规范分叉选择的正式规范。
-
09
Ethereum Execution Specs以可执行 Python 规格表达执行层区块、交易与状态转换规则。