针对联盟链中运用的实用拜占庭容错(Practical Byzantine Fault Algorithm, PBFT)共识算法通信复杂度高,无法支持大规模网络问题,提出一种结合BLS (Boneh-Lynn-Shacham)聚合签名的Raft集群实用拜占庭容错共识(Aggregate-Signature Raft Byzantine Fault Tolerance, ARBFT)算法。首先,对网络节点进行分组,组内采用Raft共识机制选出领导者,每个组内的领导者组成网络委员会;其次网络委员会内部采用改进的PBFT机制进行共识,改进了节点之间的交互方式,在prepare阶段各个副本节点单点发送信息及签名给主节点验证,在Commit阶段由主节点收集签名并验证,结合BLS签名将验证通过的多个签名聚合成一个聚合签名,将该聚合签名以及其它必要信息广播给其他所有副本节点验证,在验证通过后主节点和副本节点再进行组内共识。ARBFT共识算法将网络的通信复杂度降低为()( )O N kO k+,在多节点的情况下,通过实验对比经典PBFT和RBFT (Raft cluster Byzantine fault tolerance)共识算法,ARBFT共识算法在共识时延、通信开销、吞吐量等方面具有更好的性能。
区块链[1]技术起源于2008 年底中本聪发表的白皮书《比特币:一个点对点的电子货币体系》[2], 其核心是由共识机制[3]、密码学、分布式数据存储、智能合约等多种技术组成,区块链具有去中心化、不可篡改和公开透明的特点。其中共识算法是解决分布式系统一致性问题的核心技术。
联盟链[4]中实用拜占庭容错算法(PBFT) [5]是应用最广泛的共识算法之一, 解决拜占庭容错算法效率低问题。IBM 的超级账本(HyperLeger [6])和FISCOBSCOS 联盟链中均有使用到PBFT 共识算法。当前PBFT 共识算法还存在不足,PBFT 的共识效率依赖于参与共识的节点数量,因此随着节点数量的增多, 完成共识的时间大大增加,整个网络的通信复杂度也会随节点数量的增加而增大,所以实用拜占庭共识算法不适合大规模的节点共识。
目前, 针对PBFT 共识算法存在的缺点已经有很多研究员提出了改进方法;文献[7]提出一种基于Raft [8]集群的拜占庭容错共识机制, 在大规模网络环境下, 提高拜占庭容错能力的同时可以保证高共识效率, 因而具有更高的扩展性,但是其通信开销还是较大。文献[9]基于Kademlia 协议优化了Raft 的领导者选举和共识机制,进一步提高了PBFT 算法的领导者选举速度和交易吞吐量,但没有从根本上解决PBFT算法的瓶颈, 节点间的通信复杂度较高, 不适合大规模网络, Raft 共识算法不具备拜占庭容错能力。
RBFT (Redundant Byzantine Fault Tolerance)算法[10]和CBFT (Concurrent Byzantine Fault Tolerance)算法[11],它们虽然在通信开销、选举安全性方面取得了一定提升,但性能依然不足;文献[12]提出一种基于特征信任模型的优化PBFT,提高了拜占庭容错能力,但通信开销和共识时延并没有得到提升。