BFT
BFT,全称拜占庭容错(Byzantine Fault Tolerance),是一类分布式共识算法的总称。这类算法旨在解决所谓的“拜占庭将军问题”——即在一个可能发生叛徒(故障节点或恶意节点)欺骗、发送错误信息的分布式系统中,如何让所有忠诚的将军(正常节点)就同一个行动计划达成一致。
BFT机制的核心目标是:即使系统中存在一定数量的节点(不超过系统容忍极限)发生任意类型的故障(包括恶意行为),整个系统依然能够就交易的顺序和状态达成一致,保证安全性和活性。
关键特性:
安全性(Safety):所有正常节点对交易顺序和状态的认知是一致的。绝不会发生“双花”等错误。
活性(Liveness):系统最终能够产生新的区块并确认交易,不会无限期卡住。
容错能力:一个经典的BFT系统(如PBFT)可以容忍 f 个拜占庭节点(恶意或故障节点)的破坏,但需要至少 3f + 1 个总节点数来达成共识。
公式推导:假设总节点数为 N,恶意节点为 f。我们需要多数正常节点(N - f)来达成一致,但这个多数必须大于恶意节点数 f(否则恶意节点可以伪造多数),即
N - f > f
=>N > 2f
。为了绝对可靠,通常要求N >= 3f + 1
。这意味着在5个节点的系统中,最多可以容忍 1 个恶意节点 (
5 >= 3*1 + 1
)。
Practical Byzantine Fault Tolerance(实用拜占庭容错)是一个经典的BFT算法,其核心过程分为预准备(Pre-Prepare)、准备(Prepare) 和提交(Commit) 三阶段。
请求(Request):客户端向主节点(Leader,或称Primary)发送交易请求。
预准备(Pre-Prepare):主节点分配一个序列号(Sequence Number)给请求,然后广播一个
预准备
消息给所有副本节点(Replicas)。准备(Prepare):每个副本节点收到
预准备
消息后,验证其合法性。如果验证通过,则广播一个准备
消息给所有其他节点。当一个节点收到 2f 个来自不同节点的、内容正确的准备
消息(加上它自己的,共 2f+1 个)时,它就进入“准备”状态。提交(Commit):进入“准备”状态的节点广播一个
提交
消息给所有节点。当一个节点收到 2f 个内容正确的提交
消息(加上它自己的,共 2f+1 个)时,它就知道足够多的节点已经达成了共识。此时,它正式提交(执行)该请求,并将结果写入本地状态。回复(Reply):节点执行完成后,向客户端发送回复。客户端收到 f+1 个相同的回复后,即可确认请求已被系统最终确认。
变种实现
1. Tendermint (如今称为 Ignite Core)
所属类别: BFT-PoS
创新性:
与权益证明(PoS)深度集成:验证者的权重由其质押的代币数量决定,而不是简单的节点数量。这使其非常适合无许可的公有链环境。
确定的最终性:继承了BFT的核心优势,一旦区块被确认(即收到超过 2/3 质押权重的预承诺),就是绝对最终的,不会有分叉。这提供了极佳的用户体验。
简化的共识轮次:它将PBFT的三阶段(预准备、准备、提交)合并为高度结构化的两阶段投票轮次(预投票和预提交),每一轮都需要 2/3 的多数同意才能进入下一轮。
解决的问题:
许可问题:通过PoS机制,任何人均可通过质押加入验证者集合,实现了去中心化的无许可网络。
能量效率:取代了PoW的高耗能挖矿。
明确的安全性:提供了明确的安全边界(能容忍少于1/3质押权重的恶意行为)。
典型应用: Cosmos 生态系统。
2. HotStuff / LibraBFT
所属类别: 流水线式BFT
创新性:
线性视图变更和通信复杂度:这是最革命性的创新。HotStuff 将共识过程流水线化,并使用门限签名聚合投票。这使得每个视图切换期间的通信复杂度从 PBFT 的 O(n²)(每个节点都需要与其他所有节点通信)降低到 O(n)(每个节点只与主节点通信)。
模块化设计:将安全性、活性性和响应性分离,使得协议更易于理解和形式化验证。
优化主节点切换:视图变更变得非常高效,不再是一个容易导致系统停滞的“紧急事件”。
解决的问题:
扩展性瓶颈:大幅降低了大规模验证者集合下的通信开销,使节点数量可以扩展到数百个,而不会导致网络拥堵。
性能:流水线设计使得出块速度更快,延迟更低。
典型应用: Facebook 的 Diem(原Libra), BNB Chain, Avalanche 的子网也受其影响。
3. DAG-based BFT (例如 Hashgraph)
所属类别: 异步BFT
创新性:
抛弃区块,拥抱DAG:不再使用传统的链式区块结构,而是采用有向无环图(DAG)来记录事件。每个事件都包含其父事件的哈希,并包含交易和签名。
“流言协议”:节点之间随机地、持续地交换它们已知的信息(“流言”),最终所有信息会以极高的效率传播到整个网络。
虚拟投票:由于每个节点最终都会拥有几乎相同的DAG结构,它们可以本地计算出所有其他节点会如何投票,而无需实际广播投票消息。这消除了对投票阶段的所有网络通信。
解决的问题:
理论上的异步安全性:声称在真正的异步网络环境下(消息可以无限延迟)也是安全的。
极致吞吐量:通过虚拟投票和DAG结构,理论上可以达到极高的交易吞吐量(TPS),因为通信开销极低。
缺点/争议:
专利限制:Hashgraph 由 Swirlds 公司申请专利,并非完全开源,这限制了其采用。
复杂性:协议非常复杂,且其真正的异步安全性和性能需要更广泛的独立审查。
典型应用: Hedera Hashgraph。
4. Avalanche Consensus
所属类别: ** metastable 共识**
创新性:
基于亚稳态和随机抽样的共识:它不像传统BFT那样让所有节点投票。相反,每个节点随机选择一小部分(例如20个)其他节点作为“抽样”,并询问他们对交易的偏好。根据收到的回复,节点更新自己的状态,并重复这个过程。经过几轮后,整个网络会以极高的概率收敛到同一状态。
无领导者:没有明确的主节点或提案者,所有节点并行工作,避免了主节点成为瓶颈或攻击目标。
可组合性:可以并行处理多个不相干的交易,极大提升了吞吐量。
解决的问题:
极致的扩展性:通信开销与节点数量成次线性关系,理论上可以支持成千上万的节点。
低延迟:无需等待全球投票,快速收敛。
灵活性:很容易创建自定义的子网(Subnets),每个子网可以有自己的验证者集合和规则。
需要注意:Avalanche 提供的是一种概率最终性,而非传统BFT的绝对最终性。但随着共识轮次增加,交易被逆转的概率会呈指数级下降,直至可以忽略不计。
典型应用: Avalanche 区块链平台。
最后更新于
这有帮助吗?