本申请实施例涉及区块链,特别涉及一种用于区块链的区块同步方法、装置、设备及存储介质。
背景技术:
1、随着区块链技术的不断发展,任何设备只要接入区块网络,都可以成为这个庞大网络的一个节点。
2、在相关技术中,区块同步的实现通常通过一个同步节点来实现。具体比如,同步节点判断自身高度是否为最新,如果是最新的则不处理;当自身高度低于链上最新的区块高度,则计算需要同步的区块数,再随机选择一个共识节点或者超级节点,向节点发起同步请求,在收到共识节点的同步区块后,对区块交易数据进行验证,验证通过后,则将区块提交到本地的数据库中。
3、然而,在上述方案中的区块数据的同步效率较低。
技术实现思路
1、本申请实施例提供了一种用于区块链的区块同步方法、装置、设备及存储介质,能够大幅提高区块同步效率。所述技术方案如下:
2、根据本申请实施例的一个方面,提供了一种用于区块链的区块同步方法,所述方法由同步节点执行,所述同步节点是区块链系统中的任意一个节点,所述方法包括:
3、向所述区块链系统中的至少两个共识节点发送数据同步请求,所述数据同步请求用于指示目标区块数据;所述目标区块数据是所述同步节点中已有的区块数据,与所述区块链系统中的最新的区块数据之间的差异数据;
4、接收所述至少两个共识节点分别发送的数据分片;所述数据分片由所述共识节点从共识节点本地维护的所述目标区块数据中提取得到的一部分数据;
5、将所述至少两个共识节点分别发送的数据分片进行组合,获得所述目标区块数据。
6、根据本申请实施例的一个方面,提供了一种用于区块链的区块同步方法,所述方法由第一共识节点执行,所述第一共识节点是区块链系统中的至少两个共识节点中的任意一个节点,所述方法包括:
7、接收同步节点发送的数据同步请求,所述数据同步请求用于指示目标区块数据;所述目标区块数据是所述同步节点中已有的区块数据,与所述区块链系统中的最新的区块数据之间的差异数据;
8、基于所述数据同步请求,从所述第一共识节点维护的所述目标区块数据中提取得到第一数据分片;
9、将所述第一数据分片发送给所述同步节点,以便所述同步节点将所述至少两个共识节点分别发送的数据分片进行组合,获得所述目标区块数据。
10、根据本申请实施例的一个方面,提供了一种区块链中的区块处理装置,所述装置包括:
11、同步请求发送模块,用于向所述区块链系统中的至少两个共识节点发送数据同步请求,所述数据同步请求用于指示所述共识节点从目标区块数据中提取的数据分片,所述目标区块数据是所述同步节点中已有的区块数据,与所述区块链系统中的完整的区块数据之间的差异数据;
12、数据分片接收模块,用于接收所述至少两个共识节点分别发送的所述数据分片,所述数据分片是由所述共识节点从所述共识节点本地维护的所述目标区块数据中提取得到的一部分数据;
13、组合模块,用于将所述至少两个共识节点分别发送的数据分片进行组合,获得所述目标区块数据。
14、根据本申请实施例的一个方面,提供了一种用于区块链的区块同步装置,所述装置包括:
15、同步请求接收模块,用于接收同步节点发送的数据同步请求,所述数据同步请求用于指示所述共识节点从目标区块数据中提取的数据分片;所述目标区块数据是所述同步节点中已有的区块数据,与所述区块链系统中的完整的区块数据之间的差异数据;
16、数据分片提取模块,用于从第一共识节点本地维护的所述目标区块数据中,提取所述第一共识节点对应的数据分片;
17、数据分片发送模块,用于将所述第一共识节点对应的所述数据分片发送给所述同步节点,以便所述同步节点将至少两个共识节点分别发送的所述数据分片进行组合,获得所述目标区块数据。
18、另一方面,提供了一种计算机设备,所述计算机设备包括处理器和存储器,所述存储器中存储由至少一条计算机程序,所述至少一条计算机程序由所述处理器加载并执行以实现上述用于区块链的区块同步方法。
19、另一方面,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有至少一条计算机程序,所述计算机程序由处理器加载并执行以实现上述用于区块链的区块同步方法。
20、另一方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述各种可选实现方式中提供的用于区块链的区块同步方法。
21、本申请实施例提供的技术方案可以包括如下有益效果:
22、在区块链系统中设置至少两个共识节点,同步节点在进行区块数据同步时,同时向至少两个共识节点分别发送数据同步请求,以指示同步节点中已有的区块数据,与区块链系统中的完整的区块数据之间的差异数据的目标区块数据,以便至少两个共识节点分别从共识节点本地维护的目标区块数据中提取得到的一部分数据的数据分片,后续同步节点同时接收至少两个共识节点分别发送的数据分片,并将至少两个共识节点分别发送的数据分片进行组合,获得目标区块数据;在上述方案中,同步节点向多个共识节点分别请求获取目标区块数据中的一部分数据,并将多个共识节点分别发送的数据分片组合成目标区块数据,从而提高了区块数据的同步效率。
1.一种用于区块链的区块同步方法,其特征在于,所述方法由同步节点执行,所述同步节点是区块链系统中的任意一个节点;所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述数据同步请求用于指示所述至少两个共识节点与所述数据分片之间的对应关系。
3.根据权利要求2所述的方法,其特征在于,所述至少两个共识节点分别发送的数据分片中,每个所述数据分片包含至少一个数据微分片;
4.根据权利要求3所述的方法,其特征在于,所述数据微分片的标识为所述数据微分片的索引;从所述目标区块数据中划分出的各个所述数据微分片的索引为连续编号;且从所述目标区块数据中划分出的各个所述数据微分片中,索引连续的n个所述数据微分片分别属于所述至少两个共识节点的数据分片。
5.根据权利要求3或4所述的方法,其特征在于,所述将所述至少两个共识节点分别发送的数据分片进行组合,获得所述目标区块数据,包括:
6.根据权利要求5所述的方法,其特征在于,所述目标区块数据在所述共识节点中被划分为至少两个数据分段,所述数据分段在所述共识节点中被划分为至少两个所述分片批次,且所述数据分段划分出的所述数据微分片的索引为连续编号;
7.根据权利要求5所述的方法,其特征在于,所述方法还包括:
8.根据权利要求7所述的方法,其特征在于,所述基于所述分片批次中尚未接收到的数据微分片的索引,向所述至少两个共识节点中的第三共识节点发送续传请求,包括:
9.一种用于区块链的区块同步方法,其特征在于,所述方法由第一共识节点执行,所述第一共识节点是区块链系统的至少两个共识节点中的任意一个共识节点,所述方法包括:
10.根据权利要求9所述的方法,其特征在于,所述数据同步请求用于指示所述至少两个共识节点与所述数据分片之间的对应关系。
11.一种用于区块链的区块同步装置,其特征在于,所述装置包括:
12.一种用于区块链的区块同步装置,其特征在于,所述装置包括:
13.一种计算机设备,其特征在于,所述计算机设备包括处理器和存储器,所述存储器存储有至少一条计算机程序,所述至少一条计算机程序由所述处理器加载并执行以实现如权利要求1至10任一所述的用于区块链的区块同步方法。
14.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有至少一条计算机程序,所述计算机程序由处理器加载并执行以实现如权利要求1至10任一所述的用于区块链的区块同步方法。
15.一种计算机程序产品,其特征在于,所述计算机程序产品包括计算机指令,所述计算机指令存储在计算机可读存储介质中;所述计算机指令由计算机设备的处理器读取并执行,以实现如权利要求1至10任一所述的用于区块链的区块同步方法。
