一种高速响应客户端的拜占庭容错共识方法

未命名 08-27 阅读:109 评论:0


1.本发明属于区块链技术、拜占庭容错共识领域,尤其涉及一种高速响应客户端的拜占庭容错共识方法。


背景技术:

2.从本质上说,区块链技术是一种不同副本节点能在没有可信第三方存在的分布式网络环境中依靠共识算法使公共账本达成数据一致的技术。共识算法是区块链技术的核心部分,随着区块链技术的不断发展,行业内出现了各种各样的共识算法。
3.传统的区块链共识算法为了能够容忍存在拜占庭错误的情况,设计了多轮共识消息交互流程,客户端发送的请求当且仅当该请求被区块链集群大多数副本节点共识提交后,客户端才能收到区块链集群的回复,然而如果系统没有错误发生并且网络不会出现超时问题时,传统的共识算法仍然需要跑完多轮共识才能响应客户端,系统响应速度较慢。


技术实现要素:

4.针对现有共识算法在区块链集群无错误发生的情况下对于客户端的响应速度不足的问题,本发明提供了一种高速响应客户端的拜占庭容错共识方法,该方法采用客户端判断副本的乐观执行结果的方式,提高了对于客户端的响应速度。
5.本发明的目的是通过如下技术方案实现的:
6.一种高速响应客户端的拜占庭容错共识方法,具体包括如下步骤:
7.(1)将区块链集群的所有副本节点之间均建立安全的p2p通信连接;
8.(2)取一个副本节点作为主节点,客户端发送请求给主节点;
9.(3)所述主节点收到客户端发来的请求后,为这笔交易分配序列号,广播pre-prepare消息发送给区块链集群的所有副本节点;
10.(4)所述副本节点收到主节点的pre-prepare消息后,乐观执行这笔交易,即副本节点收到排序好的请求,直接执行;所述副本节点发送prepare消息给主节点和客户端;
11.(5)所述主节点收到2f+1个prepare消息后,将2f+1个prepare消息聚合成prepareqc,并广播prepareqc消息给所有副本节点,其中f为发生拜占庭错误的副本节点数;若客户端在定时器超时前收集到3f+1个一致的prepare消息,则认为交易被所有副本节点乐观执行,该笔交易将来一定能被共识;
12.(6)所述副本节点收到主节点的prepareqc消息后,验证prepareqc是否合法,如果合法,副本节点保存prepareqc,发送commit消息给主节点和客户端;如果不合法,副本节点将收到的不合法消息作为视图变更的证据,广播发送视图变更消息,进入视图变更阶段;
13.(7)所述主节点收到2f+1个commit消息后,将2f+1个commit消息聚合成commitqc,广播commitqc消息给所有副本节点;与此同时,若客户端在定时器超时前收集到2f+1个一致的commit消息,则认为交易被所有副本节点乐观执行,该笔交易将来一定能被共识,进入下一步骤;若客户端在定时器超时没能收集到2f+1个一致的副本的commit消息,客户端将
重传该笔交易,即重新进行步骤(2)~(7);
14.(8)所述副本节点收到主节点的commitqc消息后,验证commitqc是否合法,如果合法,副本节点保存commitqc,正式提交这笔交易,并且将提交消息通过消息队列推送给客户端;如果不合法,副本节点将收到的不合法消息作为视图变更的证据,广播发送视图变更消息,进入视图变更阶段。
15.进一步地,若所述主节点为拜占庭节点,副本节点和客户端凭借设置的定时器判断是否发生超时事件,进行视图变更,采用轮换方式切换到下一个主节点;在视图变更过程中,每个副本节点将本地保存的prepareqc和commitqc发送给新的主节点,新的主节点根据收集到的qc信息重新共识上一个视图中本该完成的请求,以o(n2)的消息通信复杂度完成视图变更过程并保证区块链系统的一致性。
16.进一步地,采用流水线并行的执行方式,所述主节点将对序列号为n的pre-prepare消息,序列号为n-1的prepareqc消息和序列号为n-2的commitqc消息统一进行签名发送给副本节点,从而把串行执行不同轮次的过程变成多个轮次并行执行,提高区块链系统的吞吐量。
17.进一步地,所述区块链集群采用落后副本节点高效恢复策略,对于落后过多的副本节点先进行账本状态恢复,通过快照恢复和区块恢复使落后副本节点能够恢复到和其他副本节点一致的检查点高度,再进行共识状态恢复,获取其他副本节点所持有的合法prepareqc和commitqc,后续该副本节点便能参与最新一轮的共识流程,并能够高速响应客户端。
18.进一步地,采用副本节点黑名单的管理机制,有效减少拜占庭节点对区块链系统的活性的影响;当副本节点持有主节点发生拜占庭行为的证据时,将主节点记录在黑名单中;黑名单记录不超过f个副本节点的编号,当发生视图变更时,如果新的主节点不在黑名单中,则进行正常的共识切换,如果新的主节点编号在黑名单中,则跳过该轮视图,将视图号再次加1,再进行判断。
19.进一步地,所述步骤(5)中,若客户端在定时器超时前收集到3f+1个一致的prepare消息,客户端判定该笔交易将来一定能被共识,无需判断步骤(7)收集到的消息,提前结束判断,客户端进行完成共识后的操作,但该笔交易仍继续走完共识协议的后续步骤;若客户端在定时器超时没能收集到3f+1个一致的副本的prepare消息,则客户端需要按照步骤(7)的收集结果判断该笔交易是否能完成共识;
20.所述步骤(7)中,若该笔交易被判断为将来一定能被共识,则该笔交易于此结束判断,客户端进行完成共识后的操作,但该笔交易仍继续走完共识协议的后续步骤。
21.本发明的有益效果如下:
22.本发明解决了传统共识算法在区块链集群无错误发生的情况下对于客户端的响应速度不足的问题,区块链副本节点乐观执行主节点的排序消息,并将乐观执行结果快速响应给客户端,有效提高了区块链系统响应客户端请求的速度。
附图说明
23.图1是本发明高速响应客户端的拜占庭容错共识方法的算法流程图。
24.图2是本发明高速响应客户端的拜占庭容错共识方法的流水线并行执行流程图。
具体实施方式
25.下面根据附图和优选实施例详细描述本发明,本发明的目的和效果将变得更加明白,以下结合附图和实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
26.如图1所示,高速响应客户端的拜占庭容错共识方法中,客户端从发起请求开始,最快仅需三轮消息通信便可认为请求被共识。区块链集群中的副本节点收到主节点发来的客户端请求之后,副本节点乐观执行请求并返回结果给客户端,无需像现有的拜占庭容错共识协议一样等待共识所有轮次完成后才将结果返回,当客户端判断所有副本节点的乐观执行结果一致时,便可认为请求最终能被区块链集群所共识。该方法具体包括如下步骤:
27.(1)将区块链集群的所有副本节点之间均建立安全的p2p通信连接。
28.(2)取一个副本节点作为主节点,客户端发送请求给主节点。
29.(3)区块链集群的主节点收到客户端发来的请求后,为这笔交易分配序列号,广播pre-prepare消息发送给区块链集群所有副本节点。
30.(4)区块链集群中的副本节点收到主节点的pre-prepare消息后,乐观执行这笔交易,即副本节点收到排序好的请求,直接执行;副本节点发送prepare消息给区块链集群的主节点和客户端。若某一副本节点为拜占庭节点,则该副本节点仅接收pre-prepare消息,不对该消息进行回复。
31.(5)区块链集群中的主节点收到2f+1个prepare消息后,将2f+1个prepare消息聚合成prepareqc,广播prepareqc消息给所有副本节点,其中f为发生拜占庭错误的副本节点数。与此同时,如果区块链集群没有错误发生并且网络条件较好的情况下,客户端可以不需要等待共识的多轮交互,当客户端在定时器超时前收集到3f+1个一致的副本的prepare消息后,便可认为交易被所有副本节点乐观执行,该笔交易将来一定能被共识,客户端无需判断下面步骤(7)的收集到的消息,可提前结束判断,客户端可以进行完成共识后的其他操作,但该笔交易仍继续走完共识协议的后续步骤;若客户端在定时器超时没能收集到3f+1个一致的副本的prepare消息,则客户端需要按照步骤(7)的收集结果判断该笔交易是否能完成共识。对于数据存证等应用场景,该共识机制能够具有高速的响应能力,满足及时性的需求。
32.(6)区块链集群中的副本节点收到主节点的prepareqc消息后,验证prepareqc是否合法,如果合法,副本节点保存prepareqc,发送commit消息给主节点和客户端;如果不合法,副本节点将收到的不合法消息作为视图变更的证据,广播发送视图变更消息,进入视图变更阶段。
33.(7)区块链集群中的主节点收到2f+1个commit消息后,将2f+1个commit消息聚合成commitqc,广播commitqc消息给所有副本节点。与此同时,客户端如果在定时器超时前收集到2f+1个一致的副本节点的commit消息,便可认为交易被区块链集群的所有副本节点乐观执行,该笔交易将来一定能被共识,该笔交易于此结束判断,客户端可以进行完成共识后的其他操作,但该笔交易仍继续走完共识协议的后续步骤,即进入步骤(8)。若客户端在定时器超时没能收集到2f+1个一致的副本节点的commit消息,客户端将重传该笔交易,即重新进行步骤(2)~(7)。
34.(8)区块链集群中的副本节点收到主节点的commitqc消息后,验证commitqc是否
合法,如果合法,副本节点保存commitqc,正式提交这笔交易,并且将提交消息通过消息队列推送给客户端;如果不合法,副本节点将收到的不合法消息作为视图变更的证据,广播发送视图变更消息,进入视图变更阶段。客户端可根据推送情况得知交易是否正式提交,满足实时计算场景的需求。
35.如果区块链集群的主节点为拜占庭节点,副本节点和客户端可凭借设置的定时器判断是否发生超时事件,若发生超时事件,则进行视图变更,采用轮换方式切换到下一个主节点。在视图变更过程中,每个副本节点将本地保存的prepareqc和commitqc发送给新的主节点,新的主节点根据收集到的qc信息重新共识上一个视图中本该完成的请求,使用o(n2)的通信复杂度完成视图变更过程,并保证区块链系统的一致性和安全性。
36.如图2所示,本发明采用流水线并行的执行方式。假设客户端发送三条序列号分别为n-2,n-1,n的请求,区块链集群的主节点将对序列号为n的pre-prepare消息,序列号为n-1的prepareqc消息和序列号为n-2的commitqc消息统一进行签名发送给副本节点,从而把串行执行不同轮次的过程变成多个轮次并行执行,提高区块链系统的吞吐量。
37.因为三阶段高速响应的前提是客户端收集到所有回复,如果某个副本节点宕机或者网络超时,将导致客户端无法收集所有回复,本发明设计了落后节点高效恢复策略,对于落后过多的节点可以先进行账本状态恢复,通过快照恢复和区块恢复使落后节点能够恢复到和其他节点一致的检查点高度,再进行共识状态恢复,获取其他节点所持有的合法prepareqc和commitqc,后续该节点便可参与最新一轮的共识流程,并能够高速响应客户端,保证了系统的可用性和鲁棒性。
38.采用黑名单的管理机制,有效减少拜占庭节点对区块链系统的活性的影响。当副本节点持有主节点发生作恶行为的证据时,将主节点记录在黑名单中。黑名单记录不超过f个节点的编号,f为发生拜占庭错误的副本节点数,当发生视图变更时,如果新的主节点不在黑名单中,则进行正常的共识切换,如果新的主节点编号在黑名单中,则跳过该轮视图,将视图号再次加1,再进行判断。本方法能够有效减少视图变更过程中新的主节点是拜占庭节点的概率,提高了区块链系统的活性。
39.本领域普通技术人员可以理解,以上所述仅为发明的优选实例而已,并不用于限制发明,尽管参照前述实例对发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实例记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。凡在发明的精神和原则之内,所做的修改、等同替换等均应包含在发明的保护范围之内。

技术特征:
1.一种高速响应客户端的拜占庭容错共识方法,其特征在于,具体包括如下步骤:(1)将区块链集群的所有副本节点之间均建立安全的p2p通信连接;(2)取一个副本节点作为主节点,客户端发送请求给主节点;(3)所述主节点收到客户端发来的请求后,为这笔交易分配序列号,广播pre-prepare消息发送给区块链集群的所有副本节点;(4)所述副本节点收到主节点的pre-prepare消息后,乐观执行这笔交易,即副本节点收到排序好的请求,直接执行;所述副本节点发送prepare消息给主节点和客户端;(5)所述主节点收到2f+1个prepare消息后,将2f+1个prepare消息聚合成prepareqc,并广播prepareqc消息给所有副本节点,其中f为发生拜占庭错误的副本节点数;若客户端在定时器超时前收集到3f+1个一致的prepare消息,则认为交易被所有副本节点乐观执行,该笔交易将来一定能被共识;(6)所述副本节点收到主节点的prepareqc消息后,验证prepareqc是否合法,如果合法,副本节点保存prepareqc,发送commit消息给主节点和客户端;如果不合法,副本节点将收到的不合法消息作为视图变更的证据,广播发送视图变更消息,进入视图变更阶段;(7)所述主节点收到2f+1个commit消息后,将2f+1个commit消息聚合成commitqc,广播commitqc消息给所有副本节点;与此同时,若客户端在定时器超时前收集到2f+1个一致的commit消息,则认为交易被所有副本节点乐观执行,该笔交易将来一定能被共识,进入下一步骤;若客户端在定时器超时没能收集到2f+1个一致的副本的commit消息,客户端将重传该笔交易,即重新进行步骤(2)~(7);(8)所述副本节点收到主节点的commitqc消息后,验证commitqc是否合法,如果合法,副本节点保存commitqc,正式提交这笔交易,并且将提交消息通过消息队列推送给客户端;如果不合法,副本节点将收到的不合法消息作为视图变更的证据,广播发送视图变更消息,进入视图变更阶段。2.根据权利要求1所述的高速响应客户端的拜占庭容错共识方法,其特征在于,若所述主节点为拜占庭节点,副本节点和客户端凭借设置的定时器判断是否发生超时事件,进行视图变更,采用轮换方式切换到下一个主节点;在视图变更过程中,每个副本节点将本地保存的prepareqc和commitqc发送给新的主节点,新的主节点根据收集到的qc信息重新共识上一个视图中本该完成的请求,以o(n2)的消息通信复杂度完成视图变更过程并保证区块链系统的一致性。3.根据权利要求1所述的高速响应客户端的拜占庭容错共识方法,其特征在于,采用流水线并行的执行方式,所述主节点将对序列号为n的pre-prepare消息,序列号为n-1的prepareqc消息和序列号为n-2的commitqc消息统一进行签名发送给副本节点,从而把串行执行不同轮次的过程变成多个轮次并行执行,提高区块链系统的吞吐量。4.根据权利要求1所述的高速响应客户端的拜占庭容错共识方法,其特征在于,所述区块链集群采用落后副本节点高效恢复策略,对于落后过多的副本节点先进行账本状态恢复,通过快照恢复和区块恢复使落后副本节点能够恢复到和其他副本节点一致的检查点高度,再进行共识状态恢复,获取其他副本节点所持有的合法prepareqc和commitqc,后续该副本节点便能参与最新一轮的共识流程,并能够高速响应客户端。5.根据权利要求1所述的高速响应客户端的拜占庭容错共识方法,其特征在于,采用副
本节点黑名单的管理机制,有效减少拜占庭节点对区块链系统的活性的影响;当副本节点持有主节点发生拜占庭行为的证据时,将主节点记录在黑名单中;黑名单记录不超过f个副本节点的编号,当发生视图变更时,如果新的主节点不在黑名单中,则进行正常的共识切换,如果新的主节点编号在黑名单中,则跳过该轮视图,将视图号再次加1,再进行判断。6.根据权利要求1所述的高速响应客户端的拜占庭容错共识方法,其特征在于,所述步骤(5)中,若客户端在定时器超时前收集到3f+1个一致的prepare消息,客户端判定该笔交易将来一定能被共识,无需判断步骤(7)收集到的消息,提前结束判断,客户端进行完成共识后的操作,但该笔交易仍继续走完共识协议的后续步骤;若客户端在定时器超时没能收集到3f+1个一致的副本的prepare消息,则客户端需要按照步骤(7)的收集结果判断该笔交易是否能完成共识;所述步骤(7)中,若该笔交易被判断为将来一定能被共识,则该笔交易于此结束判断,客户端进行完成共识后的操作,但该笔交易仍继续走完共识协议的后续步骤。

技术总结
本发明公开了一种高速响应客户端的拜占庭容错共识方法,包括:主节点接收到客户端发送的请求后,为其分配序列号,并将Pre-Prepare消息发送给所有副本节点;副本节点乐观执行请求并返回Prepare消息给主节点和客户端;主节点将其聚合成PrepareQC广播给所有副本节点,当客户端判断所有节点的乐观执行结果一致时,便认为请求被区块链集群共识;副本节点验证PrepareQC合法后保存,发送Commit消息给主节点和客户端;主节点将其聚合成CommitQC再次广播,客户端再次判断请求是否被共识;副本节点验证CommitQC,若合法,保存并提交消息给客户端;若不合法,进入视图变更阶段。本发明采用客户端判断副本的乐观执行结果的方式,有效提高了区块链系统响应客户端请求的速度。了区块链系统响应客户端请求的速度。了区块链系统响应客户端请求的速度。


技术研发人员:刘鹏 孙建伶 蔡亮
受保护的技术使用者:浙江大学
技术研发日:2023.04.26
技术公布日:2023/8/24
版权声明

本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

飞行汽车 https://www.autovtol.com/

分享:

扫一扫在手机阅读、分享本文

相关推荐