一种基于流水线的高效区块链共识算法

文档序号:31568635发布日期:2022-09-20 21:34阅读:115来源:国知局
一种基于流水线的高效区块链共识算法

1.本发明及区块链共识算法技术领域,具体涉及一种基于流水线的高效区块链共识算法。


背景技术:

2.随着计算机技术的不断发展,区块链技术逐渐走向成熟,从人们熟知的比特币到现在的区块链金融,区块链技术已经广泛的应用到我们的日常生活中。共识算法作为区块链技术的一个重要组成部分,决定了系统出块的速率和正确率,对区块链技术起着关键的作用。近年来,在共识算法领域中拜占庭将军问题受到越来越多的研究者的青睐,拜占庭将军问题是指当存在一些恶意节点时,如何避免恶意节点的影响,自动且安全的执行操作。传统的pbft共识算法通信成本较高,共识速率慢,节点动态变更能力较差,在小规模集群中算法效率较高,在大规模集群上性能一般,不能满足用户的需求。因此研究者从不同的角度去优化改进算法,提高算法的执行速度降低算法的通信成本。
3.目前,对于拜占庭类共识算法的研究主要通过降低节点数和降低通信次数来提高算法的效率,如:增加第三方可信机制、优化算法通信结构等。传统的bft类共识算法使用3f+1个节点参与投票来容忍f个拜占庭类节点,为了防止主节点作恶,算法采用三阶段的共识,通过三次的信息交互完成共识,这在一定程度上降低了执行效率,同时提高了系统的复杂程度。


技术实现要素:

4.本发明的目的是为解决现有技术区块链共识算法执行效率低、吞吐量受限、计算资源浪费的问题,提供一种基于流水线的高效区块链共识算法。
5.本发明为了实现上述目的,所提供的技术方案是:一种基于流水线的高效区块链共识算法,基于拜占庭容错共识算法,通过委员会选取阶段和投票阶段两个共识提交阶段,运用流水线并行的执行方式,采用无领导模式和随机选取方式,优化区块链共识算法。
6.优选的,在所述委员会选取阶段,当用户发起交易时,根据交易内容、时间戳和消息对应的视图生成随机种子,根据随机种子进行委员会划分,委员会内部进行消息的转发和投票,根据收集的票数决定是否提交;在所述投票阶段,委员会内各个节点收集投票数量,根据投票的数量决定是否进行消息的提交,若提交则进行消息广播,普通节点在收到消息后进行消息同步操作。
7.优选的,在所述委员会选取阶段,委员会内没有领导者节点,节点之间通过相互通讯获得信息和投票。
8.优选的,所述委员会选取阶段采用环形网络拓扑结构。
9.优选的,在所述投票阶段,执行组织进行组内交易验证的并行执行时,采用异构执行或同构执行;验证节点对交易执行情况进行验证时,采用同构验证或异构验证。
10.优选的,具体包括以下步骤:
11.1)用户发起交易时,客户端进行全广播,所有节点存储一份消息备份,共享消息交易池;
12.2)各节点根据交易内容、时间戳和消息对应的视图信息进行hash运算,随机选取委员会节点,根据不同计算结果将不同的节点划分到不同的委员会;
13.3)不同委员会进行交易请求进行委员会选取阶段的执行和验证;
14.4)不同交易请求进行投票阶段的执行和验证,采用并行的执行架构,验证通过后将验证信息在所有节点中进行广播;
15.5)收集到指定票数的节点将该交易请求反馈给客户端。
16.优选的,所述步骤3)中不同委员会之间处理不同的交易请求,组织内采用无领导者的方式。
17.优选的,所述步骤4)中不同交易请求进行交易执行和验证采用流水线形式并行的执行。
18.本发明具有以下有益效果:
19.一、算法基于流水线思想,提出将不同轮次的出块请求分配给不同的委员会处理,委员会之间采取并行的执行方式,达到流水线化执行,提高执行的效率,降低交易验证出块的时间,从而大大提高系统吞吐量。
20.二、算法采用无领导者模型,降低主节点通信压力,防止主节点单点故障,避免视图切换引起的通信开销,提高算法的可靠性。
21.三、委员会采用随机方式选取,委员会内部通过节点间广播投票,避免了出块节点垄断,从而提高算法的公平性。
22.四、算法将拜占庭容错共识从三阶段降为两阶段,减少了通信开销,提高了共识效率。
附图说明
23.图1为区块链共识算法执行阶段示意图;
24.图2为区块共识算法串行执行流程图;
25.图3为区块链共识算法委员会选取阶段示意图;
26.图4为区块链共识算法节点随机种子生成算法示意图;
27.图5为区块链共识算法并行执行流程图;
28.图6为区块链共识算法节点环形拓扑结构示意图;
29.图7为区块链共识算法节点动态变更中加入节点的示意图;
30.图8为区块链共识算法节点动态变更中删除节点的示意图。
具体实施方式
31.下面结合附图及较佳实施例详细说明本发明的具体实施方式。
32.一种基于流水线的高效区块链共识算法,基于拜占庭容错共识算法,通过委员会选取阶段和投票阶段两个共识提交阶段,运用流水线并行的执行方式,采用无领导模式和随机选取方式,优化区块链共识算法。
33.本发明不同与现有的bft类共识算法的领导者串行的执行模式,而是通过流水线
并行的执行方式,提出了一种无领导者流水线bft共识算法。在两个阶段的投票后达成共识,实现了并行的执行和验证。进一步提高现有的bft类共识算法的交易执行效率和吞吐量,避免在出现大批量交易时由于共识算法效率低下导致的共识失败,从而使区块链系统达成共识。
34.如图1所示,整个共识算法的执行流程包括“委员会选取阶段-投票阶段”两个阶段。
35.在委员会选取阶段,当用户发起交易时,根据交易内容、时间戳和消息对应的视图生成随机种子,根据随机种子进行委员会划分,委员会内部进行消息的转发和投票,根据收集的票数决定是否提交。在委员会选取阶段,委员会内没有领导者节点,节点之间通过相互通讯获得信息和投票。
36.委员会选取阶段采用环形网络拓扑结构,可以动态的调整节点数量。对于任意一个节点,都会有一个前驱节点和后继节点,节点之间具有一定的关联性,组成一个环形结构,对于任意节点的加入,只需要更新两个节点的前驱节点和后继节点即可。若有节点退出,则只需要更改节点的前驱和后继标识即可。
37.如图6所示,每一个节点都存储了一个前节点和后节点的信息,对于任意的一个节点都可以找出两个和它相邻的节点信息。节点之间组成一个环形拓扑结构,通过环形拓扑结构,可以是节点之间具有一定的关联性。
38.如图7和8所示。对于节点的删除操作和加入操作,只需要修改删除点或者加入点前后两个节点的前节点和后节点信息即可,使算法具有一定的扩展性。
39.在投票阶段,委员会内各个节点收集投票数量,根据投票的数量决定是否进行消息的提交,若提交则进行消息广播,普通节点在收到消息后进行消息同步操作。在投票阶段,执行组织进行组内交易验证的并行执行时,采用异构执行或同构执行;验证节点对交易执行情况进行验证时,采用同构验证或异构验证。
40.一种基于流水线的高效区块链共识算法,具体包括以下步骤:
41.1)用户发起交易时,客户端进行全广播,所有节点存储一份消息备份,共享消息交易池。
42.如图2所示,客户端在请求阶段将消息进行全广播,节点将客户端广播的消息放入自生的资源缓冲池中用于消息的执行和验证过程。如果采用串行的执行方式,共识时间就会提高,共识效率就会降低,因此采用流水线并行的执行方式。
43.2)各节点根据交易内容、时间戳和消息对应的视图信息进行hash运算,随机选取委员会节点,委员会节点选取具有一定的随机性,可以减少拜占庭节点作恶和出块节点的垄断。根据不同计算结果将不同的节点划分到不同的委员会,根据交易内容、时间戳和消息对应的视图信息进行随机节点选取。
44.节点根据消息内容、时间戳以及消息对应的视图信息进行hash计算,如图4所示,计算出随机种子,根据随机种子将不同的节点划分到不同的组织,如图2中的委员会1、委员会2

委员会n。其中,还可以采用随机选取和secp256k1加密算法以提高算法的公平性,secp256k1加密算法具体采用现有公开的加密算法。
45.3)不同委员会进行交易请求进行委员会选取阶段的执行和验证,不同委员会之间处理不同的交易请求,组织内采用无领导者的方式,降低主节点通信压力,防止主节点出现
单点故障,避免视图切换引起的通信开销,提高算法的可靠性。
46.如图3所示,消息在委员会内部进行消息的相互广播,在相互广播的过程中,组织节点没有主节点的概念,节点的权利和义务都是一样的,即为无领导模式,当节点收集验证大于f个投票时,认为该消息是可以进行提交操作的。
47.4)不同交易请求进行投票阶段的执行和验证,采用并行的执行架构,验证通过后将验证信息在所有节点中进行广播,不同交易请求进行交易执行和验证采用流水线形式并行的执行,提高算法的执行效率。
48.当同一时间不同的交易请求到达时,如图5所示,节点会根据不同的请求消息的时间戳、视图进行计算,计算出该消息请求对应的组织。采用流水线的执行架构不同的消息分配给不同的委员会进行处理,减少等待时间,提高效率。
49.5)收集到指定票数的节点将该交易请求反馈给客户端。
50.本发明实现了无领导者模式下的流水线共识算法,通过两阶段的广播投票完成对数据的执行和验证。采用流水线形式的执行架构,提高了算法的执行效率降低执行时间。通过环形的节点拓扑结构完成节点的动态变更过程,提高了共识算法的执行效率,可扩展性,以及吞吐量。
51.以上所述,仅是本发明的较佳实施例而已,并非对本发明作任何形式上的限制,虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明,任何熟悉本专业的技术人员,在不脱离本发明技术方案范围内,当可利用上述揭示的技术内容作出些许更动或修饰为等同变化的等效实施例,但凡是未脱离本发明技术方案内容,依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化与修饰,均仍属于本发明技术方案的范围内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1