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

基于HyperledgerFabric的内部桥接跨链方法、装置、设备和介质与流程

2022-02-22 05:58:28 来源:中国专利 TAG:

基于hyperledger fabric的内部桥接跨链方法、装置、设备和介质
技术领域
1.本说明书一个或多个实施例涉及计算机应用技术领域,尤其涉及一种基于hyperledger fabric的内部桥接跨链方法、装置、设备和介质。


背景技术:

2.相关技术中,在基于hyperledger fabric的区块链系统中,通常会根据实际参与业务的组织进行通道划分,将参与同一项业务的组织加入到同一个通道。然而,对于某一个通道而言,该通道中存证的数据对该通道中的所有组织都是可见的,因此,数据隐私的保护粒度较粗,数据的安全性较低。


技术实现要素:

3.本说明书提出一种基于hyperledger fabric的内部桥接跨链方法,基于hyperledger fabric的区块链系统包括与若干通道对应的若干子链;所述若干子链包括桥接链、第一业务子链和第二业务子链;所述桥接链包括与跨链服务的服务提供方对应的第一peer节点和第二peer节点;所述第一业务子链包括所述第一peer节点,和与数据提供方对应的peer节点;所述第二业务子链包括所述第二peer节点,和与数据需求方对应的peer节点;所述方法应用于与所述服务提供方对应的客户端,包括:
4.获取与所述数据需求方对应的需求数据的数据标识;
5.从所述第一业务子链中获取与所述数据标识对应的所述需求数据的数据原文和数据摘要;
6.将基于所述数据摘要构造的跨链消息头发布至所述桥接链进行存证;
7.针对基于所述数据原文构造的跨链消息体,基于所述跨链消息体构造存证交易;
8.将所述存证交易发布至所述第二业务子链,触发所述第二业务子链中的peer节点响应于所述存证交易,将所述跨链消息头从所述桥接链跨链拷贝至所述第二业务子链,并基于所述第二业务子链中存证的所述跨链消息头,对所述跨链消息体进行校验,在所述跨链消息体校验通过后,将所述跨链消息体中的所述需求数据发布至所述第二业务子链进行存证,以使与所述数据需求方对应的客户端从所述第二业务子链中获取到所述需求数据。
9.本说明书还提出一种基于hyperledger fabric的内部桥接跨链方法,基于hyperledger fabric的区块链系统包括与若干通道对应的若干子链;所述若干子链包括桥接链、第一业务子链和第二业务子链;所述桥接链包括与跨链服务的服务提供方对应的第一peer节点和第二peer节点;所述第一业务子链包括所述第一peer节点,和与数据提供方对应的peer节点;所述第二业务子链包括所述第二peer节点,和与数据需求方对应的peer节点;所述方法应用于与所述服务提供方对应的客户端,包括:
10.获取与所述数据需求方对应的需求数据的数据标识;
11.基于所述数据标识构造构造第一跨链拷贝交易;
12.将所述第一跨链拷贝交易发布至所述桥接链,触发所述桥接链中的peer节点响应于所述第一跨链拷贝交易,将与所述数据标识对应的所述需求数据,从所述第一业务子链跨链拷贝至所述桥接链;
13.基于所述数据标识构造构造第二跨链拷贝交易;
14.将所述第二跨链拷贝交易发布至所述第二业务子链,触发所述第二业务子链中的peer节点响应于所述第二跨链拷贝交易,将与所述数据标识对应的所述需求数据,从所述桥接链跨链拷贝至所述第二业务子链,以使与所述数据需求方对应的客户端从所述第二业务子链中获取到所述需求数据。
15.本说明书还提出一种基于hyperledger fabric的内部桥接跨链装置,基于hyperledger fabric的区块链系统包括与若干通道对应的若干子链;所述若干子链包括桥接链、第一业务子链和第二业务子链;所述桥接链包括与跨链服务的服务提供方对应的第一peer节点和第二peer节点;所述第一业务子链包括所述第一peer节点,和与数据提供方对应的peer节点;所述第二业务子链包括所述第二peer节点,和与数据需求方对应的peer节点;所述装置应用于与所述服务提供方对应的客户端,包括:
16.第一获取模块,用于获取与所述数据需求方对应的需求数据的数据标识;
17.第二获取模块,用于从所述第一业务子链中获取与所述数据标识对应的所述需求数据的数据原文和数据摘要;
18.第一存证模块,用于将基于所述数据摘要构造的跨链消息头发布至所述桥接链进行存证;
19.构造模块,用于针对基于所述数据原文构造的跨链消息体,基于所述跨链消息体构造存证交易;
20.第二存证模块,用于将所述存证交易发布至所述第二业务子链,触发所述第二业务子链中的peer节点响应于所述存证交易,将所述跨链消息头从所述桥接链跨链拷贝至所述第二业务子链,并基于所述第二业务子链中存证的所述跨链消息头,对所述跨链消息体进行校验,在所述跨链消息体校验通过后,将所述跨链消息体中的所述需求数据发布至所述第二业务子链进行存证,以使与所述数据需求方对应的客户端从所述第二业务子链中获取到所述需求数据。
21.本说明书还提出一种基于hyperledger fabric的内部桥接跨链装置,基于hyperledger fabric的区块链系统包括与若干通道对应的若干子链;所述若干子链包括桥接链、第一业务子链和第二业务子链;所述桥接链包括与跨链服务的服务提供方对应的第一peer节点和第二peer节点;所述第一业务子链包括所述第一peer节点,和与数据提供方对应的peer节点;所述第二业务子链包括所述第二peer节点,和与数据需求方对应的peer节点;所述装置应用于与所述服务提供方对应的客户端,包括:
22.获取模块,用于获取与所述数据需求方对应的需求数据的数据标识;
23.第一构造模块,用于基于所述数据标识构造构造第一跨链拷贝交易;
24.第一跨链模块,用于将所述第一跨链拷贝交易发布至所述桥接链,触发所述桥接链中的peer节点响应于所述第一跨链拷贝交易,将与所述数据标识对应的所述需求数据,将所述第一业务子链中的与所述数据标识对应的所述需求数据,从所述第一业务子链跨链拷贝至所述桥接链;
25.第二构造模块,用于基于所述数据标识构造构造第二跨链拷贝交易;
26.第二跨链模块,用于将所述第二跨链拷贝交易发布至所述第二业务子链,触发所述第二业务子链中的peer节点响应于所述第二跨链拷贝交易,将与所述数据标识对应的所述需求数据,从所述桥接链跨链拷贝至所述第二业务子链,以使与所述数据需求方对应的客户端从所述第二业务子链中获取到所述需求数据。
27.本说明书还提出一种电子设备,包括:
28.处理器;
29.用于存储处理器可执行指令的存储器;
30.其中,所述处理器通过运行所述可执行指令以实现如上述任一项所述方法的步骤。
31.本说明书还提出一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现如上述任一项所述方法的步骤。
32.在上述技术方案中,可以在基于hyperledger fabric的区块链系统中,将数据提供方和数据需求方放置在不同的业务子链中,并且通过跨链拷贝的方式,将与数据需求方对应的需求数据,从数据提供方所在的业务子链中跨链拷贝至数据需求方所在的业务子链,从而可以实现数据的按需共享,而无需将全部数据都提供给数据需求方,因此,可以更好地控制数据隐私,细化数据隐私的保护粒度,提高数据的安全性。此外,在新的数据需求方加入该区块链系统时,只需要为新的数据需求方创建新的业务子链即可,而无需对数据提供方所在的业务子链进行更新。此外,在利用桥接链进行跨链拷贝时,可以仅将需求数据的数据摘要在桥接链上进行存证,从而可以节省与桥接链对应的存储资源,适用于需求数据量较大的场景。
附图说明
33.图1是基于hyperledger fabric的区块链系统的网络环境的示意图;
34.图2是基于hyperledger fabric的区块链系统中的交易执行流程的示意图;
35.图3是本说明书一示例性实施例示出的一种基于hyperledger fabric的区块链系统的网络环境的示意图;
36.图4是本说明书一示例性实施例示出的一种基于hyperledger fabric的内部桥接跨链方法的流程图;
37.图5是本说明书一示例性实施例示出的另一种基于hyperledger fabric的内部桥接跨链方法的流程图;
38.图6是本说明书一示例性实施例示出的一种基于hyperledger fabric的内部桥接跨链装置所在电子设备的硬件结构图;
39.图7是本说明书一示例性实施例示出的一种基于hyperledger fabric的内部桥接跨链装置的框图;
40.图8是本说明书一示例性实施例示出的另一种基于hyperledger fabric的内部桥接跨链装置的框图。
具体实施方式
41.这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书一个或多个实施例相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书一个或多个实施例的一些方面相一致的装置和方法的例子。
42.需要说明的是:在其他实施例中并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤。在一些其他实施例中,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其他实施例中可能被分解为多个步骤进行描述;而本说明书中所描述的多个步骤,在其他实施例中也可能被合并为单个步骤进行描述。
43.区块链一般被划分为三种类型:公有链(public blockchain),私有链(private blockchain)和联盟链(consortium blockchain)。此外,还可以有上述多种类型的结合,比如私有链与联盟链的结合、联盟链与公有链的结合等。
44.其中,去中心化程度最高的是公有链。加入公有链的参与方(也可以称为区块链中的节点)可以读取链上的数据记录、参与交易、竞争新区块的记账权等。而且,各节点可自由加入或者退出网络,并进行相关操作。
45.私有链则相反,该网络的写入权限由某个组织或者机构控制,数据读取权限受组织规定。简单来说,私有链可以视为一个弱中心化系统,其对节点具有严格限制且节点数量较少。这种类型的区块链更适合于特定机构内部使用。
46.联盟链则介于公有链以及私有链之间,可以实现“部分去中心化”。联盟链中各个节点通常有与之对应的实体机构或者组织;节点通过授权加入网络并组成利益相关联盟,共同维护区块链的运行。
47.在区块链中,节点是逻辑上的通信实体;不同类型的多个区块链节点可以运行在同一个物理服务器上,也可以运行在不同的物理服务器上。
48.对于联盟链而言,基于hyperledger fabric的区块链系统是联盟链系统的一种实现方式。
49.在基于hyperledger fabric的区块链系统中,主要可以包括以下三种类型的区块链节点:客户端;orderer(排序服务)节点;以及,peer节点。
50.其中,客户端可以与某一个peer节点或者某一个排序服务节点建立连接,以通过该peer节点或者该排序服务节点接入对应的区块链网络;客户端可以向作为endorser(背书)节点的peer节点提交交易提案(transaction proposal),在获取到背书节点针对该交易提案的背书结果后,可以构造对应的交易,并向排序服务节点提交该交易。
51.在实际应用中,客户端也可以与多个peer节点建立连接,以通过各个peer节点分别接入对应的区块链网络。
52.排序服务节点可以接收客户端提交的交易,并对未打包的交易进行排序,生成对应的区块,后续可以将该区块广播给peer节点。
53.需要说明的是,排序服务节点的广播可以保证同一条链上的节点接收到相同的数据,并且接收到的数据具有相同的逻辑顺序。
54.peer节点根据所承担的功能可以分为committer(记账)节点、背书节点和leader(主)节点。
55.具体地,记账节点负责维护区块链账本(ledger)和链码(chaincode,也可以称为智能合约);记账节点可以定期地获取由排序服务节点生成的区块,并在对这些区块中的交易进行验证后,将这些区块在区块链中进行存证。背书节点可以模拟执行交易提案,并对该交易提案的模拟执行结果进行签名,以完成针对该交易提案的背书。主节点可以与排序服务节点进行通信,从排序服务节点获取最新的区块,从而使这些区块可以在peer节点之间进行同步。
56.需要说明的是,所有peer节点都可以作为记账节点。也即,对于某一个peer节点而言,该peer节点可以既作为背书节点,又作为记账节点;或者,该peer节点可以既作为主节点,又作为记账节点。
57.在基于hyperledger fabric的区块链系统中,通常可以基于组织对区块链节点进行区分。也即,基于hyperledger fabric的区块链系统的参与方可以是组织。
58.具体地,每个组织中都可以有承担不同功能的peer节点(具体可以包括多个记账节点、多个背书节点和一个主节点);不同的组织可以共用同一个排序服务节点或者同一个排序服务节点集群。
59.在实际应用中,上述组织可以是现实世界中的一个公司、一个企业或者一个协会。
60.基于hyperledger fabric的区块链系统的数据存储结构,通常可以被设计成多账本体系。为了对不同的区块链账本进行数据隔离,可以在逻辑上将基于hyperledger fabric的区块链系统划分为不同的通道(channel)。
61.其中,上述通道可以由区块链账本、链码、组织和排序服务节点定义;每个通道中都可以有一套完全独立的区块链账本,并且可以有一套完全独立的链码;不同的通道可以共用同一个排序服务节点;同一个组织可以通过该组织中的不同的peer节点,加入不同的通道;每个交易都是在某一个通道中被独立执行的。
62.因此,在基于hyperledger fabric的区块链系统中,可以将一个通道视为一条区块链。也即,基于hyperledger fabric的区块链系统可以包括多条区块链。
63.需要说明的是,加入到同一个通道中的peer节点可以维护相同的区块链账本,并且不能访问由加入到其他通道中的peer节点维护的区块链账本。同一个peer节点可以加入不同的通道;该peer节点可以维护与各个通道分别对应的区块链账本,但是,该peer节点维护的多个区块链账户之间数据隔离。
64.参考图1,图1是基于hyperledger fabric的区块链系统的网络环境的示意图。
65.如图1所示,在上述基于hyperledger fabric的区块链系统中,可以包括三个组织,分别为组织1、组织2和组织3,还可以包括两个通道,分别为通道a和通道b。
66.其中,组织1和组织2属于通道a,组织2和组织3属于通道b;每个组织中都可以有主节点、背书节点和记账节点等peer节点,此外还可以有与背书节点建立连接的客户端;各个组织中的peer节点,以及所有组织共用的排序服务节点,一起组成了基于hyperledger fabric的区块链系统。
67.参考图2,图2是基于hyperledger fabric的区块链系统中的交易执行流程的示意图。
68.如图2所示,在上述基于hyperledger fabric的区块链系统中,客户端可以构造交易提案(该交易提案可以包括本次交易需要调用的链码的标识、方法和参数信息等),并根据背书策略选择背书节点,将该交易提案提交给该背书节点。
69.上述背书节点在接收到上述交易提案后,可以模拟执行上述链码中的业务逻辑,并对模拟执行结果进行签名,后续可以将签名后的模拟执行结果返回给上述客户端。
70.上述客户端在接收到上述签名后的模拟执行结果后,可以先对签名进行验证,并在验证通过后,构造与上述交易提案对应的交易(具体可以将该交易提案和上述签名后的模拟执行结果打包成交易),后续可以将该交易提交给排序服务节点。
71.上述排序服务节点可以按照同一个通道中的交易的接收时间顺序,对该通道中的未打包的交易进行排序,生成包含这些交易的区块(具体可以将这些交易打包进区块),后续可以将该区块广播给该通道中的不同组织中的主节点,由于所有peer节点都是记账节点,因此,该主节点接收到的该区块可以在该通道中的所有peer节点之间进行同步;此时,该通道中的peer节点可以执行该区块中的上述交易。
72.参考图3,图3是本说明书一示例性实施例示出的一种基于hyperledger fabric的区块链系统的示意图。结合图3,参考图4,图4是本说明书一示例性实施例示出的一种基于hyperledger fabric的内部桥接跨链方法的流程图。
73.在上述基于hyperledger fabric的内部桥接跨链方法中,基于hyperledger fabric的区块链系统可以包括若干通道;其中,每个通道都可以视为一条区块链。
74.进一步地,与上述若干通道对应的若干区块链,可以包括:用于存储业务数据的若干区块链(称为业务子链,具体可以包括第一业务子链和第二业务子链);以及,用于桥接不同的业务子链的区块链(称为桥接链)。
75.其中,与跨链服务的服务提供方对应的组织,以及与上述业务数据的数据提供方对应的组织,可以加入上述第一业务子链。也即,该第一业务子链可以包括与该服务提供方对应的peer节点(称为第一peer节点),以及与该数据提供方对应的peer节点。
76.与上述服务提供方对应的组织,以及与上述业务数据的数据需求方对应的组织,可以加入上述第二业务子链。也即,该第二业务子链可以包括与该服务提供方对应的peer节点(称为第二peer节点),以及与该数据需求方对应的peer节点。
77.与上述服务提供方对应的组织可以加入上述桥接链。也即,该桥接链可以包括与该服务提供方对应的peer节点(具体可以包括上述第一peer节点和上述第二peer节点)。
78.与上述服务提供方对应的peer节点、与上述数据提供方对应的peer节点或者与上述数据需求方对应的peer节点,都可以包括主节点、背书节点和记账节点等peer节点。
79.需要说明的是,上述数据需求方、上述数据提供方和上述服务提供方通常可以在同一个局域网中,此时上述桥接链为该局域网内部的桥接链,因此可以称为内部桥接链。
80.在实际应用中,上述服务提供方可以包括上述基于hyperledger fabric的区块链系统的运营方;上述数据需求方可以包括金融机构;上述数据提供方可以包括由该金融机构提供资产(例如:货币、房产、股票、贷款合同和应收账款等)服务的公司、企业、协会和个人等用户;上述业务数据可以包括资产数据。
81.在上述情况下,上述基于hyperledger fabric的内部桥接跨链方法可以应用于与上述服务提供方对应的客户端,并且可以包括以下步骤:
82.步骤401,获取与所述数据需求方对应的需求数据的数据标识;
83.步骤402,从所述第一业务子链中获取与所述数据标识对应的所述需求数据的数据原文和数据摘要;
84.步骤403,将基于所述数据摘要构造的跨链消息头发布至所述桥接链进行存证;
85.步骤404,针对基于所述数据原文构造的跨链消息体,基于所述跨链消息体构造存证交易;
86.步骤405,将所述存证交易发布至所述第二业务子链,触发所述第二业务子链中的peer节点响应于所述存证交易,将所述跨链消息头从所述桥接链跨链拷贝至所述第二业务子链,并基于所述第二业务子链中存证的所述跨链消息头,对所述跨链消息体进行校验,在所述跨链消息体校验通过后,将所述跨链消息体中的所述需求数据发布至所述第二业务子链进行存证,以使与所述数据需求方对应的客户端从所述第二业务子链中获取到所述需求数据。
87.下面从将业务数据上链、获取需求数据的数据标识、对需求数据进行跨链拷贝和对需求数据进行溯源的方面,进行详细描述。
88.(1)将业务数据上链
89.在实际应用中,上述数据提供方可以将与该数据提供方对应的业务数据发布至上述第一业务子链进行存证。
90.具体地,与上述数据提供方对应的客户端可以基于上述业务数据,构造用于存证这些业务数据的存证交易,并将该存证交易发布至上述第一业务子链。
91.在上述情况下,与上述数据提供方对应的客户端可以在上述第一业务子链中的与该数据提供方对应的背书节点对上述存证交易进行背书后,将该存证交易提交给对应的排序服务节点,由该排序服务节点生成包含该存证交易的区块,并将该区块广播给该第一业务子链中的与该数据提供方对应的主节点,从而使该区块可以在该第一业务子链中的所有peer节点之间进行同步;此时,该第一业务子链中的peer节点可以执行该存证交易,将上述业务数据在该第一业务子链中进行存证。
92.或者,上述数据提供方可以将上述业务数据发送给上述服务提供方,由该服务提供方将这些业务数据发布至上述第一业务子链进行存证。
93.需要说明的是,为了节省区块链系统的存储资源,在上述业务数据发生更新时,可以将与这些业务数据对应的增量数据发布至上述第一业务子链进行存证。
94.在示出的一种实施方式中,上述业务数据可以以key-value键值对的形式存证在上述第一业务子链;一条业务数据可以对应于一个key-value键值对。
95.对于某一条业务数据而言,与该业务数据对应的key-value键值对中的key可以包括该业务数据的数据标识,该key-value键值对中的value可以包括该业务数据的数据原文;该业务数据的数据标识可以包括为该业务数据分配的标识(data id)、该业务数据的来源的标识(app key)和/或该业务数据所属的业务子链的标识(channel id)等唯一指示该业务数据的信息。
96.进一步地,对于某一条业务数据而言,与该业务数据对应的增量数据的数据结构,应当与该业务数据的数据结构保持一致。也即,与该增量数据对应的key-value键值对中的key,应当与与该该业务数据对应的key-value键值对中的key保持一致。
97.在示出的一种实施方式中,与上述服务提供方对应的客户端可以基于上述业务数据的数据标识构造摘要计算交易,并将该摘要计算交易发布至上述第一业务子链。
98.在上述情况下,与上述服务提供方对应的客户端可以在上述第一业务子链中的与该服务提供方对应的背书节点对上述摘要计算交易进行背书后,将该摘要计算交易提交给对应的排序服务节点,由该排序服务节点生成包含该摘要计算交易的区块,并将该区块广播给该第一业务子链中的与该服务提供方对应的主节点,从而使该区块可以在该第一业务子链中的所有peer节点之间进行同步。因此,该第一业务子链中的peer节点可以接收到该摘要计算交易。
99.上述第一业务子链中的peer节点可以执行上述摘要计算交易,调用上述第一业务子链中部署的链码(称为第一链码),执行该第一链码中的摘要计算逻辑,计算与上述数据标识对应的上述业务数据的数据摘要,并将这些数据摘要在该第一业务子链中进行存证。
100.在实际应用中,对于某一条业务数据而言,该业务数据的数据摘要可以包括该业务数据的hash值。
101.综上所述,对于某一条业务数据而言,上述第一业务子链中可以存证该业务数据的数据标识、数据原文和数据摘要。
102.(2)获取需求数据的数据标识
103.在实际应用中,上述数据需求方在需要获取上述业务数据中的部分或者全部数据时,可以将需要获取的业务数据(称为需求数据)的数据标识提交给上述服务提供方。
104.需要说明的是,上述需求数据通常需要先由上述数据提供方确认。
105.为了便于利用上述需求数据的数据标识,这些需求数据的数据标识可以以列表的形式存在。
106.在示出的一种实施方式中,上述数据需求方与上述数据提供方可以在链外约定上述需求数据,例如:在链外签署数据获取合同,并在该数据获取合同中声明这些需求数据的数据标识。
107.在上述情况下,与上述服务提供方对应的客户端可以从上述数据获取合同中,获取到上述需求数据的数据标识。
108.或者,与上述数据需求方对应的客户端可以基于上述需求数据的数据标识,构造用于存证这些需求数据的数据标识的存证交易,并将该存证交易发布至上述第二业务子链。
109.在上述情况下,与上述数据需求方对应的客户端可以在上述第二业务子链中的与该数据需求方对应的背书节点对上述存证交易进行背书后,将该存证交易提交给对应的排序服务节点,由该排序服务节点生成包含该存证交易的区块,并将该区块广播给该第二业务子链中的与该数据需求方对应的主节点,从而使该区块可以在该第二业务子链中的所有peer节点之间进行同步;此时,该第二业务子链中的peer节点可以执行该存证交易,将上述需求数据的数据标识在该第二业务子链中进行存证。
110.由于上述第二业务子链包括与上述服务提供方对应的区块链节点,因此,与该服务提供方对应的客户端可以通过上述第二peer节点,从该第二业务子链中获取到上述需求数据的数据标识。
111.具体地,与上述服务提供方对应的客户端可以先通过向上述桥接链发布跨链拷贝
交易(称为第五跨链拷贝交易),触发该桥接链中的peer节点响应于该第五跨链拷贝交易,将上述业务数据的数据标识,从上述第一业务子链跨链拷贝至该桥接链;再通过向上述第二业务子链发布跨链拷贝交易(称为第六跨链拷贝交易),触发该第二业务子链中的peer节点响应于该第六跨链拷贝交易,将上述业务数据的数据标识,从该桥接链跨链拷贝至该第二业务子链。
112.与上述数据需求方对应的客户端可以通过上述第二业务子链中的与该数据需求方对应的peer节点,从该第二业务子链中获取到上述业务数据的数据标识;该数据需求方可以从这些业务数据的数据标识中选择出部分或者全部数据标识,作为向上述数据提供方订阅的订阅数据的数据标识;与该数据需求方对应的客户端可以将这些订阅数据的数据标识发布至所述第二业务子链进行存证。
113.与上述服务提供方对应的客户端可以先通过向上述桥接链发布跨链拷贝交易(称为第一跨链拷贝交易),触发该桥接链中的peer节点响应于该第一跨链拷贝交易,将上述订阅数据的数据标识,从上述第二业务子链跨链拷贝至该桥接链;再通过向上述第一业务子链发布跨链拷贝交易(称为第二跨链拷贝交易),触发该第一业务子链中的peer节点响应于该第二跨链拷贝交易,将上述订阅数据的数据标识,从该桥接链跨链拷贝至该第一业务子链。
114.与上述数据提供方对应的客户端可以通过上述第一业务子链中的与该数据提供方对应的peer节点,从该第一业务子链中获取到上述订阅数据的数据标识;该数据提供方可以对这些业务数据的数据标识中的部分或者全部数据标识进行确认,由该数据提供方确认的数据标识可以作为允许上述数据需求方获取的需求数据的数据标识;与该数据提供方对应的客户端可以将这些需求数据的数据标识发布至所述第一业务子链进行存证。
115.与上述服务提供方对应的客户端可以先通过向上述桥接链发布跨链拷贝交易(称为第三跨链拷贝交易),触发该桥接链中的peer节点响应于该第三跨链拷贝交易,将上述需求数据的数据标识,从上述第一业务子链跨链拷贝至该桥接链;再通过向上述第二业务子链发布跨链拷贝交易(称为第四跨链拷贝交易),触发该第二业务子链中的peer节点响应于该第四跨链拷贝交易,将上述需求数据的数据标识,从该桥接链跨链拷贝至该第二业务子链。
116.需要说明的是,在将数据标识发布至业务子链进行存证时,还可以对这些数据标识进行数字签名,并附带身份信息,以供对这些数据标识进行校验。
117.在实际应用中,对于包括区块链a和区块链b的基于hyperledger fabric的区块链系统而言,分别加入到区块链a和区块链b中的组织1,具有将数据从区块链a(或者区块链b)跨链拷贝至区块链b(或者区块链a)的权限。
118.与组织1对应的客户端在将数据从区块链a跨链拷贝至区块链b时,可以针对这些数据构造跨链拷贝交易(例如:基于这些数据的数据标识构造跨链拷贝交易),并将该跨链拷贝交易发布至区块链b。
119.在上述情况下,与组织1对应的客户端可以在区块链b中的与组织1对应的背书节点对上述跨链拷贝交易进行背书后,将该跨链拷贝交易提交给对应的排序服务节点,由该排序服务节点生成包含该跨链拷贝交易的区块,并将该区块广播给区块链b中的与组织1对应的主节点,从而使该区块可以在区块链b中的所有peer节点之间进行同步;此时,区块链b
中的与组织1对应的peer节点可以执行该跨链拷贝交易,调用区块链b中部署的链码,执行区块链b的链码中的跨链调用逻辑,跨链调用区块链a中部署的链码,执行区块链a的链码中的数据获取逻辑,从区块链a中获取该跨链拷贝交易指示的数据,并将这些数据在区块链b进行存证。这样,即完成了将这些数据从区块链a跨链拷贝至区块链b。
120.(3)对需求数据进行跨链拷贝
121.由于与上述数据需求方对应的组织仅加入了上述第二业务子链,而并未加入到上述第一业务子链中,也即,与该数据需求方对应的客户端仅能通过该第二业务子链中的与该数据需求方对应的peer节点,获取到该第二业务子链中存证的数据,因此,为了使该数据需求方可以获取到上述需求数据,就需要将这些需求数据从该第一业务子链跨链拷贝至该第二业务子链。
122.在实际应用中,与上述服务提供方对应的客户端可以先基于上述需求数据的数据标识,从上述第一业务子链中获取上述需求数据的数据原文和数据摘要。
123.在上述情况下,与上述服务提供方对应的客户端一方面可以基于上述需求数据的数据摘要构造跨链消息头,另一方面可以基于上述需求数据的数据原文构造跨链消息体;该跨链消息头对应于该跨链消息体。
124.其中,上述跨链消息头的数据结构可以如表1所示:
[0125][0126][0127]
表1
[0128]
如表1所示,source channel id表示源通道的标识(此时,即为上述第一业务子链的标识);destination channel id表示目的通道的标识(此时,即为上述第二业务子链的标识);data id表示为数据分配的标识;key表示与数据对应的key-value键值对中的key;data hash表示数据的数据摘要;data version表示数据的数据版本;series update表示用于校验数据版本的数值;nonce表示一个只被使用一次的任意或者非重复的随机数值,可以作为跨链消息头的标识;version表示跨链消息头的版本;signature表示签名,可以用于对跨链消息头进行校验。
[0129]
上述跨链消息体的数据结构可以如表2所示:
[0130][0131]
表2
[0132]
如表2所示,data表示数据的数据原文;其他字段可以参考表1中的字段。
[0133]
对于上述跨链消息头而言,与上述服务提供方对应的客户端可以将该跨链消息头发布至上述桥接链进行存证。
[0134]
具体地,与上述服务提供方对应的客户端可以基于上述跨链消息头,构造用于存证该跨链消息头的存证交易,并将该存证交易发布至上述桥接链。
[0135]
在上述情况下,与上述服务提供方对应的客户端可以在上述桥接链中的与该服务提供方对应的背书节点对上述存证交易进行背书后,将该存证交易提交给对应的排序服务节点,由该排序服务节点生成包含该存证交易的区块,并将该区块广播给该桥接链中的与服务提供方对应的主节点,从而使该区块可以在该桥接链中的所有peer节点之间进行同步;此时,该桥接链中的peer节点可以执行该存证交易,将上述跨链消息头在该桥接链中进行存证。
[0136]
与上述服务提供方对应的客户端可以通过向上述第二业务子链发布存证交易,触发该第二业务子链中的peer节点响应于该存证交易,将上述跨链消息头从上述桥接链跨链拷贝至该第二业务子链,并基于该第二业务子链中存证的该跨链消息头,对上述跨链消息体进行校验,在该跨链消息体校验通过后,将上述需求数据发布至该第二业务子链进行存证,从而使与上述数据需求方对应的客户端可以从该第二业务子链中获取到这些需求数据。
[0137]
具体地,由于上述服务提供方分别加入了上述桥接链和上述第二业务子链,因此,该服务提供方具有将上述跨链消息头从该桥接链跨链拷贝至该第二业务子链的权限。
[0138]
与上述服务提供方对应的客户端可以基于上述跨链消息体构造存证交易,并将该存证交易发布至上述第二业务子链。
[0139]
在上述情况下,与上述服务提供方对应的客户端可以在上述第二业务子链中的与该服务提供方对应的背书节点对上述存证交易进行背书后,将该存证交易提交给对应的排序服务节点,由该排序服务节点生成包含该存证交易的区块,并将该区块广播给该第二业务子链中的与该服务提供方对应的主节点,从而使该区块可以在该第二业务子链中的所有peer节点之间进行同步。
[0140]
此时,上述第二业务子链中的peer节点可以执行上述存证交易,由其中的与上述服务提供方对应的peer节点调用该第二业务子链中部署的链码(称为第二链码),执行该第二链码中的跨链调用逻辑,跨链调用上述桥接链中部署的链码(称为桥接链码),执行该桥
接链码中的数据获取逻辑,从该桥接链中获取上述跨链消息头,并将该跨链消息头在该第二业务子链中进行存证。
[0141]
进一步地,上述第二业务子链中的peer节点可以从该第二业务子链中获取到上述跨链消息头,并基于该跨链消息头对上述跨链消息体进行校验,在该跨链消息体校验通过后,将该跨上述需求数据发布至该第二业务子链进行存证。这样,与上述数据需求方对应的客户端后续就可以从该第二业务子链中获取到这些需求数据。
[0142]
在示出的一种实施方式中,如表2所示,与上述服务提供方对应的客户端还可以基于上述需求数据的数据摘要构造上述跨链消息体。
[0143]
在上述情况下,在基于上述跨链消息头对上述跨链消息体进行校验时,具体可以确定该跨链消息体中的数据摘要与该跨链消息头中的数据摘要是否相同,如果是,则可以确定该跨链消息体校验通过。
[0144]
进一步地,如表1和表2所示,与上述服务提供方对应的客户端还可以基于上述需求数据的数据版本分别构造上述跨链消息头和上述跨链消息体。
[0145]
在上述情况下,在基于上述跨链消息头对上述跨链消息体进行校验时,具体可以确定该跨链消息体中的数据版本与该跨链消息头中的数据版本是否相同,并确定该数据版本是否为最新的数据版本,如果两者均是,则可以确定该跨链消息体校验通过。
[0146]
(4)对需求数据进行溯源
[0147]
在实际应用中,与上述服务提供方对应的客户端可以在接收到与上述需求数据对应的溯源请求时,响应于该溯源请求,从上述桥接链中获取与这些需求数据对应的上述跨链消息头对应的历史数据记录(称为桥接历史数据记录);以及,从上述第一业务子链中获取与这些需求数据对应的历史数据记录(称为第一历史数据记录),并从该第二业务子链中获取与这些需求数据对应的历史数据记录(称为第二历史数据记录)。
[0148]
其中,与上述需求数据对应的历史数据记录可以包括与这些需求数据对应历史交易的相关信息。
[0149]
具体地,可以从上述第二业务子链中,基于上述需求数据的数据标识,一方面获取到与这些数据标识对应的历史数据记录,作为上述第二历史数据记录,另一方面获取到与这些数据标识对应的源通道(此时,即为上述第一业务子链)的标识(source channel id),以及与这些数据标识对应的跨链消息头(此时,即为上述跨链消息头)的标识(nonce)。
[0150]
在上述情况下,可以基于上述源通道的标识,从上述第一业务子链中,基于上述需求数据的数据标识,获取到与这些数据标识对应的历史数据记录,作为上述第一历史数据记录。
[0151]
此外,还可以基于上述跨链消息头的标识,从上述桥接链中,获取到与该跨链消息头的标识对应的历史数据记录,作为上述桥接历史数据记录。
[0152]
后续,可以对上述第一历史数据记录和上述第二历史数据记录进行去重处理,并将去重后的该第二历史数据记录拼接在去重后的该第一历史数据记录之后,从而可以将拼接得到的历史数据记录和上述桥接历史数据记录,一起确定为与上述需求数据对应的历史数据记录。
[0153]
具体地,在示出的一种实施方式中,上述历史数据记录可以包括数据时间戳。
[0154]
在上述情况下,可以从上述第一历史数据记录中,删除上述数据时间戳在上述第
二历史数据记录的最早的数据时间戳之后的历史数据记录,以实现对该第一历史数据记录和该第二历史数据记录的去重处理。
[0155]
在上述技术方案中,可以在基于hyperledger fabric的区块链系统中,将数据提供方和数据需求方放置在不同的业务子链中,并且通过跨链拷贝的方式,将与数据需求方对应的需求数据,从数据提供方所在的业务子链中跨链拷贝至数据需求方所在的业务子链,从而可以实现数据的按需共享,而无需将全部数据都提供给数据需求方,因此,可以更好地控制数据隐私,细化数据隐私的保护粒度,提高数据的安全性。此外,在新的数据需求方加入该区块链系统时,只需要为新的数据需求方创建新的业务子链即可,而无需对数据提供方所在的业务子链进行更新。此外,在利用桥接链进行跨链拷贝时,可以仅将需求数据的数据摘要在桥接链上进行存证,从而可以节省与桥接链对应的存储资源,适用于需求数据量较大的场景。
[0156]
参考图5,图5是本说明书一示例性实施例示出的另一种基于hyperledger fabric的内部桥接跨链方法的流程图。
[0157]
在上述基于hyperledger fabric的内部桥接跨链方法中,基于hyperledger fabric的区块链系统的具体实现可以参考如图3所示的基于hyperledger fabric的区块链系统,本说明书在此不再赘述。
[0158]
在上述情况下,上述基于hyperledger fabric的内部桥接跨链方法可以应用于与上述服务提供方对应的客户端,并且可以包括以下步骤:
[0159]
步骤501,获取与所述数据需求方对应的需求数据的数据标识;
[0160]
步骤502,基于所述数据标识构造构造第一跨链拷贝交易;
[0161]
步骤503,将所述第一跨链拷贝交易发布至所述桥接链,触发所述桥接链中的peer节点响应于所述第一跨链拷贝交易,将与所述数据标识对应的所述需求数据,从所述第一业务子链跨链拷贝至所述桥接链;
[0162]
步骤504,基于所述数据标识构造构造第二跨链拷贝交易;
[0163]
步骤505,将所述第二跨链拷贝交易发布至所述第二业务子链,触发所述第二业务子链中的peer节点响应于所述第二跨链拷贝交易,将与所述数据标识对应的所述需求数据,从所述桥接链跨链拷贝至所述第二业务子链,以使与所述数据需求方对应的客户端从所述第二业务子链中获取到所述需求数据。
[0164]
上述上述基于hyperledger fabric的内部桥接跨链方法的具体实现可以参考如图3所示的基于hyperledger fabric的内部桥接跨链方法,本说明书在此不再赘述。
[0165]
在上述技术方案中,可以在基于hyperledger fabric的区块链系统中,将数据提供方和数据需求方放置在不同的业务子链中,并且通过跨链拷贝的方式,将与数据需求方对应的需求数据,从数据提供方所在的业务子链中跨链拷贝至数据需求方所在的业务子链,从而可以实现数据的按需共享,而无需将全部数据都提供给数据需求方,因此,可以更好地控制数据隐私,细化数据隐私的保护粒度,提高数据的安全性。此外,在新的数据需求方加入该区块链系统时,只需要为新的数据需求方创建新的业务子链即可,而无需对数据提供方所在的业务子链进行更新。
[0166]
与前述基于hyperledger fabric的内部桥接跨链方法的实施例相对应,本说明书还提供了基于hyperledger fabric的内部桥接跨链装置的实施例。
[0167]
本说明书基于hyperledger fabric的内部桥接跨链装置的实施例可以应用在电子设备上。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在电子设备的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图6所示,为本说明书基于hyperledger fabric的内部桥接跨链装置所在电子设备的一种硬件结构图,除了如图6所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的电子设备通常根据该基于hyperledger fabric的内部桥接跨链的实际功能,还可以包括其他硬件,对此不再赘述。
[0168]
参考图7,图7是本说明书一示例性实施例示出的一种基于hyperledger fabric的内部桥接跨链装置的框图。
[0169]
其中,基于hyperledger fabric的区块链系统包括与若干通道对应的若干子链;所述若干子链包括桥接链、第一业务子链和第二业务子链;所述桥接链包括与跨链服务的服务提供方对应的第一peer节点和第二peer节点;所述第一业务子链包括所述第一peer节点,和与数据提供方对应的peer节点;所述第二业务子链包括所述第二peer节点,和与数据需求方对应的peer节点。
[0170]
上述基于hyperledger fabric的内部桥接跨链装置可以应用于如图6所示的电子设备;该电子设备可以作为与所述服务提供方对应的客户端;该基于hyperledger fabric的内部桥接跨链装置可以包括:
[0171]
第一获取模块701,用于获取与所述数据需求方对应的需求数据的数据标识;
[0172]
第二获取模块702,用于从所述第一业务子链中获取与所述数据标识对应的所述需求数据的数据原文和数据摘要;
[0173]
第一存证模块703,用于将基于所述数据摘要构造的跨链消息头发布至所述桥接链进行存证;
[0174]
构造模块704,用于针对基于所述数据原文构造的跨链消息体,基于所述跨链消息体构造存证交易;
[0175]
第二存证模块705,用于将所述存证交易发布至所述第二业务子链,触发所述第二业务子链中的peer节点响应于所述存证交易,将所述跨链消息头从所述桥接链跨链拷贝至所述第二业务子链,并基于所述第二业务子链中存证的所述跨链消息头,对所述跨链消息体进行校验,在所述跨链消息体校验通过后,将所述跨链消息体中的所述需求数据发布至所述第二业务子链进行存证,以使与所述数据需求方对应的客户端从所述第二业务子链中获取到所述需求数据。
[0176]
参考图8,图8是本说明书一示例性实施例示出的另一种基于hyperledger fabric的内部桥接跨链装置的框图。
[0177]
其中,基于hyperledger fabric的区块链系统包括与若干通道对应的若干子链;所述若干子链包括桥接链、第一业务子链和第二业务子链;所述桥接链包括与跨链服务的服务提供方对应的第一peer节点和第二peer节点;所述第一业务子链包括所述第一peer节点,和与数据提供方对应的peer节点;所述第二业务子链包括所述第二peer节点,和与数据需求方对应的peer节点。
[0178]
上述基于hyperledger fabric的内部桥接跨链装置可以应用于如图6所示的电子
设备;该电子设备可以作为与所述服务提供方对应的客户端;该基于hyperledger fabric的内部桥接跨链装置可以包括:
[0179]
获取模块801,用于获取与所述数据需求方对应的需求数据的数据标识;
[0180]
第一构造模块802,用于基于所述数据标识构造构造第一跨链拷贝交易;
[0181]
第一跨链模块803,用于将所述第一跨链拷贝交易发布至所述桥接链,触发所述桥接链中的peer节点响应于所述第一跨链拷贝交易,将与所述数据标识对应的所述需求数据,将所述第一业务子链中的与所述数据标识对应的所述需求数据,从所述第一业务子链跨链拷贝至所述桥接链;
[0182]
第二构造模块804,用于基于所述数据标识构造构造第二跨链拷贝交易;
[0183]
第二跨链模块805,用于将所述第二跨链拷贝交易发布至所述第二业务子链,触发所述第二业务子链中的peer节点响应于所述第二跨链拷贝交易,将与所述数据标识对应的所述需求数据,从所述桥接链跨链拷贝至所述第二业务子链,以使与所述数据需求方对应的客户端从所述第二业务子链中获取到所述需求数据。
[0184]
上述装置中各个模块的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
[0185]
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本说明书方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
[0186]
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
[0187]
在一个典型的配置中,计算机包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。
[0188]
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flash ram)。内存是计算机可读介质的示例。
[0189]
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带、磁盘存储、量子存储器、基于石墨烯的存储介质或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),
如调制的数据信号和载波。
[0190]
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
[0191]
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
[0192]
在本说明书一个或多个实施例使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
[0193]
应当理解,尽管在本说明书一个或多个实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在
……
时”或“当
……
时”或“响应于确定”。
[0194]
以上所述仅为本说明书一个或多个实施例的较佳实施例而已,并不用以限制本说明书一个或多个实施例,凡在本说明书一个或多个实施例的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书一个或多个实施例保护的范围之内。
再多了解一些

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

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

相关文献