拜占庭容错算法是什么?PBFT、FBA、dBFT的区别与应用场景
拜占庭容错算法(BFT)是一种专门用于分布式系统中处理节点故障或恶意行为的算法,它来源于经典的拜占庭将军问题,该问题描述了一群分布在不同地点的将军需要通过信使传递消息以达成一致决策,而其中部分将军可能是叛徒,会故意发送错误或不一致的信息,故而BFT的核心目标是让大多数正常节点在不完全信任的网络环境中达成正确共识。
拜占庭容错算法有多个版本,每个版本在性能、适用场景和去中心化程度上有所不同,主要包括实用拜占庭容错(PBFT)、联邦拜占庭协议(FBA)和授权拜占庭容错算法(dBFT)。
实用拜占庭容错(PBFT)
PBFT是一种基于投票的BFT算法,由Miguel Castro和Barbara Liskov提出,它可以在失效节点不超过总节点数1/3的情况下保证共识正确性,主要用于私有链或许可链,因为参与共识的节点集合是事先确定的,节点身份可知,PBFT优点是交易通量高,处理速度快,但通信开销大,扩展性受限。
PBFT使用状态机副本复制模型,每个节点保存服务状态并执行操作,系统通过视图轮换进行管理,每个视图选出一个主节点(leader)负责与客户端通信,其余节点为备份节点(backup)。
共识过程四个阶段
1、客户端向主节点发送请求
2、主节点编号请求并广播预准备消息
3、副本节点验证预准备消息并广播准备消息
4、收到2f+1条准备消息后进入准备状态并广播提交消息
5、收到2f+1条提交消息后执行操作并向客户端发送回复
6、客户端收到f+1条相同回复后认为请求完成
PBFT的典型应用是Hyperledger Fabric,它在企业级区块链中提供高效、可靠的共识机制。
联邦拜占庭协议(FBA)
FBA适用于开放式分布式系统,由David Mazieres提出,它允许节点自由选择信任对象,形成局部子集(准同意集),并由准同意集构成信任图以达成共识,FBA可以在失效或恶意节点不超过总节点数1/3的情况下保证消息正确性,FBA优点是去中心化程度高,网络扩展性好,但安全性和活性依赖于信任图结构。
共识过程三个阶段
1、提名阶段:节点提出候选值并广播,网络各节点接收并选择可接受值
2、投票阶段:节点根据可接受值生成投票消息并广播,收到足够投票后确定批准值
3、最终阶段:节点根据批准值生成最终消息并广播,收到足够最终值后达成共识
FBA典型应用是Stellar,通过自由选择信任节点形成联邦,实现快速、去中心化的共识。
授权拜占庭容错算法(dBFT)
dBFT基于委托权益证明(DPoS),由Erik Zhang提出,适用于公有链或混合链,网络用户通过投票选出代表节点,代表节点负责验证交易和生成区块,失效或恶意节点不超过总代表节点数1/3时可保证消息正确性,dBFT优点是低延迟、高吞吐量、节能,但中心化程度较高。
dBFT共识个阶段
1、预备阶段:主节点打包交易生成区块并广播,代表节点验证区块并广播签名
2、提交阶段:主节点收集签名生成最终区块并广播,代表节点验证并添加到区块链,普通节点验证后同步区块
dBFT典型应用是NEO,允许持币用户投票选出共识节点,实现快速、安全、高效的共识过程。
拜占庭容错算法的特点
PBFT、FBA和dBFT分别适用于私有链、开放式分布式系统和公有链或混合链,都可以在失效或恶意节点不超过总节点数1/3的情况下保证共识可靠性,它们在性能、扩展性和去中心化程度上各有差异,是分布式系统和区块链中重要的研究领域。






