论文部分内容阅读
共识算法是区块链的重要组成部分,主要负责处理节点一致性问题,共识算法效率的高低将直接影响区块链运行效率。衡量共识算法性能的关键因素主要有:数据吞吐量、交易时延和可拓展性等。为了提升区块链的运行效率,对共识算法进行了研究。目前针对区块链共识算法的优化分为两个阶段,第一阶段是将已有的共识算法应用在区块链,第二阶段是根据区块链类型对共识算法进行改进。虽然目前已有许多成熟的共识算法,但这类共识算法仅局限于某一种区块链类型。针对这一问题提出了针对不同应用场景的模块化共识算法,模块化共识算法可以结合区块链类型选择最适合的共识算法,以达到共识效率的最大化。模块化共识算法选取经典的Raft算法和PBFT(Practical Byzantine Fault Tolerance,实用拜占庭容错)算法作为研究对象,选取Raft算法作为研究对象是因为算法的高可拓展性和高数据吞吐量,选取PBFT算法作为研究对象一方面是BFT类算法高数据吞吐量和低共识时延的特性,另一方面是目前类似于PoW(Proof of Work)等结合代币的拜占庭容错方案容易带来法律问题和资源浪费问题。模块化共识算法针对公有链、联盟链和私有链的不同应用场景分别提出了可供模块化切换的RBFT(Raft Byzantine Fault Tolerance)算法、OBFT(Optimized Byzantine Fault Tolerance)算法和 KRaft(Kademlia Raft)算法。可应用于公有链的RBFT算法是一种在Raft算法基础上结合了 BLS签名实现的拜占庭容错算法,结合了公有链应用场景,为公有链提供了高数据吞吐量和高可拓展性;可应用于联盟链的OBFT算法是一种在PBFT算法基础上改进而来的拜占庭容错算法,结合联盟链应用场景,为联盟链提供了高数据吞吐量、低时延和高可拓展性;可应用于私有链的KRaft算法是一种在Raft算法基础上结合Kademlia协议实现的非拜占庭容错算法,结合私有链节点信任应用场景,为私有链提供了高并行性和高数据吞吐量。模块化共识算法的提出,提升了区块链平台的可用性,用户可以根据区块链应用场景对共识算法进行选择,以达到共识效率的最大化。