DPoS 将直接民主映射为“代议制民主”:持币者不直接参与共识,而是投票选举少量代表(见证人/验证人),由代表负责出块。这种设计在吞吐量上取得数量级提升,但也引发了中心化与寡头垄断的持久争议。
5.5.1 核心思想:代议制民主映射
DPoS 的核心流程可概括为三阶段循环:
- 投票阶段:持币者按 1 币 = 1 票(或 1 币 = N 票的变体)选举出 个代表。
- 出块轮替: 个代表按预定顺序或随机抽签轮流出块,出块间隔通常为 3 秒(EOS/Steem)。
- 奖惩清算:代表若离线或作恶,将被投票罢免;诚实代表获得区块奖励与投票人共享。
DPoS 的投票权重公式:
其中 为候选代表 的总得票权重, 为所有投票给 的持币者集合, 为持币者 的质押量。
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 {producer.next().value}`);
}
// 输出:按 Alice, Bob, Carol, Alice, Bob, Carol ... 轮替5.5.4 本章核心认知
| 特性 | PoW | PoS | DPoS |
|---|---|---|---|
| 最终性时间 | ~60 分钟(6 确认) | 1 个 epoch(~6 分钟) | 1-3 秒 |
| 能耗 | 高(物理算力) | 低(资本质押) | 极低 |
| 节点数 | 数千(开放准入) | 数千到数万(质押准入) | 21-101(投票准入) |
| 中心化风险 | 矿池集中 | 交易所质押集中 | 代表寡头 |
| 女巫防御 | 算力成本 | 质押成本 | 质押成本 |
关键认知:DPoS 本质上是用去中心化的一部分来换取可用性。它适合高吞吐场景,但保留了“谁能控制 2/3 代表就能控制整条链”的政治风险。
← 5.4 Casper FFG | 前往 → 5.6 PBFT
评论
0评论加载中…