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

文档序号:35247445发布日期:2023-08-25 18:52阅读:44来源:国知局
一种高速响应客户端的拜占庭容错共识方法

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


背景技术:

1、从本质上说,区块链技术是一种不同副本节点能在没有可信第三方存在的分布式网络环境中依靠共识算法使公共账本达成数据一致的技术。共识算法是区块链技术的核心部分,随着区块链技术的不断发展,行业内出现了各种各样的共识算法。

2、传统的区块链共识算法为了能够容忍存在拜占庭错误的情况,设计了多轮共识消息交互流程,客户端发送的请求当且仅当该请求被区块链集群大多数副本节点共识提交后,客户端才能收到区块链集群的回复,然而如果系统没有错误发生并且网络不会出现超时问题时,传统的共识算法仍然需要跑完多轮共识才能响应客户端,系统响应速度较慢。


技术实现思路

1、针对现有共识算法在区块链集群无错误发生的情况下对于客户端的响应速度不足的问题,本发明提供了一种高速响应客户端的拜占庭容错共识方法,该方法采用客户端判断副本的乐观执行结果的方式,提高了对于客户端的响应速度。

2、本发明的目的是通过如下技术方案实现的:

3、一种高速响应客户端的拜占庭容错共识方法,具体包括如下步骤:

4、(1)将区块链集群的所有副本节点之间均建立安全的p2p通信连接;

5、(2)取一个副本节点作为主节点,客户端发送请求给主节点;

6、(3)所述主节点收到客户端发来的请求后,为这笔交易分配序列号,广播pre-prepare消息发送给区块链集群的所有副本节点;

7、(4)所述副本节点收到主节点的pre-prepare消息后,乐观执行这笔交易,即副本节点收到排序好的请求,直接执行;所述副本节点发送prepare消息给主节点和客户端;

8、(5)所述主节点收到2f+1个prepare消息后,将2f+1个prepare消息聚合成prepareqc,并广播prepareqc消息给所有副本节点,其中f为发生拜占庭错误的副本节点数;若客户端在定时器超时前收集到3f+1个一致的prepare消息,则认为交易被所有副本节点乐观执行,该笔交易将来一定能被共识;

9、(6)所述副本节点收到主节点的prepareqc消息后,验证prepareqc是否合法,如果合法,副本节点保存prepareqc,发送commit消息给主节点和客户端;如果不合法,副本节点将收到的不合法消息作为视图变更的证据,广播发送视图变更消息,进入视图变更阶段;

10、(7)所述主节点收到2f+1个commit消息后,将2f+1个commit消息聚合成commitqc,广播commitqc消息给所有副本节点;与此同时,若客户端在定时器超时前收集到2f+1个一致的commit消息,则认为交易被所有副本节点乐观执行,该笔交易将来一定能被共识,进入下一步骤;若客户端在定时器超时没能收集到2f+1个一致的副本的commit消息,客户端将重传该笔交易,即重新进行步骤(2)~(7);

11、(8)所述副本节点收到主节点的commitqc消息后,验证commitqc是否合法,如果合法,副本节点保存commitqc,正式提交这笔交易,并且将提交消息通过消息队列推送给客户端;如果不合法,副本节点将收到的不合法消息作为视图变更的证据,广播发送视图变更消息,进入视图变更阶段。

12、进一步地,若所述主节点为拜占庭节点,副本节点和客户端凭借设置的定时器判断是否发生超时事件,进行视图变更,采用轮换方式切换到下一个主节点;在视图变更过程中,每个副本节点将本地保存的prepareqc和commitqc发送给新的主节点,新的主节点根据收集到的qc信息重新共识上一个视图中本该完成的请求,以o(n2)的消息通信复杂度完成视图变更过程并保证区块链系统的一致性。

13、进一步地,采用流水线并行的执行方式,所述主节点将对序列号为n的pre-prepare消息,序列号为n-1的prepareqc消息和序列号为n-2的commitqc消息统一进行签名发送给副本节点,从而把串行执行不同轮次的过程变成多个轮次并行执行,提高区块链系统的吞吐量。

14、进一步地,所述区块链集群采用落后副本节点高效恢复策略,对于落后过多的副本节点先进行账本状态恢复,通过快照恢复和区块恢复使落后副本节点能够恢复到和其他副本节点一致的检查点高度,再进行共识状态恢复,获取其他副本节点所持有的合法prepareqc和commitqc,后续该副本节点便能参与最新一轮的共识流程,并能够高速响应客户端。

15、进一步地,采用副本节点黑名单的管理机制,有效减少拜占庭节点对区块链系统的活性的影响;当副本节点持有主节点发生拜占庭行为的证据时,将主节点记录在黑名单中;黑名单记录不超过f个副本节点的编号,当发生视图变更时,如果新的主节点不在黑名单中,则进行正常的共识切换,如果新的主节点编号在黑名单中,则跳过该轮视图,将视图号再次加1,再进行判断。

16、进一步地,所述步骤(5)中,若客户端在定时器超时前收集到3f+1个一致的prepare消息,客户端判定该笔交易将来一定能被共识,无需判断步骤(7)收集到的消息,提前结束判断,客户端进行完成共识后的操作,但该笔交易仍继续走完共识协议的后续步骤;若客户端在定时器超时没能收集到3f+1个一致的副本的prepare消息,则客户端需要按照步骤(7)的收集结果判断该笔交易是否能完成共识;

17、所述步骤(7)中,若该笔交易被判断为将来一定能被共识,则该笔交易于此结束判断,客户端进行完成共识后的操作,但该笔交易仍继续走完共识协议的后续步骤。

18、本发明的有益效果如下:

19、本发明解决了传统共识算法在区块链集群无错误发生的情况下对于客户端的响应速度不足的问题,区块链副本节点乐观执行主节点的排序消息,并将乐观执行结果快速响应给客户端,有效提高了区块链系统响应客户端请求的速度。



技术特征:

1.一种高速响应客户端的拜占庭容错共识方法,其特征在于,具体包括如下步骤:

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)的收集结果判断该笔交易是否能完成共识;


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

技术研发人员:刘鹏,孙建伶,蔡亮
受保护的技术使用者:浙江大学
技术研发日:
技术公布日:2024/1/14
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1