1999年Liskov等人提出的PBFT算法将BFT算法复杂度降为多项式级,但是该算法存在扩展性较差的问题。因此对于当前的共识协议的改进主要是在降低通信复杂度,提高共识效率,改变节点数量等几个方面。然而,实现一种具备多个方面优势的共识算法需要综合考虑安全性、效率、可扩展性、容错性和适应性等多个因素,仍然是一项极具挑战性的任务。我们提出了一个基于流水线的拜占庭容错共识算法PGS-BFT (Pipeline-Based Graph Structure Byzantine Fault Tolerance Consensus Algorithm),算法的特点及优势如下:
1. 算法基于PBFT共识算法改进优化,采用流水线的思想,将共识阶段中的验证、出块、排序进行解耦,利用并行的执行架构,减少等待时间。
2. 为了确保系统的一致性,该算法引入了预出块的概念。通过预出块,诚实节点可以在共识过程中提前存储区块的信息,即使在共识过程中发生了网络延迟等情况,诚实节点仍然可以继续进行共识的排序过程,容忍拜占庭错误,从而保持系统的正常运行和一致性。
3. 在排序阶段,将区块按照计算出的区块Hash值进行排序。采用图式存储结构,解决因高并发、网络延迟等原因造成的出块顺序不一致的问题,使系统达成最终的一致性。图式结构可以优化排序操作,提高排序的效率,降低排序时间。