PBFT 共识是什么?联盟链为什么用它 图 1
PBFT 共识是什么?联盟链为什么用它 · 图 1

一句话理解

PBFT(Practical Byzantine Fault Tolerance,实用拜占庭容错)是一类“节点身份已知、总数有限”的共识算法总称,核心目标是:在最多 1/3 节点作恶(拜占庭故障)的前提下,让诚实节点就同一事务的顺序达成一致。它不需要挖矿,靠“投票”达成一致。

它怎么工作(三轮投票)

以一个主节点(primary/leader)为例,经典 PBFT 对每个请求走三个阶段:① 客户端把请求发给所有节点,primary 收下后广播“pre-prepare”;② 各节点验证后广播“pre-vote”(我同意这个值);③ 每个节点收到 2f+1 个一致的 pre-vote 后,广播“pre-commit”,再凑够 2f+1 个 pre-commit 就“提交”这个值。这里 N=3f+1(总节点数),f 是允许作恶数。三阶段保证:即使 f 个节点乱来,诚实节点仍能收敛到同一值,且不会“提交”两个冲突值。

为什么适合联盟链

PBFT 的假设是“参与者有限且身份已知”,正好匹配联盟链/企业链场景:节点是几家受信任机构,数量几十到几百,不需要匿名、不需要用算力/质押做安全锚。它的优点:出块快(毫秒到秒级最终性)、无出块奖励、能耗低、确定性高。代价:不适合“开放、无许可”的公链——节点不能无限扩张(通信复杂度 O(N²),N 一大就崩),且“身份已知”本身就牺牲了去审查性。所以比特币/以太坊这类公链不用 PBFT,而用 PoW/PoS。

和 PoW/PoS 的本质区别

PoW 用“算力竞赛”选 leader + 最长链裁决,安全锚是电费;PoS 用“质押+罚没”选 leader + 投票最终性,安全锚是质押资产。PBFT 则用“已知节点的多轮投票”直接达成确定性共识,安全锚是“参与者可信 + 作恶成本(被踢出联盟)”。三者面向不同信任假设:PBFT 信任“小圈子”,PoW/PoS 信任“经济博弈”。

怎么判断一条链用的什么共识

看三件事:出块是否需要挖矿/质押(无 → 偏 BFT);节点是否公开可加入(不可 → 联盟/许可);是否有多轮投票 + 秒级最终性(是 → BFT 系)。常见实现:Hyperledger Fabric(Raft+)、Tendermint/CometBFT(2f+1)、各类 BFT 变体。理解 PBFT,是理解“为什么企业链快但不够去中心化”的关键。相关:拜占庭容错原理见 BFT 是什么?拜占庭容错的原理(公链栏目)。

风险提示

本文仅为信息与教育内容,不构成任何投资建议。PBFT 类共识的安全性高度依赖“联盟成员可信且少于三分之一作恶”,若联盟治理失衡(单一方可拉拢多数),共识可被俘获;评估联盟链请核实成员结构与投票权分布。