拜占庭容错(BFT)是分布式系统中最强的容错模型。它源于“拜占庭将军问题”,旨在解决在互不信任的环境下,如何让诚实的节点达成共识。
与 CFT 不同,BFT 假设节点不仅会崩溃,还可能表现出任意行为,即存在 拜占庭故障,包括发送错误消息、伪造数据、甚至多个恶意节点合谋破坏系统。
核心假设
- 拜占庭故障:节点可能表现出任何形式的错误(恶意攻击、软件 Bug、硬件损坏导致的数据错误等)。
- 互不信任:系统参与方之间没有天然的信任基础。
典型算法
BFT 类算法是区块链技术的核心:
- PBFT (Practical Byzantine Fault Tolerance):第一个实用的异步网络环境下的 BFT 算法。
- PoW (Proof of Work):工作量证明,通过算力竞争解决拜占庭问题,比特币的核心。
- PoS (Proof of Stake):权益证明,通过持有代币的权重来达成共识。
- HotStuff:Libra (Diem) 使用的共识协议,具有线性通信复杂度。
容错能力
在包含 个节点的系统中,为了抵御 个恶意节点的攻击,通常需要: 这意味着系统需要至少 以上的诚实节点才能保证安全性和一致性。
应用场景
- 公有链:如 Bitcoin, Ethereum。
- 联盟链:如 Hyperledger Fabric (使用插件化共识)。
- 跨组织协作:参与方之间存在利益冲突或缺乏信任的环境。
- 高可靠性航空航天系统:防止硬件错误导致的随机数据损坏。