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

验证区块链数据的方法、装置、电子设备和存储介质与流程

2022-02-19 03:23:29 来源:中国专利 TAG:


1.本说明书一个或多个实施例涉及区块链技术领域,尤其涉及一种验证区块链数据的方法、装置、电子设备和存储介质。


背景技术:

2.区块链技术构建在传输网络(例如点对点网络)之上。区块链网络中的节点利用链式数据结构来验证与存储数据,并采用分布式节点共识算法来生成和更新数据。在相关技术中,基于区块链数据的私密需求,会在区块链主网的基础上组建区块链子网,使得各个区块链子网之间相互独立、彼此隔离,因此相互之间具有数据验证需求。基于传统的跨链技术能够满足不同区块链子网之间数据验证需求,但通常流程繁琐且耗时较长,并且忽略了区块链主网能够作为不同区块链子网间进行数据验证的信任基础。


技术实现要素:

3.有鉴于此,本说明书一个或多个实施例提供一种验证区块链数据的方法、装置、电子设备和存储介质。
4.为实现上述目的,本说明书一个或多个实施例提供技术方案如下:
5.根据本说明书一个或多个实施例的第一方面,提出了一种验证区块链数据的方法,应用于包含区块链子网和区块链主网的区块链系统,其中,所述区块链子网中的子网节点所处的节点设备上部署有所述区块链主网中的主网节点,所述区块链子网至少包括第一区块链子网和第二区块链子网,所述区块链主网中的主网节点维护有第二区块链子网对应的数据验证条件;所述方法包括:
6.第一区块链子网向区块链主网发起数据验证交易,所述数据验证交易用于对第二区块链子网上是否存在目标数据进行验证;
7.所述区块链主网中的任一主网节点执行所述数据验证交易,以在所述任一主网节点所处节点设备上部署有第二区块链子网中的任一子网节点的情况下生成候选验证结果,并将所述候选验证结果广播至所述区块链主网中的其他主网节点,其中,所述候选验证结果用于表明所述任一子网节点上是否存在所述目标数据;
8.所述任一主网节点从获取到的所有候选验证结果中确定一个满足所述数据验证条件的目标验证结果,以由第一区块链子网根据所述目标验证结果确定所述目标数据是否存在于第二区块链子网。
9.根据本说明书一个或多个实施例的第二方面,提出了另一种验证区块链数据的方法,应用于区块链主网中的主网节点,在所述区块链主网与区块链子网构成的区块链系统中,所述区块链子网中的子网节点所处的节点设备上部署有所述区块链主网中的主网节点,所述区块链子网至少包括第一区块链子网和第二区块链子网,所述区块链主网中的主网节点维护有第二区块链子网对应的数据验证条件;所述方法包括:
10.接收第一区块链子网向区块链主网发起的数据验证交易,所述数据验证交易用于
对第二区块链子网上是否存在目标数据进行验证;
11.执行所述数据验证交易,以在自身所处节点设备上部署有第二区块链子网中的任一子网节点的情况下生成候选验证结果,并将所述候选验证结果广播至所述区块链主网中的其他主网节点,其中,所述候选验证结果用于表明所述任一子网节点上是否存在所述目标数据;
12.从获取到的所有候选验证结果中确定一个满足所述数据验证条件的目标验证结果,以由第一区块链子网根据所述目标验证结果确定所述目标数据是否存在于第二区块链子网。
13.根据本说明书一个或多个实施例的第三方面,提出了一种验证区块链数据的装置,应用于区块链主网中的主网节点,在所述区块链主网与区块链子网构成的区块链系统中,所述区块链子网中的子网节点所处的节点设备上部署有所述区块链主网中的主网节点,所述区块链子网至少包括第一区块链子网和第二区块链子网,所述区块链主网中的主网节点维护有第二区块链子网对应的数据验证条件;所述装置包括:
14.交易接收模块,用于接收第一区块链子网向区块链主网发起的数据验证交易,所述数据验证交易用于对第二区块链子网上是否存在目标数据进行验证;
15.交易执行模块,用于执行所述数据验证交易,以在自身所处节点设备上部署有第二区块链子网中的任一子网节点的情况下生成候选验证结果,并将所述候选验证结果广播至所述区块链主网中的其他主网节点,其中,所述候选验证结果用于表明所述任一子网节点上是否存在所述目标数据;
16.条件验证模块,用于从获取到的所有候选验证结果中确定一个满足所述数据验证条件的目标验证结果,以由第一区块链子网根据所述目标验证结果确定所述目标数据是否存在于第二区块链子网。
17.根据本说明书一个或多个实施例的第四方面,提出了一种区块链系统,包含区块链子网和区块链主网,其中,所述区块链子网中的子网节点所处的节点设备上部署有所述区块链主网中的主网节点,所述区块链子网至少包括第一区块链子网和第二区块链子网,所述区块链主网中的主网节点维护有第二区块链子网对应的数据验证条件;所述系统包括:
18.第一区块链子网,用于向区块链主网发起数据验证交易,所述数据验证交易用于对第二区块链子网上是否存在目标数据进行验证;
19.区块链主网,所述区块链主网中的任一主网节点执行所述数据验证交易,以在所述任一主网节点所处节点设备上部署有第二区块链子网中的任一子网节点的情况下生成候选验证结果,并将所述候选验证结果广播至所述区块链主网中的其他主网节点,其中,所述候选验证结果用于表明所述任一子网节点上是否存在所述目标数据;所述任一主网节点从获取到的所有候选验证结果中确定一个满足所述数据验证条件的目标验证结果,以由第一区块链子网根据所述目标验证结果确定所述目标数据是否存在于第二区块链子网。
20.根据本说明书实施例的第五方面,提供一种电子设备,包括:
21.处理器;用于存储处理器可执行指令的存储器;其中,所述处理器通过运行所述可执行指令以实现上述验证区块链数据的方法的步骤。
22.根据本说明书实施例的第六方面,提供一种计算机可读存储介质,其上储存有可
执行指令;其中,该指令被处理器执行时,实现上述验证区块链数据的方法的步骤。
23.应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本说明书。
附图说明
24.图1是一示例性实施例提供的一种包含区块链主网和区块链子网的区块链系统的示意图。
25.图2是一示例性实施例提供的一种验证区块链数据的方法的流程图。
26.图3是一示例性实施例提供的另一种验证区块链数据的方法的流程图。
27.图4是一示例性实施例提供的一种设备的结构示意图。
28.图5是一示例性实施例提供的一种验证区块链数据的装置的框图。
29.图6是一示例性实施例提供的一种验证区块链数据的系统的架构图。
具体实施方式
30.这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书一个或多个实施例相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书一个或多个实施例的一些方面相一致的装置和方法的例子。
31.需要说明的是:在其他实施例中并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤。在一些其他实施例中,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其他实施例中可能被分解为多个步骤进行描述;而本说明书中所描述的多个步骤,在其他实施例中也可能被合并为单个步骤进行描述。
32.由于区块链网络的去中心化特性,使得区块链网络中的所有区块链节点均会维护相同的区块数据,无法满足部分节点的特殊需求。以联盟链为例,所有联盟成员(即联盟内的节点成员)可以组成一区块链网络,所有联盟成员在该区块链网络中分别存在对应的区块链节点,并可以通过对应的区块链节点获得该区块链网络上发生的所有交易和相关数据。但在一些情况下,可能存在部分联盟成员希望完成一些具有私密需求的交易,这些联盟成员既希望这些交易能够在区块链上存证或借助于区块链技术的其他优势,又能够避免其他联盟成员查看到这些交易和相关数据。虽然这些联盟成员可以额外组建一新的区块链网络,其建立方式与上述包含所有联盟成员的区块链网络类似,但是从头开始建立一条新的区块链网络需要消耗大量的资源,且无论是该区块链网络的建立过程或是建成后的配置过程都非常耗时。联盟成员之间的需求往往是临时的或者具有一定的时效性,使得新建的区块链网络很快就会由于需求消失而失去存在的意义,从而进一步增加了上述区块链网络的建链成本。而联盟成员之间的需求经常会变化,而每一需求所对应的联盟成员也往往不同,因而每当联盟成员发生变化时就可能需要组建一新的区块链网络,从而造成资源和时间的大量浪费。
33.为此,可以将已组建的区块链网络作为区块链主网,并在该区块链主网的基础上
组建区块链子网。那么,在诸如上述的联盟链场景下,联盟成员可以在已经参与区块链主网的情况下,基于自身需求而在区块链主网的基础上组建所需的区块链子网。由于区块链子网是在区块链主网的基础上所建立,使得区块链子网的组建过程相比于完全独立地组建一条区块链网络,所消耗的资源和所需的耗时等都极大地降低,灵活性极高。
34.基于区块链主网快捷组建区块链子网的过程如下:区块链主网中的各区块链节点分别获取组建区块链子网的交易,所述交易包含所述区块链子网的配置信息,所述配置信息包括参与组建所述区块链子网的节点成员的身份信息,所述区块链主网中的各区块链节点分别执行所述交易以透出所述配置信息,当所述配置信息包含第一区块链节点对应的节点成员的身份信息时,部署第一区块链节点的节点设备基于所述包含所述配置信息的创世块启动属于所述区块链子网的第二区块链节点。
35.组建区块链子网的交易可由区块链主网的管理员发起,即仅允许管理员在区块链主网的基础上组建区块链子网,而避免将区块链子网的组建权限开放给普通用户,以防止由此导致的安全性问题。在一些情况下,也可以允许区块链主网的普通用户发起上述组建区块链子网的交易,以满足普通用户的组网需求,使得普通用户能够在管理员不便于发起交易的情况下依然能够快捷地组建区块链子网。
36.图1是一示例性实施例提供的一种包含区块链主网和区块链子网的区块链系统的示意图,以图1所示为例,区块链主网为subnet0,该subnet0包含的区块链节点为nodea、nodeb、nodec、noded和nodee等。假定nodea、nodeb、nodec和noded希望组建一区块链子网:如果nodea为管理员且仅允许管理员发起组建区块链子网的交易,那么可由nodea向subnet0发起上述组建区块链子网的交易;如果nodee为管理员且仅允许管理员发起组建区块链子网的交易,那么nodea~noded需要向nodee进行请求,使得nodee向subnet0发起上述组建区块链子网的交易;如果nodee为管理员但允许普通用户发起组建区块链子网的交易,那么nodea~nodee均可以向subnet0发起上述组建区块链子网的交易。当然,不论是管理员或者普通用户,发起组建区块链子网的交易的区块链节点并不一定参与所组建的区块链子网,比如虽然最终由nodea、nodeb、nodec和noded组建区块链子网,但可由nodee向subnet0发起上述组建区块链子网的交易,而并不一定由nodea~noded来发起该组建区块链子网的交易。
37.在区块链主网的基础上组建区块链子网时,容易理解的是,会使得该区块链子网与区块链主网之间存在逻辑上的层次关系。比如在图1所示的subnet0上组建区块链子网subnet1时,可以认为subnet0处于第一层、subnet1处于第二层。一种情况下,本说明书中的区块链主网可以为底层区块链网络,即区块链主网并非在其他区块链网络的基础上组建的区块链子网,比如图1中的subnet0可以认为属于底层区块链网络类型的区块链主网。另一种情况下,本说明书中的区块链主网也可以为其他区块链网络的子网,比如可以在图1中subnet1的基础上进一步组建另一区块链子网,此时可以认为subnet1为该区块链子网对应的区块链主网,而这并不影响该subnet1同时属于subnet0上创建的区块链子网。可见,区块链主网与区块链子网实际上是相对概念,同一区块链网络在一些情况下可以为区块链主网、另一些情况下可以为区块链子网。
38.上述组建区块链子网的交易在被发送至区块链主网后,由区块链主网内的共识节点进行共识,并在通过共识后由各主网节点执行该交易,以完成区块链子网的组建。共识过
程取决于所采用的共识机制,譬如上文所述的任一共识机制,本说明书并不对此进行限制。
39.通过在上述组建区块链子网的交易中包含配置信息,该配置信息可以用于对所组建的区块链子网进行配置,使得组建的区块链子网符合组网需求。例如,通过在配置信息中包含节点成员的身份信息,可以指定组建的区块链子网包含哪些区块链节点。
40.节点成员的身份信息可以包括节点的公钥,或者采用节点id等其他能够表征节点身份的信息,本说明书并不对此进行限制。以公钥为例,每个区块链节点都存在对应的一组或多组公私钥对,由区块链节点持有私钥而公钥被公开且唯一对应于该私钥,因而可以通过公钥来表征相应区块链节点的身份。因此,对于希望作为区块链子网的节点成员的区块链节点,可以将这些区块链节点的公钥添加至上述组建区块链子网的交易中,以作为上述节点成员的身份信息。上述的公私钥对可以用于签名验证的过程。例如,在采用有签名的共识算法中,譬如subnet1上述的nodea1采用自身维护的私钥对消息进行签名后,将经过签名的消息在subnet1中广播,而nodeb1、nodec1和noded1可以用nodea1的公钥对收到的消息进行签名验证,以确认自身收到的消息确实来自nodea1且没有经过篡改。
41.第一主网节点可以为区块链主网上属于配置信息所指示的节点成员的区块链节点。在组建区块链子网时,并非由第一主网节点直接参与组建区块链子网、成为其节点成员,而是需要由用于部署该第一主网节点的节点设备生成第一子网节点,并由第一子网节点成为区块链子网中的节点成员。第一主网节点和第一子网节点对应于同一个区块链成员,比如在联盟链场景下对应于同一联盟链成员,但第一主网节点属于区块链主网、第一子网节点属于区块链子网,使得该区块链成员可以分别参与到区块链主网和区块链子网的交易中;并且,由于区块链主网和区块链子网属于相互独立的两个区块链网络,使得第一主网节点生成的区块与第一子网节点生成的区块分别存入所述节点设备上的不同存储(采用的存储譬如可以为数据库),实现了第一主网节点与第一子网节点分别使用的存储之间的相互隔离,因而区块链子网所产生的数据仅会在区块链子网的节点成员之间同步,使得仅参与了区块链主网的区块链成员无法获得区块链子网上产生的数据,实现了区块链主网与区块链子网之间的数据隔离,满足了部分区块链成员(即参与区块链子网的区块链成员)之间的交易需求。
42.可见,第一主网节点和第一子网节点是在逻辑上划分出来的区块链节点,而从物理设备的角度来说,相当于上述部署了第一主网节点和第一子网节点的节点设备同时参与了区块链主网和区块链子网。由于区块链主网与区块链子网之间相互独立,使得这两个区块链网络的身份体系也相互独立,因而即便第一主网节点和第一子网节点可以采用完全相同的公钥,仍然应当将两者视为不同的区块链节点。譬如在图1中,subnet0中的nodea相当于第一主网节点,而部署该nodea的节点设备生成了属于subnet1的nodea1,该nodea1相当于第一子网节点。可见,由于身份体系相互独立,所以即便第一子网节点所采用的公钥区别于第一主网节点,也不影响本说明书方案的实施。
43.当然,区块链子网的节点成员并不一定只是区块链主网的部分节点成员。在一些情况下,区块链子网的节点成员可以与区块链主网的节点成员完全一致,此时所有的区块链成员都可以获得区块链主网和区块链子网上的数据,但是区块链主网与区块链子网所产生的数据依然可以相互隔离,比如可以通过在区块链主网上实现一类业务、在区块链子网上实现另一类业务,从而可以使得这两类业务分别产生的业务数据之间相互隔离。
44.除了上述的节点成员的身份信息之外,配置信息还可以包括下述至少之一:所述区块链子网的网络标识、所述区块链子网的管理员的身份信息、针对区块链平台代码的属性配置等,本说明书并不对此进行限制。网络标识用于唯一表征该区块链子网,因而该区块链子网的网络标识应当区别于区块链主网和该区块链主网上组建的其他区块链子网。区块链子网的管理员的身份信息,譬如可以为作为管理员的节点成员的公钥;其中,区块链主网与区块链子网的管理员可以相同,也可以不同。
45.通过区块链主网来组建区块链子网的优势之一,就是由于生成第一子网节点的节点设备上已经部署了第一主网节点,因而可以将第一主网节点所使用的区块链平台代码复用在第一子网节点上,免去了区块链平台代码的重复部署,极大地提高了区块链子网的组建效率。那么,如果配置信息中未包含针对区块链平台代码的属性配置,第一子网节点可以复用第一主网节点上采用的属性配置;如果配置信息中包含了针对区块链平台代码的属性配置,第一子网节点可以采用该属性配置,使得第一子网节点所采用的属性配置不受限于第一主网节点的属性配置、与第一主网节点无关。针对区块链平台代码的属性配置可以包括下述至少之一:代码版本号、是否需要共识、共识算法类型、区块大小等,本说明书并不对此进行限制。
46.组建区块链子网的交易包括调用合约的交易。该交易中可以指明被调用的智能合约的地址、调用的方法和传入的参数。例如,调用的合约可以为前述的创世合约或系统合约,调用的方法可以为组建区块链子网的方法,传入的参数可以包括上述的配置信息。
47.在一实施例中,该交易可以包含如下信息:
48.from:administrator
49.to:subnet
50.method:addsubnet(string)
51.string:genesis
52.其中,from字段为该交易的发起方的信息,譬如administrator表明该发起方为管理员;to字段为被调用的智能合约的地址,譬如该智能合约可以为subnet合约,则to字段具体为该subnet合约的地址;method字段为调用的方法,譬如在subnet合约中用于组建区块链子网的方法可以为addsubnet(string),而string为addsubnet()方法中的参数,上述示例中通过genesis表征该参数的取值,该genesis具体为前述的配置信息。
53.以subnet0上的节点nodea~nodee执行调用subnet合约中addsubnet()方法的交易为例。在交易通过共识后,nodea~nodee分别执行addsubnet()方法并传入配置信息,得到相应的执行结果。
54.合约的执行结果可以包括所述配置信息,该执行结果可以处于前文所述的收据中,该收据中可以包含与执行addsubnet()方法相关的event,即组网事件。组网事件的topic可以包含预定义的组网事件标识,以区别于其他的事件。譬如在与执行addsubnet()方法相关的event中,topic的内容为关键词subnet,且该关键词区别于其他方法所产生event中的topic。那么,nodea~nodee通过监听生成的收据中各个event所含的topic,可以在监听到包含关键词subnet的topic的情况下,确定监听到与执行addsubnet()方法相关的event,即组网事件。例如,收据中的event如下:
55.event:
56.[topic:other][data]
[0057]
[topic:subnet][data]
[0058]
......
[0059]
那么,nodea~nodee在监听到第1条event时,由于所含topic的内容为other,确定该event与addsubnet()方法无关;以及,nodea~nodee在监听到第2条event时,由于所含topic的内容为subnet,确定该event与addsubnet()方法相关,并进而读取该event对应的data字段,该data字段包含上述的配置信息。以配置信息包括区块链子网的节点成员的公钥为例,data字段的内容例如可以包括:
[0060]
{subnet1;
[0061]
nodea的公钥,nodea的ip、nodea的端口号


[0062]
nodeb的公钥,nodeb的ip、nodeb的端口号


[0063]
nodec的公钥,nodec的ip、nodec的端口号


[0064]
noded的公钥,noded的ip、noded的端口号


[0065]
}
[0066]
其中,subnet1为希望创建的区块链子网的网络标识。区块链主网中的各个区块链节点可以记录该区块链主网上已创建的所有区块链子网的网络标识,或者与这些区块链子网相关的其他信息,这些信息譬如可以维护在上述的subnet合约中,具体可以对应于该subnet合约所含的一个或多个合约状态的取值。那么,nodea~nodee可以根据记录的已创建的所有区块链子网的网络标识,确定上述的subnet1是否已经存在;如果不存在,说明subnet1是当前需要创建的新区块链子网,如果存在则说明subnet1已经存在。
[0067]
除了采用希望创建的新的区块链子网的网络标识之外,还可以采用预定义的新建网络标识,该新建网络标识表明相应的组网事件用于组建新的区块链子网。例如,可以将上述的subnet1替换为newsubnet,该newsubnet为预定义的新建网络标识,nodea~nodee在识别到data字段包含newsubnet时,即可确定包含该newsubnet的event为组网事件,需要创建新的区块链子网。
[0068]
除了网络标识subnet1之外,上述data字段中还包含各个节点成员的身份信息等内容。部署第一主网节点的节点设备可以监听生成的收据,并在监听到所述组网事件且所述组网事件的内容表明第一主网节点属于所述节点成员的情况下,由部署第一主网节点的节点设备获取所述组网事件包含的配置信息或创世块。或者,第一区块链节点可以监听生成的收据,并在监听到所述组网事件且所述组网事件的内容表明第一区块链节点属于所述节点成员的情况下,触发部署第一区块链节点的节点设备获取所述组网事件包含的所述配置信息或所述创世块。
[0069]
如前所述,节点设备可以直接监听收据。假定nodea~nodee分别部署在节点设备1~5上,节点设备1~5可以监听nodea~nodee分别生成的收据,那么在监听到subnet1是需要新组建的区块链子网的情况下,节点设备1~5会进一步识别data字段中包含的节点成员的身份信息,以确定自身的处理方式。以nodea和节点设备1为例:如果节点设备1发现data字段包含nodea的公钥、ip地址和端口号等身份信息,那么节点设备1在基于上述的消息机制从data字段获得配置信息的情况下,生成包含该配置信息的创世块,且节点设备1会在本地部署nodea1,进而由nodea1加载生成的创世块,从而成为subnet1的子网节点;类似地,节
点设备2可以生成nodeb1、节点设备3可以生成nodec1、节点设备4可以生成noded1。以及,节点设备5会发现data字段包含的身份信息与自身均不匹配,则该节点设备5不会根据data字段中的配置信息生成创世块,也不会生成subnet1中的区块链节点。
[0070]
如前所述,区块链主网中的区块链节点可以监听收据,并根据监听结果触发节点设备执行相关处理。例如,nodea~nodee在确定subnet1是需要新组建的区块链子网的情况下,会进一步识别data字段中包含的节点成员的身份信息,以确定自身的处理方式。比如,nodea~noded会发现在data字段包含自身的公钥、ip地址和端口号等身份信息,假定nodea~noded分别部署在节点设备1~4上,以nodea和节点设备1为例:nodea会触发节点设备1,使得节点设备1基于上述的消息机制从data字段获得配置信息并生成包含该配置信息的创世块,且节点设备1会在本地部署nodea1,该nodea1加载生成的创世块,从而成为subnet1中的1个子网节点;类似地,nodeb会触发节点设备2生成nodeb1、nodec会触发节点设备3生成nodec1、noded会触发节点设备4生成noded1。以及,nodee会发现data字段包含的身份信息与自身均不匹配,假定nodee部署在节点设备5上,那么该节点设备5不会根据data字段中的配置信息生成创世块,也不会生成subnet1中的节点。
[0071]
如前所述,第一主网节点与第一子网节点并不一定采用相同的身份信息。因此,在上述实施例中,data字段中可以包含预先为nodea1~noded1生成的身份信息,且区别于nodea~noded的身份信息。仍以nodea和节点设备1为例:节点设备1如果在data字段中发现了nodea1的身份信息,可以生成创世块、部署nodea1,并由nodea1加载该创世块;或者,nodea如果在data字段中发现了nodea1的身份信息,那么nodea会触发节点设备1生成创世块、部署nodea1,并由nodea1加载该创世块。其他区块链节点或节点设备的处理方式类似,此处不再一一赘述。
[0072]
除了配置信息之外,合约的执行结果可以包括创世块。换言之,除了可以在data字段中包含配置信息,还可以直接在执行合约调用的过程中生成包含配置信息的创世块,从而将创世块包含于data字段中,那么对于上述的nodea~noded而言,相应的节点设备1~4可以通过消息机制直接从data字段获得创世块,而无需自行生成,可以提升对nodea1~noded1的部署效率。
[0073]
在本说明书中,组建区块链子网的交易可以并非是调用智能合约的交易,使得不支持智能合约的区块链网络也可以实现本说明书的技术方案,从而在区块链主网的基础上快捷地创建出区块链子网。例如,可以预先定义一组网交易类型标识,当交易包含该组网交易类型标识时,就表明该交易用于组建新的区块链子网,即该交易为组建区块链子网的交易。区块链平台代码可以包含相关的用于组件区块链子网的处理逻辑,使得运行该区块链平台代码的第一主网节点在执行交易时,如果发现该交易中包含上述的组网交易类型标识,且第一主网节点属于该交易中的配置信息所指示的节点成员,可以基于上述处理逻辑来触发部署第一主网节点的节点设备生成包含该配置信息的创世块并启动第一子网节点,由第一子网节点加载该创世块,以形成为区块链子网中的区块链节点。
[0074]
节点设备通过在该进程中创建一个运行区块链平台代码的实例,实现在该节点设备上部署一区块链节点。对于第一主网节点而言,由节点设备在上述进程中创建第一实例,并由该第一实例运行区块链平台代码而形成。类似地,对于第一子网节点而言,由节点设备在上述进程中创建区别于第一实例的第二实例,并由该第二实例运行区块链平台代码而形
成。例如,节点设备可以首先在进程中创建第一实例,以形成区块链主网中的第一区块链节点;而当该节点设备对应的节点成员希望参与组建区块链子网时,可以在上述进程中创建第二实例,该第二实例区别于上述的第一实例,并由该第二实例形成区块链子网中的第二区块链节点。当第一实例与第二实例位于同一进程时,由于不涉及跨进程交互,可以降低对第一子网节点的部署难度、提高部署效率;当然,第二实例也可能与第一实例分别处于节点设备上的不同进程中,本说明书并不对此进行限制;例如,节点设备可以在第一进程中创建第一实例,以形成区块链主网中的第一区块链节点;而当该节点设备对应的节点成员希望参与组建区块链子网时,可以启动区别于第一进程的第二进程,并在该第二进程中创建第二实例,该第二实例区别于上述的第一实例,进而由该第二实例形成区块链子网中的第二区块链节点。事实上,本说明书实施例中涉及的任一节点设备上部署的各区块链节点均为运行在所述任一节点设备上的不同的区块链实例,任一节点设备上部署的各区块链节点生成的区块分别存入所述任一节点设备上的不同存储(例如数据库),且任一节点设备部署的各区块链节点分别使用的存储之间相互隔离。
[0075]
通过上述方式,可以在区块链主网上创建出区块链子网。以图1为例,subnet0原本包含nodea~nodee,而在subnet0的基础上可以组建出subnet1,该subnet1包含nodea1~noded1,且nodea与nodea1、nodeb与nodeb1、nodec与nodec1、noded与noded1分别部署在同一节点设备上。类似地,还可以在subnet0上组建出subnet2或更多的区块链子网,其中subnet2包含nodea2、nodeb2、nodec2和nodee2,且nodea与nodea1、nodea2,nodeb与nodeb1、nodeb2,nodec与nodec1,noded与noded1,nodee与nodee2分别部署在同一节点设备上。以及,可以将subnet1、subnet2等作为新的区块链主网,并在此基础上进一步组建出区块链子网,其过程与subnet1或subnet2的组建相似,此处不再赘述。
[0076]
如前所述,通过上述方式在区块链主网上组建的不同区块链子网之间彼此独立,相互隔离,例如在subnet1上共识的交易就仅会最终被nodea1~noded1所接收,而不会被subnet2中的nodea2、nodeb2、nodec2和nodee2所接收。因此,不同区块链子网在逻辑上就属于不同的区块链网络。在相关技术中,不同区块链网络之间实现可信的跨链交互需要通过跨链协议来完成,例如侧链技术、见证人机制或中继技术等,但传统的跨链技术所采用的跨链协议通常在具体实现时流程繁琐且耗时较长,并且,传统的跨链协议并没有考虑到区块链子网之间的跨链场景与传统跨链场景的差异,忽略了区块链主网能够作为不同区块链子网间进行数据验证的信任基础,这使得不同区块链子网之间需要通过传统的跨链协议才能够实现彼此区块链数据的可信验证。
[0077]
为此,本说明书提出了一种验证区块链数据的方法,应用于包含区块链子网和区块链主网的区块链系统,其中,所述区块链子网中的子网节点所处的节点设备上部署有所述区块链主网中的主网节点,所述区块链子网至少包括第一区块链子网和第二区块链子网,所述区块链主网中的主网节点维护有第二区块链子网对应的数据验证条件,可使在第一区块链子网在需要对来源于第二区块链子网的区块链数据进行存在性验证的情况下,能通过区块链主网与各区块链子网在节点设备层面的网络架构上的关联性,利用区块链主网作为不同区块链子网之间的信任媒介以实现更为简单的数据验证协议。
[0078]
图2是一示例性实施例提供的一种验证区块链数据的方法的流程图。该方法应用于包含区块链子网和区块链主网的区块链系统,其中,所述区块链子网中的子网节点所处
的节点设备上部署有所述区块链主网中的主网节点,所述区块链子网至少包括第一区块链子网和第二区块链子网,所述区块链主网中的主网节点维护有第二区块链子网对应的数据验证条件,所述方法包括:
[0079]
步骤202,第一区块链子网向区块链主网发起数据验证交易,所述数据验证交易用于对第二区块链子网上是否存在目标数据进行验证。
[0080]
本说明书实施例中所涉及的第一区块链子网作为数据验证服务的需求方,其具有对目标数据进行验证的需求。例如,第一区块链子网已经获取了目标数据,但并不清楚该目标数据是否真的来源于第二区块链子网,或者,第一区块链子网虽然没有获取目标数据,但仍然希望验证某数据描述信息所对应的目标数据是否如实地作为第二区块链子网的区块链数据存在于第二区块链子网之中,那么第一区块链子网都可以通过向区块链主网发起数据验证交易以用于验证第二区块链子网上是否存在目标数据。
[0081]
在本说明书实施例中,涉及到包含区块链子网和区块链主网的区块链系统,例如图1所示的由subnet0、subnet1和subnet2所构成的区块链系统,其中,subnet0为区块链主网,而subnet1和subnet2为区块链子网。假设subnet1为第一区块链子网而subnet2为第二区块链子网,subnet1中的子网节点nodea1、nodeb1、nodec1和noded1所处的节点设备1、2、3和4上分别部署有subnet0中的nodea、nodeb、nodec和noded,以及,subnet2中的子网节点nodea2、nodeb2、nodec2和nodee2所处的节点设备1、2、3和5分别部署有subnet0中nodea、nodeb、nodec和nodee。因此,部署有子网节点的节点设备上必然部署有主网节点。所述区块链主网中的主网节点维护有第二区块链子网对应的数据验证条件,例如subnet0中的各个主网节点nodea~nodee就分别维护有对应于subnet2的数据验证条件,当然,各个主网节点nodea~nodee也分别维护有对应于subnet1的数据验证条件。
[0082]
在本说明书实施例中,可以通过向区块链主网发出交易的方式来对维护在区块链主网的数据验证条件进行创建或更改。例如,可以向区块链主网发起用于创建新区块链子网的子网创建交易,所述区块链主网响应于用于创建新区块链子网的子网创建交易,以使所述区块链主网中的主网节点在执行所述子网创建交易后获取并维护所述新区块链子网对应的数据验证条件,所述子网创建交易中包含所述新区块链子网对应的数据验证条件。在本说明书实施例中,上述创建新区块链子网的子网创建交易即前述用于组建区块链子网的交易,由于区块链主网需要维护有各个区块链子网的数据验证条件,因此可以通过在子网创建交易中携带新区块链子网的数据验证条件,以使区块链主网在新区块链子网创建的第一时间就能够维护有新区块链子网对应的数据验证条件,例如该数据验证条件就存储在前述的subnet合约(系统合约)中对应于新区块链子网的合约状态中。
[0083]
又例如,还可以向区块链主网发起用于更新所述第二区块链子网对应的数据验证条件的条件更改交易,通过向所述区块链主网响应于用于更新所述第二区块链子网对应的数据验证条件的条件更改交易,以使所述区块链主网中的主网节点在执行所述条件更改交易后,将自身维护的所述数据验证条件更新为新数据验证条件,所述条件更改交易中包含第二区块链子网对应的所述新数据验证条件。在本说明书实施例中,当第二区块链子网由于节点总数、共识算法等因素发生变化时,需要即时对该区块链子网对应的数据验证条件进行相应的调整才能确保区块链数据验证的可信度,因此可以通过向区块链主网发起用于更新所述第二区块链子网对应的数据验证条件的条件更改交易,从而对区块链主网中维护
的第二区块链子网对应的数据验证条件进行及时地调整,当数据验证条件被维护在区块链主网部署的智能合约中时,该条件更改交易将会更新该智能合约中用于记录第二区块链子网对应数据验证条件的合约状态,并最终更新区块链主网的世界状态。当然,也可以向区块链主网发起用于更新其他区块链子网对应的数据验证条件的条件更改交易,本说明书对此并不做任何限制。
[0084]
在本说明书实施例中,可以通过第一区块链子网中的任一子网节点向自身所处的节点设备发起数据验证交易,以将该数据验证交易转发至区块链主网。由于子网节点所处的节点设备上部署有主网节点,因此该节点设备可以通过识别由第一区块链子网中的子网节点所发起的数据验证交易中的网络标识字段(例如为区块链主网的网络标识subnet0),从而获知该交易需要路由至区块链主网而非第一区块链子网或其他区块链网络,此时节点设备中的交易路由模块(譬如共识模块)将会把该数据验证交易传入本地的主网节点,同时,交易路由模块还可以将该交易通过区块链主网中预先建立的共识链路广播至区块链主网中的其他主网节点,以实现第一区块链子网向区块链主网发起数据验证交易。在本说明书实施例中,由于同一节点设备上会同时部署有区块链主网中的主网节点和区块链子网中的子网节点,而同一节点设备上部署的多个区块链节点又彼此共用同一个共识模块,这使得从第一区块链子网向区块链主网发出交易成为可能。
[0085]
在本说明书实施例中,所述目标数据包括下述之一:交易数据、状态数据、收据数据。其中,交易数据、状态数据和收据数据在逻辑上都组织成相应的树状结构,以便于后续的数据验证。交易数据所形成的树状结构可以称为交易树,状态数据所形成的树状结构可以称为状态树,收据数据所形成的树状结构可以称为收据树。
[0086]
步骤204,所述区块链主网中的任一主网节点执行所述数据验证交易,以在所述任一主网节点所处节点设备上部署有第二区块链子网中的任一子网节点的情况下生成候选验证结果,并将所述候选验证结果广播至所述区块链主网中的其他主网节点,其中,所述候选验证结果用于表明所述任一子网节点上是否存在所述目标数据。
[0087]
第一区块链子网在区块链主网中发起数据验证交易后,区块链主网中的各主网节点会接收并执行该数据验证交易,例如,在所述数据验证交易包括调用所述区块链主网上部署的数据验证智能合约的交易的情况下,各主网节点在执行所述数据验证交易时,会分别调用本地维护的数据验证智能合约以执行如步骤204的合约逻辑。
[0088]
本说明书所涉及的数据验证交易包括目标数据的数据描述信息以及第二区块链子网的网络标识。其中,所述网络标识用于指示所述任一主网节点:将自身所处节点设备上部署的对应于所述网络标识的子网节点确定为所述任一子网节点;所述数据描述信息用于指示所述任一主网节点:将所述任一子网节点上匹配于所述数据描述信息的数据确定为所述目标数据。其中,所述数据描述信息可以包括交易哈希、账户id、合约地址、参数名称等等。在本实施例中,任一主网节点在执行数据验证交易时,首先会根据数据验证交易中携带的第二区块链子网的网络标识,确定该数据验证交易用于针对第二区块链子网的数据进行验证,从而所述任一主网节点会检查自身所处的节点设备上是否部署有第二区块链子网中的任一子网节点,并在确定部署有所述任一子网节点的情况下生成候选验证结果,以及,将生成的候选验证结果通过共识模块广播至区块链主网中的其他主网节点。具体而言,在确定部署有所述任一子网节点的情况下,任一主网节点会进一步根据数据验证交易中携带的
目标数据的数据描述信息,在所述任一子网节点对应的本地数据库中匹配是否存在该数据描述信息所对应的目标数据,如果成功匹配到该目标数据,则证明所述数据描述信息对应的目标数据的确存在于自身所处节点设备部署的第二区块链子网对应的子网节点中,此时生成的候选验证结果中将包含用于表明所述任一子网节点上存在该目标数据的指示信息;同理,如果任一主网节点并未匹配到该目标数据,则证明所述数据描述信息对应的目标数据不存在于所述任一子网节点,此时生成的候选验证结果中将包含用于表明所述任一子网节点上不存在该目标数据的指示信息。上述任一主网节点之所以能够访问到任一子网节点对应的本地数据库,其根本原因在于本说明书实施例中,同一节点设备上同时部署有区块链主网中的主网节点和区块链子网中的子网节点的,因此,区块链主网与第二区块链子网虽然在逻辑上属于不同的区块链网络,但分别对应的主网节点和子网节点却部署在同一节点设备上,这使得在节点设备层面完全可以实现越权管理,即主网节点在满足某种条件下(例如在调用数据验证智能合约的过程中)能够有权访问自身所处节点设备中其他子网节点对应的数据库,从而创设了一种基于节点设备的跨链交互渠道。
[0089]
在一实施例中,任一主网节点在确定自身所处节点设备上部署有所述任一子网节点、且所述任一子网节点维护有所述目标数据的情况下生成候选验证结果,并将该候选验证结果广播至区块链主网中的其他主网节点,而在确定自身所处节点设备上未部署有所述任一子网节点、或者虽然部署有所述任一子网节点但所述任一子网节点未维护有所述目标数据的情况下不生成候选验证结果。在本说明书实施例中,候选验证结果的存在即可用于表明所述任一子网节点上存在所述目标数据。
[0090]
在本说明书实施例中,所述任一主网节点在确定自身所处节点设备上未部署有第二区块链子网中的任一子网节点的情况下,不生成所述候选验证结果,或者生成包含预设无效数据的候选验证结果并广播至所述区块链主网中的其他主网节点。在本说明书实施例中,对于自身所处节点设备未部署有第二区块链子网中任一子网节点的主网节点,其显然无法对目标数据是否存在于第二区块链子网做出有效的判断,因此这样的主网节点无需生成候选验证结果,而是通过收集其他主网节点广播的候选验证结果作为判断依据,当然,这样的主网节点也可以生成包含无效数据的候选验证结果并广播,例如生成并广播的候选验证结果中包含“unknown”,以用于表明该候选验证结果对应的主网节点无法对目标数据是否存在于第二区块链子网进行有效判断,因此也没有参考价值,于是其他主网节点在接收到包含“unknown”的候选验证结果时,将其舍去不计入接收到的所有候选验证结果,因此可以防止那些无法做出有效判断的主网节点对最终目标验证结果的选取形成干扰,同时可以用于确定各主网节点确实接收到验证交易并且做出了响应,以排除存在主网节点未正常响应的情况。或者说,如果没有收到各主网节点返回的候选验证结果(即便包含unknown),则表明可能存在网络问题或宕机的情况。
[0091]
上述任一主网节点可以通过多种方式检查自身所处的节点设备上是否部署有第二区块链子网中的任一子网节点。在一实施例中,数据验证智能合约可以维护有区块链主网所管理的各区块链子网的成员身份信息(例如节点公钥),比如可以维护在该数据验证智能合约所对应的合约账户中,以作为该合约账户下的合约状态。因此,上述的任一主网节点可以通过读取数据验证智能合约所对应的合约账户,以获取第二区块链子网中各节点成员的节点公钥集合,从而将所述任一主网节点维护的节点公钥进行比对,如果所述任一主网
节点的节点公钥包含于第二区块链子网对应的节点公钥集合,则说明所述任一主网节点属于第二区块链子网的节点成员,即所述任一主网节点所处节点设备上部署有第二区块链子网中的任一子网节点;如果所述任一主网节点的节点公钥未包含于第二区块链子网对应的节点公钥集合,则说明所述任一主网节点不属于第二区块链子网的节点成员,即所述任一主网节点所处节点设备上未部署有第二区块链子网中的任一子网节点。在另一实施例中,区块链主网所管理的各区块链子网的成员身份信息并非由数据验证智能合约所维护,而是作为合约状态被维护于区块链主网上部署的子网管理智能合约所对应的合约账户中。因此,在执行数据验证交易的过程中,数据验证智能合约响应于任一主网节点的调用,可以从子网管理智能合约的合约账户中读取第二区块链子网中各节点成员的身份信息,以用于判断该任一主网节点所处的节点设备上是否部署有上述的任一子网节点。在又一实施例中,任一主网节点预先已经判断过自身所处的节点设备上是否部署有任一子网节点,并将判断结果维护在该任一主网节点中,因此,当任一主网节点需要检查自身所处的节点设备上是否部署有第二区块链子网中的任一子网节点时,只需要读取自身预先维护的判断结果即可判断自身所处的节点设备上是否部署有任一子网节点。
[0092]
步骤206,所述任一主网节点从获取到的所有候选验证结果中确定一个满足所述数据验证条件的目标验证结果,以由第一区块链子网根据所述目标验证结果确定所述目标数据是否存在于第二区块链子网。
[0093]
如前所述,区块链主网中的各主网节点均需要执行数据验证交易,并在自身所处节点设备中部署有第二区块链网络中的子网节点的情况下广播候选验证结果,因此同一个主网节点可能接收到来自其他主网节点广播的多个候选验证结果。其中,对于自身所处节点设备部署有第二区块链网络中子网节点的主网节点,除了会接收到其他主网节点的候选验证结果,其自身生成的候选验证结果也算作在其所获取的所有候选验证结果之中。而对于所处节点设备未部署有第二区块链网络中子网节点的主网节点,由于其自身未生成对应的候选验证结果,因此其所获取的所有候选验证结果均为从其他主网节点所接收到的候选验证结果。
[0094]
在本说明书实施例中,区块链主网中的各主网节点在完成候选验证结果广播阶段后,理论上将收到相同数量和相同内容的候选验证结果(即所述所有候选验证结果)以构成一个候选集合。为了使得每个主网节点均能从自己获得的候选集合中选取内容相同的候选验证结果,需要遵循统一的选取规则,也即前述的被维护在区块链主网中各主网节点的数据验证条件。因此,各主网节点均按照针对第二区块链子网的数据验证条件,分别从各自的候选集合中选取出内容相同的候选验证结果,以作为上述的目标验证结果。
[0095]
为了保证选取出内容相同的目标验证结果,数据验证条件可以包括下述至少之一:所述所有候选验证结果中内容相同的候选验证结果超过第一预设数量,将所述所有候选验证结果中内容相同且超过第一预设数量的候选验证结果作为目标验证结果。所述所有候选验证结果中内容相同的候选验证结果来源于预设主网节点,将所述所有候选验证结果中内容相同且来源于预设主网节点的候选验证结果作为目标验证结果。所述所有候选验证结果中内容相同且来源于第二区块链子网中子网节点的候选验证结果超过第二预设数量,将所有候选验证结果中内容相同、来源于第二区块链子网中的子网节点且超过第二预设数量的候选验证结果作为目标验证结果。
[0096]
需要指出的是,当数据验证条件包括上述至少两条时,为了防止存在多个内容不同的候选验证结果均满足数据验证条件从而导致各主网节点选取的目标验证结果不一致,需要保证最终选取得到的目标验证结果能够同时满足所有数据验证条件。以及,虽然本说明书在仅罗列了上述三条数据验证条件,但实际上可以任意扩展数据验证条件以满足用户的实际需求或者具体的验证场景,例如,在候选验证结果广播阶段,如果任一主网节点在确定自身所处节点设备上部署有所述任一子网节点的情况下生成候选验证结果,并将该候选验证结果广播至区块链主网中的其他主网节点,而在确定自身所处节点设备上未部署有所述任一子网节点的情况下不生成候选验证结果,由于这种情况下只要生成有候选验证结果即可说明所述任一子网节点上存在所述目标数据,因此可以认为所有候选验证结果的内容一定是相同的,此时完全可以将候选验证条件设置为下述至少之一:所述所有候选验证结果中的候选验证结果超过第一预设数量;所述所有候选验证结果中的候选验证结果来源于预设主网节点;所述所有候选验证结果中来源于第二区块链子网中子网节点的候选验证结果超过第二预设数量。又或者,加入时间限制条件,例如,将候选验证条件设置为:在预设时间段内确定的所有候选验证结果中的候选验证结果超过第一预设数量等,本说明书对此并不作任何限制。
[0097]
在本说明书实施例中,为了保证任一主网节点在基于数据验证条件确定目标验证结果的可信度,需要确保任一主网节点从其他主网节点处接收到候选验证结果的确来源于区块链主网中的主网节点,因此有必要引入身份验核机制以确保接收的候选验证结果的合法性(来自区块链主网中的主网节点)。在一实施例中,可以通过电子签名/验签的方式来实现身份核验机制。以图1为例,假设subnet0为区块链主网,subnet1为第一区块链子网而subnet2为第二区块链子网,根据前述的候选验证结果生成和广播的逻辑,在候选验证结果广播阶段完成后,作为主网节点的nodea其自身会生成一个候选验证结果result_a,并且还会分别接收到来自nodeb、nodec和nodee(这些主网节点所处节点设备上部署有第二区块链子网中的子网节点)广播的result_b、result_c和result_e。显然对于nodea而言,其只能确保自身生成的result_a是合法的,但对于从其他主网节点接收到的其他候选验证结果则无法确认其合法性。基于此,可以在候选验证结果广播阶段,要求所述任一主网节点将所述候选验证结果进行签名后再广播至所述区块链主网中除所述任一主网节点以外的主网节点,从而可以保证任一主网节点接收到的来自其他主网节点的任一候选验证结果均包含有一个对应的电子签名,例如nodea在接收到result_b、result_c和result_e的同时,还会分别接收到对应于result_b、result_c和result_e的电子签名sign_b、sign_c和sign_e,其中,sign_b、sign_c和sign_e分别是nodeb、nodec和nodee通过各自的节点私钥对result_b、result_c和result_e进行签名得到的。因此,nodea可以根据本地维护的nodeb、nodec和nodee的节点公钥分别对sign_b、sign_c和sign_e进行验签,如果电子签名验签成功,则证明该电子签名对应的候选验证结果的确来源于其所声明的主网节点,具有合法性。这样一来,任一主网节点就可以通过上述身份核验机制首先对接收到的来自其他主网节点的候选验证结果进行验签,并将验签成功的候选验证结果作为所述所有候选验证结果,以使所述所有候选验证结果包括:自身生成的候选验证结果以及从其他的主网节点接收到且验签成功的候选验证结果,从而确保用于选取目标验证结果的候选集合中所有候选验证结果的合法性,以最终保证选取目标验证结果的可信度。
[0098]
在本说明书实施例中,除了通过身份验核机制保证候选集合中的所有候选验证结果均来源于主网节点之外,还可以通过一些手段来防止恶意或故障主网节点重复广播多条相同或不同的候选验证结果。由于重复发送的候选验证结果在基于上述的签名及验签技术下依然满足合法性,而不会被身份验核机制所筛除,但显然会破坏候选集合中所有候选验证结果的构成,并可能最终使得确定的目标验证结果不可信。因此,有必要建立一种去重机制,以防止重放故障导致的失信问题。例如,在nodea完成上述身份核验机制并确定合法的候选集合后,还需要进一步对候选集合中来自同一主网节点的候选验证结果进行统计(利用同一节点公钥验签成功的次数),如发现候选集合中包含来源于同一主网节点的至少两个候选验证结果,则证明该主网节点发来重放故障,此时可以直接将来自该主网节点的候选验证结果从候选集合中予以剔除,或者所述至少两个候选验证结果中选取其中一个作为唯一有效的候选验证结果保留在候选集合中,其他的予以剔除。这样一来,通过上述身份核验机制以及去重机制所最终确定得到的候选集合中的所有候选验证结果将同时具有合法性和来源独占性(指对于某一候选验证结果,候选集合中除了该候选验证结果以外的其他候选验证结果均不来源于该候选验证结果来源的主网节点),从而避免因恶意或故障主网节点多次广播候选验证结果而导致最终确定的目标验证结果不可信的问题。
[0099]
在一实施例中,所述候选验证结果包括候选收据;所述方法还包括:所述任一主网节点将所述目标验证结果设置为所述数据验证交易对应的交易收据。在本说明书实施例中,前述的候选验证结果即为候选收据,前述所选取的目标验证结果即为所述数据验证交易对应的交易收据。正如前述组建区块链子网的交易在执行后生成的收据可以通过消息机制实现消息传递,所述数据验证交易对应的交易收据也可以通过事件监听机制被处于同一节点设备的第一区块链子网中的子网节点所获取。因此,第一区块链子网可以通过以下途径获得所述交易收据:第一区块链子网中的子网节点监听自身所处节点设备上部署的主网节点生成的所述交易收据。由于每个主网节点在执行数据验证交易后均会选取内容相同的交易收据,并且第一区块链子网中的各子网节点自身所处的节点设备也均部署有主网节点,因此对于第一区块链子网中的每个子网节点,均可以通过监听自身所处节点设备上的主网节点以获取所述交易收据,从而使得第一区块链子网获取该交易收据。
[0100]
在本说明书实施例中,区块链主网中的主网节点在执行数据验证交易的过程中,主要分为以下两个阶段:第一阶段发生于各主网节点在刚接收到数据验证交易时,各主网节点分别决定是否生成候选验证结果以及对候选验证结果进行广播,这个阶段被称为投票阶段;第二阶段发生于各主网节点在接收到来自其他主网节点的候选验证结果后,基于维护的第二区块链网络对应的数据验证条件,从自身获取的所有候选验证结果中确定出一个满足数据验证条件的候选验证结果作为目标验证结果,并将其透出传递至第一区块链子网,这一过程被称为共识阶段。在一实施例中,所述数据验证交易包括调用所述区块链主网上部署的数据验证智能合约的交易;所述任一主网节点执行所述数据验证交易,包括:调用所述数据验证智能合约,以生成所述候选验证结果并确定出所述目标验证结果。因此,任一主网节点上部署的数据验证智能合约响应于数据验证交易所执行的合约逻辑,既包含判断自身所处节点设备是否部署有第二区块链网络中的任一子网节点、从所述任一子网节点对应的本地数据库中越权检查是否存在目标数据、生成并广播候选验证结果的逻辑,同时,该合约逻辑中也包括从获取的所有候选验证结果中确定得到一个满足数据验证条件的目标
验证结果,即本说明书实施例中数据验证智能合约所涉及的合约逻辑同时包含投票阶段和共识阶段的必要流程。或者,在另一实施例中,所述数据验证交易包括调用所述区块链主网上部署的数据验证智能合约的交易;所述任一主网节点执行所述数据验证交易,包括:调用所述数据验证智能合约,以生成所述候选验证结果;所述任一主网节点从获取到的所有候选验证结果中确定一个满足所述数据验证条件的目标验证结果,包括:通过所述任一主网节点上部署的共识模块,确定出所述目标验证结果。在本实施例中,数据验证智能合约响应于数据验证交易所执行的合约逻辑仅包含判断自身所处节点设备是否部署有第二区块链网络中的任一子网节点、从所述任一子网节点对应的本地数据库中越权检查是否存在目标数据、生成并广播候选验证结果的逻辑,即投票阶段的必要流程,而在这之后,任一主网节点所进行的共识阶段的必要流程则是通过所述任一主网节点自身所处节点设备的共识模块所完成的,因此,该共识模块必然需要维护有第二区块链子网对应的数据验证条件,而在本说明书实施例中,所述数据验证条件由所述数据验证智能合约所维护;和/或,所述数据验证条件由其他智能合约所维护。因此,共识模块需要通过访问主网节点对应的本地数据库,以从数据验证智能合约或其他智能合约中读取第二区块链子网对应的数据验证条件,需要指出的是,上述其他智能合约包括前述的subnet合约,该合约中不仅记录有第二区块链子网对应的数据验证条件,还记录有区块链主网管理下的其他所有区块链子网对应的数据验证条件。
[0101]
在本说明书实施例中,第一区块链子网可以通过检查目标验证结果中包含的内容来验证第二区块链子网上是否存在目标数据。在一实施例中,所述任一主网节点在确定所述任一子网节点上存在所述目标数据的情况下,生成包含所述目标数据的所述候选验证结果;所述任一主网节点在确定所述任一主网节点所处节点设备上部署的第二区块链子网中的子网节点不存在所述目标数据的情况下,生成未包含所述目标数据的所述候选验证结果;同时,第一区块链子网中的子网节点在所述目标验证结果中包含所述目标数据的情况下,确定所述目标数据存在于第二区块链子网;第一区块链子网中的子网节点在所述目标收据中未包含所述目标数据的情况下,确定所述目标数据未存在于第二区块链子网。以下通过一个例子来对本说明书实施例进行详细说明,以图1为例,假设subnet0为区块链主网,subnet1为第一区块链子网而subnet2为第二区块链子网,subnet1中的nodea1持有一个交易哈希,并且希望验证该交易哈希所对应的交易数据(本实施例中目标数据即为该交易数据)是否被维护在subnet2中,于是nodea1向其所处的节点设备1中的共识模块发出数据验证交易,并在数据验证交易中携带subnet0的网络标识以指示该交易发往的目的区块链网络,同时携带subnet2的网络标识以指示用于验证目标数据的目标区块链网络,以及携带作为数据描述信息的交易哈希以指示所需验证的目标数据。节点设备1中的共识模块根据该数据验证交易中subnet0的网络标识确定该交易是发往subnet2的,于是根据subnet0中的共识链路将该数据验证交易广播至subnet0中的各个主网节点,包括位于节点设备1本地的nodea,以及位于节点设备2

5的nodeb

nodee。任一主网节点在接收到该数据验证交易后,基于数据验证交易中携带的subent2的网络标识,首先判断自身所处的节点设备1是否部署有属于subnet2的子网节点。例如,对于自身所处节点设备部署有属于subnet2中子网节点nodea2的主网节点nodea,其会进一步在nodea2对应的数据库中获取subnet2的区块链账本,并根据数据验证交易中携带的交易哈希在该区块链账本中查询该交易哈希对应的交易
是否存在,假如存在则nodea将取出该交易并将其写入生成的候选验证结果result_a,以及将result_a广播至其他的主网节点;对于nodeb而言,假设nodeb所处节点设备2上部署的nodeb2对应的数据库中不存在该交易哈希对应的交易,那么nodeb所生成的候选验证结果result_b将携带空数据或无效数据,并将result_b广播至其他的主网节点;而对于noded而言,由于noded所处的节点设备4并未部署有属于subnet2中的子网节点,noded可以不生成候选验证结果,其他主网节点的操作类似,这里不再赘述,由此,当所有主网节点完成候选验证结果的生成和广播后,投票阶段结束并进入共识阶段。
[0102]
投票阶段结束后,任一主网节点均会获得相同的候选验证结果从而构成相同的候选集合,例如,nodea会分别接收到来自nodeb、nodec和nodee的候选验证结果result_b、result_c和result_e,加上自身生成的result_a构成一个包含result_a、result_b、result_c和result_e的候选集合,同理,其他的主网节点例如nodeb~nodee也将分别获得包含result_a、result_b、result_c和result_e的相同的候选集合。然后,任一主网节点会根据自身维护的第二区块链子网对应的数据验证条件从候选集合中确定目标验证结果,假设数据验证条件为“所有候选验证结果中内容相同的候选验证结果的数量超过2”,因此任一主网节点需要对候选集合中的所有候选验证结果的内容进行比对排查,假设result_a、result_c和result_e的内容均为某一相同的交易数据,而result_b中包含有空数据,那么根据上述数据验证条件,显然result_a、result_c和result_e的内容相同且数量超过了2,因此可以将其中任意一个候选验证结果确定为目标验证结果。nodea~nodee均会执行上述共识阶段的操作,确定出相同内容的目标验证结果,虽然具体的确定结果中可能会出现nodea~c确定result_a为目标验证结果、noded~e确定result_c为目标验证结果等类似的情况,但由于result_a、result_c和result_e的内容相同,只是来源不同(来源信息未体现在候选验证结果中),因此并不会影响各个主网节点最终将确定得到内容相同的目标验证结果这一根本目标。然后,任一主网节点均会透出确定得到的目标验证结果,例如nodea会将包含交易数据的目标验证结果在节点设备1上透出,以使同样部署在节点设备1上的属于subnet1的子网节点nodea1获取该目标验证结果,以及,nodea1在检查目标验证结果中包含交易哈希对应的交易数据的情况下,确定自身持有的交易哈希对应的交易的确存在于subnet2中,从而最终满足nodea1作为数据验证服务的需求方对相应数据的验证需求,同时nodea1还获取到了其所持有的交易哈希所对应的交易数据。同理,其他的主网节点也会进行类似的操作以在各自所处的节点设备上透出目标验证结果,从而使得subnet1中的各个子网节点均能够获取目标验证结果并根据该目标验证结果中包含交易数据的情况,确定所述交易数据的确存在于subnet2。
[0103]
在另一实施例中,第一区块链子网发出的所述数据验证交易包括所述目标数据;所述任一主网节点将所述任一子网节点上的数据与所述目标数据进行比对,并生成包含比对结果的所述候选验证结果;同时,第一区块链子网中的子网节点在确定所述目标验证结果中包含的所述比对结果为比对一致的情况下,确定所述目标数据存在于第二区块链子网;第一区块链子网中的子网节点在确定所述目标验证结果中包含的所述比对结果为比对不一致的情况下,确定所述目标数据未存在于第二区块链子网。仍以图1为例,假设subnet0为区块链主网,subnet1为第一区块链子网而subnet2为第二区块链子网,subnet1中的nodea1持有一个合约状态、该合约状态对应的数据标识以及该合约状态所在合约的合约地
址,并且希望验证其持有的合约状态(本实施例中目标数据即为该合约状态)是否被维护在subnet2中,于是nodea1向其所处的节点设备1中的共识模块发出数据验证交易,并在数据验证交易中携带subnet0的网络标识以指示该交易发往的目的区块链网络,同时携带subnet2的网络标识以指示用于验证目标数据的目标区块链网络,以及携带作为数据描述信息的合约地址和数据标识以指示所需验证的目标数据。节点设备1中的共识模块根据该数据验证交易中subnet0的网络标识确定该交易是发往subnet2的,于是根据subnet0中的共识链路将该数据验证交易广播至subnet0中的各个主网节点,包括位于节点设备1本地的nodea,以及位于节点设备2

5的nodeb

nodee。任一主网节点在接收到该数据验证交易后,基于数据验证交易中携带的subent2的网络标识,首先判断自身所处的节点设备1是否部署有属于subnet2的子网节点。例如,对于自身所处节点设备部署有属于subnet2中子网节点nodea2的主网节点nodea,其会进一步在nodea2对应的数据库中获取数据验证交易中携带的合约地址对应的合约存储空间,并根据数据验证交易中携带的数据标识在该合约存储空间中查询该数据标识对应的合约状态是否存在,并在该合约状态存在的情况下将其取出与数据验证交易中携带的合约状态进行比对,假设比对结果为比对一致,则nodea将比对一致的比对结果写入生成的候选验证结果result_a,以及将result_a广播至其他的主网节点;对于nodeb而言,假设nodeb所处节点设备2上部署的nodeb2对应的数据库中能够搜索取得数据标识对应的合约状态,但从数据库中取出的合约状态与数据验证交易中携带的合约状态比对不一致,那么nodeb所生成的候选验证结果result_b将被写入比对不一致的比对结果,并将result_b广播至其他的主网节点;而对于noded而言,由于noded所处的节点设备4并未部署有属于subnet2中的子网节点,noded可以不生成候选验证结果,其他主网节点的操作类似,这里不再赘述,由此,当所有主网节点完成候选验证结果的生成和广播后,投票阶段结束并进入共识阶段。
[0104]
投票阶段结束后,任一主网节点均会获得相同的候选验证结果从而构成相同的候选集合,例如,nodea会分别接收到来自nodeb、nodec和nodee的候选验证结果result_b、result_c和result_e,加上自身生成的result_a构成一个包含result_a、result_b、result_c和result_e的候选集合,同理,其他的主网节点例如nodeb~nodee也将分别获得包含result_a、result_b、result_c和result_e的相同的候选集合。然后,任一主网节点会根据自身维护的第二区块链子网对应的数据验证条件从候选集合中确定目标验证结果,假设数据验证条件为“所有候选验证结果中内容相同的候选验证结果来源于nodea和nodeb”,因此任一主网节点需要对候选集合中的所有候选验证结果的内容进行比对排查,假设result_a、result_c和result_e的内容均为比对一致的比对结果(形如“yes”),而result_b中包含有比对不一致的比对结果(形如“no”),那么根据上述数据验证条件,显然分别来自nodea和nodeb的result_a和result_b的内容不相同,因此在候选集合中不存在满足上述数据验证条件的候选验证结果,于是无法确定目标验证结果,对于这种情况,可以将携带比对不一致的比对结果的候选验证结果作为目标验证结果,也即将result_b确定为目标验证结果;或者,也可以不确定、不透出目标验证结果,此时subnet1将因为等待超时而认为所述合约状态不存在于subnet2。nodea~nodee均会执行上述共识阶段的操作,确定出相同内容的目标验证结果,或者也均不确定目标验证结果。然后,在nodea~nodee在确定出相同的目标验证结果result_b的情况下,任一主网节点均会透出确定得到的目标验证结果result_b,
例如nodea会将包含交易数据的目标验证结果在节点设备1上透出,以使同样部署在节点设备1上的属于subnet1的子网节点nodea1获取该目标验证结果,以及,nodea1在检查目标验证结果中包含比对不一致的比对结果的情况下,确定自身持有的合约状态不存在于subnet2中,从而最终满足nodea1作为数据验证服务的需求方对相应数据的验证需求,同时,其他的主网节点也会进行类似的操作以在各自所处的节点设备上透出目标验证结果,但由于目标验证结果中没有携带作为目标数据的合约状态,因此在其他主网节点本身没有持有该合约状态的情况下,subnet1中的除nodea以外的子网节点将无法通过目标验证结果中的“no”知晓是何目标数据不存在于subnet2中,起到了隐私保护的效果。
[0105]
图3是一示例性实施例提供的一种验证区块链数据的方法的流程图。该方法应用于区块链主网中的主网节点,在所述区块链主网与区块链子网构成的区块链系统中,所述区块链子网中的子网节点所处的节点设备上部署有所述区块链主网中的主网节点,所述区块链子网至少包括第一区块链子网和第二区块链子网,所述区块链主网中的主网节点维护有第二区块链子网对应的数据验证条件;所述方法包括:
[0106]
步骤302,接收第一区块链子网向区块链主网发起的数据验证交易,所述数据验证交易用于对第二区块链子网上是否存在目标数据进行验证;
[0107]
步骤304,执行所述数据验证交易,以在自身所处节点设备上部署有第二区块链子网中的任一子网节点的情况下生成候选验证结果,并将所述候选验证结果广播至所述区块链主网中的其他主网节点,其中,所述候选验证结果用于表明所述任一子网节点上是否存在所述目标数据;
[0108]
步骤306,从获取到的所有候选验证结果中确定一个满足所述数据验证条件的目标验证结果,以由第一区块链子网根据所述目标验证结果确定所述目标数据是否存在于第二区块链子网。
[0109]
如前所述,所述数据验证条件包括下述至少之一:
[0110]
所述所有候选验证结果中内容相同的候选验证结果超过第一预设数量;
[0111]
所述所有候选验证结果中内容相同的候选验证结果来源于预设主网节点;
[0112]
所述所有候选验证结果中内容相同且来源于第二区块链子网中子网节点的候选验证结果超过第二预设数量。
[0113]
如前所述,所述候选验证结果包括候选收据;所述方法还包括:
[0114]
将所述目标验证结果设置为所述数据验证交易对应的交易收据。
[0115]
如前所述,第一区块链子网通过以下途径获得所述交易收据:
[0116]
第一区块链子网中的子网节点监听自身所处节点设备上部署的主网节点生成的所述交易收据。
[0117]
如前所述,所述数据验证交易包括目标数据的数据描述信息以及第二区块链子网的网络标识;其中,
[0118]
所述网络标识用于指示所述主网节点:将自身所处节点设备上部署的对应于所述网络标识的子网节点确定为所述任一子网节点;
[0119]
所述数据描述信息用于指示所述主网节点:将所述任一子网节点上匹配于所述数据描述信息的数据确定为所述目标数据。
[0120]
如前所述,所述将所述候选验证结果广播至所述区块链主网中的其他主网节点,
包括:
[0121]
将所述候选验证结果进行签名后广播至所述区块链主网中除所述任一主网节点以外的主网节点;
[0122]
其中,所述所有候选验证结果包括:自身生成的候选验证结果以及从其他的主网节点接收到且验签成功的候选验证结果。
[0123]
如前所述,所述生成所述候选验证结果包括:在确定所述任一子网节点上存在所述目标数据的情况下,生成包含所述目标数据的所述候选验证结果,以使第一区块链子网中的子网节点在所述目标验证结果中包含所述目标数据的情况下,确定所述目标数据存在于第二区块链子网。
[0124]
如前所述,所述数据验证交易包括所述目标数据;
[0125]
所述生成所述候选验证结果包括:将所述任一子网节点上的数据与所述目标数据进行比对,并生成包含比对结果的所述候选验证结果,以使第一区块链子网中的子网节点在确定所述目标验证结果中包含的所述比对结果为比对一致的情况下,确定所述目标数据存在于第二区块链子网。
[0126]
如前所述,还包括:
[0127]
响应并执行用于创建新区块链子网的子网创建交易,获取并维护所述新区块链子网对应的数据验证条件,所述子网创建交易中包含所述新区块链子网对应的数据验证条件。
[0128]
如前所述,还包括:
[0129]
响应并执行用于更新所述第二区块链子网对应的数据验证条件的条件更改交易,将自身维护的所述数据验证条件更新为新数据验证条件,所述条件更改交易中包含第二区块链子网对应的所述新数据验证条件。
[0130]
如前所述,所述数据验证交易包括调用所述区块链主网上部署的数据验证智能合约的交易;所述执行所述数据验证交易,包括:
[0131]
调用所述数据验证智能合约,以生成所述候选验证结果并确定出所述目标验证结果。
[0132]
如前所述,所述数据验证交易包括调用所述区块链主网上部署的数据验证智能合约的交易;
[0133]
所述执行所述数据验证交易,包括:调用所述数据验证智能合约,以生成所述候选验证结果;
[0134]
所述从获取到的所有候选验证结果中确定一个满足所述数据验证条件的目标验证结果,包括:通过本地部署的共识模块,确定出所述目标验证结果。
[0135]
如前所述,所述数据验证条件由所述数据验证智能合约所维护;和/或,所述数据验证条件由其他智能合约所维护。
[0136]
如前所述,所述目标数据包括下述之一:交易数据、状态数据、收据数据。
[0137]
图4是一示例性实施例提供的一种设备的示意结构图。请参考图4,在硬件层面,该设备包括处理器402、内部总线404、网络接口406、内存408以及非易失性存储器410,当然还可能包括其他业务所需要的硬件。本说明书一个或多个实施例可以基于软件方式来实现,比如由处理器402从非易失性存储器410中读取对应的计算机程序到内存408中然后运行。
当然,除了软件实现方式之外,本说明书一个或多个实施例并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
[0138]
如图5所示,图5是本说明书根据一示例性实施例提供的一种验证区块链数据的装置的框图,该装置可以应用于如图4所示的设备中,以实现本说明书的技术方案。该装置应用于应用于区块链主网中的主网节点,在所述区块链主网与区块链子网构成的区块链系统中,所述区块链子网中的子网节点所处的节点设备上部署有所述区块链主网中的主网节点,所述区块链子网至少包括第一区块链子网和第二区块链子网,所述区块链主网中的主网节点维护有第二区块链子网对应的数据验证条件;所述装置包括:
[0139]
交易接收模块501,用于接收第一区块链子网向区块链主网发起的数据验证交易,所述数据验证交易用于对第二区块链子网上是否存在目标数据进行验证;
[0140]
交易执行模块502,用于执行所述数据验证交易,以在自身所处节点设备上部署有第二区块链子网中的任一子网节点的情况下生成候选验证结果,并将所述候选验证结果广播至所述区块链主网中的其他主网节点,其中,所述候选验证结果用于表明所述任一子网节点上是否存在所述目标数据;
[0141]
条件验证模块503,用于从获取到的所有候选验证结果中确定一个满足所述数据验证条件的目标验证结果,以由第一区块链子网根据所述目标验证结果确定所述目标数据是否存在于第二区块链子网。
[0142]
如前所述,所述数据验证条件包括下述至少之一:
[0143]
所述所有候选验证结果中内容相同的候选验证结果超过第一预设数量;
[0144]
所述所有候选验证结果中内容相同的候选验证结果来源于预设主网节点;
[0145]
所述所有候选验证结果中内容相同且来源于第二区块链子网中子网节点的候选验证结果超过第二预设数量。
[0146]
如前所述,所述候选验证结果包括候选收据;所述装置还包括:
[0147]
收据设置模块504,用于将所述目标验证结果设置为所述数据验证交易对应的交易收据。
[0148]
如前所述,第一区块链子网通过以下途径获得所述交易收据:
[0149]
第一区块链子网中的子网节点监听自身所处节点设备上部署的主网节点生成的所述交易收据。
[0150]
如前所述,所述数据验证交易包括目标数据的数据描述信息以及第二区块链子网的网络标识;其中,
[0151]
所述网络标识用于指示所述主网节点:将自身所处节点设备上部署的对应于所述网络标识的子网节点确定为所述任一子网节点;
[0152]
所述数据描述信息用于指示所述主网节点:将所述任一子网节点上匹配于所述数据描述信息的数据确定为所述目标数据。
[0153]
如前所述,所述交易执行模块502具体用于:
[0154]
将所述候选验证结果进行签名后广播至所述区块链主网中除所述任一主网节点以外的主网节点;
[0155]
其中,所述所有候选验证结果包括:自身生成的候选验证结果以及从其他的主网
节点接收到且验签成功的候选验证结果。
[0156]
如前所述,所述交易执行模块502具体用于:在确定所述任一子网节点上存在所述目标数据的情况下,生成包含所述目标数据的所述候选验证结果,以使第一区块链子网中的子网节点在所述目标验证结果中包含所述目标数据的情况下,确定所述目标数据存在于第二区块链子网。
[0157]
如前所述,所述数据验证交易包括所述目标数据;
[0158]
所述交易执行模块502具体用于:将所述任一子网节点上的数据与所述目标数据进行比对,并生成包含比对结果的所述候选验证结果,以使第一区块链子网中的子网节点在确定所述目标验证结果中包含的所述比对结果为比对一致的情况下,确定所述目标数据存在于第二区块链子网。
[0159]
如前所述,还包括:
[0160]
子网创建交易执行模块505,用于响应并执行用于创建新区块链子网的子网创建交易,获取并维护所述新区块链子网对应的数据验证条件,所述子网创建交易中包含所述新区块链子网对应的数据验证条件。
[0161]
如前所述,还包括:
[0162]
条件更改交易执行模块506,用于响应并执行用于更新所述第二区块链子网对应的数据验证条件的条件更改交易,将自身维护的所述数据验证条件更新为新数据验证条件,所述条件更改交易中包含第二区块链子网对应的所述新数据验证条件。
[0163]
如前所述,所述数据验证交易包括调用所述区块链主网上部署的数据验证智能合约的交易;所述交易执行模块502具体用于:
[0164]
调用所述数据验证智能合约,以生成所述候选验证结果并确定出所述目标验证结果。
[0165]
如前所述,所述数据验证交易包括调用所述区块链主网上部署的数据验证智能合约的交易;
[0166]
所述交易执行模块502具体用于:调用所述数据验证智能合约,以生成所述候选验证结果;以及,通过本地部署的共识模块,确定出所述目标验证结果。
[0167]
如前所述,所述数据验证条件由所述数据验证智能合约所维护;和/或,所述数据验证条件由其他智能合约所维护。
[0168]
如前所述,所述目标数据包括下述之一:交易数据、状态数据、收据数据。
[0169]
相应的,本说明书还提供一种装置,所述装置包括有处理器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为实现上述全部方法实施例提供的实现验证区块链数据的方法的步骤。
[0170]
相应的,本说明书还提供一种计算机可读存储介质,其上存储有可执行的指令;其中,该指令被处理器执行时,实现上述全部方法实施例提供的实现验证区块链数据的方法的步骤。
[0171]
如图6所示,图6是本说明书根据一示例性实施例提供的一种验证区块链数据的系统的架构图,从图中可以很直观地表现出,第一区块链子网610中部署的任一子网节点均与区块链主网600中的某一主网节点处于相同的节点设备。该区块链系统包含区块链子网和区块链主网600,其中,所述区块链子网中的子网节点所处的节点设备上部署有所述区块链
主网600中的主网节点,所述区块链子网至少包括第一区块链子网610和第二区块链子网,所述区块链主网600中的主网节点维护有第二区块链子网对应的数据验证条件;所述系统包括:
[0172]
第一区块链子网610,用于向区块链主网600发起数据验证交易,所述数据验证交易用于对第二区块链子网上是否存在目标数据进行验证;
[0173]
区块链主网600,所述区块链主网600中的任一主网节点执行所述数据验证交易,以在所述任一主网节点所处节点设备上部署有第二区块链子网中的任一子网节点的情况下生成候选验证结果,并将所述候选验证结果广播至所述区块链主网600中的其他主网节点,其中,所述候选验证结果用于表明所述任一子网节点上是否存在所述目标数据;所述任一主网节点从获取到的所有候选验证结果中确定一个满足所述数据验证条件的目标验证结果,以由第一区块链子网610根据所述目标验证结果确定所述目标数据是否存在于第二区块链子网。
[0174]
如前所述,所述数据验证条件包括下述至少之一:
[0175]
所述所有候选验证结果中内容相同的候选验证结果超过第一预设数量;
[0176]
所述所有候选验证结果中内容相同的候选验证结果来源于预设主网节点;
[0177]
所述所有候选验证结果中内容相同且来源于第二区块链子网中子网节点的候选验证结果超过第二预设数量。
[0178]
如前所述,所述候选验证结果包括候选收据;所述区块链主网600还用于:
[0179]
使所述任一主网节点将所述目标验证结果设置为所述数据验证交易对应的交易收据。
[0180]
如前所述,第一区块链子网610通过以下途径获得所述交易收据:
[0181]
使第一区块链子网610中的子网节点监听自身所处节点设备上部署的主网节点生成的所述交易收据。
[0182]
如前所述,所述数据验证交易包括目标数据的数据描述信息以及第二区块链子网的网络标识;其中,
[0183]
所述网络标识用于指示所述任一主网节点:将自身所处节点设备上部署的对应于所述网络标识的子网节点确定为所述任一子网节点;
[0184]
所述数据描述信息用于指示所述任一主网节点:将所述任一子网节点上匹配于所述数据描述信息的数据确定为所述目标数据。
[0185]
如前所述,所述区块链主网600具体用于:
[0186]
使所述任一主网节点将所述候选验证结果进行签名后广播至所述区块链主网600中除所述任一主网节点以外的主网节点;
[0187]
其中,所述所有候选验证结果包括:自身生成的候选验证结果以及从其他的主网节点接收到且验签成功的候选验证结果。
[0188]
如前所述,
[0189]
所述区块链主网600具体用于:使所述任一主网节点在确定所述任一子网节点上存在所述目标数据的情况下,生成包含所述目标数据的所述候选验证结果;
[0190]
所述第一区块链子网610还用于:使第一区块链子网610中的子网节点在所述目标验证结果中包含所述目标数据的情况下,确定所述目标数据存在于第二区块链子网。
[0191]
如前所述,所述数据验证交易包括所述目标数据;
[0192]
所述区块链主网600具体用于:使所述任一主网节点将所述任一子网节点上的数据与所述目标数据进行比对,并生成包含比对结果的所述候选验证结果;
[0193]
所述第一区块链子网610还用于:使第一区块链子网610中的子网节点在确定所述目标验证结果中包含的所述比对结果为比对一致的情况下,确定所述目标数据存在于第二区块链子网。
[0194]
如前所述,所述区块链主网600还用于:
[0195]
响应于用于创建新区块链子网的子网创建交易,以使所述区块链主网600中的主网节点在执行所述子网创建交易后获取并维护所述新区块链子网对应的数据验证条件,所述子网创建交易中包含所述新区块链子网对应的数据验证条件。
[0196]
如前所述,所述区块链主网600还用于:
[0197]
响应于用于更新所述第二区块链子网对应的数据验证条件的条件更改交易,以使所述区块链主网600中的主网节点在执行所述条件更改交易后,将自身维护的所述数据验证条件更新为新数据验证条件,所述条件更改交易中包含第二区块链子网对应的所述新数据验证条件。
[0198]
如前所述,所述数据验证交易包括调用所述区块链主网600上部署的数据验证智能合约的交易;所述区块链主网600具体用于:
[0199]
使任一主网节点调用所述数据验证智能合约,以生成所述候选验证结果并确定出所述目标验证结果。
[0200]
如前所述,所述数据验证交易包括调用所述区块链主网600上部署的数据验证智能合约的交易;
[0201]
所述区块链主网600具体用于:使任一主网节点调用所述数据验证智能合约,以生成所述候选验证结果;以及,通过所述任一主网节点上部署的共识模块,确定出所述目标验证结果。
[0202]
如前所述,所述数据验证条件由所述数据验证智能合约所维护;和/或,所述数据验证条件由其他智能合约所维护。
[0203]
如前所述,所述目标数据包括下述之一:交易数据、状态数据、收据数据。
[0204]
对于上述装置或系统实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本说明书方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
[0205]
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
[0206]
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本
说明书时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
[0207]
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd

rom、光学存储器等)上实施的计算机程序产品的形式。
[0208]
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0209]
本说明书可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本说明书,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
[0210]
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0211]
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。在一个典型的配置中,计算机包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。
[0212]
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flash ram)。内存是计算机可读介质的示例。
[0213]
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd

rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带、磁盘存储、量子存储器、基于石墨烯的存储介质或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
[0214]
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的
包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
[0215]
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
[0216]
在本说明书一个或多个实施例使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
[0217]
应当理解,尽管在本说明书一个或多个实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在
……
时”或“当
……
时”或“响应于确定”。
[0218]
以上所述仅为本说明书一个或多个实施例的较佳实施例而已,并不用以限制本说明书一个或多个实施例,凡在本说明书一个或多个实施例的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书一个或多个实施例保护的范围之内。
再多了解一些

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

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

相关文献