8.ETH-权益证明

基本思想

PoS是一个闭环

PoW认为,信任和安全来自于不可逆的物理成本。矿工必须购买昂贵的硬件(矿机)并消耗大量电力来解决复杂的数学难题。他们付出的巨大成本(电费、硬件折旧)证明了他们工作的真实性。攻击网络的成本,就是掌握比全网一半还要多的物理算力的成本,这个成本非常高昂。它的本质是“物理安全”。这个经济模型的运作流程如下:

  1. 获得收入:矿工通过挖矿获得加密货币(如BTC)作为奖励。
  2. 支付外部成本:矿工必须将这些加密货币在市场上卖出,换取法币(如美元、人民币)。
  3. 价值外流:矿工用法币去支付现实世界中的账单,这些钱最终流向了电力公司、芯片制造商(如台积电)、硬件厂商(如比特大陆)等不属于该区块链生态的外部实体。

为了维持网络安全而支付的巨额成本,最终会持续地、结构性地流出这个加密经济体。这在资产上造成了持续的、结构性的抛售压力。可以说,PoW网络每天都在“流血”,需要有源源不断的新买家来吸收矿工为了支付电费而抛售的代币,才能维持价格稳定。

而PoS机制认为,信任和安全来自于可被惩罚的经济抵押。验证者(相当于PoW的矿工)不再需要比拼算力,而是需要将自己大量的资金(以太坊中是ETH)作为“保证金”锁定在协议中。如果他们诚实地验证交易和打包区块,就能获得奖励。但如果他们作恶(例如试图双花或篡改历史),协议会自动没收并销毁他们的保证金。这种机制被称为“罚没”(Slashing)。

这个经济模型的运作流程是:

  1. 锁定内部资源:验证者将ETH作为保证金质押在协议中,以获得验证区块的权利。这个价值被锁定在系统内部
  2. 获得内部收入:验证者诚实工作,获得的奖励是更多的ETH,这也是系统内部产生的价值。
  3. 价值内循环:整个“安全预算”——无论是作为抵押品的本金,还是作为奖励的利息——都在以太坊生态系统内部流转。验证者没有必须支付给外部实体的、以法币计价的巨额运营成本(其成本主要是机会成本和服务器维护费,相比电费微不足道)。

这就是“闭环”的本质: 用于保护网络安全的价值,从未离开过这个经济生态。系统实现了经济上的自给自足。这消除了PoW那种结构性的抛售压力,并创造了一个更强的正反馈循环:

  • 网络越安全,人们对ETH的需求和信心就越高。
  • ETH价值越高,作为抵押品的价值就越高,使得攻击网络的成本也越高,网络因此更安全。

PoS的优势

1. 巨大的能源效率优势

这是PoS最显著、最广为人知的优点。

  • PoW (工作量证明):需要全球的“矿工”进行持续的、高强度的哈希计算竞赛,这消耗着海量的电力。就像一场永不停止的军备竞赛,比拼谁的计算设备更强、能耗更大。
  • PoS (权益证明):验证者不需要进行这种计算竞赛。他们只需运行标准的计算机节点来执行签名和投票等任务。这使得PoS网络的能耗极低。以太坊从PoW转向PoS后,其网络的能源消耗减少了约99.95%,几乎完全解决了区块链技术长期以来被诟病的环保问题。

2. 更强的经济安全性和攻击威慑力

PoS通过一种更聪明的博弈论设计来保障网络安全。

  • PoW:攻击网络(51%攻击)需要掌握全网一半以上的物理算力。攻击成本主要是一次性的硬件投入和持续的电费。如果攻击失败,攻击者的硬件设备还在,损失相对有限。
  • PoS:攻击网络需要掌握巨量的质押代币(例如,以太坊需要控制超过1/3的验证者才能初步作恶)。其优势在于:
    • 攻击即自毁:如果一个验证者被发现作恶,其质押的全部或部分代币将被协议自动罚没(Slash)并销毁。这意味着攻击者在尝试攻击网络时,其投入的巨额资本本身就处于被摧毁的风险之下。
    • 攻击动机降低:成功的攻击会摧毁整个网络的信誉,导致代币价格暴跌。由于攻击者自己持有最多的代币,他将是最大的受害者,这大大降低了其攻击动机。

3. 更低的参与门槛和更高的去中心化潜力

PoS让更多人有机会参与到网络的安全维护中。

  • PoW:由于“算力竞赛”的存在,最终只有能获得廉价电力和最先进专用矿机(ASIC)的大型矿场才能盈利,这导致算力越来越集中在少数实体手中。
  • PoS
    • 无需专用硬件:参与者不需要购买昂贵的、快速迭代的矿机,一台配置尚可的普通电脑即可运行验证者节点。
    • 参与方式灵活:即使没有足够的资金(如32个ETH)独立成为验证者,普通用户也可以通过流动性质押池(Staking Pools)将少量资金汇集起来参与,并按比例获得收益。这使得网络的验证权可以分布在更广泛的用户群体中,有潜力实现更高程度的去中心化。

4. 更好的网络性能和可扩展性

PoS的机制更有利于提升网络效率和未来的升级。

  • PoW:出块时间受到算力竞赛难度的限制,很难大幅缩短。
  • PoS:由于验证者是预先选定的,而不是通过竞赛产生,区块产生的过程更快速、更可预测。这使得PoS链通常能实现更快的交易确认速度(最终确定性),并为未来的分片(Sharding)等扩容技术提供了更好的基础。

早期PoS的设计

币龄

最早期的PoS设计,其代表是2012年出现的Peercoin (点点币),它通常基于一个核心概念:币龄(Coin Age)

币龄(Coin Age): 这个概念非常直观,计算公式为: 币龄 = 持有代币的数量 × 你持有币的时间

例如,你持有10个币,并持有了30天,你就积累了300“币天”的币龄。

早期PoS的工作流程

  1. 获得记账权:用户想要创建一个新的区块(即“挖矿”),他们需要“消耗”自己积累的币龄。消耗的币龄越多,成功创建一个新区块(即“铸币” - Minting)的概率就越大。
  2. 消耗与重置:一旦你成功创建了一个区块并获得了奖励,你用来“下注”的那些币的币龄就会被清零,需要重新开始积累。
  3. 无硬件竞赛:这个过程不需要进行像PoW那样的高强度哈希计算竞赛。它更像是一场基于“资历”(即币龄)的抽奖。你的币龄越老、越多,中奖的概率就越大。

这种设计的初衷是好的:它用一种几乎不消耗能源的方式,实现了去中心化的记账权分配。

早期PoS设计的显著问题

这种基于“币龄”的简单设计,虽然解决了能耗问题,但也带来了几个严重的新问题:

1. 两边下注/无利害关系问题 (Nothing-at-Stake)

这是早期PoS最致命的缺陷:

  • 问题:当区块链出现分叉时,由于签名投票几乎没有成本,验证者的最佳策略是同时在所有分叉链上进行铸币,以确保无论哪条链最终胜出,自己都能获得奖励。他们没有任何风险(Nothing is at Stake)。
  • 后果:这会导致网络无法对唯一的主链达成共识,并使得双花攻击的成本极低。

2. 长程攻击 (Long-Range Attack)

这个问题与“无利害关系”紧密相关,是PoS独有的攻击模式。

  • 问题:一个攻击者可以从很早期的某个区块(比如第100个区块)开始,利用他当时拥有的私钥,秘密地构建一条完全属于自己的、更长的分叉链。因为在PoS中创建区块几乎没有成本,他可以轻易地生成成千上万个区块。
  • 攻击方式:当这条秘密的链变得比主链更长时,攻击者将其广播出去。新加入网络的节点,或者长期离线的节点,在同步数据时看到这条更长的链,可能会误以为它是真正的主链,从而接受一个完全虚假的历史。
  • 后果:这可以用来逆转很久以前的交易,实现大规模的欺诈。在基于币龄的设计中尤其危险,因为老密钥的“币龄”价值非常高。

3. “富者愈富”与中心化问题

虽然PoS的初衷之一是去中心化,但早期的设计反而可能加剧中心化。

  • 问题:在基于币龄或纯粹持币量的模型中,拥有代币最多的人,获得记账权和新代币奖励的概率也最大。这意味着,财富会自然地向已经持有大量代币的地址集中,即“富者愈富”。
  • 交易所的威胁:大型中心化交易所持有海量的用户存款,它们可以利用这些存款来进行质押或铸币,从而获得巨大的网络控制权和收益,进一步加剧中心化。

4. “休眠”问题与币龄积累

基于币龄的设计鼓励了一种不利于网络健康的行为。

  • 问题:用户为了最大化自己的“币龄”,最好的策略是长期不使用他们的代币,让它们“休眠”在钱包里。这会降低代币的流通性,对一个健康的经济体是不利的。
  • 攻击风险:攻击者可以购买大量长期休眠的、积累了巨量币龄的旧钱包,然后利用这些币龄来发起攻击,其成功的概率会非常高。

后来的PoS系统(如以太坊的Gasper)才引入了更复杂但更安全的设计,其核心就是引入了巨大的“风险”(Stake)

  • 用质押金取代币龄:不再看你持有多久,只看你锁定了多少保证金。
  • 引入罚没(Slashing)机制:让“两边下注”等作恶行为的成本变得极其高昂。
  • 引入检查点和弱主观性:让“长程攻击”变得不可能。

以太坊在混合时期的PoS设计

前置知识:两阶段提交

“Two-Phase Commit”(两阶段提交)是一个源自传统分布式数据库领域的经典概念,用于确保在一个分布式系统中的所有节点,要么全部成功执行一个操作,要么全部不执行,以保证数据的一致性。

想象一个银行系统,你要从A银行的账户转账到B银行的账户。这个操作需要同时在A银行和B银行的数据库上完成。

  • A银行的操作:从你的账户扣款。
  • B银行的操作:向目标账户存款。

这两步必须“原子性”地完成,即要么都成功,要么都失败。如果A成功扣款但B存款失败,钱就丢了。为了解决这个问题,经典的两阶段提交引入了一个“协调者”角色,流程如下:

  • 阶段一:准备阶段 / 投票阶段 (Prepare/Voting Phase)
    1. 协调者向所有参与者(A银行和B银行)发送一个“准备提交”的请求。
    2. 参与者收到请求后,会执行所有必要的操作(例如锁定账户、检查余额),并将一切准备就绪,但不真正提交
    3. 准备好后,参与者向协调者回复一个“同意”(VOTE-COMMIT)或“中止”(VOTE-ABORT)的消息。
  • 阶段二:提交阶段 / 决定阶段 (Commit/Decision Phase)
    1. 协调者收集所有参与者的投票。
    2. 如果所有参与者都回复了“同意”,协调者就向所有人发送“全局提交”(GLOBAL-COMMIT)的指令。参与者收到后,正式完成操作(真正扣款和存款)。
    3. 如果任何一个参与者回复了“中止”,或者超时未回复,协调者就向所有人发送“全局中止”(GLOBAL-ABORT)的指令。参与者收到后,回滚所有在准备阶段进行的操作。

通过这个过程,系统保证了所有节点行为的一致性。

信标链(Beacon Chain)

在PoW和PoS混用的以太坊时代(从2020年12月信标链启动到2022年9月合并完成),同时存在两条并行运行的链。这两条链分别是:

  1. 主网 (Mainnet) - 原有的PoW链
  2. 信标链 (Beacon Chain) - 新的PoS链

1. 主网 (Mainnet)

这就是一直以来所熟知的、用户和应用程序实际交互的以太坊。

  • 功能:
    • 处理用户的交易(转账、DEX交易等)。
    • 执行智能合约(DeFi、NFT等应用的核心逻辑)。
    • 存储所有账户的余额和智能合约的状态。
  • 共识机制: 工作量证明 (Proof-of-Work, PoW)。由全世界的矿工通过算力竞赛来创建新区块,并获得区块奖励和交易费。
  • 角色: 可以理解为网络的“执行层” (Execution Layer) 或“工作区”。它是所有经济活动实际发生的地方。

2. 信标链 (Beacon Chain)

这是为最终过渡到PoS而全新创建的一条独立的链。

  • 功能:
    • 不处理普通用户的交易或执行智能合约。
    • 它的核心任务是管理一个由质押了ETH的验证者(Validators)组成的网络。
    • 运行新的权益证明 (Proof-of-Stake, PoS) 共识协议,被称作Casper FFG
  • 共识机制: 权益证明 (Proof-of-Stake, PoS)。由验证者投票来达成共识。
  • 角色: 可以理解为网络的“共识层” (Consensus Layer) 或“协调中心”。它的存在是为了在不干扰主网正常运行的情况下,安全地启动和测试PoS共识机制。

在混合时代,这两条链并行运行,但又存在一种单向的“观察”关系:

  • 信标链观察主网: 信标链上的验证者们会“观察”主网产生的区块。他们的主要工作之一,就是对主网上的检查点(Checkpoints)进行投票,并通过Casper FFG协议来“最终化”(Finalize)这些检查点。
  • 主网不受影响: 主网本身并不知道信标链的存在。它像往常一样由PoW矿工驱动,继续出块。最终性是由外部的信标链赋予的,像一个附加的安全层。

Casper FFG

Casper FFG 本身不是一个区块提议机制,而是一个“最终性工具”(Finality Gadget)。

  • 在PoW/PoS混合时代,区块的提议(创建和打包交易)仍然由PoW矿工负责。矿工们像以前一样挖矿,不断延长区块链。
  • Casper FFG 则作为一层额外的安全保障,由PoS验证者(Validators)在其上运行,其唯一目的是周期性地“敲定”(Finalize)区块链上的某些区块,使其变得不可逆转。

1. 混合模式下的整体工作流程

  1. PoW链照常运行:以太坊主链(当时称为Eth1)继续使用Ethash算法进行PoW挖矿。矿工发现新区块,并将其广播到网络中。
  2. 引入Epoch和Checkpoint
    • Epoch(时期): 时间被划分为连续的“时期”,每个时期包含固定数量的区块(例如,最初提议为50或100个区块)。
    • Checkpoint(检查点): 每个Epoch中的第一个区块被指定为该时期的“检查点”。这是PoS验证者需要投票的对象。
  3. PoS验证者投票
    • 与PoW链并行存在的是一个由PoS验证者组成的信标链。
    • 验证者需要质押ETH成为网络的一部分。
    • 对于每一个Epoch,验证者们的任务是观察PoW链,并对该Epoch的检查点区块进行投票,表明他们认可这个区块是当前主链的一部分。
  4. 达成最终性:通过一个特殊的投票过程(即接下来要讲的两阶段提交),某个检查点区块可以被“最终化”(Finalized)。一旦一个检查点被最终化,那么该区块及其之前的所有区块都被认为是100%不可逆转的。任何试图在最终化区块之前分叉的行为都会导致攻击者的巨额罚款(Slashing)。

2. 两阶段提交:Justification 与 Finalization

前文所述的两阶段提交,在Casper FFG中具体体现为两个核心状态:Justification(合理化)Finalization(最终化)。这个过程环环相扣,为最终性提供了保证。

我们用 C 代表检查点。

阶段一:Justification (合理化)

“合理化”是达成最终性的第一步,可以理解为“预备提交”(Prepare)。

  • 投票:在一个Epoch N 结束时,验证者们会对检查点 C_N 进行投票。
  • 达成条件:如果超过2/3的验证者(按其质押的ETH总数计算) 都投票给了同一个检查点 C_N,那么 C_N 就被标记为 “Justified”(已合理化)
  • 意义:一个“已合理化”的检查点,代表了网络中绝大多数验证者都认可它的合法性。这已经是一个很强的信号,但它本身还不是最终的。

阶段二:Finalization (最终化)

“最终化”是第二步,也是最关键的一步,可以理解为“确认提交”(Commit)。它依赖于连续两个“已合理化”的检查点。

  • 投票链接:验证者的投票实际上是一个包含“来源”和“目标”的链接,形式为 Vote(Source, Target)Source 是他们所知的上一个“已合理化”的检查点,Target 则是当前Epoch的检查点。
  • 达成条件:假设存在一个“已合理化”的检查点 C_s(来源),并且在它的下一个Epoch中,检查点 C_t(目标)也被合理化了。如果有一条从 C_sC_t超级多数链接(supermajority link),即超过2/3的验证者都投了 Vote(C_s, C_t),那么 C_s 就会被标记为 “Finalized”(已最终化)
  • 连续最终化:在实践中,如果 C_t 紧跟在 C_s 之后(即它们是连续Epoch的检查点),并且 C_t 被合理化,那么C_s 就会被最终化。紧接着,下一个Epoch的检查点 C_{t+1} 被合理化后,C_t 也会被最终化。这样,最终性就像链条一样不断向前推进。

总结一下这个流程:

  1. 一个检查点需要获得 >2/3 的投票才能合理化 (Justified)
  2. 一个“已合理化”的检查点,如果其后代检查点也被“合理化”,并且它们之间存在 >2/3 投票构成的链接,那么这个检查点就最终化 (Finalized)

3. 实现细节与经济安全

Casper FFG的安全性不仅仅依赖于上述流程,更依赖于其背后强大的经济激励和惩罚机制,即罚没(Slashing)

投票消息的结构

每个验证者的投票消息 Vote 包含以下关键信息:

  • target_hash: 目标检查点区块的哈希。
  • target_epoch: 目标检查点所属的Epoch编号。
  • source_epoch: 该验证者已知的上一个“已合理化”的检查点所属的Epoch编号。

罚没条件 (Slashing Conditions)

为了防止验证者作恶(例如,同时在两条分叉链上投票以图双花),Casper FFG定义了严格的罚没规则。如果一个验证者被发现违反了以下任何一条规则,其质押的全部或大部分ETH将被销毁,并被踢出验证者网络。

  1. 双重投票 (Double Voting):
    • 验证者不能在同一个目标高度(Target Epoch) 上,对两个不同的检查点区块进行投票。
    • Vote(target_epoch=T, hash=H1)Vote(target_epoch=T, hash=H2) 是非法的,前提是 H1 ≠ H2
  2. 环绕投票 (Surround Voting):
    • 这个规则旨在防止验证者在已经敲定的历史版本上进行分叉。
    • 如果一个验证者已经投了 Vote(source=S1, target=T1),他就不能再投一个“环绕”该投票的票 Vote(source=S2, target=T2),其中 S2 < S1T2 > T1
    • 直观理解:你不能先承认“历史是从S1到T1”,然后再跳回去承认一个更早的祖先(S2)和一个更晚的后代(T2),这相当于试图重写中间的历史。

这些罚没条件使得任何试图破坏最终性的行为都变得代价极其高昂,从而在经济上保证了网络的安全。

4.奖励 (Rewards)

在混合模式下,验证者的主要职责是投票敲定(Finalize)区块,而不是像PoW矿工那样创建区块。因此,他们的奖励也相对较少,主要来源于网络增发的ETH,作为维护网络最终性的服务费。

  1. 投票奖励:
    • 当验证者正确地投票,并且他们的投票最终被包含在达成“合理化”(Justified)或“最终化”(Finalized)的检查点中时,他们会获得一笔小额的ETH奖励。
    • 这个奖励的目的是激励验证者保持在线、积极参与共识,并投票给他们认为的“正确”的主链。
    • 奖励的多少与验证者质押的ETH数量成正比。
  2. 奖励的来源:
    • 这些奖励并非来自交易手续费(在混合时代,交易费主要还是归PoW矿工所有)。
    • 奖励来自于信标链(Beacon Chain)的协议层增发的ETH。其增发率被设计得非常低,以确保不会造成严重的通货膨胀。

混合模式下,奖励机制的设计目标是收支平衡略有盈余。一个诚实、始终在线的验证者,其获得的奖励应该能覆盖其运行节点的硬件和网络成本,并有少量利润。这确保了有足够的经济动因去成为一名验证者。

5.惩罚 (Penalties)

惩罚是Casper FFG安全模型的支柱,分为两种主要类型:针对恶意行为的罚没(Slashing)和针对不作为的怠工惩罚(Inactivity Leak)

1. 罚没 (Slashing) - 对恶意行为的严厉惩罚

这是最严厉的惩罚,专门针对那些试图破坏网络共识、危害安全性的行为。如果一个验证者被证明违反了Casper FFG的核心安全规则,其质押的一部分ETH(甚至可能是全部)将被没收并销毁。

触发罚没的条件就是之前提到的两条核心规则:

  • 双重投票 (Double Voting): 在同一个时期(Epoch)内,对两个不同的区块哈希进行投票。这相当于试图支持两条并行的分叉链,是严重的安全威胁。
  • 环绕投票 (Surround Voting): 投出一个与自己历史投票相矛盾的票,试图重写已经被广泛认可的历史。

罚没的后果:

  • 初始罚金: 一旦行为被证实,会立即从该验证者的质押中扣除一笔初始罚金(例如,最初设计为至少1 ETH)。
  • 强制退出: 该验证者会被标记为“slashed”,并被强制启动退出程序,最终被踢出验证者网络。
  • 持续掉血 (Correlation Penalty): 在退出期间(通常需要几周时间),该验证者会持续不断地损失其质押金。更重要的是,损失的比例与同一时间段内被罚没的验证者总数成正比
    • 这个设计非常关键:如果只有一个验证者作恶,他可能只会损失一小部分押金。但如果有一大群验证者(例如,占总数的1/3)联合起来发动协同攻击,那么他们所有人都将损失其全部的质押金!
    • 这种“集体惩罚”机制使得大规模攻击的成本变得极其高昂,从而在经济上遏制了此类行为。

2. 怠工惩罚 (Inactivity Leak) - 对不作为的温和惩罚

如果一个验证者仅仅是因为掉线、软件故障或其他原因而未能及时投票,系统并不会立即进行罚没,而是会施以一种较轻的惩罚。

  • 扣除奖励: 首先,离线的验证者会错失他们本应获得的投票奖励。
  • 轻微罚款: 如果持续不在线,他们还会被处以与所获奖励大致相当的轻微罚款。这意味着,一个偶尔掉线的验证者,其损失大致与其在线时能获得的收益相当。
  • 最终性拖累 (Finality Drag) / 怠工惩罚 (Inactivity Leak):
    • 在一种特殊情况下,惩罚会加重:如果网络因为超过1/3的验证者同时离线而无法达成最终性(即无法合理化和最终化检查点),系统就会启动“怠工惩罚”模式。
    • 在这种模式下,所有没有参与投票的验证者会开始持续地、加速地损失他们的质押金,直到网络恢复正常(即在线的验证者重新超过2/3),能够再次达成最终性。
    • 这个机制的目的是:确保网络即使在大量验证者离线的情况下,也能最终通过逐步“烧掉”离线者的押金,使在线验证者的权重占比回升到2/3以上,从而恢复网络的最终性能力。它保护的是整个网络的活性。

6.最终化的安全性

从经济和博弈论的角度来看,一个被最终化(Finalized)的检查点是不可推翻的。它的安全性极高,被认为是永久性的。核心原因在于推翻它所需要付出的经济代价是毁灭性的、可被证明的,并且会被协议自动执行

设想一个情况,攻击者A想要推翻一个已经被最终化的检查点 C_1

  1. 最终化的条件:首先回顾一下,C_1 之所以被最终化,是因为网络中超过 2/3 的验证者(按质押ETH加权)投票支持了从某个前置检查点到 C_1 的链接,然后又投票支持了从 C_1C_2 的链接。这意味着,绝大多数验证者已经公开“宣誓” C_1 是合法历史的一部分。
  2. 攻击者想做什么:攻击者A想要让网络接受一个与 C_1 冲突的、位于另一条分叉链上的检查点 C_1'。为了做到这一点,攻击者A必须让网络也“最终化” C_1'
  3. 攻击的代价
    • 为了最终化 C_1',攻击者A需要说服超过 2/3 的验证者C_1' 投票。
    • 由于之前已经有超过 2/3 的验证者投给了 C_1,那么这两批验证者中,必然存在一个巨大的交集。具体来说,至少有 1/3 的验证者(2/3 + 2/3 - 1 = 1/3)必须自相矛盾:他们先投票给了 C_1,然后又投票给了 C_1'
    • 这种自相矛盾的行为(即我们之前讨论的“双重投票”或“环绕投票”)是可以被密码学证明的。任何观察者都可以将这两笔相互矛盾的投票记录作为证据提交给网络。
  4. 毁灭性的罚没 (Slashing)
    • 一旦证据被提交,协议会自动触发对这些作恶验证者的罚没(Slashing)
    • 根据Casper FFG的设计,当有大规模(例如1/3)的验证者同时作恶时,他们将面临最严厉的惩罚——其质押的ETH将被100%没收并销毁
    • 这意味着,要推翻一个最终化的检查点,攻击者必须说服(或自己控制)占全网总质押量至少1/3的验证者,并让他们心甘情愿地看着自己质押的全部资产被永久销毁

合并(The Merge)

以太坊已经在2022年实现了两条链的合并,合并并不是废弃掉老的PoW主网,然后让用户迁移到一个新的PoS链上。其将原本独立运行的“执行层”(老主网)和“共识层”(信标链)完美地融合在了一起,完整地保留了以太坊自2015年以来的全部历史、交易记录和用户资产,没有产生任何中断。整个过程分为三个核心部分:前期准备、触发机制合并瞬间

1. 双链升级

为了实现这次无缝切换,以太坊客户端(如Geth, Nethermind等)需要进行两次关键的、相互协调的升级。

A. Bellatrix 升级(在共识层/信标链上)

  • 时间: 2022年9月6日
  • 目标: 让信标链为合并做好准备。
  • 细节: Bellatrix升级在信标链上部署了新的共识规则。它告诉所有PoS验证者:“合并即将到来,请开始监听执行层的状态。你们很快就需要接管区块的验证工作了。”

B. Paris 升级(在执行层/老主网上)

  • 时间: 2022年9月15日(紧随Bellatrix之后)
  • 目标: 让老主网为合并做好准备。
  • 细节: Paris升级为执行层客户端引入了新的逻辑。它告诉所有节点(包括以前的矿工节点):“请继续像往常一样进行PoW挖矿,但是要时刻关注一个名为‘终端总难度’的指标。一旦这个指标达到预设值,立即停止挖矿,并放弃自己寻找区块的权力,转而听从信标链的指令来确认哪个区块是合法的。”

2. 终端总难度 (Terminal Total Difficulty, TTD)

这是整个合并过程中最核心的机制。从而全球成千上万个节点在同一个确切的时间点从PoW切换到PoS。

  • 不用区块高度或倒计时: 如果用特定的区块高度或时间戳,可能会因为网络延迟或被矿工操纵出块速度而导致混乱。
  • 选择TTD: 开发者选择了一个特定的“终端总难度”(Terminal Total Difficulty, TTD)**值。
    • 总难度: 这是以太坊从创世区块以来,所有区块挖矿难度的累加总和。它是一个不断增长、且无法轻易被操纵的数值。
    • 工作原理: 当最后一个PoW区块被挖出,使得链上的累计总难度首次超过预设的TTD值(58750000000000000000000)时,合并就会被自动触发。

TTD确保了无论网络状况如何,所有遵循新规则的节点都会在同一个区块之后、分秒不差地进行切换。

3. 合并过程

在2022年9月15日,当TTD被触达时,以下事件依次发生:

  1. 最后一个PoW区块诞生: 某个PoW矿工挖出了以太坊历史上最后一个通过工作量证明产生的区块。这个区块的诞生,使得链的总难度超过了TTD阈值。
  2. PoW挖矿永久停止: 所有升级了“Paris”客户端的节点,在验证了这个区块后,其内部逻辑立即关闭了PoW挖矿和验证功能。
  3. 第一个PoS区块诞生:
    • 此时,信标链上一位被预先选定的验证者(Validator)接管了工作。
    • 它创建了以太坊历史上第一个通过权益证明产生的区块。这个区块紧紧跟在最后一个PoW区块之后,其中包含了来自用户的正常交易。
    • 这个区块被广播到网络中。
  4. 网络接受新区块: 所有节点(现在都同时运行着执行层和共识层逻辑)接收到这个新的PoS区块,根据新的共识规则(Bellatrix + Paris)验证其合法性,并欣然接受它作为链的最新头部。
  5. 融合完成: 从这一刻起,执行层(负责处理交易)的区块提议权完全交给了共识层(负责PoS共识)。两条链正式合二为一。矿工退出了历史舞台,验证者成为网络安全的唯一维护者。

难度炸弹 (Difficulty Bomb) 的辅助

这是一个辅助机制,旨在确保合并必须发生。如果不进行合并,难度炸弹最终会让挖矿变得极其缓慢(几分钟甚至几小时才出一个块),网络几乎陷入瘫痪,从而迫使社区必须迁移到PoS,防止矿工无限期地抵制合并。[[7.ETH-难度调整#2. 难度炸弹(The Difficulty Bomb / Ice Age)]]

合并的整个过程:

准备(升级客户端) -> 等待(TTD被触达) -> 切换(PoW关闭,PoS接管)-> 完成(两条链合为一体)。

Gasper

现在的以太坊PoS协议名称为GasperGasper 并非一个单一的算法,而是一个混合共识协议(Hybrid Consensus Protocol)。它的名字是两个关键组件的结合:

  • Gasper = Casper FFG + LMD-GHOST
  • LMD-GHOST: 负责活性(Liveness),是日常的分叉选择规则,确保链能持续向前。
  • Casper FFG: 负责安全性(Safety),是最终性工具,确保历史不可篡改。

LMD-GHOST

LMD-GHOST是以太坊节点用来决定“哪条分叉链是正确的主链”的规则,即“分叉选择规则”(Fork-Choice Rule)。我们把它拆解成两个部分:GHOSTLMD

GHOST(贪婪最重可见子树)

Ghost协议我们在PoW已经大致讲过,在PoS版本中,权重来自于验证者的投票(即证明 Attestations),一个对子区块的投票,也应该被视为对其所有祖先区块的隐式投票。

当面临分叉时,GHOST算法会从一个可信的区块(通常是最新“最终化”的区块)开始,一步步向前走。在每一个分叉路口,它都会选择那条拥有最多累积投票(权重最大)的分支。在PoS中它看的不是哪个分支更长,而是哪个分支获得了更多验证者的支持。

LMD(最新消息驱动)

MD是GHOST规则的一个重要补充,它解决在PoS中的一个关键问题:如何计算投票权重。

  • “MD” - 消息驱动 (Message Driven): 链的权重增长不是靠矿工挖出新区块,而是靠验证者广播“消息”(即投票/证明)。链的“重量”完全由这些消息累积而成。
  • “L” - 最新 (Latest): 这是最关键的一点。为了防止一个验证者在不同的分叉上都投票从而混淆视听,LMD规则规定:在计算总权重时,每个验证者只有其“最新”的那一票才算数。
    • 如果一个验证者先投票给了分叉A,后来又改变主意,投票给了分叉B,那么系统在计算权重时,会忽略他对A的旧投票,只计算他对B的新投票。
    • 这大大简化了记账过程,并有效防止了某些复杂的攻击(如“弹跳攻击”),因为验证者的立场在任何时候都是唯一且明确的。

工作流程

以太坊PoS中的LMD-GHOST分叉选择规则的工作流程如下:

  1. 从锚点开始: 节点从最新的一个“已最终化”(Finalized)的区块开始。这是一个公认的、不可逆转的起点。
  2. 前进并选择: 节点从这个锚点区块出发,向前查看所有的子区块。
  3. 计算权重: 在每一个分叉路口,节点会应用GHOST规则,计算每个分支的“权重”。
  4. 遵循LMD规则: 在累加权重时,节点会严格遵循LMD规则,即对于成千上万的验证者,只采纳他们各自发送的最新的一票。
  5. 确定链头: 通过这样一步步贪婪地选择权重最大的分支,节点最终会到达一个“链头”(Head of the chain)。这条从锚点到链头的路径,就是当前节点所认定的主链。

Casper FFG(PoS)

在完全的以太坊PoS中,Casper FFG与PoW/PoS混合差不多,但是也有一些小的差别的工作流程围绕着周期(Epochs)、检查点(Checkpoints)以及一个两阶段的投票过程展开。

1. 检查点 (Checkpoints)

  • 定义:每个周期(Epoch)现在由32个时隙(Slot)构成,第一个时隙所对应的区块,被定义为该周期的“检查点”。
  • 目标:Casper FFG的目标不是最终化每一个区块,而是周期性地最终化这些检查点。一旦一个检查点被最终化,那么它之前的所有区块也就随之被隐式地最终化了。

2. 两阶段最终化过程:Justification 和 Finalization

这个过程与我们在混合PoW/PoS时代讨论的完全一致,但在纯PoS中,它是由所有活跃验证者的证明(Attestations)来驱动的。

每个验证者在投票(证明)时,其投票信息中会包含两部分内容:一部分用于LMD-GHOST(选择链头),另一部分则用于Casper FFG,形式为一个链接 (source_checkpoint, target_checkpoint)

  • target_checkpoint:验证者认为的当前周期的检查点。
  • source_checkpoint:验证者视角中,上一个“已合理化”的检查点。

阶段一:Justification (合理化)

  • 条件:当一个周期的检查点(我们称之为C_B)获得了超过2/3(按总质押ETH计算)的验证者投票支持时,C_B 就达到了“已合理化”(Justified)**状态。
  • 意义:“合理化”是达成最终性的强信号,代表网络中的绝大多数人都同意这个检查点是主链的一部分。但它本身还不是最终承诺。

阶段二:Finalization (最终化)

  • 条件:最终化依赖于连续两个“已合理化”的检查点之间的链接。
    • 假设存在一个“已合理化”的检查点 C_A
    • 并且,在 C_A 之后的某个周期,另一个检查点 C_B被合理化了。
    • 如果超过2/3的验证者都投了票,其投票链接为 (source=C_A, target=C_B),那么前一个检查点 C_A 就达到了“已最终化”(Finalized)状态
  • 一个“已最终化”的检查点被协议认为是绝对不可逆转的。任何试图推翻它的行为都会导致攻击者质押的ETH被大规模罚没(Slashing)。

在当前的以太坊PoS机制中,Casper FFG扮演着一个沉默但极其关键的角色。它不像LMD-GHOST那样每12秒出现一次,而是作为最终的仲裁者,每约6.4分钟(一个周期)对网络状态进行一次评估,并在约13分钟后(两个周期)给出一个的最终性承诺。

其他细节

1. 验证者的生命周期 (Validator Lifecycle)

一个验证者从加入到退出,其状态由协议严格管理,这是一个完整的生命周期。

  • 成为验证者 (Depositing):
    • 执行层存款合约: 任何想成为验证者的人,首先需要与以太坊执行层(我们日常交互的链)上的一个特殊智能合约——存款合约(Deposit Contract)——进行交互。
    • 发送32 ETH: 用户通过这个合约,发送一笔32 ETH的交易。这笔交易本质上是“烧掉”了执行层上的32个ETH,并附带了该验证者的公钥等信息。
    • 共识层监听: 共识层(信标链)的节点会持续监听这个存款合约。当它监听到一笔合法的存款交易后,就会在共识层上为这位用户创建一个新的验证者账户。
  • 排队激活 (Activation Queue):
    • 新创建的验证者不会立即生效,而是会进入一个激活队列
    • 协议限制了每个周期(Epoch, 约6.4分钟)可以激活的验证者数量。这个限制是为了防止大量验证者同时涌入或退出,从而保证网络的稳定性。目前这个速率是每个Epoch 8个验证者。
  • 履行职责 (Active State):
    • 激活后,验证者开始全面履行其职责:提议区块、投票证明、参与同步委员会等,并因此获得奖励。
  • 退出网络 (Exit & Withdrawal):
    • 验证者可以自愿发送一个退出请求。与激活类似,他们也会进入一个退出队列,同样受到速率限制。
    • 退出后,验证者的质押金和累积的奖励并不会立即返还。他们需要再经过一个额外的等待期(目前约为27小时),以确保他们没有在退出前进行任何可被罚没的恶意行为。
    • 等待期过后,质押的本金和奖励会自动返还到验证者指定的执行层地址上。

2. 随机性的实现:RANDAO

在每个时隙(Slot)公平地、不可预测地选出区块提议者是PoS安全的核心。以太坊使用一种名为 RANDAO 的机制。

  • 接力贡献随机数: RANDAO可以被想象成一个“随机数接力赛”。
    1. 当一个验证者被选中提议区块时,他必须在其提议的区块中包含一个自己签名的哈希值(可以理解为一个秘密数字)。
    2. 这个数字会被混合(XOR操作)到信标链的一个持续累积的“随机数种子”中。
    3. 下一个区块提议者会基于这个更新后的种子,再混合进自己的秘密数字。
  • 防止操纵: 这种机制使得任何单个验证者都无法完全控制最终的随机数。一个验证者唯一能做的,是在轮到自己时,选择“揭示”自己的秘密数字来生成区块,或者选择“不揭示”(即放弃提议区块)。他可以选择影响随机数向某个方向发展,但无法精确地将其设定为自己想要的值。虽然最后一个揭示者有微小的优势(“last revealer”问题),但这在实践中被认为是足够安全和去中心化的。

3. 高效的投票聚合:BLS签名

每个周期有数万名验证者需要投票。如果每个投票都作为一笔独立的交易在网络上传播,将会产生巨大的数据量,轻易地堵塞网络。

以太坊的解决方案是使用BLS(Boneh–Lynn–Shacham)签名

  • 可聚合签名: BLS签名方案具有一个神奇的数学特性——可聚合性
    • 多个由不同私钥生成的签名,可以被聚合成一个单一的、体积不变的签名
    • 同时,这个聚合后的签名可以通过所有签名者的公钥集合来进行验证。
  • 工作流程:
    1. 在一个委员会中,每个验证者对自己要投的票进行签名。
    2. 这些签名在一个子网内被快速传播,并由一个或多个**聚合者(Aggregators)**收集。
    3. 聚合者将所有有效的签名合并成一个紧凑的聚合签名。
    4. 最终,只需要将这个单一的聚合签名广播到整个网络中。
  • BLS签名将网络负载从“与验证者数量成正比”降低到了“几乎是常数级别”,是以太坊PoS能够支持数十万验证者同时运行的关键技术。

4. 轻节点的支持:同步委员会 (Sync Committees)

为了让手机、浏览器插件等资源有限的设备(SPV)也能安全地验证链的状态,而无需下载和处理海量数据,以太坊引入了同步委员会

  • 小型抽样委员会: 协议每隔约27小时,就会随机从所有活跃验证者中选出512名验证者,组成一个“同步委员会”。
  • 签署区块头: 这个委员会的唯一任务就是对每一个新产生的区块头进行签名。
  • 轻客户端验证: 轻客户端只需要跟踪这个同步委员会的成员公钥。当它收到一个区块头和附带的同步委员会签名时,它就能以非常高的确定性相信这个区块头是合法的、位于主链上的,因为它得到了这个“精英小组”的背书。

PoS下的以太坊

目前,以太坊的共识机制已经完全转变为权益证明(Proof-of-Stake, PoS)。以前的“挖矿”概念已经不复存在,取而代之的是一个由验证者(Validators)主导的、更为高效和复杂的系统。

首先,最根本的变化是:

  • 不再有矿工(Miners): 依赖强大、耗能的硬件(如GPU)进行哈希计算来竞争出块的时代已经结束。
  • 全新的主角是验证者(Validators): 网络的维护者是那些向网络中质押了ETH以获得参与共识资格的实体。

要成为一名验证者,需要满足一个核心条件: 向指定的存款合约质押32个ETH。一旦质押完成,该实体就会进入一个激活队列,等待成为活跃的验证者,开始履行职责并赚取奖励。

提议与验证

以太坊的PoS系统时间被划分为时隙(Slots)和周期(Epochs)

  • 时隙 (Slot): 一个固定的时间段,目前为12秒。在每一个时隙,有且仅有一个验证者被随机选中来提议(Propose)一个新的区块。
  • 周期 (Epoch): 由32个时隙组成,总时长为 32 * 12秒 = 6.4分钟。周期是网络进行状态检查和验证者任务轮换的基本单位。

这个流程可以分解为以下几个步骤:

1. 区块提议(新的“挖矿”)

  • 随机选择提议者: 在每个时隙(每12秒)开始时,协议会通过一个可验证的随机算法(RANDAO),从当前所有活跃的验证者中,伪随机地选择一位验证者作为该时隙的区块提议者(Block Proposer)
  • 提议区块: 这位被选中的提议者有责任:
    1. 从交易池(Mempool)中选择一批待处理的交易。
    2. 将这些交易打包成一个区块。
    3. 对这个区块进行签名,并将其广播到整个以太坊网络中。

这个过程取代了PoW中所有矿工同时竞争一个出块权的过程。在PoS中,每个时隙的出块权是预先分配好的,没有算力竞争,因此能耗极低。

2. 区块验证(Attestation)

仅仅提议一个区块是不够的,它还需要被网络中的其他验证者确认。

  • 委员会(Committees): 在每个周期(Epoch)开始时,所有的活跃验证者会被随机地平均分配到32个委员会中,每个委员会对应一个时隙。
  • 投票证明(Attestation): 对于每个时隙中提议的区块,该时隙对应的委员会中的所有验证者都有责任进行证明(Attest)。他们需要:
    1. 下载并验证该区块的有效性(交易是否合法,签名是否正确等)。
    2. 如果认为区块有效,就投出赞成票。这个投票本身就是一个包含验证者签名的加密消息。
  • 汇总投票: 这些投票被收集和汇总起来,作为该区块已被网络接受的有力证据。

3.奖励与惩罚机制(激励层)

为了确保验证者诚实地履行职责,系统内置了与之前混合时代类似的奖惩机制:

  • 奖励 (Rewards):
    • 区块提议奖励: 成功提议一个被网络接受的区块的验证者会获得一笔较大的奖励。
    • 证明奖励: 及时并正确地对区块进行投票证明的验证者会获得小额奖励。
    • 交易优先费(Tips): 区块提议者可以获得该区块内所有交易包含的小费(Tips),这是用户为了让自己的交易被优先处理而支付的。
    • 同步委员会奖励: 参与一个名为“同步委员会”的特殊小组(负责为轻客户端提供服务)的验证者会获得额外奖励。
  • 惩罚 (Penalties):
    • 怠工惩罚: 如果验证者离线,未能履行其提议或证明的职责,其质押的ETH将被小额扣除。这确保了验证者有动力保持高在线率。
    • 罚没 (Slashing): 这是最严厉的惩罚。如果验证者做出恶意行为,如在同一个时隙提议两个不同的区块,或进行矛盾的投票证明,其质押的ETH将被大量(可能高达32 ETH)没收,并被永久踢出网络。

4.最终性 (Finality)

当前的PoS机制也使用Casper FFG产生最终性的概念。

  • 一个周期(Epoch)如果获得了超过2/3验证者的投票证明,它就会被“合理化”(Justified)。
  • 当一个周期 A 被合理化,并且紧随其后的周期 B 也被合理化时,周期 A 就会被“最终化”(Finalized)。
  • 一个最终化的区块被认为是绝对不可逆转的,其安全性由高达数百亿美元的质押ETH总额来保障。通常,最终性会在大约两个周期(约13分钟)后达成。