本发明涉及区块链共识机制,更具体的说是涉及一种基于拜占庭容错共识加速的方法和系统。
背景技术:
1、拜占庭容错算法(byzantinefaulttolerance,bft)是一种应对分布式系统中存在恶意节点(拜占庭将军问题)或节点故障的一种算法。在分布式系统中,由于网络延迟、节点故障、网络分区等原因,可能会导致节点之间无法达成一致的情况,而这种一致性在很多分布式系统中非常重要,比如区块链、分布式数据库、分布式存储系统等。它通过在分布式系统中引入多数决策的概念,确保只要节点数目超过一半以上的节点是正常的并且它们可以相互通信,就可以保证系统的一致性。
2、但是,现有的拜占庭容错算法应用时,主从节点间交易串行执行,在主节点广播区块前,从节点处于空闲阶段;在主节点广播区块后,主节点处于空闲阶段。共识阶段的时间没有被充分利用,造成一定的资源浪费。
3、因此,如何提升主节点在共识阶段的利用率,提供一种基于拜占庭容错共识加速的方法和系统是本领域技术人员亟需解决的问题。
技术实现思路
1、有鉴于此,本发明提供了基于拜占庭容错共识加速的方法和系统,用于至少解决技术背景中提到的部分技术问题。
2、为了实现上述目的,本发明采用如下技术方案:
3、本发明公开了一种基于拜占庭容错共识加速的方法,包括以下步骤:
4、提案阶段:
5、从区块链的共识节点中选取主节点;
6、通过主节点对获取的交易进行打包生成预区块,并对所述预区块进行预处理,将预处理后的预区块广播给共识节点中所有的从节点;
7、预投票阶段:
8、通过从节点对接收的预区块进行验证;
9、对通过验证的预区块,通过主节点和从节点并行执行预区块中的交易,获取交易执行结果;
10、基于交易执行结果生成最终共识区块;
11、从节点对最终共识区块进行投票签名,并广播给其他共识节点;
12、预提交阶段:
13、针对最终共识区块,通过主节点和从节点搜集投票签名,若满足投票条件,则将所述最终共识区块进行提交,完成一轮共识流程。
14、优选的,提案阶段中,对所述预区块进行预处理,具体包括:
15、预区块哈希计算以及预区块签名。
16、优选的,预投票阶段中,通过从节点对接收的预区块进行验证,具体包括:
17、预区块哈希校验以及预区块签名验证。
18、优选的,预投票阶段中,执行预区块中的交易,具体包括以下步骤:
19、计算预区块中的交易哈希、交易默克尔树以及区块哈希。
20、优选的,预投票阶段中,基于交易执行结果生成最终共识区块,具体包括:
21、将交易及区块进行填充,得到最终共识区块。
22、优选的,将交易及区块进行填充,具体包括以下步骤:
23、交易被打包进预区块后,执行所述预区块中的交易,获取交易执行结果数据及交易执行信息数据,将所述交易执行结果数据及交易执行信息数据填充进原交易数据中,记录交易的执行状态;
24、将填充后的交易进行哈希计算,得到每个交易的交易哈希值,根据得到的交易哈希值获取交易默克尔树,将交易默克尔树填充至预区块中;
25、对填充后的预区块重新计算区块哈希、签名等,得到待共识投票的最终共识区块。
26、优选的,预提交阶段中,满足的投票条件包括:
27、通过投票的节点数量n满足,n≥2n/3+1:n表示共识节点的个数。
28、本发明还公开了一种基于拜占庭容错共识加速的系统,包括:由若干主节点和若干从节点构成的共识节点,所述共识节点位于区块链中,并执行本发明任意一项所述的基于拜占庭容错共识加速的方法。
29、经由上述的技术方案可知,与现有技术相比,本发明公开提供了一种基于拜占庭容错共识加速的方法和系统,具有以下有益效果:
30、本发明在原拜占庭容错共识基础上,优化了共识流程,通过修改提案阶段的流程,将主节点执行交易的操作放入到共识的预投票阶段,主节点只需将包含交易的预区块广播给从节点,从而提升了主节点在共识阶段的利用率。
31、本发明主、从节点按照一个确定的交易执行顺序执行交易,得到相同的执行结果。主、从节点会根据交易执行结果填充预区块,并重新计算各哈希,包括但不限于区块哈希、交易默克尔树等,各从节点对该区块哈希进行签名投票,来保证各节点的执行结果一致,从而实现了主从节点交易并行执行的效果。
1.一种基于拜占庭容错共识加速的方法,其特征在于,包括以下步骤:
2.根据权利要求1所述的基于拜占庭容错共识加速的方法,其特征在于,提案阶段中,对所述预区块进行预处理,具体包括:
3.根据权利要求2所述的基于拜占庭容错共识加速的方法,其特征在于,预投票阶段中,通过从节点对接收的预区块进行验证,具体包括:
4.根据权利要求1所述的基于拜占庭容错共识加速的方法,其特征在于,预投票阶段中,执行预区块中的交易,具体包括以下步骤:
5.根据权利要求1所述的基于拜占庭容错共识加速的方法,其特征在于,预投票阶段中,基于交易执行结果生成最终共识区块,具体包括:
6.根据权利要求5所述的基于拜占庭容错共识加速的方法,其特征在于,将交易及区块进行填充,具体包括以下步骤:
7.根据权利要求1所述的基于拜占庭容错共识加速的方法,其特征在于,预提交阶段中,满足的投票条件包括:
8.一种基于拜占庭容错共识加速的系统,其特征在于,包括:由若干主节点和若干从节点构成的共识节点,所述共识节点位于区块链中,并执行本发明权利要求1-7任意一项所述的基于拜占庭容错共识加速的方法。