Ethereum learning path · 10.03

押上 ETH,
如何换来最终性?Validator · Stake · Slashing · Finality

PoS 不是“有钱人轮流记账”这么简单。它把资本变成可追责的投票权, 再用职责、奖励、惩罚与可验证的矛盾签名,把全球节点收束到同一段历史。

  • 10 · 03 共识机制
  • 96 MIN 阅读与实验
  • 0 → 深入 无需质押经验

The thesis

以太坊 PoS 的安全,不来自某个权威替大家选链,而来自 “投票权可计量、越界行为可举证、攻击资本可销毁” 这组三者相扣的约束。

00 · Mental model

先别背规则。先看一条安全闭环

PoS 解决的是“没有中央裁判时,全球节点如何选择同一段历史”。

第十章第三课 · 当前主网 PoS 安全模型

协议基线 · 2026-07-25 · Fulu 稳定分叉,继承 Electra 的余额与罚没参数

假设纽约、柏林、新加坡的节点同时收到两条不同的区块分支。谁来决定哪一条才是以太坊? PoS 的回答不是“相信某台服务器”,而是让验证者签名表达选择,再按他们押在协议中的 有效余额计算权重。签名一旦互相矛盾,任何人都能把证据提交给网络, 让违规者损失 ETH。[2]

一句精确定义

以太坊 PoS 是一套把共识投票权可损失资本绑定的协议: 验证者用 BLS 签名参与分叉选择和最终性,协议按有效余额统计投票, 并用奖励、普通惩罚、inactivity leak 与 slashing 维持安全和活性。

PoS 同时要守住两种性质

SAFETY

安全性

诚实节点不能把两段互相冲突的历史都当作最终历史。若冲突最终性真的发生,至少 1/3 总质押会留下可罚没证据。

LIVENESS

活性

只要网络与足够投票权继续参与,链应持续产生区块并推进最终性,而不是永远停在争议中。

ACCOUNTABILITY

可追责性

协议不必猜谁“心怀恶意”;只处理可以由两份签名客观证明的越界行为。

先纠正一个比喻

“质押越多,发言声音越大”只说对了一半。验证者不是花钱买区块; 提议者仅能提出候选区块,其他验证者仍会验证其执行结果并投票。 无效区块不会因为提议者有钱就变成有效区块。

01 · Validator

验证者不是一台机器,也不等于质押平台

先拆开节点、客户端、验证者索引、运营者和资金所有者,后面才不会把“数量”误当成“去中心化”。

一个完整以太坊节点通常同时运行执行客户端共识客户端。 共识客户端即使不挂载验证者,也能同步链头;当它连接验证者客户端并持有验证者签名密钥后, 才能代表某个验证者索引履行提议与证明职责。[3]

一位参与者,可能对应很多不同数量

错误:一台机器一票

机器数不是票数

同一运营者可以在一台机器上运行多个验证者,也可以把一个验证者跨多台设备做容灾。共识按有效余额计权。

错误:验证者数就是独立主体数

索引数不是去中心化人数

一个大型运营者可以控制许多验证者索引。协议层看到的是签名身份,不自动知道背后的实际控制关系。

错误:节点都必须质押

普通节点也能验证

不质押的全节点依然独立验证区块与状态,只是不参与提议、证明和共识奖励。

错误:池子代币就是验证者

产品层不等于协议层

流动性质押代币、交易所余额和池份额是服务或应用记账;共识层仍由具体验证者索引签名。

为什么要分“热签名权”和“冷提款权”

验证者签名密钥必须在线,才能及时签署区块和证明,因此属于高暴露的“热”密钥; 提款凭证控制资金去向,适合更冷地保管。Pectra 启用 EIP-7002 后, 执行层提款地址还可以发起退出或部分提款请求,降低资金所有者对运营者热密钥的依赖。[4]

运行安全的关键

验证者最危险的故障不是“短暂关机”,而是同一签名密钥在两个实例上同时活跃。 两台机器若对不同分支签名,可能制造可罚没的双重提议或双投。 因此迁移验证者时要停止旧实例,并使用客户端的 slashing protection 数据。

02 · Stake

Stake 不是一个余额,而是三层数值

存入多少、账户实际有多少、协议拿多少来计票,可能是三个不同数字。

从零理解质押,最重要的不是先背“32 ETH”,而是分清 depositbalanceeffective balance。只有最后一个直接决定投票权重、提议概率以及大部分奖励和惩罚计算。

DEPOSIT

存入记录

通过存款机制把 ETH 与验证者 BLS 公钥绑定;进入激活队列不等于立刻开始工作。

BALANCE

实际余额

共识层账户当前真正拥有的 ETH,会随奖励、普通惩罚、罚没和提款改变。

EFFECTIVE BALANCE

有效余额

协议用于计票与结算的平滑权重,以 1 ETH 为增量,并受凭证类型上限约束。

Pectra 以后,“验证者永远只有 32 ETH”已经过时

提款凭证 激活下限 最大有效余额 奖励超过 32 ETH 后
0x00 旧 BLS 凭证 32 ETH 32 ETH 不增加权重;需先升级提款凭证才能提款
0x01 旧式执行地址 32 ETH 32 ETH 超额余额按协议扫到提款地址
0x02 复利凭证 32 ETH 2048 ETH 继续复投并提高有效余额;通常超过 2048 ETH 才自动扫出

Pectra 通过 EIP-7251 把最低激活余额保留在 32 ETH,同时让 0x02 复利验证者的最大有效余额提高到 2048 ETH。 旧式 0x01 可不可逆地切换为 0x02[5] [6]

0x01 · 40 ETH 实际余额
32 ETH weight 8 ETH excess
0x02 · 40 ETH 实际余额
≈ 40 ETH weight
深入:为什么实际余额不会每一小步都改变投票权

有效余额以 1 ETH 为增量,并带有滞后区间(hysteresis)。 例如从 32 ETH 有效余额上调到 33 ETH,实际余额通常需超过约 33.25 ETH; 向下调整则在低于当前有效余额约 0.25 ETH 时发生。 这能避免余额在边界附近因每个 epoch 的微小奖励而反复跳动。[7]

合并验证者:减少签名,不制造新的独立主体

不能从协议开销推导去中心化

合并能减少 BLS 签名、状态条目与网络消息;但若 64 个验证者本来就由同一运营者控制, 合并不会让所有权更分散。相反,它还会让密钥与运维故障域更集中。

03 · Time & duties

12 秒一格,32 格一轮

理解 slot 与 epoch,才能知道“谁何时提议”“谁何时投票”以及“最终性为什么不是 12 秒”。

Mainnet clock 1 slot = 12 秒 1 epoch = 32 slots = 384 秒 = 6 分 24 秒

Slot 是提议区块的时间机会;epoch 是全体活跃验证者完成一轮证明职责、协议结算与检查点投票的基本周期。

每个 slot,协议按有效余额加权随机选出一名区块提议者。若它离线,这个 slot 可以是空的, 链在下一个 slot 继续;协议不会为了“补齐表格”接受迟到区块。 与此同时,验证者被随机分入委员会。每个活跃验证者通常每个 epoch 证明一次, 不是每 12 秒都投一票。[8]

Interactive · 01

走过一个 Epoch

拖动 slot。观察时间、提议机会与 epoch 边界;这是一段协议时钟,不是实时主网数据。

slot 0
EPOCH ELAPSED0 秒
BLOCK OPPORTUNITY1 proposer
YOUR VALIDATOR本轮等待分配

每个 epoch 里,三种主要职责并不等价

PROPOSE

提议区块

每个 slot 一名提议者组装共识区块,并携带执行载荷。被选中很少见;错过通常只是失去奖励,不是 slashing。

ATTEST

签署证明

每名活跃验证者每 epoch 一次核心职责,对链头和检查点表达观点;大量证明可用 BLS 聚合。

SYNC

同步委员会

被随机选中的验证者在一段周期内为轻客户端签署链头;这是额外职责,不是所有验证者每 epoch 都承担。

概率与权重

提议者选择按有效余额加权。一个 2048 ETH 有效余额验证者的提议概率, 约为一个 32 ETH 有效余额验证者的 64 倍;它的证明权重也约为 64 倍。 这不等于它能绕过区块有效性规则。

04 · Attestation

一张证明,其实同时投了三票

只把 attestation 理解为“我同意这个区块”,会错过 Gasper 最关键的双层结构。

验证者的证明同时服务于当前链头历史最终性。 其中 beacon_block_root 参与 LMD-GHOST; sourcetarget 组成 Casper FFG 的检查点投票。[9]

为什么要把证明聚合

活跃验证者很多,如果每一份签名都作为独立大对象传播并永久记录,网络与区块空间会承受巨大压力。 BLS 签名允许多名委员会成员对相同数据的签名聚合;聚合证明携带参与位图, 节点仍能知道哪些验证者参与,同时大幅减少传输和存储负担。

AttestationData · conceptual view { slot, committee_index, beacon_block_root, // 当前链头 source: { epoch, root }, target: { epoch, root } }

真实协议对象由 SSZ 序列化并带 BLS 签名;这里省略聚合位图与签名外壳,只保留理解共识所需的核心字段。

证明不是“赞同提议者”

委员会成员先独立验证区块和它引用的状态,再签署自己的观点。 聚合只压缩相同观点的签名,不会把无效区块变有效,也不会要求验证者盲从提议者。

05 · Gasper

“现在跟哪条链”与“历史是否定案”是两件事

Ethereum 把分叉选择与最终性叠在一起:LMD-GHOST + Casper FFG = Gasper。

FORK CHOICE

LMD-GHOST

从已确认的起点向下,逐层选择累计“最新消息权重”更大的子树,得到此刻的规范链头。

  • LMD · Latest Message Driven,只计每名验证者最新相关消息
  • GHOST · 看整棵子树权重,不只比较单个叶子
  • 输出 · 当前 head,仍可能发生短程重组
FINALITY GADGET

Casper FFG

统计 source → target 检查点链接的有效余额,推进 justified 与 finalized 状态。

  • FFG · Friendly Finality Gadget
  • 阈值 · 至少 2/3 活跃有效余额
  • 输出 · 密码经济最终性,不随普通分叉选择轻易回退

LMD-GHOST 如何看一棵分叉树

如果随后许多验证者更新最新消息,链头可能切到另一分支;这就是为什么“已打包”不等于“已最终化”。 但分叉选择并非从创世块每次重算:客户端会以 justified / finalized 检查点作为安全锚, 在其后选择最重分支。[10]

把两个问题分开

Head:节点此刻认为链尖在哪里,影响下一个区块接在哪里。
Finalized:哪段历史已经需要至少 1/3 总质押留下可罚没证据才能与之冲突。

06 · Finality

最终性,是两条超多数链接接力完成的

先让检查点 justified,再让后继超多数链接把它 finalized。

每个 epoch 边界都有一个检查点。验证者不是对任意区块直接喊“永远不改”, 而是对 source → target 链接投票。当支持同一有效链接的权重达到至少 2/3 活跃有效余额,target 才能 justified;在典型连续情形下,下一条超多数链接会把前一检查点 finalized。

Supermajority link · exact threshold 参与该有效链接的未罚没有效余额 × 3 ≥ 全部活跃有效余额 × 2

这里统计的是有效余额,不是验证者人数、机器数、IP 数或运营者品牌数。

Interactive · 02

最终性接力实验

A 已 justified。分别调节两条链接的支持权重,观察 justified 与 finalized 如何推进。

为什么冲突最终性至少暴露 1/3

想象两个互相冲突的检查点各获得 2/3 投票。两个 2/3 集合不可能完全错开: 它们至少重叠 1/3。重叠验证者必须对冲突历史签过违反 Casper 规则的消息, 因而留下可罚没证据。这叫 accountable safety[11]

深入:教学阶梯与完整规范

“连续两个检查点”是理解最终性的主路径。完整规范还保留最近四个 epoch 的 justification bits, 允许若干非完全连续的最终化模式,以容忍个别 epoch 的证明延迟。 这些分支不改变核心:最终性仍需要有效的超多数检查点链接。

确认时间不要写成“两个 slot”

Slot 只有 12 秒,但全体验证者要在 epoch 内轮流证明,最终性还要跨检查点接力。 正常主网通常以约 15 分钟描述最终化等待,而不是 24 秒。 仍在研究的 single-slot finality 不是本课所述当前主网规则。

07 · Incentives

不是所有错误都叫 Slashing

PoS 的经济后果有三个量级:错失奖励与普通惩罚、inactivity leak、可举证罚没。

MISSED DUTY

普通离线

错失奖励,并对未及时提交的 source / target 证明承担普通惩罚。没有矛盾签名,不是 slashing。

NON-FINALITY

Inactivity leak

最终性连续延迟后,未在多数链上正确投 target 的余额加速流失,让在线一方重新获得 2/3。

EQUIVOCATION

Slashing

签署客观冲突的区块或证明。证据可由任何人提交;违规者被扣款并强制退出。

普通惩罚:先让“在线且及时”成为理性选择

及时投出正确的 source、target 和 head 会获得不同组成的证明奖励; 错过 source / target 不只是“没拿奖金”,还会被扣除相应普通惩罚。 错过 head 通常是少拿奖励;未被选中的提议机会或未成功提议也通常不是 slashing。 奖励规模会随有效余额和全网活跃余额变化,不是固定年利率。[12]

离线 ≠ Slashing

短暂宕机

没有签署冲突消息,通常只是少赚与普通扣款;“关机一天就罚没 32 ETH”是错误说法。

空 Slot ≠ 无效链

提议者没上线

该 slot 可以没有区块,链在下一 slot 继续;没有第二份冲突区块头,就没有 proposer slashing 证据。

投错 ≠ 自动 Slashing

网络延迟下的旧观点

证明可能迟到或不匹配最终规范链,受到收益影响;只有满足严格冲突谓词才被罚没。

余额过低 ≠ Slashing

被 Eject

有效余额降至 16 ETH 或以下会被强制退出活跃集合,但“低余额退出”和“签名违规罚没”是两回事。

08 · Slashing

协议只审三类可以拿出两份签名的矛盾

Slashing 不是主观判罚。它是任何节点都能重复验证的密码学证据。

  1. Proposer equivocation:同一验证者为同一 slot 签署两个不同的 BeaconBlockHeader。
  2. Attester double vote:同一验证者签署两个不同的 AttestationData,但它们具有相同的 target.epoch
  3. Attester surround vote:一条 source → target 投票在 epoch 区间上严格包围另一条投票。

同一 Slot,两份区块头

不是“提了两个相邻区块”,而是同一 proposer 在同一个 slot 对两个不同区块头签名。

Surround Vote

外层投票的 source 更早、target 更晚,把内层投票完全包围。

s₁=2s₂=4t₂=7t₁=9
Attester slashing predicates double vote: target_epoch(a) = target_epoch(b) 且 a ≠ b surround vote: source₁ < source₂ < target₂ < target₁

“同一个 slot 投两次”不是 attester double vote 的完整定义;规范比较的是不同证明数据与相同 target epoch。

Interactive · 03

Slashing 法庭

选择一种行为。判断它是普通惩罚、可罚没违规,还是本身没有违规。

请选择

先看行为,再看是否存在两份冲突签名

协议不判断动机,只判断消息是否满足明确的 slashable 条件。

罚没不是一次性固定罚单,而是一条时间线

当前 Electra/Fulu 参数下,初始罚金为有效余额的 1 / 4096: 32 ETH 有效余额约 0.0078125 ETH,2048 ETH 有效余额为 0.5 ETH。 真正震慑协同攻击的是后续相关性惩罚:同一约 36 天窗口内被罚没的总权重越大, 每名违规者损失越重;若窗口内达到总活跃权重的 1/3,相关性部分可吞掉完整有效余额。[7]

Correlation penalty · conceptual form S = 8192-epoch 窗口内被罚没的总有效余额 T = 全部活跃有效余额 adjusted = min(3 × S, T) correlation penalty ≈ 本验证者有效余额 × adjusted / T

真实规范还包含 Gwei / 1 ETH 增量的整数取整。核心不是背公式,而是理解:孤立事故与集体攻击的边际代价完全不同。

09 · Recovery

如果超过 1/3 掉线,链为什么不会永远卡住?

Inactivity leak 不惩罚“坏思想”;它重新调整仍参与者与不参与者的相对权重。

最终性需要 2/3。如果 40% 有效余额在网络分区另一边,剩余 60% 即使全部诚实, 也暂时达不到阈值。Ethereum 选择先停止最终化,保护安全; 当 finality delay 超过 4 epochs,inactivity leak 启动,逐步削减不在当前多数链上正确投 target 的余额, 直到参与一方重新超过 2/3。[12]

Inactivity penalty · current conceptual formula 每 epoch 惩罚 = effective_balance × inactivity_score / (4 × 2²⁴)

错误 target 或不投票时 score 每 epoch 增加;恢复正确参与后逐步下降。惩罚随持续失联时间加速,而不是固定线性扣款。

安全性优先于即时活性

网络分区时,协议无法知道哪一侧代表“世界真实意图”。如果两侧都贸然降低门槛, 可能各自最终化冲突历史。因此 Ethereum 先守住 2/3 阈值,让最终性停顿; 再通过随时间累积的经济机制恢复一侧的超多数。恢复时间取决于分区比例与参与情况, 不能承诺固定几小时或几天。

Inactivity leak 也不是 Slashing

它不要求两份矛盾签名,也不会把验证者标记为 slashed。 其目标是恢复链的活性。网络大范围故障时,即便参与者没有恶意,也可能承担这种逐步增强的惩罚。

10 · Attack thresholds

1/3、51%、2/3,分别买到什么能力?

把 PoW 的“51% 攻击”口号直接套到 PoS,会把分叉选择和最终性混为一谈。

攻击能力并不是到 51% 才突然打开。不同权重跨过不同门槛: 严格超过 1/3 可以仅靠不投票阻断 2/3 最终性;超过 1/2 可主导 LMD-GHOST 的链头; 至少 2/3 才能独立形成 FFG 超多数链接。[13]

Interactive · 04

恶意权重阈值尺

拖动恶意有效余额比例。模型显示的是主要能力,不代表现实攻击必然成功或有利可图。

20%
BELOW ONE THIRD

不能单独阻止最终性

在其他验证者正常参与的前提下,这一权重不足以单独否决 2/3 超多数,也不足以主导链头。

> ⅓

阻断最终性

只要集体拒绝投票,就能让其余权重低于 2/3。Inactivity leak 会逐步侵蚀不参与者的相对权重。

> ½

主导链头

可以影响 LMD-GHOST,实施审查和短程重组;但 51% 并不等于能独自形成 FFG 最终性。

≥ ⅔

独立最终化

可单独为偏好检查点制造超多数链接。若制造冲突最终性,会暴露大规模 slashable 签名。

为什么官方还会提到约 34% 的双重最终性

在攻击者能精细操纵消息传播、把诚实验证者分成两半的异步情形下, 约 34% 攻击者可以在两边双投,使每个分支都凑到约 67%。 这不是“34% 无成本改历史”:攻击者必须大规模双投,至少这 34% 权重会留下罚没证据, 极端情况下还需社区在协议外协调选择恢复分支。

51% 的正确表述

51% 权重可主导链的当前与未来:链头、审查、短程重组、排序。 想独立控制最终化历史,门槛是 2/3,而不是 51%。

11 · Boundaries

Finalized 不是宇宙定律,而是极昂贵的承诺

协议给出密码经济最终性;客户端多样性、弱主观性和社会协调构成更外层的安全边界。

一个 finalized 区块不是物理上“再也不能出现另一份字节”,而是: 若想让诚实社区接受与它冲突的最终历史,攻击者至少要让 1/3 总质押留下可罚没签名, 并承受资本销毁、退出延迟、资产价格与社会响应。它是 crypto-economic finality

01 · VALIDITY

执行有效性

执行客户端独立验证交易、状态转换和区块规则;共识票数不能让无效状态变有效。

02 · FORK CHOICE

链头选择

LMD-GHOST 按最新证明权重选择当前 head,处理短时分叉和消息延迟。

03 · FINALITY

经济定案

Casper FFG 以 2/3 检查点链接推进最终性,并用 slashing 保证可追责安全。

04 · SOCIAL LAYER

极端恢复

若大规模攻击产生冲突最终性,社区、客户端与基础设施需在协议外协调选择恢复路径。

弱主观性:长时间离线的新节点需要一个近期锚点

PoS 用历史签名投票选链。已经退出并取回资本的旧验证者,理论上可能用旧密钥构造远距离分支; 他们在当下链上已没有可罚资本。为防长程攻击,新加入或离线太久的节点需要从多个可信来源取得 最近的弱主观性检查点,再从那里独立验证向前的链。[14]

“弱”不等于每天听权威指挥

主观部分只集中在取得一个近期锚点;从该点向前,客户端继续按协议规则独立验证。 节点运营者可以交叉比对多个客户端、区块浏览器、公共端点与可信节点,避免依赖单一来源。

客户端多样性也是共识安全的一部分

如果绝大多数有效余额运行同一个共识客户端,一处实现 bug 可能让大量验证者同时签错; 相关性罚没恰恰会让共同失败更昂贵。多种独立客户端、不同运营者和地理网络分布, 能降低同一故障同时跨过 1/3 或 2/3 的概率。

本课没有给出的承诺

“最终化后绝对零风险”“只要少于 51% 就什么也做不了”“质押收益必然覆盖运维风险” 都不是协议保证。PoS 安全是阈值、资本、软件、网络和社会协调共同形成的工程系统。

12 · Synthesis

把一条链从提议走到最终化

如果下面七步能在脑中连续发生,你已经真正掌握本课。

六个问题,检查你是否真的理解

1. Pectra 之后,哪个说法正确?

2. 一份 attestation 为什么同时含 head、source、target?

3. 验证者断网半小时且没有发出冲突签名,最准确的后果是?

4. 约 51% 恶意有效余额最直接能主导什么?

5. Inactivity leak 的核心目的是什么?

6. 两段冲突历史都最终化,为什么至少 1/3 权重可被追责?

最终心智模型

Stake 提供可损失的投票权; Validator 用签名履行职责; LMD-GHOST 选择当前链头; Casper FFG 用 2/3 检查点链接推进最终性; Slashing 让冲突签名付出与协同行为相关的资本代价。

13 · Glossary & sources

术语表与一手资料

协议会升级。涉及数值与安全边界时,优先回到当前共识规范与 ethereum.org 官方文档。

本课最小术语表

Validator
在共识层拥有索引、BLS 公钥、有效余额和生命周期状态,承担提议与证明职责的协议身份。
Effective balance
用于投票权、提议概率、奖励和惩罚计算的平滑余额;不一定等于实际余额。
Slot
主网 12 秒的提议机会。可以有区块,也可以为空。
Epoch
32 个 slots,即 6 分 24 秒;全体活跃验证者完成一轮证明职责的基本周期。
Attestation
验证者签署的共识证明,同时含链头投票与 source / target 最终性投票。
LMD-GHOST
按每名验证者最新消息的有效余额,逐层选择最重子树的分叉选择规则。
Casper FFG
通过超多数检查点链接推进 justified 与 finalized 的最终性工具。
Justified
作为有效 target 获得至少 2/3 活跃有效余额支持的检查点状态。
Finalized
在后续超多数链接保护下定案的检查点;冲突最终性会暴露至少 1/3 可罚没权重。
Slashing
对双重提议、double vote、surround vote 等可举证冲突签名的扣款与强制退出。
Inactivity leak
最终性长期停滞时,对未正确参与 target 投票的余额施加递增惩罚,以恢复 2/3 超多数。
Weak subjectivity
新节点或长期离线节点从可信渠道获得近期检查点,再从该点独立向前验证的 PoS 同步要求。

一手资料

[02] ETHEREUM.ORG Proof-of-stake 总览

验证者、slot / epoch、最终性、密码经济安全与 inactivity leak。

[03] ETHEREUM.ORG Node architecture

执行客户端、共识客户端与验证者的职责边界。

[09] ETHEREUM.ORG Attestations

证明中的 head、source、target、委员会与聚合。

[10] ETHEREUM.ORG Gasper

Casper FFG 与 LMD-GHOST 如何共同形成 Ethereum 共识。

[14] ETHEREUM.ORG Weak subjectivity

长程攻击、近期可信检查点与节点重新同步。

版本说明

Ethereum.org 某些解释页面可能滞后于协议参数。本课关于 32–2048 ETH 有效余额、初始罚金 /4096 与 8192-epoch 相关窗口的数字, 以当前稳定共识规范和主网 preset 为准;Gloas、single-slot finality 等研究方向不作为当前主网事实。

PoS 真正押上的,不只是 ETH。
是每一份签名对同一段历史承担的 可验证责任。