教程区块链区块链技术ch055.5 委托权益证明(DPoS)与代表选举

本页目录

DPoS 将直接民主映射为“代议制民主”:持币者不直接参与共识,而是投票选举少量代表(见证人/验证人),由代表负责出块。这种设计在吞吐量上取得数量级提升,但也引发了中心化与寡头垄断的持久争议。


5.5.1 核心思想:代议制民主映射

DPoS 的核心流程可概括为三阶段循环:

  1. 投票阶段:持币者按 1 币 = 1 票(或 1 币 = N 票的变体)选举出 NN 个代表。
  2. 出块轮替NN 个代表按预定顺序或随机抽签轮流出块,出块间隔通常为 3 秒(EOS/Steem)。
  3. 奖惩清算:代表若离线或作恶,将被投票罢免;诚实代表获得区块奖励与投票人共享。

DPoS 的投票权重公式:

Wi=jViSjW_i = \sum_{j \in V_i} S_j

其中 WiW_i 为候选代表 ii 的总得票权重,ViV_i 为所有投票给 ii 的持币者集合,SjS_j 为持币者 jj 的质押量。


5.5.2 效率与中心化的博弈

DPoS 的代表数量通常固定在 21(EOS)到 101(BitShares)之间。这种设计带来吞吐优势,但也引发中心化风险。

graph TD
    A[持币者投票] --> B[选举前 N 名代表]
    B --> C[轮替出块: 3秒/块]
    C --> D{代表作恶?}
    D -->|是| E[投票罢免]
    D -->|否| F[奖励分配]
    E --> G[新代表当选]
    F --> H[持币者共享收益]
    style D fill:#ff9900,color:#fff

5.5.3 当代变体:NPoS 与 DPoS+BFT

  • NPoS(Nominated Proof of Stake):Polkadot 提出,将验证人与提名人分离。提名人用资本背书验证人,但风险隔离——验证人被 slash 时,提名人按质押比例共同承担损失。
  • DPoS + BFT:部分公链(如 TRON)在 DPoS 轮替之上叠加 PBFT 三阶段投票,使得单个区块在代表间达成共识后才被最终确认。
ts
// dpos-vote-sim.ts
// 纯内置:模拟 DPoS 投票与出块轮替

interface Candidate {
  id: string;
  votes: bigint;
  blocksProduced: number;
}

function electDelegates(
  candidates: Candidate[],
  delegateCount: number
): Candidate[] {
  // 按得票排序,取前 N 名
  return candidates
    .sort((a, b) => Number(b.votes - a.votes))
    .slice(0, delegateCount);
}

// 模拟 3 秒的轮替出块
function* roundRobinProducer(delegates: Candidate[]): Generator<string> {
  let idx = 0;
  while (true) {
    yield delegates[idx].id;
    idx = (idx + 1) % delegates.length;
  }
}

// 示例:5 候选人,选 3 名代表
const candidates = [
  { id: 'Alice', votes: 1000n, blocksProduced: 0 },
  { id: 'Bob',   votes: 800n,  blocksProduced: 0 },
  { id: 'Carol', votes: 600n,  blocksProduced: 0 },
  { id: 'Dave',  votes: 200n,  blocksProduced: 0 },
  { id: 'Eve',   votes: 50n,   blocksProduced: 0 },
];
const delegates = electDelegates(candidates, 3);
const producer = roundRobinProducer(delegates);
for (let i = 0; i < 6; i++) {
  console.log(`Slot i:producedby{i}: produced by{producer.next().value}`);
}
// 输出:按 Alice, Bob, Carol, Alice, Bob, Carol ... 轮替

5.5.4 本章核心认知

特性PoWPoSDPoS
最终性时间~60 分钟(6 确认)1 个 epoch(~6 分钟)1-3 秒
能耗高(物理算力)低(资本质押)极低
节点数数千(开放准入)数千到数万(质押准入)21-101(投票准入)
中心化风险矿池集中交易所质押集中代表寡头
女巫防御算力成本质押成本质押成本

关键认知:DPoS 本质上是用去中心化的一部分来换取可用性。它适合高吞吐场景,但保留了“谁能控制 2/3 代表就能控制整条链”的政治风险。


← 5.4 Casper FFG | 前往 → 5.6 PBFT

评论

0

评论加载中…

发表评论

0/2000