一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

区块链网络的共识处理方法、装置、计算机设备和介质与流程

2022-06-29 21:50:53 来源:中国专利 TAG:


1.本技术涉及计算机技术领域,尤其涉及一种区块链网络的共识处理方法、装置、计算机设备和存储介质。


背景技术:

2.区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。
3.在区块链网络中,若要将一个数据进行上链,那么就需要在区块链网络中对该数据进行共识,共识通过后即可完成上链。例如,主节点可以将需要上链的业务数据打包为区块,进而主节点可以将该区块广播给区块链网络中的每个共识节点,各个共识节点就可以对所获取到的区块进行共识。
4.其中,由于需要上链的业务数据的数据量可能会很大,使得主节点对该业务数据进行打包所得到的区块的数据量也非常大,因此,主节点在将该区块广播给区块链网络中的每个共识节点的过程中,区块的数据量过大会导致区块链网络中的通信量过大且通信速度过慢等问题,并且,若是区块链网络中的共识节点的数量也比较多,还会导致通信膨胀甚至通信崩塌的问题。


技术实现要素:

5.本技术提供了一种区块链网络的共识处理方法、装置、计算机设备和介质,可提升在区块链网络中针对业务数据的共识效率和共识稳定性。
6.本技术一方面提供了一种区块链网络的共识处理方法,区块链网络包括第一共识节点和k个第二共识节点,k为正整数,该方法由第一共识节点执行,该方法包括:
7.生成业务数据所属的业务区块;
8.对业务区块进行分片,得到业务区块的n个区块分片数据,并根据n个区块分片数据获取业务区块的m个区块冗余数据;其中,n个区块分片数据与m个区块冗余数据共同组成业务区块的关联集合,业务区块的关联集合中共包含m n个区块关联数据,一个区块关联数据是一个区块分片数据或一个区块冗余数据,m、n均为正整数;
9.将业务区块的关联集合中的各个区块关联数据分别发送至k个第二共识节点;其中,每个第二共识节点均接收到一个区块关联数据,k个第二共识节点相互广播各自接收到的区块关联数据,以使得每个第二共识节点还原出业务区块;
10.在第一共识节点与k个第二共识节点之间对业务区块进行共识。
11.本技术一方面提供了一种区块链网络的共识处理方法,区块链网络中的共识节点包括第一共识节点和k个第二共识节点,k为正整数,该方法由业务客户端执行,该方法包括:
12.对业务数据进行分片,得到业务数据的w个业务分片数据,并根据w个业务分片数据获取业务数据的g个业务冗余数据;其中,w个业务分片数据和g个业务冗余数据共同组成业务数据的关联集合,业务数据的关联集合中共包含w g个业务关联数据,一个业务关联数据是一个业务分片数据或一个业务冗余数据,w、g均为正整数;
13.将业务数据的关联集合中的各个业务关联数据分别发送至区块链网络中的共识节点;其中,每个共识节点均接收到一个业务关联数据,每个第二共识节点分别向第一共识节点广播各自接收到的业务关联数据,使第一共识节点还原出业务数据,并对业务数据执行共识处理;
14.接收第一共识节点在对业务数据共识通过后所返回的第一回复关联数据,并接收每个第二共识节点在对业务数据共识通过后所返回的第二回复关联数据;
15.根据第一回复关联数据和第二回复关联数据还原得到针对业务数据的回复数据。
16.本技术一方面提供了一种区块链网络的共识处理装置,其特征在于,区块链网络包括第一共识节点和k个第二共识节点,k为正整数,该装置应用于第一共识节点,该装置包括:
17.区块生成模块,用于生成业务数据所属的业务区块;
18.关联数据获取模块,用于对业务区块进行分片,得到业务区块的n个区块分片数据,并根据n个区块分片数据获取业务区块的m个区块冗余数据;其中,n个区块分片数据与m个区块冗余数据共同组成业务区块的关联集合,业务区块的关联集合中共包含m n个区块关联数据,一个区块关联数据是一个区块分片数据或一个区块冗余数据,m、n均为正整数;
19.关联数据发送模块,用于将业务区块的关联集合中的各个区块关联数据分别发送至k个第二共识节点;其中,每个第二共识节点均接收到一个区块关联数据,k个第二共识节点相互广播各自接收到的区块关联数据,以使得每个第二共识节点还原出业务区块;
20.共识模块,用于在第一共识节点与k个第二共识节点之间对业务区块进行共识。
21.业务数据是依据w个业务分片数据和g个业务冗余数据还原得到的;w个业务分片数据与g个业务冗余数据共同组成业务数据的关联集合,业务数据的关联集合中共包含w g个业务关联数据,一个业务关联数据是一个业务分片数据或一个业务冗余数据,w、g均为正整数;
22.可选的,生成业务数据所属的业务区块之前,该装置还用于:
23.接收业务客户端发送的第一业务关联数据,第一业务关联数据是业务数据的关联集合中的任一个;
24.接收每个第二共识节点所广播的第二业务关联数据;任一个第二共识节点广播的第二业务关联数据是业务客户端发送的、业务数据的关联集合中除第一业务关联数据之外的任一个;
25.根据第一业务关联数据和k个第二业务关联数据还原得到业务数据。
26.可选的,该装置接收业务客户端发送的第一业务关联数据的方式,包括:
27.接收业务客户端发送的第一验证关联数据和第一验证哈希值;
28.计算第一验证关联数据的哈希值,当第一验证关联数据的哈希值和第一验证哈希值相同时,将第一验证关联数据确定为第一业务关联数据。
29.可选的,k个第二共识节点中的任一个第二共识节点表示为第i个第二共识节点,i
为小于或等于k的正整数;
30.该装置接收每个第二共识节点所广播的第二业务关联数据的方式,包括:
31.接收第i个第二共识节点所广播的第二验证关联数据和第二验证哈希值;
32.计算第二验证关联数据的哈希值,当第二验证关联数据的哈希值和第二验证哈希值相同时,将第二验证关联数据确定为第i个第二共识节点所广播的第二业务关联数据。
33.可选的,第一共识节点在获取到第一业务关联数据时,还获取到业务客户端发送的业务默克尔树根,业务默克尔树根是业务客户端根据由业务数据所得到的第一业务关联数据和k个第二业务关联数据生成;
34.该装置根据第一业务关联数据和k个第二业务关联数据还原得到业务数据的方式,包括:
35.根据第一业务关联数据的哈希值和k个第二业务关联数据的哈希值构建默克尔树状结构;
36.将默克尔树状结构的树根确定为验证默克尔树根;
37.当验证默克尔树根与业务默克尔树根相同时,根据第一业务关联数据和第二业务关联数据还原得到业务数据。
38.可选的,业务区块包括z个区块字段数据,z为正整数;
39.关联数据获取模块对业务区块进行分片,得到业务区块的n个区块分片数据的方式,包括:
40.获取区块冗余数量m,根据区块冗余数量m和第二共识节点的节点数量k确定区块分片数量n;m和n之和等于k;
41.根据区块分片数量n对z个区块字段数据进行分片,得到n个区块分片数据;一个区块分片数据包含一个或多个区块字段数据。
42.可选的,关联数据获取模块根据n个区块分片数据获取业务区块的m个区块冗余数据的方式,包括:
43.将n个区块分片数据确定为冗余计算数据,并获取m种冗余算法;
44.根据m种冗余算法中的每种冗余算法分别对冗余计算数据进行计算,得到m个区块冗余数据。
45.可选的,关联数据获取模块获取区块冗余数量m的方式,包括:
46.获取区块链网络的网络稳定等级,并将区块链网络的网络稳定等级确定为目标稳定等级;
47.获取冗余数量映射表;冗余数量映射表包含至少两种网络稳定等级与对应的冗余数量之间的映射关系;至少两种网络稳定等级包含目标稳定等级;
48.将冗余数量映射表中与目标稳定等级具有映射关系的冗余数量确定为区块冗余数量m。
49.可选的,在对业务区块共识通过后,上述装置还用于:
50.生成针对业务数据的回复数据;
51.对回复数据进行分片,得到回复数据的h个回复分片数据,并根据h个回复分片数据获取回复数据的回复冗余数据;h为正整数;
52.从h个回复分片数据和回复冗余数据中选取第一回复关联数据,并将所选取的第
一回复关联数据返回给业务客户端;
53.其中,在对业务区块共识通过后,每个第二共识节点分别向业务客户端返回针对业务数据的第二回复关联数据,第一回复关联数据和第二回复关联数据用于使业务客户端还原得到针对业务数据的回复数据。
54.本技术一方面提供了一种区块链网络的共识处理装置,区块链网络中的共识节点包括第一共识节点和k个第二共识节点,k为正整数,该装置应用于业务客户端,该装置包括:
55.业务分片模块,用于对业务数据进行分片,得到业务数据的w个业务分片数据,并根据w个业务分片数据获取业务数据的g个业务冗余数据;其中,w个业务分片数据和g个业务冗余数据共同组成业务数据的关联集合,业务数据的关联集合中共包含w g个业务关联数据,一个业务关联数据是一个业务分片数据或一个业务冗余数据,w、g均为正整数;
56.业务数据发送模块,用于将业务数据的关联集合中的各个业务关联数据分别发送至区块链网络中的共识节点;其中,每个共识节点均接收到一个业务关联数据,每个第二共识节点分别向第一共识节点广播各自接收到的业务关联数据,使第一共识节点还原出业务数据,并对业务数据执行共识处理。
57.可选的,业务数据包含d个业务字段数据,d为正整数;
58.业务分片模块对业务数据进行分片,得到业务数据的w个业务分片数据的方式,包括:
59.获取第一共识节点和k个第二共识节点的节点总数量k 1;
60.获取业务冗余数量g,根据业务冗余数量g和节点总数量k 1确定业务分片数量w;g和w之和等于k 1;
61.根据业务分片数量w对d个业务字段数据进行分片,得到w个业务分片数据;一个业务分片数据包含一个或多个业务字段数据。
62.可选的,上述装置还用于:
63.接收第一共识节点在对业务数据共识通过后所返回的第一回复关联数据和回复默克尔树根,并接收每个第二共识节点在对业务数据共识通过后所返回的第二回复关联数据;回复默克尔树根是由第一共识节点在对业务数据共识通过后根据生成的针对业务数据的回复数据所生成;
64.上述装置还用于:
65.根据第一回复关联数据的哈希值和第二回复关联数据的哈希值构建目标默克尔树状结构;
66.将目标默克尔树状结构的树根确定为待验证默克尔树根;
67.当待验证默克尔树根与回复默克尔树根相同时,根据第一回复关联数据和第二回复关联数据还原得到回复数据。
68.本技术一方面提供了一种计算机设备,包括存储器和处理器,存储器存储有计算机程序,计算机程序被处理器执行时,使得处理器执行本技术中一方面中的方法。
69.本技术一方面提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序包括程序指令,该程序指令被处理器执行时使该处理器执行上述一方面中的方法。
70.根据本技术的一个方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述一方面等各种可选方式中提供的方法。
71.本技术可以由第一共识节点生成业务数据所属的业务区块;对业务区块进行分片,得到业务区块的n个区块分片数据,并根据n个区块分片数据获取业务区块的m个区块冗余数据;其中,n个区块分片数据与m个区块冗余数据共同组成业务区块的关联集合,业务区块的关联集合中共包含m n个区块关联数据,一个区块关联数据是一个区块分片数据或一个区块冗余数据,m、n均为正整数;将业务区块的关联集合中的各个区块关联数据分别发送至k个第二共识节点;其中,每个第二共识节点均接收到一个区块关联数据,k个第二共识节点相互广播各自接收到的区块关联数据,以使得每个第二共识节点还原出业务区块;在第一共识节点与k个第二共识节点之间对业务区块进行共识。由此可见,本技术提出的方法第一共识节点可以向各个第二共识节点发送业务区块的区块关联数据,而不用分别向各个第二共识节点发送完整的业务区块,各个第二共识节点也可以还原得到业务区块,进而即可通过各个共识节点对业务区块实现共识,而对业务区块进行共识可以理解为就是对业务数据进行共识,因此,这可以减少对业务数据进行共识过程中的数据的通信量,降低通信复杂度,从而可以提升区块链网络中对业务数据进行共识的稳定性和效率。
附图说明
72.为了更清楚地说明本技术或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
73.图1是本技术实施例提供的一种网络架构的结构示意图;
74.图2是本技术提供的一种区块链网络的共识处理方法的流程示意图;
75.图3是本技术提供的一种共识节点获取业务数据的流程示意图;
76.图4是本技术提供的一种共识节点还原业务区块的流程示意图;
77.图5是本技术提供的一种业务客户端获取回复数据的流程示意图;
78.图6是本技术提供的一种对数据进行分片的场景示意图;
79.图7是本技术提供的提供一种数据共识的场景示意图;
80.图8a是本技术提供的一种发送数据的场景示意图;
81.图8b是本技术提供的一种现有应用中发送数据的场景示意图;
82.图9是本技术提供的一种区块链网络的共识处理方法的流程示意图;
83.图10是本技术提供的一种区块链网络的共识处理装置的结构示意图;
84.图11是本技术提供的一种区块链网络的共识处理装置的结构示意图;
85.图12是本技术提供的一种计算机设备的结构示意图。
具体实施方式
86.下面将结合本技术中的附图,对本技术中的技术方案进行清楚、完整地描述,显
然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
87.本技术还涉及到区块链的相关技术。其中,区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层。区块链中包括一系列按照产生的先后时间顺序相互接续的区块(block),新区块一旦加入到区块链中就不会再被移除,区块中记录了区块链系统中节点提交的记录数据。本技术中所设计到的区块链相关技术主要是指区块链网络中对业务数据进行共识上链的过程。
88.请参见图1,图1是本技术实施例提供的一种网络架构的结构示意图。如图1所示,网络架构可以包括区块链网络和终端设备集群,终端设备集群可以包括一个或者多个终端设备,这里将不对终端设备的数量进行限制。如图1所示,多个终端设备具体可以包括终端设备1、终端设备2、终端设备3、

、终端设备n;区块链网络可以包括多个共识节点,此处该多个共识节点可以包括第一共识节点、第二共识节点0、第二共识节点1和第二共识节点2,其中,第一共识节点为主节点(leader节点),可以将业务数据打包为区块。如图1所示,终端设备1、终端设备2、终端设备3、

、终端设备n均可以与区块链网络中的各个共识节点进行网络连接,以便于每个终端设备可以通过网络连接与各个共识节点之间进行数据交互。
89.如图1所示的各个共识节点均可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、cdn、以及大数据和人工智能平台等基础云计算服务的云服务器。终端设备可以是:智能手机、平板电脑、笔记本电脑、桌上型电脑、智能电视等智能终端。
90.终端设备集群中的各个终端设备中均可以包括业务客户端,各个终端设备中的业务客户端均可以向区块链网络中的各个共识节点发送自己的业务数据的分片数据(即对业务数据进行分片所得到的业务分片数据)或者冗余数据(即通过业务数据的业务分片数据获取到的业务数据的业务冗余数据)。如此处,终端设备1中的业务客户端可以向各个共识节点发送自己的业务数据1的分片数据和冗余数据,终端设备2中的业务客户端可以向各个共识节点发送自己的业务数据2的分片数据和冗余数据,终端设备3中的业务客户端可以向各个共识节点发送自己的业务数据3的分片数据和冗余数据,
……
,终端设备n中的业务客户端可以向各个共识节点发送自己的业务数据n的分片数据和冗余数据。对业务分片数据和业务冗余数据的具体描述可以参见下述图2对应实施例中的描述。
91.一个业务客户端可以向一个共识节点发送自己的业务数据的一个分片数据或者一个冗余数据,进而区块链网络中各个共识节点可以相互广播自己获取到的分片数据或者冗余数据,使得各个共识节点都可以通过业务客户端发送的以及其他共识节点广播的业务数据的分片数据或者冗余数据,分别还原出各个终端设备中的业务客户端的业务数据(包括业务数据1、业务数据2业务数据3、
……
、业务数据n)。其中,各个共识节点通过获取到的业务数据的分片数据或者冗余数据还原出业务数据的过程可以参见下述图2对应实施例中
的描述。
92.因此,第一共识节点也可以还原得到业务数据1、业务数据2业务数据3、
……
、业务数据n,第一共识节点可以将业务数据1、业务数据2业务数据3、
……
以及业务数据n打包为区块,可以将该区块称之为业务区块,该业务区块可以包括区块头和区块体,区块体中就可以包括业务数据1、业务数据2业务数据3、
……
、业务数据n。
93.第一共识节点可以将该业务区块的分片数据(即对业务区块进行分片得到的区块分片数据)和冗余数据(即通过业务区块的区块分片数据所得到的业务区块的区块冗余数据)分别发送给各个第二共识节点,各个第二共识节点可以相互广播自己获取到的业务区块的分片数据或者冗余数据,使得各个第二共识节点可以通过第一共识节点发送的以及其他第二共识节点广播的业务区块的分片数据或者冗余数据还原得到上述业务区块。其中,对区块分片数据、区块冗余数据、以及第二共识节点如何通过获取到的区块分片数据和区块冗余数据还原出业务区块的具体描述,可以参见下述图2对应实施例中的描述。
94.各个第二共识节点还原出业务区块后,第一共识节点和各个第二共识节点就可以一起对业务区块进行共识,各个共识节点在检测到对业务区块共识通过后,就可以各自向各个业务客户端返回相对应的回复数据的分片数据(即对回复数据进行分片所得到的回复分片数据)或者冗余数据(即通过对回复数据的回复分片数据进行冗余计算所得到的回复冗余数据,该回复冗余数据可以减小回复分片数据丢失或者被篡改的可能性),不同业务客户端可以对应有不同的回复数据。各个业务客户端均可以通过各自所获取到的回复分片数据和回复冗余数据还原得到各自业务数据的回复数据,该回复数据可以是针对业务数据的确认信息,如确认业务交易完成的信息或者确认业务数据上链的信息等。其中,业务客户端通过获取到的回复分片数据和回复冗余数据还原得到回复数据的过程可以参见下述图9对应实施例中的描述。
95.通过本技术所提供的方法,可以将业务数据、业务区块以及回复数据均通过对应的分片数据和冗余数据进行发送,可以减少各个过程的通信数据量,提高各个过程的通信速度,降低各个过程的通信复杂度,从而还可以提升区块链网络的通信稳定性。
96.请参见图2,图2是本技术提供的一种区块链网络的共识处理方法的流程示意图。如图2所示,该方法可以包括:
97.步骤s101,生成业务数据所属的业务区块。
98.可选的,区块链网络中的共识节点可以包括第一共识节点和k个第二共识节点,一个共识节点可以是由一个或者多个计算机设备构成,一个计算机设备可以是服务器也可以是终端设备。在一个实施例中,第一共识节点为leader节点(即主节点),第一共识节点可以对获取到的业务数据进行打包,以生成业务数据所属的业务区块。因此,本技术实施例中的执行主体可以是第一共识节点。
99.其中,第一共识节点所打包的业务数据可以包括一个业务客户端的业务数据,或者也可以包括多个业务客户端同时生成的业务数据,因此,业务区块可以包括一个区块必要的元素,如默克尔树根以及区块高度等元素,业务区块还可以包括一个业务客户端的业务数据或者对多个业务客户端的业务数据进行打包的业务数据集合。
100.由于第一共识节点获取每个业务客户端的业务数据的原理以及对每个业务客户端的业务数据的处理方式均相同且相互独立,因此,此处以对一个业务客户端的业务数据
进行处理的过程为例进行说明,即不管业务数据是一个还是多个,本技术实施例中统一称为业务数据。
101.其中,第一共识节点获取业务客户端的业务数据的过程如下:
102.首先,对擦除码技术进行解释:擦除码技术是一种新型可扩展的数据保护方式,采用擦除码技术可以将大块数据进行切割,以得到该大块数据所包含的若干数据块,进而对该若干数据块进行冗余计算,通过冗余计算的结果以及该若干数据块一起实现对该大块数据的存写,由于引入了对数据块的冗余计算,因此即使某些少量的数据块丢失,通过该冗余计算的结果也可恢复出丢失的数据块。
103.鉴于此,本技术中的该大块数据可以指下述业务区块、业务数据或针对业务数据的回复数据。当该大块数据为业务区块时,那么通过擦除码技术对该业务区块进行切割所得到的若干数据块就为若干区块分片数据,对该若干区块分片数据进行冗余计算的结果就是得到若干区块冗余数据;当该大块数据为业务数据时,那么通过擦除码技术对该业务数据进行切割所得到的若干数据块就为若干业务分片数据,对该若干业务分片数据进行冗余计算的结果就是得到若干业务冗余数据;当该大块数据为回复数据时,那么通过擦除码技术对该回复数据进行切割所得到的若干数据块就为若干回复分片数据,对该若干回复分片数据进行冗余计算的结果就是得到若干回复冗余数据。其中,通过擦除码技术对业务区块、业务数据或针对业务数据的回复数据进行切割后再传输的具体过程可以参见下述内容描述。
104.因此,业务客户端可以通过擦除码技术对自己的业务数据进行分片(即切割),该过程可以是:由于业务客户端是需要向区块链网络中的各个共识节点发送数据,因此业务客户端可以根据区块链网络中的所有共识节点的节点数量来确定对业务数据进行分片的数量,此处通常第一共识节点的节点数量是1个,又因为第二共识节点的节点数量是k个,因此,区块链网络中所有共识节点的节点数量(可以称之为节点总数量)就是k 1个。
105.可选的,业务客户端可以获取到针对业务数据的业务冗余数量g,该业务冗余数量g指示了业务客户端需要生成业务数据的多少个冗余数据(冗余数据也可以称之为冗余码),可以将业务数据的冗余数据称之为业务冗余数据。因此,业务客户端需要对业务数据进行分片的数量(可以记为业务分片数量w)就可以是(k 1)-g,换句话说此时g加w之和就等于k 1。
106.其中,业务冗余数量g为正整数,g的具体取值可以根据实际应用场景决定,例如,g的取值可以是开发人员预先设定的,也可以是根据区块链网络的网络稳定等级来确定的,区块链网络越稳定,则g可以越小,区块链网络越不稳定,则g可以越大。例如g可以等于1、2、3、
……
,当区块链网络较为稳定时,g可以取值较小,如等于2,当区块链网络较不稳定时,g可以取值较大,如等于5。但是,通常来说,g通常要小于w。
107.其中,业务数据可以包括d个字段数据,d为正整数,d的具体取值根据实际应用场景决定,可以将业务数据所包括的字段数据称之为业务字段数据。业务客户端可以通过业务分片数量w对业务数据所包括的d个业务字段数据进行分片,即可得到业务数据的w个分片数据,可以将该w个分片数据称之为w个业务分片数据,一个业务分片数据可以包括一个或者多个业务字段数据。
108.进而,业务客户端可以通过分片得到的w个业务分片数据来获取业务数据的g个业
务冗余数据:业务客户端可以通过g种不同的冗余算法分别对该w个业务冗余数据进行计算,进而得到每种冗余算法分别对应的业务冗余数据。该g种冗余算法中的任一种均可以是任意的算法,例如可以是加法、乘法、除法、减法或者多种算法的组合等。一种冗余算法会对w个业务分片数据一起进行计算,以得到该种冗余算法对应的一个业务冗余数据。可以理解为,一种冗余算法就是将w个业务分片数据进行关联的一种方式。例如,一种冗余算法可以是加法,那么可以将w个业务分片数据分别对应的数值(如二进制值或十进制值等)加起来,即可将加起来所得到的结果作为该种冗余算法对应的业务冗余数据。通过用不同的冗余算法对w个业务分片数据进行计算就可以得到不同的业务冗余数据,一个业务冗余数据也可以包含若干字段数据。
109.通过上述过程,业务客户端就得到了w个业务分片数据和g个业务冗余数据,可以将该w个业务分片数据和g个业务冗余数据所构成的集合称之为是业务数据的关联集合,该关联集合中共包含w g个业务关联数据,一个业务关联数据可以是一个业务分片数据或者一个业务冗余数据。
110.因此,业务客户端可以将业务数据的关联集合中的各个业务关联数据分别发送给区块链网络中的各个共识节点,一个共识节点可以获取到一个业务关联数据,各个共识节点获取到的业务关联数据可以各不相同。可以将业务客户端发送给第一共识节点的业务关联数据称之为第一业务关联数据,第一业务关联数据可以是关联集合中的任意一个业务关联数据。可以将业务客户端发送给第二共识节点的业务关联数据称之为第二业务关联数据,任一个第二共识节点获取的业务关联数据均可以是关联集合中的任意一个业务关联数据。
111.因此,第一共识节点和k个第二共识节点各自在获取相应的业务关联数据后,可以相互广播自己获取到的业务关联数据,使得每个共识节点均可以通过自己获取到的业务关联数据以及其他共识节点广播过来的业务关联数据还原出业务数据。
112.由此可见,第一共识节点可以获取到每个第二共识节点所广播的第二业务关联数据,共k个第二业务关联数据,进而,第一共识节点即可根据获取到的第一业务关联数据以及该k个第二业务关联数据还原出业务客户端的业务数据。
113.其中,可以将还原业务客户端的业务数据的过程理解为解方程组的过程,由于将业务数据分片为了w个业务分片数据,一个业务分片数据可以理解为一个未知量,因此,只要获取到针对业务数据的w个方程即可还原出业务数据,业务数据的一个业务关联数据可以理解为是业务数据的一个方程。因此,可以理解的是,由于通常g w等于k 1,因此若业务冗余数量g越大,则业务分片数量w可以越小,那么通过更少的方程就可以还原出业务数据。因此,此时就可以理解到,当区块链网络越稳定,则业务冗余数量g可以越小,因为区块链网络越稳定,表明第一共识节点更能及时准确地获取到其他更多的第二共识节点所广播的业务关联数据,即获取不到某些第二共识节点所广播的业务关联数据的情况比较少。
114.更多的,w g也可以不等于k 1,例如,通常w是要大于g的,因此当d很小的时候,即业务数据所包含的业务字段数据的个数很少的时候,共识节点的数量又比较多的时候,此时不需要将业务数据分为很多个业务分片数据,此种情形下,多个共识节点就可能获取到相同的业务关联数据。
115.通过上述描述,即可知道,第一共识节点可以获取第一业务关联数据以及k个第二
业务关联数据,或者也可以获取到第一业务关联数据以及少于k个的第二业务关联数据(如某些第二共识节点通信质量差,未成功向第一共识节点广播第二业务关联数据时),只要第一共识节点获取到的第一业务关联数据和第二业务关联数据的总数据大于或者等于w,且w个业务关联数据互不相同,那么第一共识节点即可根据获取到的第一业务关联数据和第二业务关联数据还原出上述w个业务分片数据,通过还原的该w个业务分片数据即可汇聚得到业务数据。
116.可选的,第一共识节点获取第一业务关联数据的过程可以是:第一共识节点可以获取到业务客户端发送的第一验证关联数据和第一验证哈希值,该第一验证关联数据可以是业务客户端向第一共识节点发送的业务数据的关联集合中的任意一个业务关联数据,该第一验证哈希值就可以是业务客户端所计算的该业务关联数据的哈希值。
117.因此,第一共识节点可以计算出该第一验证关联数据的哈希值,并比对该第一验证关联数据的哈希值和该第一验证哈希值是否相同,若相同,则认为该第一验证关联数据就为获取到的第一业务关联数据。实际上,各个第二共识节点也会以第一共识节点获取第一业务关联数据相同的方式获取各自的第二业务关联数据。
118.第一共识节点获取各个第二共识节点广播的第二业务关联数据的过程可以是:k个第二共识节点中的任一个第二共识节点可以表示为第i个第二共识节点,i为小于或者等于k的正整数。由于第一共识节点获取各个第二共识节点广播的第二业务关联数据的原理相同,因此,此处以第一共识节点获取第i个第二共识节点广播的第二业务关联数据的过程为例进行说明,请参见下述内容描述。
119.第一共识节点可以获取第i个第二共识节点所广播的第二验证关联数据和第二验证哈希值,该第二验证关联数据为第i个第二共识节点获取到的业务客户端所发送的业务关联数据,该第二验证哈希值就为第i个第二共识节点对所获取到的业务客户端发送的业务关联数据进行哈希计算所得到的哈希值。
120.因此,第一共识节点可以计算第二验证关联数据的哈希值,并对比所计算的第二验证关联数据的哈希值和第二验证哈希值是否相同,若相同,则认为该第二验证关联数据就为获取到的第i个第二共识节点所广播的第二业务关联数据。
121.可选的,第一共识节点在获取第一业务关联数据时,还会获取到业务客户端发送的业务默克尔树根,该业务默克尔树根是由业务客户端通过上述所得到的w个业务分片数据以及g个业务冗余数据所构建的默克尔树状结构得到,实际上,该业务默克尔树根就是业务客户端通过上述所得到的w个业务分片数据以及g个业务冗余数据所构建的默克尔树状结构的树根,该w个业务分片数据以及g个业务冗余数据均可以是在该默克尔树状结构的叶子节点。
122.因此,第一共识节点可以通过第一业务关联数据的哈希值以及获取到的k个第二业务关联数据的哈希值以业务客户端构建上述默克尔树状结构同样的方式自己来构建默克尔树状结构,第一共识节点可以将自己构建的默克尔树状结构的树根作为验证默克尔树根。第一共识节点可以对比该验证默克尔树根与上述业务客户端所发送的业务默克尔树根是否相同,若相同,则认为所获取到的第一业务关联数据和第二业务关联数据是可信的,就可以通过获取到的第一业务关联数据和第二业务关联数据还原出上述w个业务分片数据,并通过所还原的该w个业务分片数据还原得到业务数据。
123.更多的,有可能第一共识节点未获取到全部的第二业务关联数据或/和未获取到第一业务关联数据,此种情形下,第一共识节点可以通过已经获取到大于或者等于w个的业务关联数据还原出w个业务分片数据,由于第一共识节点也知道计算g个业务冗余数据的冗余算法,第一共识节点可以通过还原出的w个业务分片数据再计算出上述g个业务冗余数据中未获取到的业务冗余数据,此时,第一共识节点也可以通过还原的w个业务分片数据的哈希值以及获取到的g个业务冗余数据的哈希值构建默克尔树状结构,得到上述验证默克尔树根,并将该验证默克尔树根与上述业务客户端发送的业务默克尔树根相对比,若对比出相同,则认为还原的w个业务分片数据是可信的,可以通过对所还原的w个业务分片数据进行聚合,得到业务客户端的业务数据。
124.可选的,各个第二共识节点在向第一共识节点广播第二业务关联数据时,也会向第一共识节点广播业务客户端所发送的上述业务默克尔树根,因此,第一共识节点也可以对比所有第二共识节点分别广播的业务默克树根、业务客户端发送的业务默克尔树根以及上述验证默克尔树根是否一致,若全部一致,或者用于还原出上述w个业务分片数据的业务关联数据所属共识节点对应的业务默克尔树根与上述验证默克尔树根一致,则可以认为此时还原的w个业务分片数据是可信的,可以通过对所还原的w个业务分片数据进行聚合,得到业务客户端的业务数据。
125.请参见图3,图3是本技术提供的一种共识节点获取业务数据的流程示意图。如图3所示,首先,业务客户端可以利用擦除码技术对业务数据f进行分片,得到集合(f0/f1/y0),其中,f0和f1为对业务数据进行分片得到的两个业务分片数据,y0为通过f0和f1得到的业务数据的一个业务冗余数据。业务客户端还可以计算集合(f0/f1/y0)中的每个元素(包括元素f0、元素f1和元素y0)的哈希值,并通过每个元素的哈希值生成默克尔树(即默克尔树状结构),得到该默克尔树的树根,该树根即可以为上述业务默克尔树根。
126.区块链网络中的共识节点包括节点0、节点1和节点2,因此,业务客户端可以向节点0发送《f0,d0,d》,《f0,d0,d》包括业务分片数据f0、业务分片数据f0的哈希值d0以及业务默克尔树根d。业务客户端可以向节点1发送《f1,d1,d》,《f1,d1,d》包括业务分片数据f1、业务分片数据f1的哈希值d1以及业务默克尔树根d。业务客户端可以向节点2发送《y0,d3,d》,《y0,d3,d》包括业务冗余数据y0、业务冗余数据y0的哈希值d3以及业务默克尔树根d。
127.因此,节点0可以向节点1和节点2广播《f0,d0,d》,节点1可以向节点0和节点2广播《f1,d1,d》,节点2可以向节点0和节点1广播《y0,d3,d》。因此,节点0、节点1以及节点2均可以对自己获取到(f0/f1/y0)中的各个元素进行校验,如校验计算得到的(f0/f1/y0)中各个元素的哈希值与获取到的各个元素的哈希值是否合法(如是否相同),可以将(f0/f1/y0)中不合法(如计算的哈希值与获取的哈希值不相同)的数据丢弃,例如,节点0在获取到节点1广播的《f1,d1,d》时,可以计算f1的哈希值是否与d1相同,若相同,则保留f1,若不相同,则丢弃f1。
128.丢弃(f0/f1/y0)中一个数据之后,可以通过保留的另外两个数据再还原出所丢弃的数据对应的正确数据,例如,若丢弃f0,则可以通过f1和y0还原出最终正确的f0,即可得到最终的(f0/f1/y0),进而可以汇聚最终得到的f0的哈希值、f1的哈希值以及y0的哈希值生成默克尔树,可以将该默克尔树记为《f0,f1,y0》,当验证到该默克尔树《f0,f1,y0》的树根等于d时,则可以通过f0、f1和y0还原出业务数据f。
129.第一共识节点在还原得到业务客户端的业务数据后,即可对还原得到的业务数据进行打包封装,得到包含业务数据的业务区块。
130.步骤s102,对业务区块进行分片,得到业务区块的n个区块分片数据,并根据n个区块分片数据获取业务区块的m个区块冗余数据;其中,n个区块分片数据与m个区块冗余数据共同组成业务区块的关联集合,业务区块的关联集合中共包含m n个区块关联数据,一个区块关联数据是一个区块分片数据或一个区块冗余数据,m、n均为正整数。
131.可选的,业务区块也可以包括z个字段数据,z为正整数,可以将业务区块所包含的z个字段数据称之为z个区块字段数据。第一共识节点对业务区块进行分片就是对业务区块的z个字段数据进行分片,第一共识节点对业务区块进行分片的原理与上述业务客户端对业务数据进行分片的原理相同。
132.例如,第一共识节点对业务区块进行分片的原理可以是:由于第一共识节点需要向k个第二共识节点发送数据,因此,第二共识节点可以通过所有第二共识节点的节点数量k来对业务区块进行分片,请参见下述内容描述。
133.首先,第一共识节点可以获取到针对业务区块的区块冗余数量m,该区块冗余数量m指示了第一共识节点需要生成业务区块的多少个冗余数据(冗余数据也可以称之为冗余码),可以将业务区块的冗余数据称之为区块冗余数据。因此,第一共识节点需要对业务区块进行分片的数量(可以记为区块分片数量n)就可以是k-m,换句话说此时m加n之和就等于k。
134.其中,区块冗余数量m为正整数,m的具体取值可以根据实际应用场景决定,例如,m的取值可以是开发人员预先设定的,也可以是根据区块链网络的网络稳定等级来确定的,区块链网络越稳定,则m可以越小,区块链网络越不稳定,则m可以越大。例如m可以等于1、2、3、
……
,当区块链网络较为稳定时,m可以取值较小,如等于2,当区块链网络较不稳定时,m可以取值较大,如等于5。但是,通常来说,m通常要小于n。
135.其中,业务区块可以包括z个字段数据,z为正整数,z的具体取值根据实际应用场景决定,可以将业务区块所包括的字段数据称之为区块字段数据。第一共识节点可以通过区块分片数量n对业务区块所包括的z个区块字段数据进行分片,即可得到业务区块的n个分片数据,可以将该n个分片数据称之为n个区块分片数据,一个区块分片数据可以包括一个或者多个区块字段数据。
136.进而,第一共识节点可以通过分片得到的n个区块分片数据来获取业务区块的m个区块冗余数据:可以将n个区块分片数据作为冗余计算数据,第一共识节点可以获取m种冗余算法,第一共识节点可以通过该m种不同的冗余算法分别对该冗余计算数据进行计算,即可得到每种冗余算法分别对应的区块冗余数据。该m种冗余算法中的任一种均可以是任意的算法,例如可以是加法、乘法、除法、减法或者多种算法的组合等。一种冗余算法对应一个区块冗余数据。可以理解为,一种冗余算法就是将n个区块分片数据进行关联的一种方式。例如,一种冗余算法可以是加法,那么可以将n个区块分片数据分别对应的数值(如二进制值或十进制值等)加起来,即可将加起来所得到的结果作为该种冗余算法对应的区块冗余数据。通过用不同的冗余算法对冗余计算数据进行计算就可以得到不同的区块冗余数据。
137.通过上述过程,第一共识节点就得到了n个区块分片数据和m个区块冗余数据,可以将该n个区块分片数据和m个区块冗余数据所构成的集合称之为是业务区块的关联集合,
该关联集合中共包含n m个区块关联数据,一个区块关联数据可以是一个区块分片数据或者一个区块冗余数据。
138.可选的,第一共识节点获取区块冗余数量m的方式也可以是:第一共识节点可以获取区块链网络的网络稳定等级,该网络稳定等级可以是区块链网络自行按照某些策略评估出来的,可以将区块链网络的网络稳定等级称之为目标稳定等级。
139.第一共识节点还可以获取到冗余数量映射表,该冗余数量映射表可以是开发人员预先设置的。该冗余数量映射表可以包含至少两种网络稳定等级与对应的冗余数量之间的映射关系,该至少两种网络稳定等级可以包括上述目标稳定等级。因此,第一共识节点可以将该冗余数量映射表中与目标稳定等级具有映射关系的冗余数量作为上述区块冗余数量m。
140.此外,同样,可选的,n通常需要大于m,当业务区块所包含的字段数据的数量过少,而第二共识节点的节点数量过多时,上述n m可以不等于k。此时不同第二共识节点可以获取到第一共识节点发送的相同的区块关联数据,请参见下述内容描述。
141.步骤s103,将业务区块的关联集合中的各个区块关联数据分别发送至k个第二共识节点;其中,每个第二共识节点均接收到一个区块关联数据,k个第二共识节点相互广播各自接收到的区块关联数据,以使得每个第二共识节点还原出业务区块。
142.可选的,第一共识节点可以将上述业务区块的关联集合中的各个区块关联数据分别发送给k个第二共识节点,一个第二共识节点可以接收到第一共识节点发送的一个区块关联数据,不同第二共识节点接收到的区块关联数据通常是不同的(如当n m等于k时),但是当n m小于k时,不同第二共识节点接收到的区块关联数据可以是相同的。
143.同理,k个第二共识节点之间可以相互广播自己接收到的区块关联数据,使得每个第二共识节点只要获取到大于或者等于n个不同的区块关联数据时,即可根据获取到的区块关联数据还原出上述业务区块,各个第二共识节点通过n个区块关联数据还原出业务区块的原理与上述第一共识节点通过w个业务关联数据还原出业务数据的原理是一样的,即可以理解为,将一个区块分片数据作为一个未知量,一个区块关联数据作为一个方程,通过n个区块关联数据(即n个方程)即可还原得到n个区块分片数据(即n个未知量)。
144.请参见图4,图4是本技术提供的一种共识节点还原业务区块的流程示意图。如图4所示,节点0可以为第一共识节点(即leader节点),节点1、节点2和节点3均为第二共识节点。首先,节点0可以生成交易集合批次batch,该交易集合批次batch可以理解为打包了若干业务数据的业务区块,即此处batch可以指上述业务区块。节点0可以利用擦除码技术对batch进行分片,得到集合(q0/q1/y1),其中,q0和q1为对业务区块进行分片得到的两个区块分片数据,y1为通过q0和q1得到的业务区块的一个区块冗余数据。节点0还可以计算集合(q0/q1/y1)中的每个元素(包括元素q0、元素q1和元素y1)的哈希值,并通过每个元素的哈希值生成默克尔树(即默克尔树状结构),得到该默克尔树的树根,该树根可以称为区块默克尔树根。
145.因此,节点0可以向节点1发送《q0,h0,h》,《q0,h0,h》包括区块分片数据q0、区块分片数据q0的哈希值h0以及区块默克尔树根h。节点0可以向节点2发送《q1,h1,h》,《q1,h1,h》包括区块分片数据q1、区块分片数据q1的哈希值h1以及区块默克尔树根h。节点0可以向节点3发送《y1,h3,h》,《y1,h3,h》包括区块冗余数据y1、区块冗余数据y1的哈希值h3以及区块
默克尔树根h。
146.因此,节点1可以向节点2和节点3广播《q0,h0,h》,节点2可以向节点1和节点3广播《q1,h1,h》,节点3可以向节点1和节点2广播《y1,h3,h》。因此,节点1、节点2以及节点3均可以对自己获取到(q0/q1/y1)中的各个元素进行校验,如校验计算得到的(q0/q1/y1)中各个元素的哈希值与获取到的各个元素的哈希值是否合法(如是否相同),可以将(q0/q1/y1)中不合法(如计算的哈希值与获取的哈希值不相同)的数据丢弃,丢弃一个数据之后,可以通过保留的两个数据再还原出所丢弃的数据对应的正确数据,进而可以汇聚最终得到的q0的哈希值、q1的哈希值以及y1的哈希值生成默克尔树,可以将该默克尔树记为《q0,q1,y1》,当验证到该默克尔树《q0,q1,y1》的树根等于h时,则可以通过q0、q1和y1还原出业务区块batch。
147.步骤s104,在第一共识节点与k个第二共识节点之间对业务区块进行共识。
148.可选的,当各个第二共识节点还原得到业务区块后,第一共识节点即可与各个第二共识节点一起对业务区块进行共识,此处第一共识节点和第二共识节点对业务区块进行共识所采用的共识算法可以是bft(拜占庭)共识算法。由于对业务区块进行共识只要超过一定数量的共识节点(如2/3数量的共识节点)共识出业务区块是合法的,那么就认为对业务区块共识通过,因此即使有少量第二共识节点未还原得到业务区块导致不能对业务区块进行共识,也不影响第一共识节点和所有能对业务区块进行共识的第二共识节点对业务区块的共识结果。
149.因此,第一共识节点可以在第一共识节点和k个第二共识节点之间对业务区块进行共识(允许少量第二共识节点在未还原得到业务区块时对业务区块共识失败的情况),并在第一共识节点检测到对业务区块共识通过后,第一共识节点就可以生成针对上述业务数据的回复数据,该回复数据可以是针对业务数据的确认信息,例如该确认信息可以是指业务数据所指示的业务交易完成的确认信息或者是指业务数据成功上链的确认信息等。
150.实际上,各个共识节点(包括第一共识节点和各个第二共识节点)在各自检测到对业务区块共识通过后,均会生成针对业务数据的回复数据,在正常情况下,每个共识节点所生成的回复数据应该是一样的,每个共识节点可以只向业务客户端返回回复数据的部分数据(如回复数据的一个分片数据)或者返回回复数据的冗余数据,因此,每个共识节点均可以对回复数据进行分片,得到回复数据的多个分片数据(可以称之为回复分片数据),并可以通过回复数据的多个回复分片数据生成回复数据的一个或者多个冗余数据(可以称之为回复冗余数据),各个共识节点对自己所生成的回复数据进行分片的方式以及通过回复分片数据计算回复冗余数据的方式均相同,一个共识节点所得到的回复分片数据以及回复冗余数据的总数量可以等于所有共识节点的节点总数量(如k 1),并且,可以约定每个共识节点具体是需要向业务客户端返回哪一个回复分片数据或者哪一个回复冗余数据,因此各个共识节点可以各自将自己所得到的多个回复分片数据和回复冗余数据中需要返回给业务客户端的回复分片数据或者回复冗余数据返回给业务客户端。
151.其中,各个共识节点对回复数据进行分片的原理与上述业务客户端对业务数据的分片原理可以相同。
152.可以将第一共识节点向业务客户端返回的回复分片数据或者回复冗余数据称之为第一回复关联数据,可以将第二共识节点向业务客户端返回的回复分片数据或者回复冗
余数据称之为第二回复关联数据。
153.各个共识节点向业务区块链返回回复数据的回复分片数据或者回复冗余数据的原理是相同的,因此,此处以第一共识节点向业务客户端返回第一回复关联数据的过程为例进行说明,请参见下述内容描述。
154.第一共识节点在对业务区块共识通过并生成业务数据所属的回复数据后,可以对该回复数据进行分片,得到回复数据的h个分片数据,可以将该h个分片数据称之为回复数据的h个回复分片数据,第一共识节点还可以通过该h个回复分片数据计算回复数据的回复冗余数据,该回复冗余数据的数量可以是s个,s和h均为正整数,s和h的取值可以根据实际应用场景决定,s和h之和可以等于共识节点的节点总数量k 1。因此,第一共识节点可以在该s个回复分片数据和h个回复冗余数据中选取任一个作为上述第一回复关联数据,该第一回复关联数据可以是该s个回复分片数据和h个回复冗余数据中预先约定的第一共识节点需要返回给业务客户端的数据。
155.可以将第一共识节点向业务客户端返回的第一回复关联数据以及第二共识节点向业务客户端返回的第二回复关联数据均称之为回复数据的回复关联数据,因此,在各个共识节点(包括第一共识节点和各个第二共识节点)向业务客户端返回各自的回复关联数据后,只要业务客户端获取到各个共识节点返回的h个不同的回复关联数据后,即可通过该h个不同的回复关联数据还原出针对业务数据的回复数据。
156.请参见图5,图5是本技术提供的一种业务客户端获取回复数据的流程示意图。如图5所示,若区块链网络中的共识节点包括节点0、节点1和节点2。节点0、节点1和节点2在检测到对业务区块共识通过后,均可以生成针对业务数据的回复数据,节点0、节点1和节点2所生成的针对业务数据的回复数据是相同的,节点0、节点1和节点2均可以通过擦除码技术对自己所生成的回复数据进行分片,得到相同的集合(r0/r1/y2),该集合包括对回复数据进行分片所得到的回复分片数据r0和回复分片数据r1,该集合还包括通过回复分片数据r0和回复分片数据r1所得到的回复数据的回复冗余数据y2。
157.各个共识节点均可以计算集合(r0/r1/y2)中各个元素(包括元素r0、元素r1和元素y2)的哈希值,并通过该各个元素的哈希值构建默克尔树,该默克尔树可以是上述目标默克尔树状结构,该默克尔树的树根可以记为b,b即为上述回复默克尔树根。
158.因此,节点0可以向业务客户端发送《r0,b0,b》,《r0,b0,b》包括回复分片数据r0、回复分片数据r0的哈希值b0以及回复默克尔树根b;节点1可以向业务客户端发送《r1,b1,b》,《r1,b1,b》包括回复分片数据r1、回复分片数据r1的哈希值b1以及回复默克尔树根b;节点2可以向业务客户端发送《y2,b2,b》,《y2,b2,b》包括回复冗余数据y2、回复冗余数据y2的哈希值b2以及回复默克尔树根b。
159.业务客户端在获取到《r0,b0,b》、《r1,b1,b》和《y2,b2,b》之后,可以通过r0的哈希值、r1的哈希值以及y2的哈希值重新构建默克尔树状结构,并将该默克尔树状结构的树根作为待验证默克尔树根,业务客户端在验证到该待验证默克尔树根等于回复默克尔树根b之后,即可通过r0、r1和y2还原得到回复数据。
160.请参见图6,图6是本技术提供的一种对数据进行分片的场景示意图。此处的原始数据可以指上述业务数据或者业务区块。可以将该原始数据分片得到a1个分片数据(包括分片数据1~分片数据a1),并可以通过该a1个分片数据获取原始数据的a2个冗余数据(包
括冗余数据1~冗余数据a2)。因此,一共可以有a1 a2个发送对象,进而可以将上述a1个分片数据以及a2个冗余数据分别发送给a1 a2个发送对象,一个发送对象可以获取到一个分片数据或者一个冗余数据,不同发送对象可以获取到不同的分片数据或者冗余数据。进而各个发送对象可以相同广播自己获取到的分片数据或者冗余数据,进而使得每个发送对象都可以还原得到上述原始数据。
161.其中,若原始数据为业务数据,则a1个分片数据就可以为上述业务数据的w个业务分片数据,a2个冗余数据就可以为业务数据的g个业务冗余数据,a1 a2个发送对象就可以为所有共识节点。
162.若原始数据为业务区块,则a1个分片数据就可以为上述业务区块的n个区块分片数据,a2个冗余数据就可以为业务区块的m个区块冗余数据,a1 a2个发送对象就可以为所有第二共识节点。
163.请参见图7,图7是本技术提供的提供一种数据共识的场景示意图。如图6所示,区块链网络中的共识节点可以包括第一共识节点、第二共识节点1和第二共识节点2。业务客户端的业务数据的关联集合可以包括业务关联数据1、业务关联数据2、业务关联数据3和业务关联数据4。
164.业务客户端可以将业务关联数据1发送给第二共识节点1,将业务关联数据2发送给第一共识节点,将业务关联数据3发送给第二共识节点2,将业务关联数据4发送给第二共识节点3。进而,各个共识节点之间可以相互广播自己获取到的业务关联数据,因此,第一共识节点可以通过自己获取到的业务关联数据以及其他第二共识节点广播的业务关联数据还原得到业务数据,并可以将该业务数据封装为业务区块。
165.第一共识节点可以获取到该业务区块的关联集合,该业务区块的关联集合可以包括区块关联数据1、区块关联数据2和区块关联数据3。第一共识节点可以将区块关联数据1发送给第二共识节点1,将区块关联数据2发送给第二共识节点2,将区块关联数据3发送给第二共识节点3。进而,各个第二共识节点之间相互广播自己获取到的区块关联数据,进而各个第二共识节点均可以还原得到业务区块。
166.各个第二共识节点还原得到业务区块后,第一共识节点和各个第二共识节点就可以一起对业务区块进行共识,各个共识节点在检测到对业务区块共识通过后,均可以向业务客户端返回对应的回复关联数据,此处第一共识节点可以向业务客户端返回回复关联数据1,第二共识节点1可以向业务客户端返回回复关联数据2,第二共识节点2可以向业务客户端返回回复关联数据3,第二共识节点3可以向业务客户端返回回复关联数据4。进而业务客户端即可根据获取到的回复关联数据1、回复关联数据2、回复关联数据3和回复关联数据4还原得到针对业务数据的回复数据。
167.请参见图8a,图8a是本技术提供的一种发送数据的场景示意图。如图8a所示,本技术中,区块链网络中的共识节点可以包括节点0、节点1、节点2和节点3,图8a中的一个箭头可以表示有数据发送。其中,节点0可以为第一共识节点,节点1、节点2和节点3均可以为第二共识节点。具体的,业务客户端可以分别向节点0、节点1、节点2和节点3发送业务数据的业务关联数据,使得节点0、节点1、节点2和节点3在相互广播自己获取到的业务关联数据后可以还原出业务数据。
168.节点0可以将所还原得到的业务数据封装为业务区块,进而节点0可以分别向节点
1、节点2和节点3发送业务区块的区块关联数据,使得节点1、节点2和节点3在相互广播自己获取到的区块关联数据后可以还原出业务区块。
169.进而节点0、节点1、节点2和节点3就可以一起对业务区块进行共识,节点0、节点1、节点2和节点3在检测到对业务区块共识通过后,均可分别向业务客户端发送回复关联数据,进而业务客户端就可以通过节点0、节点1、节点2和节点3分别发送的回复关联数据还原得到针对业务数据的回复数据。
170.在上述图8a的基础上,再请参见图8b,图8b是本技术提供的一种现有应用中发送数据的场景示意图。如图8b所示,现有应用中,同样以区块链网络中的共识节点包括节点0、节点1、节点2和节点3为例进行说明,图8b中的一个箭头也可以表示有数据发送。同样,节点0可以为第一共识节点,节点1、节点2和节点3均可以为第二共识节点。具体的,业务客户端可以分别向节点0、节点1、节点2和节点3发送全量的业务数据,进而节点0可以对获取到的业务客户端所发送的业务数据进行打包即可得到业务区块,节点0可以分别向节点1、节点2和节点3发送全量的业务区块,接着,节点0、节点1、节点2和节点3即可共同对业务区块进行共识,并在对业务区块共识通过后,节点0、节点1、节点2和节点3均可以生成针对业务数据的回复数据,节点0、节点1、节点2和节点3均可以向业务客户端发送全量的回复数据。
171.可见,通过对比上述图8a和图8b,本技术与现有应用相比,本技术在发送业务数据、业务区块以及回复数据时,均是对应发送的业务数据的业务关联数据、业务区块的区块关联数据以及回复数据的回复关联数据,而现有应用则是直接发送的全量的业务数据、全量的业务区块以及全量的回复数据,这就使得本技术相较于现有应用在发送业务数据、业务区块以及回复数据时,单个共识节点的数据发送量或者数据接收量可以大大减少,从而提高了业务客户端与共识节点之间的通信速度或者不同共识节点之间的通信速度,减少了区块链网络中的通信膨胀情况,提升了区块链网络中的共识节点的通信质量。
172.通过本技术所提供的方法,在业务客户端向区块链网络发送业务数据的阶段(可以称之为request阶段),业务客户端可以向区块链网络中各个共识节点发送业务数据的业务关联数据,进而各个共识节点可以通过相互广播各自获取到的业务关联数据即可还原出业务数据,使得业务客户端不用向区块链网络中各个共识节点均发送完整的业务数据,因此降低了业务客户端为共识节点带来的通信量,将发送完整的业务数据时的通信复杂度o(x*j)降低到了发送业务关联数据时的通信复杂度o(x),x表示业务数据的大小(如业务字段数据的数量),j表示节点总数量,如k 1;并提高了业务客户端与共识节点之间的通信速度,以此减少了各个共识节点获取业务数据的内存压力,避免了在共识节点的节点数量较多的情况下的通信膨胀情况。并且,当某个共识节点与业务客户端之间的通信质量差,未接收到业务客户端发送的业务关联数据时,该共识节点也可以通过其他共识节点所广播的业务关联数据(如获取到的大于或者等于w个的业务关联数据)还原出业务数据,使得该共识节点也可以正常还原客户端请求,处理后续逻辑。
173.而在第一共识节点广播所打包的业务区块的阶段(可以称之为pre-prepare阶段),第一共识节点可以向各个第二共识节点广播(即发送)业务区块的区块关联数据,进而各个第二共识节点可以相互广播各自获取到的区块关联数据即可还原出业务区块,由于在该阶段,业务区块的数据量通常非常大,因此不直接向各个第二共识节点广播完整的业务区块,而是向各个第二共识节点广播业务区块的业务关联数据,更能降低在该阶段对于业
务区块的通信复杂度,提升整个区块链网络的通信性能(如提升区块链网络的通信稳定性和通信速度)。在该阶段,即使当某个第二共识节点与第一共识节点之间的通信有问题,导致该第二共识节点未接收到第一共识节点发送的区块关联数据,该第二共识节点也可以通过其他第二共识节点所广播的区块关联数据还原出业务区块,并正常执行对业务区块的共识过程,即使得与第一共识节点之间的通信有问题的第二共识节点也不会出现无法参与对业务区块进行共识的过程,这也进一步提升了区块链网络中的共识过程的稳定性。
174.而在共识节点对业务客户端的回复阶段(可以称之为response阶段),各个共识节点只需要向业务客户端返回回复数据的回复关联数据,而不用返回全量的回复数据,这也降低了该阶段对于共识节点与业务客户端之间的通信复杂度,减少了各个共识节点与业务客户端之间的数据通信量,提升了通信速度,降低了业务客户端的内存压力。
175.本技术可以由第一共识节点生成业务数据所属的业务区块;对业务区块进行分片,得到业务区块的n个区块分片数据,并根据n个区块分片数据获取业务区块的m个区块冗余数据;其中,n个区块分片数据与m个区块冗余数据共同组成业务区块的关联集合,业务区块的关联集合中共包含m n个区块关联数据,一个区块关联数据是一个区块分片数据或一个区块冗余数据,m、n均为正整数;将业务区块的关联集合中的各个区块关联数据分别发送至k个第二共识节点;其中,每个第二共识节点均接收到一个区块关联数据,k个第二共识节点相互广播各自接收到的区块关联数据,以使得每个第二共识节点还原出业务区块;在第一共识节点与k个第二共识节点之间对业务区块进行共识。由此可见,本技术提出的方法第一共识节点可以向各个第二共识节点发送业务区块的区块关联数据,而不用分别向各个第二共识节点发送完整的业务区块,各个第二共识节点也可以还原得到业务区块,进而即可通过各个共识节点对业务区块实现共识,而对业务区块进行共识可以理解为就是对业务数据进行共识,因此,这可以减少对业务数据进行共识过程中的数据的通信量,降低通信复杂度,从而可以提升区块链网络中对业务数据进行共识的稳定性和效率。
176.请参见图9,图9是本技术提供的一种区块链网络的共识处理方法的流程示意图。图9所描述的实施例与上述图2所描述的实施例实际上是同一个实施例,只是图2所描述的实施例中的执行主体是第一共识节点,图9所描述的实施例中的执行主体是业务客户端。因此,图2中所描述的内容可以与图9中所描述的内容相互结合。如图9所示,该方法可以包括:
177.步骤s201,对业务数据进行分片,得到业务数据的w个业务分片数据,并根据w个业务分片数据获取业务数据的g个业务冗余数据;其中,w个业务分片数据和g个业务冗余数据共同组成业务数据的关联集合,业务数据的关联集合中共包含w g个业务关联数据,一个业务关联数据是一个业务分片数据或一个业务冗余数据,w、g均为正整数。
178.可选的,业务客户端可以承载于终端设备中,业务客户端可以是任意的应用客户端或者网页客户端等。业务客户端可以对业务数据进行分片,得到业务数据的w个业务分片数据,并可以通过该w个业务分片数据获取业务数据的g个业务冗余数据。该w个业务分片数据和g个业务冗余数据共同组成了业务数据的关联集合,业务数据的关联集合就包括w g个业务关联数据,一个业务关联数据就为一个业务分片数据或者一个业务冗余数据,w和g均为正整数。
179.业务客户端如何获取该w个业务分片数据和g个业务冗余数据的具体过程可以参见上述图2对应实施例中的步骤s101中的描述。
180.步骤s202,将业务数据的关联集合中的各个业务关联数据分别发送至区块链网络中的共识节点;其中,每个共识节点均接收到一个业务关联数据,每个第二共识节点分别向第一共识节点广播各自接收到的业务关联数据,使第一共识节点还原出业务数据,并对业务数据执行共识处理。
181.可选的,业务客户端可以将业务数据的关联集合中的各个业务关联数据分别发送给区块链网络中的共识节点(包括第一共识节点和k个第二共识节点)。一个共识节点可以获取到一个业务关联数据,每个共识节点之间可以相互广播自己获取到的业务关联数据。因此,第一共识节点可以获取到各个第二共识节点所广播的业务关联数据,进而第一共识节点可以通过各个第二共识节点所广播的业务关联数据以及自己获取到的业务关联数据还原出上述业务数据,进而可以对所还原的业务数据进行共识处理。此处第一共识节点对所还原的业务数据进行共识处理的过程可以是上述图2对应实施例中所描述的将业务数据打包为业务区块,进而通过第一共识节点和k个第二共识节点一起对该业务区块进行共识的过程。
182.可选的,第一共识节点对上述业务区块共识通过可以表明第一共识节点对业务数据共识通过,在第一共识节点对业务数据共识通过后,第一共识节点可以向业务客户端返回第一回复关联数据。同理,第二共识节点对上述业务区块共识通过后也表明第二共识节点对业务数据共识通过,在第二共识节点对业务数据共识通过后,第二共识节点也可以向业务客户端返回第二回复关联数据。对第一回复关联数据和第二回复关联数据的具体描述可以参见上述图2对应实施例中的描述。
183.因此,业务客户端可以获取到第一共识节点返回的第一回复关联数据以及各个第二共识节点各自返回的第二回复关联数据。
184.可选的,业务客户端可以通过获取到的第一回复关联数据以及各个第二共识节点所返回的第二回复关联数据还原出针对业务数据的回复数据。
185.其中,业务客户端在获取到第一共识节点所返回的第一回复关联数据时,还可以获取到第一共识节点发送的回复默克尔树根,该回复默克尔树根可以是第一共识节点通过自己所得到的回复数据的各个回复分片数据(如上述图2对应实施例中的h个回复分片数据)和各个回复冗余数据来构建的默克尔树状结构的树根。
186.因此,业务客户端还可以通过第一回复关联数据和所有第二回复关联数据来再次构造默克尔树状结构,可以将该默克尔树状结构称之为目标默克尔树状结构,可以将该目标默克尔树状结构的树根称之为待验证默克尔树根。业务客户端可以对比该待验证默克尔树根与第一共识节点所发送的回复默克尔树根是否相同,若相同,则可以认为第一回复关联数据和第二回复关联数据是可信的,可以通过第一回复关联数据和第二回复关联数据来还原得到针对业务数据的回复数据。
187.可选的,各个第二共识节点在向业务客户端返回第二回复关联数据时,也可以向业务客户端发送回复默克尔树根,第二共识节点向业务客户端返回的回复默克尔树根可以是第二共识节点通过自己所得到的回复数据的各个回复分片数据和各个回复冗余数据来构建的默克尔树状结构的树根。
188.因此,业务客户端也可以对比每个共识节点分别发送的回复默克尔树根与上述待验证默克尔树根是否相同,若全部相同,或者用于还原上述回复数据的h个回复关联数据所
属的共识节点所发送的回复默克尔树根与待验证默克尔树根相同,则可以认为获取到的第一回复数据和第二回复数据是可信的,可以通过第一回复数据和第二回复数据还原得到针对业务数据的回复数据。
189.一般来说,由于还原机制的原因,能通过分片数据和冗余数据还原出对应完整的数据,那么该分片数据和冗余数据通常都是准确的,若不准确,通常是还原不出对应完整的数据的。此处的分片数据可以指上述业务分片数据、区块分片数据或者回复分片数据,此处的冗余数据可以指上述业务冗余数据、区块冗余数据或者回复冗余数据,此处的完整的数据可以指上述业务数据、业务区块或者回复数据。
190.本技术可以由第一共识节点生成业务数据所属的业务区块;对业务区块进行分片,得到业务区块的n个区块分片数据,并根据n个区块分片数据获取业务区块的m个区块冗余数据;其中,n个区块分片数据与m个区块冗余数据共同组成业务区块的关联集合,业务区块的关联集合中共包含m n个区块关联数据,一个区块关联数据是一个区块分片数据或一个区块冗余数据,m、n均为正整数;将业务区块的关联集合中的各个区块关联数据分别发送至k个第二共识节点;其中,每个第二共识节点均接收到一个区块关联数据,k个第二共识节点相互广播各自接收到的区块关联数据,以使得每个第二共识节点还原出业务区块;在第一共识节点与k个第二共识节点之间对业务区块进行共识。由此可见,本技术提出的方法第一共识节点可以向各个第二共识节点发送业务区块的区块关联数据,而不用分别向各个第二共识节点发送完整的业务区块,各个第二共识节点也可以还原得到业务区块,进而即可通过各个共识节点对业务区块实现共识,而对业务区块进行共识可以理解为就是对业务数据进行共识,因此,这可以减少对业务数据进行共识过程中的数据的通信量,降低通信复杂度,从而可以提升区块链网络中对业务数据进行共识的稳定性和效率。
191.请参见图10,图10是本技术提供的一种区块链网络的共识处理装置的结构示意图。该区块链网络的共识处理装置可以是运行于计算机设备中的一个计算机程序(包括程序代码),例如该区块链网络的共识处理装置为一个应用软件,该区块链网络的共识处理装置可以用于执行本技术实施例提供的方法中的相应步骤。该区块链网络的共识处理装置可以应用于上述第一共识节点,如图10所示,该区块链网络的共识处理装置1可以包括:区块生成模块11、关联数据获取模块12、关联数据发送模块13和共识模块14。
192.区块生成模块11,用于生成业务数据所属的业务区块;
193.关联数据获取模块12,用于对业务区块进行分片,得到业务区块的n个区块分片数据,并根据n个区块分片数据获取业务区块的m个区块冗余数据;其中,n个区块分片数据与m个区块冗余数据共同组成业务区块的关联集合,业务区块的关联集合中共包含m n个区块关联数据,一个区块关联数据是一个区块分片数据或一个区块冗余数据,m、n均为正整数;
194.关联数据发送模块13,用于将业务区块的关联集合中的各个区块关联数据分别发送至k个第二共识节点;其中,每个第二共识节点均接收到一个区块关联数据,k个第二共识节点相互广播各自接收到的区块关联数据,以使得每个第二共识节点还原出业务区块;
195.共识模块14,用于在第一共识节点与k个第二共识节点之间对业务区块进行共识。
196.业务数据是依据w个业务分片数据和g个业务冗余数据还原得到的;w个业务分片数据与g个业务冗余数据共同组成业务数据的关联集合,业务数据的关联集合中共包含w g个业务关联数据,一个业务关联数据是一个业务分片数据或一个业务冗余数据,w、g均为正
整数;
197.可选的,生成业务数据所属的业务区块之前,该装置1还用于:
198.接收业务客户端发送的第一业务关联数据,第一业务关联数据是业务数据的关联集合中的任一个;
199.接收每个第二共识节点所广播的第二业务关联数据;任一个第二共识节点广播的第二业务关联数据是业务客户端发送的、业务数据的关联集合中除第一业务关联数据之外的任一个;
200.根据第一业务关联数据和k个第二业务关联数据还原得到业务数据。
201.可选的,该装置1接收业务客户端发送的第一业务关联数据的方式,包括:
202.接收业务客户端发送的第一验证关联数据和第一验证哈希值;
203.计算第一验证关联数据的哈希值,当第一验证关联数据的哈希值和第一验证哈希值相同时,将第一验证关联数据确定为第一业务关联数据。
204.可选的,k个第二共识节点中的任一个第二共识节点表示为第i个第二共识节点,i为小于或等于k的正整数;
205.该装置1接收每个第二共识节点所广播的第二业务关联数据的方式,包括:
206.接收第i个第二共识节点所广播的第二验证关联数据和第二验证哈希值;
207.计算第二验证关联数据的哈希值,当第二验证关联数据的哈希值和第二验证哈希值相同时,将第二验证关联数据确定为第i个第二共识节点所广播的第二业务关联数据。
208.可选的,第一共识节点在获取到第一业务关联数据时,还获取到业务客户端发送的业务默克尔树根,业务默克尔树根是业务客户端根据由业务数据所得到的第一业务关联数据和k个第二业务关联数据生成;
209.该装置1根据第一业务关联数据和k个第二业务关联数据还原得到业务数据的方式,包括:
210.根据第一业务关联数据的哈希值和k个第二业务关联数据的哈希值构建默克尔树状结构;
211.将默克尔树状结构的树根确定为验证默克尔树根;
212.当验证默克尔树根与业务默克尔树根相同时,根据第一业务关联数据和第二业务关联数据还原得到业务数据。
213.可选的,业务区块包括z个区块字段数据,z为正整数;
214.关联数据获取模块12对业务区块进行分片,得到业务区块的n个区块分片数据的方式,包括:
215.获取区块冗余数量m,根据区块冗余数量m和第二共识节点的节点数量k确定区块分片数量n;m和n之和等于k;
216.根据区块分片数量n对z个区块字段数据进行分片,得到n个区块分片数据;一个区块分片数据包含一个或多个区块字段数据。
217.可选的,关联数据获取模块12根据n个区块分片数据获取业务区块的m个区块冗余数据的方式,包括:
218.将n个区块分片数据确定为冗余计算数据,并获取m种冗余算法;
219.根据m种冗余算法中的每种冗余算法分别对冗余计算数据进行计算,得到m个区块
冗余数据。
220.可选的,关联数据获取模块12获取区块冗余数量m的方式,包括:
221.获取区块链网络的网络稳定等级,并将区块链网络的网络稳定等级确定为目标稳定等级;
222.获取冗余数量映射表;冗余数量映射表包含至少两种网络稳定等级与对应的冗余数量之间的映射关系;至少两种网络稳定等级包含目标稳定等级;
223.将冗余数量映射表中与目标稳定等级具有映射关系的冗余数量确定为区块冗余数量m。
224.可选的,在对业务区块共识通过后,上述共识处理装置1还用于:
225.生成针对业务数据的回复数据;
226.对回复数据进行分片,得到回复数据的h个回复分片数据,并根据h个回复分片数据获取回复数据的回复冗余数据;h为正整数;
227.从h个回复分片数据和回复冗余数据中选取第一回复关联数据,并将所选取的第一回复关联数据返回给业务客户端;
228.其中,在对业务区块共识通过后,每个第二共识节点分别向业务客户端返回针对业务数据的第二回复关联数据,第一回复关联数据和第二回复关联数据用于使业务客户端还原得到针对业务数据的回复数据。
229.根据本技术的一个实施例,图2所示的区块链网络的共识处理方法所涉及的步骤可由图10所示的区块链网络的共识处理装置1中的各个模块来执行。例如,图2中所示的步骤s101可由图10中的区块生成模块11来执行,图2中所示的步骤s102可由图10中的关联数据获取模块12来执行;图2中所示的步骤s103可由图10中的关联数据发送模块13来执行,图2中所示的步骤s104可由图10中的共识模块14来执行。
230.本技术可以由第一共识节点生成业务数据所属的业务区块;对业务区块进行分片,得到业务区块的n个区块分片数据,并根据n个区块分片数据获取业务区块的m个区块冗余数据;其中,n个区块分片数据与m个区块冗余数据共同组成业务区块的关联集合,业务区块的关联集合中共包含m n个区块关联数据,一个区块关联数据是一个区块分片数据或一个区块冗余数据,m、n均为正整数;将业务区块的关联集合中的各个区块关联数据分别发送至k个第二共识节点;其中,每个第二共识节点均接收到一个区块关联数据,k个第二共识节点相互广播各自接收到的区块关联数据,以使得每个第二共识节点还原出业务区块;在第一共识节点与k个第二共识节点之间对业务区块进行共识。由此可见,本技术提出的装置第一共识节点可以向各个第二共识节点发送业务区块的区块关联数据,而不用分别向各个第二共识节点发送完整的业务区块,各个第二共识节点也可以还原得到业务区块,进而即可通过各个共识节点对业务区块实现共识,而对业务区块进行共识可以理解为就是对业务数据进行共识,因此,这可以减少对业务数据进行共识过程中的数据的通信量,降低通信复杂度,从而可以提升区块链网络中对业务数据进行共识的稳定性和效率。
231.根据本技术的一个实施例,图10所示的区块链网络的共识处理装置1中的各个模块可以分别或全部合并为一个或若干个单元来构成,或者其中的某个(些)单元还可以再拆分为功能上更小的多个子单元,可以实现同样的操作,而不影响本技术的实施例的技术效果的实现。上述模块是基于逻辑功能划分的,在实际应用中,一个模块的功能也可以由多个
单元来实现,或者多个模块的功能由一个单元实现。在本技术的其它实施例中,区块链网络的共识处理装置1也可以包括其它单元,在实际应用中,这些功能也可以由其它单元协助实现,并且可以由多个单元协作实现。
232.根据本技术的一个实施例,可以通过在包括中央处理单元(cpu)、随机存取存储介质(ram)、只读存储介质(rom)等处理元件和存储元件的例如计算机的通用计算机设备上运行能够执行如图2中所示的相应方法所涉及的各步骤的计算机程序(包括程序代码),来构造如图10中所示的区块链网络的共识处理装置1,以及来实现本技术实施例的区块链网络的共识处理方法。上述计算机程序可以记载于例如计算机可读记录介质上,并通过计算机可读记录介质装载于上述计算设备中,并在其中运行。
233.请参见图11,图11是本技术提供的一种区块链网络的共识处理装置的结构示意图。该区块链网络的共识处理装置可以是运行于计算机设备中的一个计算机程序(包括程序代码),例如该区块链网络的共识处理装置为一个应用软件,该区块链网络的共识处理装置可以用于执行本技术实施例提供的方法中的相应步骤。该区块链网络的共识处理装置可以应用于上述业务客户端,如图11所示,该区块链网络的共识处理装置2可以包括:业务分片模块21和业务数据发送模块22;
234.业务分片模块21,用于对业务数据进行分片,得到业务数据的w个业务分片数据,并根据w个业务分片数据获取业务数据的g个业务冗余数据;其中,w个业务分片数据和g个业务冗余数据共同组成业务数据的关联集合,业务数据的关联集合中共包含w g个业务关联数据,一个业务关联数据是一个业务分片数据或一个业务冗余数据,w、g均为正整数;
235.业务数据发送模块22,用于将业务数据的关联集合中的各个业务关联数据分别发送至区块链网络中的共识节点;其中,每个共识节点均接收到一个业务关联数据,每个第二共识节点分别向第一共识节点广播各自接收到的业务关联数据,使第一共识节点还原出业务数据,并对业务数据执行共识处理。
236.可选的,业务数据包含d个业务字段数据,d为正整数;
237.业务分片模块21对业务数据进行分片,得到业务数据的w个业务分片数据的方式,包括:
238.获取第一共识节点和k个第二共识节点的节点总数量k 1;
239.获取业务冗余数量g,根据业务冗余数量g和节点总数量k 1确定业务分片数量w;g和w之和等于k 1;
240.根据业务分片数量w对d个业务字段数据进行分片,得到w个业务分片数据;一个业务分片数据包含一个或多个业务字段数据。
241.可选的,上述共识处理装置2还用于:
242.接收第一共识节点在对业务数据共识通过后所返回的第一回复关联数据和回复默克尔树根,并接收每个第二共识节点在对业务数据共识通过后所返回的第二回复关联数据;回复默克尔树根是由第一共识节点在对业务数据共识通过后根据生成的针对业务数据的回复数据所生成;
243.上述共识处理装置2还用于:
244.根据第一回复关联数据的哈希值和第二回复关联数据的哈希值构建目标默克尔树状结构;
245.将目标默克尔树状结构的树根确定为待验证默克尔树根;
246.当待验证默克尔树根与回复默克尔树根相同时,根据第一回复关联数据和第二回复关联数据还原得到回复数据。
247.根据本技术的一个实施例,图9所示的区块链网络的共识处理方法所涉及的步骤可由图11所示的区块链网络的共识处理装置2中的各个模块来执行。例如,图9中所示的步骤s201可由图11中的业务分片模块21来执行,图9中所示的步骤s202可由图11中的业务数据发送模块22来执行。
248.本技术可以由第一共识节点生成业务数据所属的业务区块;对业务区块进行分片,得到业务区块的n个区块分片数据,并根据n个区块分片数据获取业务区块的m个区块冗余数据;其中,n个区块分片数据与m个区块冗余数据共同组成业务区块的关联集合,业务区块的关联集合中共包含m n个区块关联数据,一个区块关联数据是一个区块分片数据或一个区块冗余数据,m、n均为正整数;将业务区块的关联集合中的各个区块关联数据分别发送至k个第二共识节点;其中,每个第二共识节点均接收到一个区块关联数据,k个第二共识节点相互广播各自接收到的区块关联数据,以使得每个第二共识节点还原出业务区块;在第一共识节点与k个第二共识节点之间对业务区块进行共识。由此可见,本技术提出的装置第一共识节点可以向各个第二共识节点发送业务区块的区块关联数据,而不用分别向各个第二共识节点发送完整的业务区块,各个第二共识节点也可以还原得到业务区块,进而即可通过各个共识节点对业务区块实现共识,而对业务区块进行共识可以理解为就是对业务数据进行共识,因此,这可以减少对业务数据进行共识过程中的数据的通信量,降低通信复杂度,从而可以提升区块链网络中对业务数据进行共识的稳定性和效率。
249.根据本技术的一个实施例,图11所示的区块链网络的共识处理装置2中的各个模块可以分别或全部合并为一个或若干个单元来构成,或者其中的某个(些)单元还可以再拆分为功能上更小的多个子单元,可以实现同样的操作,而不影响本技术的实施例的技术效果的实现。上述模块是基于逻辑功能划分的,在实际应用中,一个模块的功能也可以由多个单元来实现,或者多个模块的功能由一个单元实现。在本技术的其它实施例中,区块链网络的共识处理装置2也可以包括其它单元,在实际应用中,这些功能也可以由其它单元协助实现,并且可以由多个单元协作实现。
250.根据本技术的一个实施例,可以通过在包括中央处理单元(cpu)、随机存取存储介质(ram)、只读存储介质(rom)等处理元件和存储元件的例如计算机的通用计算机设备上运行能够执行如图9中所示的相应方法所涉及的各步骤的计算机程序(包括程序代码),来构造如图11中所示的区块链网络的共识处理装置2,以及来实现本技术实施例的区块链网络的共识处理方法。上述计算机程序可以记载于例如计算机可读记录介质上,并通过计算机可读记录介质装载于上述计算设备中,并在其中运行。
251.请参见图12,图12是本技术提供的一种计算机设备的结构示意图。如图12所示,计算机设备1000可以包括:处理器1001,网络接口1004和存储器1005,此外,计算机设备1000还可以包括:用户接口1003,和至少一个通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。其中,用户接口1003可以包括显示屏(display)、键盘(keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如wi-fi接口)。存储器1005可以是高速ram存储器,也可以是非不
稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。存储器1005可选的还可以是至少一个位于远离前述处理器1001的存储装置。如图12所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及设备控制应用程序。
252.在图12所示的计算机设备1000中,网络接口1004可提供网络通讯功能;而用户接口1003主要用于为用户提供输入的接口;而处理器1001可以用于调用存储器1005中存储的设备控制应用程序,以实现:
253.生成业务数据所属的业务区块;
254.对业务区块进行分片,得到业务区块的n个区块分片数据,并根据n个区块分片数据获取业务区块的m个区块冗余数据;其中,n个区块分片数据与m个区块冗余数据共同组成业务区块的关联集合,业务区块的关联集合中共包含m n个区块关联数据,一个区块关联数据是一个区块分片数据或一个区块冗余数据,m、n均为正整数;
255.将业务区块的关联集合中的各个区块关联数据分别发送至k个第二共识节点;其中,每个第二共识节点均接收到一个区块关联数据,k个第二共识节点相互广播各自接收到的区块关联数据,以使得每个第二共识节点还原出业务区块;
256.在第一共识节点与k个第二共识节点之间对业务区块进行共识。
257.可选的,处理器1001还可以用于调用存储器1005中存储的设备控制应用程序,以实现:
258.对业务数据进行分片,得到业务数据的w个业务分片数据,并根据w个业务分片数据获取业务数据的g个业务冗余数据;其中,w个业务分片数据和g个业务冗余数据共同组成业务数据的关联集合,业务数据的关联集合中共包含w g个业务关联数据,一个业务关联数据是一个业务分片数据或一个业务冗余数据,w、g均为正整数;
259.将业务数据的关联集合中的各个业务关联数据分别发送至区块链网络中的共识节点;其中,每个共识节点均接收到一个业务关联数据,每个第二共识节点分别向第一共识节点广播各自接收到的业务关联数据,使第一共识节点还原出业务数据,并对业务数据执行共识处理。
260.应当理解,本技术实施例中所描述的计算机设备1000可执行前文图2或图9对应实施例中对上述区块链网络的共识处理方法的描述,也可执行前文图10所对应实施例中对上述区块链网络的共识处理装置1的描述以及前文图11所对应实施例中对上述区块链网络的共识处理装置2的描述,在此不再赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。
261.此外,这里需要指出的是:本技术还提供了一种计算机可读存储介质,且计算机可读存储介质中存储有前文提及的区块链网络的共识处理装置1和区块链网络的共识处理装置2所执行的计算机程序,且计算机程序包括程序指令,当处理器执行程序指令时,能够执行前文图2或图9所对应实施例中对区块链网络的共识处理方法的描述,因此,这里将不再进行赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。对于本技术所涉及的计算机存储介质实施例中未披露的技术细节,请参照本技术方法实施例的描述。
262.作为示例,上述程序指令可被部署在一个计算机设备上执行,或者被部署位于一个地点的多个计算机设备上执行,又或者,在分布在多个地点且通过通信网络互连的多个
计算机设备上执行,分布在多个地点且通过通信网络互连的多个计算机设备可以组成区块链网络。
263.上述计算机可读存储介质可以是前述任一实施例提供的区块链网络的共识处理装置或者上述计算机设备的内部存储单元,例如计算机设备的硬盘或内存。该计算机可读存储介质也可以是该计算机设备的外部存储设备,例如该计算机设备上配备的插接式硬盘,智能存储卡(smart media card,smc),安全数字(secure digital,sd)卡,闪存卡(flash card)等。进一步地,该计算机可读存储介质还可以既包括该计算机设备的内部存储单元也包括外部存储设备。该计算机可读存储介质用于存储该计算机程序以及该计算机设备所需的其他程序和数据。该计算机可读存储介质还可以用于暂时地存储已经输出或者将要输出的数据。
264.本技术提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行前文图2或图9对应实施例中对上述区块链网络的共识处理方法的描述,因此,这里将不再进行赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。对于本技术所涉及的计算机可读存储介质实施例中未披露的技术细节,请参照本技术方法实施例的描述。
265.本技术实施例的说明书和权利要求书及附图中的术语“第一”、“第二”等是用于区别不同对象,而非用于描述特定顺序。此外,术语“包括”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、装置、产品或设备没有限定于已列出的步骤或模块,而是可选地还包括没有列出的步骤或模块,或可选地还包括对于这些过程、方法、装置、产品或设备固有的其他步骤单元。
266.本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术的范围。
267.本技术实施例提供的方法及相关装置是参照本技术实施例提供的方法流程图和/或结构示意图来描述的,具体可由计算机程序指令实现方法流程图和/或结构示意图的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。这些计算机程序指令可提供到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或结构示意图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或结构示意图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个
流程和/或结构示意一个方框或多个方框中指定的功能的步骤。
268.以上所揭露的仅为本技术较佳实施例而已,当然不能以此来限定本技术之权利范围,因此依本技术权利要求所作的等同变化,仍属本技术所涵盖的范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献