如果说 PoW 用能源作为“不可伪造的commitment”,PoS 则用资本作为“经济抵押”。从 Peercoin 到 Ethereum 2.0,PoS 经历了从“基于币龄”到“基于质押”的范式跃迁。本节从 LMD-GHOST 分叉选择到 Casper FFG 最终性,完整拆解 PoS 的安全逻辑与经济设计。
5.4.1 基本思想:以资本承诺替代算力消耗
PoS 的核心公式可概括为:
其中 为验证者 质押的 ETH(或代币), 为全网总质押。与 PoW 的“算力彩票”不同,PoS 的随机性来自链上可验证的种子 + VRF,避免了物理算力的消耗。
验证者的收益(年化)可建模为:
为每 epoch 基础奖励,32 为最小质押单位(ETH2 设定)。
5.4.2 LMD-GHOST:分叉选择规则与累积权重
在存在临时分叉时,节点需要一种规则决定跟随哪条分支。LMD-GHOST(Latest Message Driven Greediest Heaviest Observed Sub-Tree)是目前 PoS 链的主流选择:
- 从创世块开始,逐层向下;
- 在每个分叉点,选择子树中最近消息权重和最大的分支;
- 重复直到到达叶子。
// lmd-ghost-fork-choice.ts
// 简化版 LMD-GHOST:累积权重最大分支获胜
interface BlockNode {
id: string;
weight: bigint;
parent?: BlockNode;
children: BlockNode[];
}
function lmdGhost(root: BlockNode): BlockNode {
let current = root;
while (current.children.length > 0) {
let maxWeight = -1n;
let bestChild: BlockNode | null = null;
for (const child of current.children) {
const subtreeWeight = computeSubtreeWeight(child);
if (subtreeWeight > maxWeight) {
maxWeight = subtreeWeight;
bestChild = child;
}
}
if (!bestChild) break;
current = bestChild;
}
return current;
}
function computeSubtreeWeight(node: BlockNode): bigint {
let sum = node.weight;
for (const child of node.children) {
sum += computeSubtreeWeight(child);
}
return sum;
}
// 示例:创世 -> A(权重2) -> B(权重3)
// -> C(权重1)
// LMD-GHOST 路径:创世 -> A -> B(子树权重 3 > 1)5.4.3 Casper FFG:可证明的最终性保障
LMD-GHOST 提供的是活性(liveness)保证——区块总会被选出,但安全性(safety)需要额外机制。Casper FFG(Friendly Finality Gadget)通过检查点投票引入最终性:
- 检查点:每 个 epoch 的第一个区块;
- justified:2/3 质押权重投票支持;
- finalized:其子检查点也被 justified。
一旦区块被 finalized,除非 1/3 质押被 slash,否则不可回滚。
// casper-ffg-vote.ts
// 检查点状态机简化实现
const VoteState = { None: 0, Prepared: 1, Committed: 2 } as const;
type Checkpoint = { epoch: number; rootHash: string; votes: bigint };
function processVote(
checkpoint: Checkpoint,
stake: bigint,
totalStake: bigint,
state: number
): { newState: number; finalized: boolean } {
const threshold = (totalStake * 2n) / 3n; // 2/3 阈值
let newState = state;
let finalized = false;
if (checkpoint.votes + stake > threshold && state === VoteState.Prepared) {
newState = VoteState.Committed;
finalized = true; // 子检查点达到 supermajority,父检查点 finalized
} else if (checkpoint.votes + stake > threshold && state === VoteState.None) {
newState = VoteState.Prepared;
}
return { newState, finalized };
}5.4.4 质押经济学:收益率、退出队列与流动性风险
质押收益 = 共识奖励 + MEV(最大可提取价值)- 罚没风险(slashing)。年化收益率随总质押量动态调整:
为协议参数,保证质押总量越大,单个验证者收益率递减。
退出队列是 Ethereum 2.0 的关键设计:每个 epoch 只允许固定数量验证者退出,防止质押大量撤出导致的共识不稳定。
5.4.5 Nothing-at-Stake 攻击与弱主观性
Nothing-at-Stake:在 PoS 早期设计中,验证者可以在所有分叉上同时投票,因为投票不消耗真实资源。Casper 通过罚没(slashing)机制解决:
如果在冲突检查点上双重投票,质押资金将被销毁。
弱主观性:新加入网络的节点需要一个“可信的最近检查点”来区分主链与长程攻击链。这与 PoW 的“创世块即可自举”不同,PoS 需要社会层提供弱主观性检查点。
graph TD
A[验证者质押 32 ETH] --> B[获得提议/投票权]
B --> C[遵循 LMD-GHOST 投票]
C --> D[检查点达到 2/3]
D --> E[区块 Finalized]
E --> F[不可回滚]
B -.->|在冲突分支投票| G[质押被 Slash]
style G fill:#f44,color:#fff
关键认知:PoS 用“经济罚没”替代了 PoW 的“物理能耗”,其安全边界是经济成本(质押价值)而非物理成本(电力)。这使得 PoS 在能耗效率上有数量级优势,但也引入了弱主观性与罚没机制的设计复杂度。
回到 5.3 PoW 激励与安全 ← | 前往 → 5.5 委托权益证明(DPoS)
评论
0评论加载中…