区块链共识机制全景解析:PBFT、Tendermint 与 DAG
关键词:BFT、PBFT、Tendermint、HotStuff、DAG 共识、区块链安全、一致性协议
区块链系统的本质,是在一个不可信、分布式、可能存在恶意节点的环境中,就'账本状态'达成一致。而支撑这一目标的核心技术,就是共识机制(Consensus Mechanism)。
本文将从拜占庭容错(BFT)理论出发,系统性介绍三类在区块链与分布式账本中极具代表性的共识机制:
- PBFT(Practical Byzantine Fault Tolerance):经典 BFT 共识的起点
- Tendermint:工程化落地最成功的 BFT 区块链共识之一
- DAG 共识:突破'区块链线性结构'的新一代共识范式
同时,我们将结合 HotStuff / HotStuff-2 等研究工作,解释这些协议在安全性(Safety)与活性(Liveness)之间的权衡逻辑。
一、共识问题与拜占庭容错基础
1. 什么是共识?
在分布式系统中,共识问题可以抽象为:
多个节点在消息可能丢失、延迟、篡改,甚至部分节点作恶的情况下,仍然对同一个值达成一致。
在区块链语境下,这个'值'通常是:
- 下一笔交易 / 区块
- 某一高度(Height)的区块内容
- 某个状态机的输入序列
2. 拜占庭故障模型(Byzantine Fault Model)
拜占庭故障指的是节点可能出现任意行为,包括:
- 宕机
- 发送错误消息
- 恶意串谋
- 对不同节点发送不同信息
经典结论:
在完全拜占庭环境中,若系统要保证安全性与活性,必须满足:
n ≥ 3f + 1
其中 f 是最多可容忍的恶意节点数。
这也是 PBFT、Tendermint、HotStuff 等协议共同遵循的基础假设。
二、PBFT:经典 BFT 共识的原点
1. PBFT 的基本思想
PBFT(Practical Byzantine Fault Tolerance)由 Castro 和 Liskov 于 1999 年提出,是第一个可工程落地的拜占庭容错共识算法。
其核心目标是:
- 在异步或部分同步网络中
- 容忍最多 f < n/3 个恶意节点
- 实现单次共识的最终性(Single-Slot Finality)
PBFT 并不依赖区块链结构,本质是一个状态机复制(State Machine Replication)协议。
2. 三阶段协议(Three-Phase Protocol)
PBFT 的一次共识包含三个阶段:
- Pre-Prepare(预准备)
- 主节点(Primary)提出提案
- Prepare(准备)
- 副本节点广播 Prepare 消息
- 收集到 2f 个 Prepare 后进入 Commit
- Commit(提交)
- 节点广播 Commit
- 收集到 2f + 1 个 Commit 后正式提交
该设计确保:
- 任意两个已提交值,至少有 f+1 个诚实节点交集

