1. 前言

区块链的共识算法中,除了常见的工作量证明(PoW,Proof of Work)和权益证明(PoS,Proof of Stake)外,还有拜占庭容错(Byzantine Fault Tolerance, BFT)共识算法。

拜占庭容错(Byzantine Fault Tolerance, BFT)共识算法是由拜占庭将军问题衍生出来的共识算法。

拜占庭将军问题:

拜占庭将军问题是Leslie Lamport在10世纪80年代提出的一个假想问题。拜占庭是东罗马帝国的首都,由于当时拜占庭罗马帝国国土辽阔,每支军队的驻地分隔很远,将军们只能靠信使传递消息。发生战争时将军们必须制订统一的行动计划。然而,这些将军中有叛徒,叛徒希望通过影响统一行动计划的制定与传播,破坏忠诚的将军们一致的行动计划。因此,将军们必须有一个预定的方法协议,使所有忠诚的将军够达成一致。而且少数几个叛徒不能使忠诚的将军做出错误的计划。也就是说,拜占庭将军问题的实质就是要寻找一个方法,使得将军们在一个有版徒的非信任环境中建立对战斗计划的共识

在分布式系统中,特别是在区块链网络环境中,也和拜占庭将军的环境类似,有运行正常的服务器(类似忠诚的拜占庭将军),还有故障的服务器,有破坏者的服务器(类似叛变的拜占庭将军),即拜占庭错误节点。共识算法的核心是在正常的节点间形成对网络状态的共识。

2. 拜占庭容错共识算法的版本分类

拜占庭容错共识算法有3种版本,每种版本都具有各自的优缺点。这些版本分别是:

1) 实用拜占庭容错(PBFT,Practical Byzantine Fault Tolerance)

2) 联邦拜占庭协议(FBA,Federated Byzantine Agreement)

3) 授权拜占庭容错算法(dBFT,Delegated Byzantine Fault Tolerance)

3. 各种拜占庭容错共识算法版本的优缺点

下面来看看它们的优缺点:

3.1 实用拜占庭容错(PBFT,Practical Byzantine Fault Tolerance)

优点:高速、可扩展。

缺点:通常用于私有网络和许可网络。