CN116455900A - 一种跨子网交互方法及装置、区块链系统 - Google Patents
一种跨子网交互方法及装置、区块链系统 Download PDFInfo
- Publication number
- CN116455900A CN116455900A CN202310494437.4A CN202310494437A CN116455900A CN 116455900 A CN116455900 A CN 116455900A CN 202310494437 A CN202310494437 A CN 202310494437A CN 116455900 A CN116455900 A CN 116455900A
- Authority
- CN
- China
- Prior art keywords
- node
- blockchain
- subnet
- message
- network
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 121
- 230000003993 interaction Effects 0.000 title claims abstract description 40
- 230000002776 aggregation Effects 0.000 claims abstract description 41
- 238000004220 aggregation Methods 0.000 claims abstract description 41
- 230000008569 process Effects 0.000 claims description 46
- 238000012545 processing Methods 0.000 claims description 31
- 230000006854 communication Effects 0.000 claims description 18
- 238000004891 communication Methods 0.000 claims description 18
- 238000003860 storage Methods 0.000 claims description 17
- 230000004044 response Effects 0.000 claims description 13
- 238000013507 mapping Methods 0.000 claims description 5
- 230000006870 function Effects 0.000 description 20
- 230000006855 networking Effects 0.000 description 18
- 238000010586 diagram Methods 0.000 description 17
- 230000005540 biological transmission Effects 0.000 description 13
- 238000005516 engineering process Methods 0.000 description 9
- 230000007246 mechanism Effects 0.000 description 9
- 238000012544 monitoring process Methods 0.000 description 9
- 238000004590 computer program Methods 0.000 description 8
- 230000001934 delay Effects 0.000 description 8
- 230000006872 improvement Effects 0.000 description 8
- 238000010276 construction Methods 0.000 description 6
- 238000004364 calculation method Methods 0.000 description 5
- 230000008901 benefit Effects 0.000 description 4
- 238000004422 calculation algorithm Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000014759 maintenance of location Effects 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 239000003999 initiator Substances 0.000 description 2
- 230000000977 initiatory effect Effects 0.000 description 2
- 238000002955 isolation Methods 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 238000012795 verification Methods 0.000 description 2
- OKTJSMMVPCPJKN-UHFFFAOYSA-N Carbon Chemical compound [C] OKTJSMMVPCPJKN-UHFFFAOYSA-N 0.000 description 1
- 108010001267 Protein Subunits Proteins 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 230000007175 bidirectional communication Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 239000007795 chemical reaction product Substances 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000008034 disappearance Effects 0.000 description 1
- 229910021389 graphene Inorganic materials 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 239000012466 permeate Substances 0.000 description 1
- 229920001296 polysiloxane Polymers 0.000 description 1
- 239000000047 product Substances 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 239000010979 ruby Substances 0.000 description 1
- 229910001750 ruby Inorganic materials 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/104—Peer-to-peer [P2P] networks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D30/00—Reducing energy consumption in communication networks
- Y02D30/50—Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本说明书提供一种跨子网交互方法及装置、区块链系统。所述方法应用于由区块链主网及其所管理的多个区块链子网构成的区块链系统,所述区块链子网中的子网节点与其所处节点设备中部署的主网节点相对应;该方法包括:针对待从源区块链子网中的源子网节点传输至相应的目标子网节点的n个消息内容,第一节点设备确定所述n个消息内容一一对应的n条转发路径,其中,任一目标子网节点所处的目标区块链子网区别于所述源区块链子网,n≥2;第一节点设备若确定自身在所述n条转发路径上具有相同的下一跳节点设备,则将基于所述n个消息内容构建的下一级聚合消息转发至该下一跳节点设备。
Description
技术领域
本说明书实施例属于区块链技术领域,尤其涉及一种跨子网交互方法及装置、区块链系统。
背景技术
区块链(Blockchain)是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链系统中按照时间顺序将数据区块以顺序相连的方式组合成链式数据结构,并以密码学方式保证的不可篡改和不可伪造的分布式账本。由于区块链具有去中心化、信息不可篡改、自治性等特性,区块链也受到人们越来越多的重视和应用。例如,区块链系统中分别对应不同用户的多个区块链节点,可以基于同态加密、零知识证明等隐私技术针对某一节点的私有数据进行安全多方计算(Secure Multi-PartyComputation,SMPC)等。
在一些区块链网络中,部分节点有时存在实现小范围交易的需求,以避免其他节点获得这些交易及其相关数据,因此可以在区块链主网的基础上进一步建立区块链子网。由于不同区块链子网之间相互隔离,不存在直接相连的网络链路,但各区块链子网之间又存在信息共享与数据交互的需求,对此,为了使相互隔离的区块链子网之间能够进行高效的数据交互,相关技术中提出通过区块链主网实现的跨链消息交互方案。
在相关技术中,源区块链子网中的任一源子网节点在向目标区块链子网中的目标子网节点发送跨链消息时,通常需要构建跨链消息,并利用区块链主网中主网节点之间建立的网络连接将所述跨链消息传输至相应的目标子网节点。
发明内容
本发明的目的在于提供一种跨子网交互方法及装置、区块链系统。
根据本说明书一个或多个实施例的第一方面,提出了一种跨子网交互方法,应用于由区块链主网及其所管理的多个区块链子网构成的区块链系统,所述区块链子网中的子网节点与其所处节点设备中部署的主网节点相对应;所述方法包括:
针对待从源区块链子网中的源子网节点传输至相应的目标子网节点的n个消息内容,第一节点设备确定所述n个消息内容一一对应的n条转发路径,其中,任一目标子网节点所处的目标区块链子网区别于所述源区块链子网,n≥2;
第一节点设备若确定自身在所述n条转发路径上具有相同的下一跳节点设备,则将基于所述n个消息内容构建的下一级聚合消息转发至该下一跳节点设备。
根据本说明书一个或多个实施例的第二方面,提出了一种区块链系统,所述区块链系统由区块链主网及其所管理的多个区块链子网构成,所述区块链子网中的子网节点与其所处节点设备中部署的主网节点相对应;其中,任一主网节点所处的第一节点设备用于:
针对待从源区块链子网中的源子网节点传输至相应的目标子网节点的n个消息内容,确定所述n个消息内容一一对应的n条转发路径,其中,任一目标子网节点所处的目标区块链子网区别于所述源区块链子网,n≥2;
若确定第一节点设备在所述n条转发路径上具有相同的下一跳节点设备,则将基于所述n个消息内容构建的下一级聚合消息转发至该下一跳节点设备。
根据本说明书一个或多个实施例的第三方面,提出了一种跨子网交互装置,应用于由区块链主网及其所管理的多个区块链子网构成的区块链系统,所述区块链子网中的子网节点与其所处节点设备中部署的主网节点相对应;所述装置包括:
路径确定单元,用于针对待从源区块链子网中的源子网节点传输至相应的目标子网节点的n个消息内容,由第一节点设备确定所述n个消息内容一一对应的n条转发路径,其中,任一目标子网节点所处的目标区块链子网区别于所述源区块链子网,n≥2;
聚合转发单元,用于由第一节点设备若确定自身在所述n条转发路径上具有相同的下一跳节点设备,则将基于所述n个消息内容构建的下一级聚合消息转发至该下一跳节点设备。
根据本说明书一个或多个实施例的第四方面,提出了一种电子设备,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器通过运行所述可执行指令以实现如第一方面中任一项所述的方法。
根据本说明书一个或多个实施例的第五方面,提出了一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现如第一方面中任一项所述方法的步骤。
上述实施例中,对于待从源区块链子网中的源子网节点传输至相应的目标子网节点的n(n≥2)个消息内容而言,第一节点设备可以是这些消息内容的转发路径所经过的任一节点设备,该节点设备可以确定所述n个消息内容一一对应的n条转发路径。进而,若确定自身(即第一节点设备)在所述n条转发路径上具有相同的下一跳节点设备,则将基于所述n个消息内容构建的下一级聚合消息转发至该下一跳节点设备。
可以理解的是,任一消息内容会被其对应的转发路径上的各个节点设备依次转发,直至最后一个节点设备。而针对所述n个消息内容一一对应的n条转发路径,第一节点设备在所述n条转发路径上具有相同的下一跳节点设备,即表明第一节点设备需要将所述n个消息内容均传输至该下一跳节点设备。此时,通过基于所述n个消息内容构建下一级聚合消息,并由第一节点设备将该聚合消息转发至该下一跳节点设备的方式,实现了对这n个消息内容的聚合传输。换言之,第一节点设备只需要转发一个消息(即所述聚合消息)即可将所述n个消息内容一次性传输至下一跳节点设备,相对于相关技术中需要分别转发包含相应消息内容的n个跨链消息的方式,大大减少了第一节点设备需要转发的消息数量。可见,在源区块链子网中的源子网节点通过节点设备之间的网络连接向目标区块链子网中的目标子网节点发送跨链消息的场景下,本方案可以根据转发路径对多个跨链消息进行聚合,以减少节点设备之间实际需要转发的消息数量,从而尽量避免因消息数量过多可能导致的网络拥堵甚至故障,有助于提升跨链消息的转发效率,提升区块链系统的稳定性。
附图说明
为了更清楚地说明本说明书实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是一示例性实施例提供的一种基于区块链主网组建区块链子网的示意图。
图2是一示例性实施例提供的一种跨链交互的应用场景图。
图3是一示例性实施例提供的一种跨子网交互的应用场景图。
图4是一示例性实施例提供的一种跨子网交互方法的流程图。
图5是一示例性实施例提供的一种跨子网交互过程的示意图。
图6是一示例性实施例提供的一种设备的结构示意图。
图7是一示例性实施例提供的一种跨子网交互装置的框图。
具体实施方式
为了使本技术领域的人员更好地理解本说明书中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本说明书保护的范围。
由于区块链网络的去中心化特性,使得区块链网络中的所有区块链节点均会维护相同的区块数据,无法满足部分节点的特殊需求。以联盟链为例,所有联盟成员(即联盟内的节点成员)可以组成一区块链网络,所有联盟成员在该区块链网络中分别存在对应的区块链节点,并可以通过对应的区块链节点获得该区块链网络上发生的所有交易和相关数据。但在一些情况下,可能存在部分联盟成员希望完成一些具有保密需求的交易,这些联盟成员既希望这些交易能够在区块链上存证或借助于区块链技术的其他优势,又能够避免其他联盟成员查看到这些交易和相关数据。虽然这些联盟成员可以额外组建一新的区块链网络,其建立方式与上述包含所有联盟成员的区块链网络类似,但是从头开始建立一条新的区块链网络需要消耗大量的资源,且无论是该区块链网络的建立过程或是建成后的配置过程都非常耗时。联盟成员之间的需求往往是临时的或者具有一定的时效性,使得新建的区块链网络很快就会由于需求消失而失去存在的意义,从而进一步增加了上述区块链网络的建链成本。而联盟成员之间的需求经常会变化,而每一需求所对应的联盟成员也往往不同,因而每当联盟成员发生变化时就可能需要组建一新的区块链网络,从而造成资源和时间的大量浪费。
为此,可以将已组建的区块链网络作为区块链主网,并在该区块链主网的基础上组建区块链子网。那么,在诸如上述的联盟链场景下,联盟成员可以在已经参与区块链主网的情况下,基于自身需求而在区块链主网的基础上组建所需的区块链子网。由于区块链子网是在区块链主网的基础上所建立,使得区块链子网的组建过程相比于完全独立地组建一条区块链网络,所消耗的资源和所需的耗时等都极大地降低,灵活性极高。
基于区块链主网快捷组建区块链子网的过程如下:区块链主网中的各区块链节点分别获取组建区块链子网的交易,所述交易包含所述区块链子网的配置信息,所述配置信息包括参与组建所述区块链子网的节点成员的身份信息,所述区块链主网中的各区块链节点分别执行所述交易以透出所述配置信息,当所述配置信息包含第一区块链节点对应的节点成员的身份信息时,部署第一区块链节点的节点设备基于所述包含所述配置信息的创世块启动属于所述区块链子网的第二区块链节点。
以图1所示为例,区块链主网为mainnet,该mainnet包含的区块链节点为nodeA、nodeB、nodeC、nodeD和nodeE等。假定nodeA、nodeB、nodeC和nodeD希望组建一区块链子网:如果nodeA为管理员且仅允许管理员发起组建区块链子网的交易,那么可由nodeA向mainnet发起上述组建区块链子网的交易;如果nodeE为管理员且仅允许管理员发起组建区块链子网的交易,那么nodeA~nodeD需要向nodeE进行请求,使得nodeE向mainnet发起上述组建区块链子网的交易;如果nodeE为管理员但允许普通用户发起组建区块链子网的交易,那么nodeA~nodeE均可以向mainnet发起上述组建区块链子网的交易。当然,不论是管理员或者普通用户,发起组建区块链子网的交易的区块链节点并不一定参与所组建的区块链子网,比如虽然最终由nodeA、nodeB、nodeC和nodeD组建区块链子网,但可由nodeE向mainnet发起上述组建区块链子网的交易,而并不一定由nodeA~nodeD来发起该组建区块链子网的交易。
在区块链主网的基础上组建区块链子网时,容易理解的是,会使得该区块链子网与区块链主网之间存在逻辑上的层次关系。比如在图1所示的mainnet上组建区块链子网subnet1时,可以认为mainnet处于第一层、subnet1处于第二层。一种情况下,本说明书中的区块链主网可以为底层区块链网络,即区块链主网并非在其他区块链网络的基础上组建的区块链子网,比如图1中的mainnet可以认为属于底层区块链网络类型的区块链主网。另一种情况下,本说明书中的区块链主网也可以为其他区块链网络的子网,比如可以在图1中subnet1的基础上进一步组建另一区块链子网,此时可以认为subnet1为该区块链子网对应的区块链主网,而这并不影响该subnet1同时属于mainnet上创建的区块链子网。可见,区块链主网与区块链子网实际上是相对概念,同一区块链网络在一些情况下可以为区块链主网、另一些情况下可以为区块链子网。
上述组建区块链子网的交易在被发送至区块链主网后,由区块链主网内的共识节点进行共识,并在通过共识后由各主网节点执行该交易,以完成区块链子网的组建。共识过程取决于所采用的共识机制,本说明书并不对此进行限制。
通过在上述组建区块链子网的交易中包含配置信息,该配置信息可以用于对所组建的区块链子网进行配置,使得组建的区块链子网符合组网需求。例如,通过在配置信息中包含节点成员的身份信息,可以指定组建的区块链子网包含哪些区块链节点。
节点成员的身份信息可以包括节点的公钥,或者采用节点ID等其他能够表征节点身份的信息,本说明书并不对此进行限制。以公钥为例,每个区块链节点都存在对应的一组或多组公私钥对,由区块链节点持有私钥而公钥被公开且唯一对应于该私钥,因而可以通过公钥来表征相应区块链节点的身份。因此,对于希望作为区块链子网的节点成员的区块链节点,可以将这些区块链节点的公钥添加至上述组建区块链子网的交易中,以作为上述节点成员的身份信息。上述的公私钥对可以用于签名验证的过程。例如,在采用有签名的共识算法中,譬如subnet1上述的nodeA1采用自身维护的私钥对消息进行签名后,将经过签名的消息在subnet1中广播,而nodeB1、nodeC1和nodeD1可以用nodeA1的公钥对收到的消息进行签名验证,以确认自身收到的消息确实来自nodeA1且没有经过篡改。
第一主网节点可以为区块链主网上属于配置信息所指示的节点成员的区块链节点。在组建区块链子网时,并非由第一主网节点直接参与组建区块链子网、成为其节点成员,而是需要由用于部署该第一主网节点的节点设备生成第一子网节点,并由第一子网节点成为区块链子网中的节点成员。第一主网节点和第一子网节点对应于同一个区块链成员,比如在联盟链场景下对应于同一联盟链成员,但第一主网节点属于区块链主网、第一子网节点属于区块链子网,使得该区块链成员可以分别参与到区块链主网和区块链子网的交易中;并且,由于区块链主网和区块链子网属于相互独立的两个区块链网络,使得第一主网节点生成的区块与第一子网节点生成的区块分别存入所述节点设备上的不同存储(采用的存储譬如可以为数据库),实现了第一主网节点与第一子网节点分别使用的存储之间的相互隔离,因而区块链子网所产生的数据仅会在区块链子网的节点成员之间同步,使得仅参与了区块链主网的区块链成员无法获得区块链子网上产生的数据,实现了区块链主网与区块链子网之间的数据隔离,满足了部分区块链成员(即参与区块链子网的区块链成员)之间的交易需求。
可见,第一主网节点和第一子网节点是在逻辑上划分出来的区块链节点,而从节点部署方的角度来说,相当于上述部署了第一主网节点和第一子网节点的节点设备同时参与了区块链主网和区块链子网。由于区块链主网与区块链子网之间相互独立,使得这两个区块链网络的身份体系也相互独立,因而即便第一主网节点和第一子网节点可以采用完全相同的公钥,仍然应当将两者视为不同的区块链节点。譬如在图1中,mainnet中的nodeA相当于第一主网节点,而部署该nodeA的节点设备生成了属于subnet1的nodeA1,该nodeA1相当于第一子网节点。可见,由于身份体系相互独立,所以即便第一子网节点所采用的公钥区别于第一主网节点,也不影响本说明书方案的实施。其中,本说明书所述的节点设备既可以为独立的物理设备,或者也可以为虚拟机或云服务提供的云端设备等,OOO。
当然,区块链子网的节点成员并不一定只是区块链主网的部分节点成员。在一些情况下,区块链子网的节点成员可以与区块链主网的节点成员完全一致,此时所有的区块链成员都可以获得区块链主网和区块链子网上的数据,但是区块链主网与区块链子网所产生的数据依然可以相互隔离,比如可以通过在区块链主网上实现一类服务、在区块链子网上实现另一类服务,从而可以使得这两类服务分别产生的服务数据之间相互隔离。
除了上述的节点成员的身份信息之外,配置信息还可以包括下述至少之一:所述区块链子网的网络标识、所述区块链子网的管理员的身份信息、针对区块链平台代码的属性配置等,本说明书并不对此进行限制。网络标识用于唯一表征该区块链子网,因而该区块链子网的网络标识应当区别于区块链主网和该区块链主网上组建的其他区块链子网。区块链子网的管理员的身份信息,譬如可以为作为管理员的节点成员的公钥;其中,区块链主网与区块链子网的管理员可以相同,也可以不同。
通过区块链主网来组建区块链子网的优势之一,就是由于生成第一子网节点的节点设备上已经部署了第一主网节点,因而可以将第一主网节点所使用的区块链平台代码复用在第一子网节点上,免去了区块链平台代码的重复部署,极大地提高了区块链子网的组建效率。那么,如果配置信息中未包含针对区块链平台代码的属性配置,第一子网节点可以复用第一主网节点上采用的属性配置;如果配置信息中包含了针对区块链平台代码的属性配置,第一子网节点可以采用该属性配置,使得第一子网节点所采用的属性配置不受限于第一主网节点的属性配置、与第一主网节点无关。针对区块链平台代码的属性配置可以包括下述至少之一:代码版本号、是否需要共识、共识算法类型、区块大小等,本说明书并不对此进行限制。
组建区块链子网的交易包括调用合约的交易。该交易中可以指明被调用的智能合约的地址、调用的方法和传入的参数。例如,调用的合约可以为前述的创世合约或系统合约,调用的方法可以为组建区块链子网的方法,传入的参数可以包括上述的配置信息。在一实施例中,该交易可以包含如下信息:
from:Administrator
to:Subnet
method:AddSubnet(string)
string:genesis
其中,from字段为该交易的发起方的信息,譬如Administrator表明该发起方为管理员;to字段为被调用的智能合约的地址,譬如该智能合约可以为Subnet合约,则to字段具体为该Subnet合约的地址;method字段为调用的方法,譬如在Subnet合约中用于组建区块链子网的方法可以为AddSubnet(string),而string为AddSubnet()方法中的参数,上述示例中通过genesis表征该参数的取值,该genesis具体为前述的配置信息。
以mainnet上的节点nodeA~nodeE执行调用Subnet合约中AddSubnet()方法的交易为例。在交易通过共识后,nodeA~nodeE分别执行AddSubnet()方法并传入配置信息,得到相应的执行结果。
区块链网络中的节点在执行调用智能合约的交易后,会生成相应的收据(receipt),以用于记录与执行该智能合约相关的信息。这样,可以通过查询交易的收据来获得合约执行结果的相关信息。合约执行结果可以表现为收据中的事件(event)。消息机制可以通过收据中的事件实现消息传递,以触发区块链节点执行相应的处理。事件的结构譬如可以为:
Event:
[topic][data]
[topic][data]
......
在上述示例中,事件的数量可以为一个或多个;其中,每个事件分别包括主题(topic)和数据(data)等字段。区块链节点可以通过监听事件的topic,从而在监听到预定义的topic的情况下,执行预设处理,或者从相应事件的data字段读取相关内容,以及可以基于读取的内容执行预设处理。
上述的事件机制中,相当于在监听方(比如存在监听需求的用户)处存在具有监听功能的客户端,譬如该客户端上运行了用于实现监听功能的SDK等,由该客户端对区块链节点产生的事件进行监听,而区块链节点只需要正常生成收据即可。除了上述的事件机制之外,还可以通过其他方式实现交易信息的透出。例如,可以通过在区块链节点运行的区块链平台代码中嵌入监听代码,使得该监听代码可以监听区块链交易的交易内容、智能合约的合约状态、合约产生的收据等其中的一种或多种数据,并将监听到的数据发送至预定义的监听方。由于监听代码部署于区块链平台代码中,而非监听方的客户端处,因而相比于事件机制而言,这种基于监听代码的实现方式相对更加的主动。其中,上述的监听代码可以由区块链平台的开发人员在开发过程中加入区块链平台代码,也可以由监听方基于自身的需求而嵌入,本说明书并不对此进行限制。
可见,上述Subnet合约的执行结果可以包括所述配置信息,该执行结果可以处于前文所述的收据中,该收据中可以包含与执行AddSubnet()方法相关的event,即组网事件。组网事件的topic可以包含预定义的组网事件标识,以区别于其他的事件。譬如在与执行AddSubnet()方法相关的event中,topic的内容为关键词subnet,且该关键词区别于其他方法所产生event中的topic。那么,nodeA~nodeE通过监听生成的收据中各个event所含的topic,可以在监听到包含关键词subnet的topic的情况下,确定监听到与执行AddSubnet()方法相关的event,即组网事件。例如,收据中的event如下:
Event:
[topic:other][data]
[topic:subnet][data]
......
那么,nodeA~nodeE在监听到第1条event时,由于所含topic的内容为other,确定该event与AddSubnet()方法无关;以及,nodeA~nodeE在监听到第2条event时,由于所含topic的内容为subnet,确定该event与AddSubnet()方法相关,并进而读取该event对应的data字段,该data字段包含上述的配置信息。以配置信息包括区块链子网的节点成员的公钥为例,data字段的内容例如可以包括:
{subnet1;
nodeA的公钥,nodeA的IP、nodeA的端口号…;
nodeB的公钥,nodeB的IP、nodeB的端口号…;
nodeC的公钥,nodeC的IP、nodeC的端口号…;
nodeD的公钥,nodeD的IP、nodeD的端口号…;
}
其中,subnet1为希望创建的区块链子网的网络标识。区块链主网中的各个区块链节点可以记录该区块链主网上已创建的所有区块链子网的网络标识,或者与这些区块链子网相关的其他信息,这些信息譬如可以维护在上述的Subnet合约中,具体可以对应于该Subnet合约所含的一个或多个合约状态的取值。那么,nodeA~nodeE可以根据记录的已创建的所有区块链子网的网络标识,确定上述的subnet1是否已经存在;如果不存在,说明subnet1是当前需要创建的新区块链子网,如果存在则说明subnet1已经存在。
除了采用希望创建的新的区块链子网的网络标识之外,还可以采用预定义的新建网络标识,该新建网络标识表明相应的组网事件用于组建新的区块链子网。例如,可以将上述的subnet1替换为newsubnet,该newsubnet为预定义的新建网络标识,nodeA~nodeE在识别到data字段包含newsubnet时,即可确定包含该newsubnet的event为组网事件,需要创建新的区块链子网。
除了网络标识subnet1之外,上述data字段中还包含各个节点成员的身份信息等内容。部署第一主网节点的节点设备可以监听生成的收据,并在监听到所述组网事件且所述组网事件的内容表明第一主网节点属于所述节点成员的情况下,由部署第一主网节点的节点设备获取所述组网事件包含的配置信息或创世块。或者,第一区块链节点可以监听生成的收据,并在监听到所述组网事件且所述组网事件的内容表明第一区块链节点属于所述节点成员的情况下,触发部署第一区块链节点的节点设备获取所述组网事件包含的所述配置信息或所述创世块。
如前所述,节点设备可以直接监听收据。假定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中的区块链节点。
如前所述,区块链主网中的区块链节点可以监听收据,并根据监听结果触发节点设备执行相关处理。例如,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中的节点。
如前所述,第一主网节点与第一子网节点并不一定采用相同的身份信息。因此,在上述实施例中,data字段中可以包含预先为nodeA1~nodeD1生成的身份信息,且区别于nodeA~nodeD的身份信息。仍以nodeA和节点设备1为例:节点设备1如果在data字段中发现了nodeA1的身份信息,可以生成创世块、部署nodeA1,并由nodeA1加载该创世块;或者,nodeA如果在data字段中发现了nodeA1的身份信息,那么nodeA会触发节点设备1生成创世块、部署nodeA1,并由nodeA1加载该创世块。其他区块链节点或节点设备的处理方式类似,此处不再一一赘述。
除了配置信息之外,合约的执行结果可以包括创世块。换言之,除了可以在data字段中包含配置信息,还可以直接在执行合约调用的过程中生成包含配置信息的创世块,从而将创世块包含于data字段中,那么对于上述的nodeA~nodeD而言,相应的节点设备1~4可以通过消息机制直接从data字段获得创世块,而无需自行生成,可以提升对nodeA1~nodeD1的部署效率。
节点设备通过在该进程中创建一个运行区块链平台代码的实例,实现在该节点设备上部署一区块链节点。对于第一主网节点而言,由节点设备在上述进程中创建第一实例,并由该第一实例运行区块链平台代码而形成。类似地,对于第一子网节点而言,由节点设备在上述进程中创建区别于第一实例的第二实例,并由该第二实例运行区块链平台代码而形成。例如,节点设备可以首先在进程中创建第一实例,以形成区块链主网中的第一区块链节点;而当该节点设备对应的节点成员希望参与组建区块链子网时,可以在上述进程中创建第二实例,该第二实例区别于上述的第一实例,并由该第二实例形成区块链子网中的第二区块链节点。当第一实例与第二实例位于同一进程时,由于不涉及跨进程交互,可以降低对第一子网节点的部署难度、提高部署效率;当然,第二实例也可能与第一实例分别处于节点设备上的不同进程中,本说明书并不对此进行限制;例如,节点设备可以在第一进程中创建第一实例,以形成区块链主网中的第一区块链节点;而当该节点设备对应的节点成员希望参与组建区块链子网时,可以启动区别于第一进程的第二进程,并在该第二进程中创建第二实例,该第二实例区别于上述的第一实例,进而由该第二实例形成区块链子网中的第二区块链节点。事实上,本说明书实施例中涉及的任一节点设备上部署的各区块链节点均为运行在所述任一节点设备上的不同的区块链实例,任一节点设备上部署的各区块链节点生成的区块分别存入所述任一节点设备上的不同存储(例如数据库),且任一节点设备部署的各区块链节点分别使用的存储之间相互隔离。
通过上述方式,可以在区块链主网上创建出区块链子网。以图1为例,mainnet原本包含nodeA~nodeE,而在mainnet的基础上可以组建出subnet1,该subnet1包含nodeA1~nodeD1,且nodeA与nodeA1、nodeB与nodeB1、nodeC与nodeC1、nodeD与nodeD1分别部署在同一节点设备上。类似地,还可以在mainnet上组建出subnet2或更多的区块链子网,其中subnet2包含nodeA2、nodeB2、nodeC2和nodeE2,且nodeA与nodeA1、nodeA2,nodeB与nodeB1、nodeB2,nodeC、nodeC1与nodeC2,nodeD与nodeD1,nodeE与nodeE2分别部署在同一节点设备上。以及,可以将subnet1、subnet2等作为新的区块链主网,并在此基础上进一步组建出区块链子网,其过程与subnet1或subnet2的组建相似,此处不再赘述。可见,上述在区块链主网上发起交易选取节点成员以创建区块链子网的方式,可以使得新创建的区块链子网的子网节点均部署在区块链主网的主网节点所在的节点设备上,也就是从节点设备的角度上来说,区块链子网的子网节点所在的节点设备属于主网节点所在节点设备的子集,换言之,部署有区块链子网的子网节点所处的节点设备上部署有区块链主网中的主网节点。
除了通过上述在区块链主网上发起交易选取节点成员以创建区块链子网的方式,还可以通过其他手段创建区块链子网,并使得其受到区块链主网的管理。例如,可以通过注册方式在区块链主网上组建区块链子网(后续简称注册组网方式),将现有区块链网络直接注册至区块链主网,使新注册的区块链网络受到区块链主网的管理,从而使得新注册的区块链网络成为区块链主网的区块链子网。通过注册组网方式,待组建区块链子网的子网信息被直接注册至区块链主网,使得区块链主网获取待组建区块链子网的相关信息(通过接收并执行待组建区块链网络发出的、用于将其身份信息与分配至该待组建区块链网络的子网标识进行关联存证的交易),例如待组建区块链子网的子网标识和运行状态,其中各节点成员的公钥和插件配置信息、各节点设备的IP地址和端口信息等,这些信息会被写入区块链主网对应的系统合约的合约状态中,由此区块链主网将获取该待组建区块链子网的管理权,在完成注册后,便意味着区块链子网组建完成。由于注册组网方式并不需要通过交易在区块链主网上指定节点成员构成区块链子网,因此通过注册组网方式组建的区块链子网中的子网节点可以与部署在区块链主网中各节点的节点设备完全不同或部分不同,例如图1中mainnet以注册组网方式创建了一个subnet4(图1中未示出),假设mainnet自身所包含的主网节点nodeA~nodeE分别部署于节点设备1~5,那么subnet4对应的子网节点可以部署于除节点设备1~5外的其他任意节点设备上,或者,subnet4中的其中一个或多个子网节点分别部署于节点设备1~5内的任意节点设备(但仍需要保证一个节点设备上仅部署subnet4中的一个子网节点),而subnet4中的其他的子网节点部署于除节点设备1~5外的其他任意节点设备上,当然,subnet4中的子网节点也可以均部署于节点设备1~5之中。
首先结合图1和图2对本说明书的跨链交互(亦称跨子网交互)的方案进行简要说明,以用于解释各区块链子网之间是如何在彼此之间没有直接的网络连接通路的情况下,通过区块链主网实现的跨链交互。如图1所示,在区块链主网mainnet的基础上创建有区块链子网subnet1和区块链子网subnet2,而图2所示的即为subnet1和subnet2基于mainnet实现跨链交互的应用场景图。
如图2所示,节点设备3上同时部署有属于mainnet的nodeC和属于subnet1的nodeC1,nodeC和nodeC1具体为节点设备3在本地部署的虚拟机中运行预先部署的区块链平台代码所形成的区块链节点实例(下称区块链节点),而nodeC作为区块链节点在运行过程中的相关数据保存在nodeC对应的数据库中,nodeC1作为另一区块链节点在运行过程中的相关数据则保存在nodeC1对应的数据库中。类似的,节点设备5上同时部署有属于mainnet的nodeE和属于subnet2的nodeE2,其他的节点设备也分别同时部署有多个区块链节点,例如图2中展示的节点设备1就同时部署有属于不同区块链网络的nodeA与nodeA1、nodeA2共三个区块链节点,这里不再赘述。另外,任一节点设备中可以部署有区块链共识代码,节点设备可以运行该共识代码以在本地形成共识组件实例;以及,节点设备中还可以部署有以插件形式管理的P2P组件代码,节点设备可以运行该P2P组件代码以在本地形成P2P组件实例,也即P2P插件,例如图2中节点设备3和节点设备5就均在本地运行有P2P插件,该P2P插件可以被同一节点设备上的不同区块链节点所共享使用,例如节点设备3中nodeC与nodeC1可以调用节点设备3上运行的同一个P2P插件,以共享其功能和数据。节点设备中还部署有区块链服务代码,节点设备可以运行该区块链服务代码以在本地形成服务实例,其中,任一节点设备中可以实现至少一个服务实例,如用于实现数据读/写功能的存储实例、用于实现隐私计算等计算功能的计算实例、用于实现数据加密功能的加密实例等,不再赘述。
以源区块链网络subnet1中的源节点nodeC1向目的区块链网络subnet2中的目的节点nodeE2发送跨链消息为例,来说明本说明书中任一区块链子网中的任一区块链节点与另一区块链网络中的另一区块链节点之间完成跨链交互的过程。在本说明书实施例所涉及的跨链场景中,源区块链网络中各源节点和目的区块链网络中的各目的节点所处的节点设备上均分别部署有区块链主网中的主网节点,subnet1中nodeC1所属的节点设备3上还部署有主网节点nodeC,subnet2中nodeE2所属的节点设备5上还部署有主网节点nodeE,虽然subnet1和subnet2之间不存在直接的网络连接链路,但由于节点设备3上部署的nodeC和节点设备5上部署的nodeE之间已经预先建立有形成mainnet时所实现的网络连接链路,该网络连接链路可以使节点设备3与节点设备5进行相互通讯,具体而言,形成mainnet时所实现的网络连接链路即为mainnet中各共识节点之间建立的用于共识交易的共识链路和/或用于同步区块的同步链路,因此,nodeC1可以通过nodeC与nodeE之间建立的网络连接链路,从而将跨链消息发送至从节点设备3发送至节点设备5。
在本说明书实施例中,同一节点设备上的主网节点和子网节点共享该节点设备上运行的区块链通讯插件,例如前述的P2P插件,而上述形成mainnet时所实现的网络连接链路具体是通过nodeC和nodeE分别采用节点设备3和节点设备5上的P2P插件所建立,由于节点设备上的P2P插件可以被该节点设备上各个区块链节点所共享,因此subnet1中的nodeC1可以通过调用节点设备3本地运行的P2P插件,借助形成mainnet时所实现的节点设备3与节点设备5之间基于P2P插件的网络连接,建立与nodeE2所属节点设备5上运行的P2P插件之间的网络连接,由此将跨链消息发送至节点设备5,从而进一步实现与nodeE2之间的网络通讯,使得源区块链网络与目的区块链网络之间无需建立新的网络连接链路,而是通过底层区块链主网预先建立的网络连接链路,实现源区块链网络中源节点与目的区块链网络中目的节点之间的网络通讯。
subnet1中的各节点在实现服务功能的过程中可能需要使用subnet2中各节点保存的数据,从而subnet1可以向subnet2请求获取该数据,在通过本说明书所述的跨链交互方案获取数据的过程中,其中nodeC1和nodeC部署在节点设备3中,nodeE2和nodeE部署在节点设备5中,而其余区块链节点则分别部署在其他节点设备中。如subnet1可以向subnet2发送跨链请求,以期获取subnet2的节点数据库中保存的特定合约中特定字段的合约状态。可以理解的是,“subnet1向subnet2发送跨链请求”即为“subnet1中的子网节点(即源节点)向subnet2中的子网节点(即目的节点)发送跨链请求”。
具体的,subnet1中的任一节点可以在跨链请求中封装目的区块链网络subnet2的网络标识,通过调用节点设备本地部署且与mainnet中主网节点共享的P2P插件,将所述跨链请求通过mainnet的网络连接链路广播至部署有主网节点的各节点设备上运行的P2P插件。在一实施例中,若subnet1中的nodeA1通过节点设备1上的P2P插件发出跨链请求,那么其他部署有主网节点的节点设备2~5均将收到该跨链请求,例如,节点设备5上的P2P插件在接收到该跨链请求后,将根据所述跨链请求携带的所述网络标识判断节点设备5本地是否部署有该网络标识对应区块链网络中的区块链节点,显然,节点设备5上部署有subnet2中的nodeE2,因此,节点设备5上的P2P插件将基于该网络标识,进一步将跨链请求转发至nodeE2,而节点设备3上的P2P插件在接收到该跨链请求后,同样会基于其所携带的网络标识进行转发,但由于节点设备3本地并未部署有subnet2中的区块链节点,因此,节点设备3将不会保留该跨链请求,而是进一步将该跨链请求转发至其他部署有主网节点的节点设备。另外,subnet1中的任一节点除了可以在跨链请求中封装网络标识外,还可以在跨链请求中封装目的区块链网络中任意节点的身份信息,如节点ID、节点公钥,从而可以在调用P2P插件实现跨链传输跨链请求的过程中,不需要以广播的形式发送给各主网节点所属的节点设备,而是直接使得P2P插件以点对点通讯的方式发送给所述跨领请求中携带的各节点身份信息所指定的节点设备,例如,subnet1中的nodeC1可以在跨链请求中封装nodeE2的身份信息并调用节点设备3本地运行的P2P插件,使P2P插件可以根据该nodeE2的身份信息,将该跨链请求以单播形式发送至同时部署有subnet2中的nodeE2以及mainnet中的nodeE的节点设备5,节点设备5上的P2P插件在接收到该跨链请求后,除了可以通过跨链请求携带的网络标识将该跨链请求转发至nodeE2,也可以直接通过跨链请求携带的nodeE2的身份信息,将跨链请求转发至nodeE2。
以上过程描述的是源区块链网络通过区块链主网中各主网节点之间建立的网络连接链路向目的区块链网络发送跨链请求的过程,类似的,目的区块链网络也可以通过类似的方式实现向源区块链网络的消息传输,例如将上述源节点发送的区块请求对应的跨链数据返回给源区块链网络,由此通过形成的源区块链网络与目的区块链网络之间的双向通讯信道,实现源区块链网络中源节点与目的区块链网络中目的节点之间的网络通讯。
图2仅是结合图1以区块链子网subnet1和subnet2为例进行的示例性说明。实际上,图1中的各个区块链网络之间均可以实现跨链交互,本说明书对于跨链交互的区块链网络之间的关系并不进行限制。例如,上述区块链主网mainnet和区块链子网subnet1之间、区块链主网mainnet和区块链子网subnet2之间,均可以实现跨链交互,具体过程不再赘述。
上述跨链交互方案的实现依赖于区块链主网所建立的网络连接链路,具体而言是通过各主网节点之间建立的网络链路。在此基础上,考虑到区块链主网中除了包含(参与交易共识的)共识节点之外,通常还包含(不参与交易共识而只参与区块同步的)非共识节点,为了使非共识节点所处节点设备中的子网节点也能够基于区块链主网所建立的共识链路实现跨子网交互,相关技术中提出一种基于转发路由的跨子网交互方案。即由源子网节点所在的节点设备根据区块链主网中各个主网节点所处节点设备之间的网络拓扑结构确定源子网节点需要发送的跨链消息的转发路径,并由该路径上的各个节点设备相互配合实现跨链消息在区块链主网内的转发,最终将其传递至目标子网节点。
图3是一示例性实施例提供的一种跨子网交互的应用场景图。如图3所示,该场景是在图1所示场景的基础上,假设区块链主网mainnet只有部分主网节点nodeA、nodeB和nodeD为共识节点,对于共识节点而言,它们之间建立有两两相连的共识链路,但对于mainnet上的非共识节点nodeC或nodeE而言,由于其无需参与共识过程,因此只需要(至少)与任一个共识节点建立用于同步区块的同步链路即可,例如nodeC与nodeA之间建立有同步链路,nodeE与nodeB之间建立有同步链路,但nodeC却没有与nodeB、nodeD和nodeE之间直接相连的网络链路,同理nodeE也没有与nodeA、nodeC和nodeD之间直接相连的网络链路。此时,假设nodeC所在节点设备equipment3上同时部署的属于subnet1的nodeC1希望向nodeE所在equipment5上同时部署的属于subnet2的nodeE2发送跨链消息,则nodeC1可以根据各个节点设备之间的网络拓扑结构确定从equipment3到equipment5的转发路径,如equipment3→equipment1→equipment2→equipment5(或者equipment3→equipment1→equipment4→equipment2→equipment5),然后从equipment3开始、由该路径上的各个节点设备相互配合将所述跨链消息一步步转发至equipment5,最终发送至nodeE2,从而实现非共识节点所对应子网节点之间的跨链交互。
区块链子网中的任一子网节点可能需要发送多条跨链消息,即需要向其他区块链子网中的子网节点发送多个消息内容。对此,相关技术中的第一节点设备需要针对各个消息内容分别构建相应的跨链消息,并按照各个跨链消息的转发路径分别将其转发至相应的目标子网节点所处的节点设备。可以理解的是,此时同一子网节点发出的任一消息内容需要通过一条跨链消息进行传输,从而在任一子网节点需要发送多个消息内容的情况下,就需要在区块链主网内传输多个跨链消息,即需要在节点设备之间确定多个转发路径分别转发相应的跨链消息。采用该方式,节点设备处理跨链消息的负担较重,可能因消息数量过多而导致网络拥堵甚至故障,跨链消息的转发效率和区块链系统的稳定性都比较低。
对此,本说明书提出一种跨子网交互方案,在多条跨链消息分别对应的转发路径存在重叠(即各条转发路径上存在至少部分链路相同)的情况下,将多条跨链消息合并为一条聚合消息,从而有效减少节点设备需要转发的消息数量。下面结合附图对本说明书该跨子网交互方案进行详细说明。
图4是一示例性实施例提供的一种跨子网交互方法的流程图。该方法应用于由区块链主网及其所管理的多个区块链子网构成的区块链系统,所述区块链子网中的子网节点与其所处节点设备中部署的主网节点相对应;所述方法包括:
步骤402:针对待从源区块链子网中的源子网节点传输至相应的目标子网节点的n个消息内容,第一节点设备确定所述n个消息内容一一对应的n条转发路径,其中,任一目标子网节点所处的目标区块链子网区别于所述源区块链子网,n≥2。
在本说明书实施例中,所述源区块链子网可以是所述区块链系统中的任一区块链子网,该子网基于区块链主网创建并由区块链主网所管理。示例性的,所述源区块链子网可以为图1所示的subnet1或subnet2,或者也可以为图3所示的subnet1或subnet2。另外,所述源子网节点可以是源区块链子网中的任一节点,如在源区块链子网为subnet1的情况下,所述源子网节点可以为nodeA1~nodeD1中的任一节点,如可以为nodeC1等。本说明书所述任一子网节点所处的节点设备中还部署有主网节点,该子网节点即对应于所述主网节点,如subnet1中的nodeC1对应于mainnet中的nodeC,所述子网节点nodeC1和主网节点nodeC部署于同一节点设备equipment3中。
另外,任一目标子网节点所处的目标区块链子网区别于所述源区块链子网,即目标区块链子网与源区块链子网并非同一子网,换言之,所述n个消息内容需要被传输至区别于源区块链子网的目标区块链子网中。其中,本说明书所述的任一消息内容可以为源子网节点接收到的数据或自身维护的数据(如参与多方计算的原始数据,本地维护的链上数据等),也可以为源子网节点生成的用于指示目标子网节点执行预设操作的指示信息(如自身生成的签名,等证明信息)。另外,所述n个消息内容中的任意两个消息内容可以相同或不同;任意两个消息内容可以对应于同一目标子网节点或者分别对应于不同的目标子网节点,而在任意两个消息内容分别对应于不同的目标子网节点的情况下,这两个目标子网节点可以属于同一目标区块链子网或者属于不同的目标区块链子网。如图3所示,若源子网节点为nodeC1,则所述n个消息内容中的任意两个消息内容分别对应的目标子网节点可以均为nodeC2,也可以分别为nodeC2和nodeB2,在mainnet还管理有subnet3的情况下,这两个目标子网节点还可以分别为nodeC2和subnet3中的任一子网节点(如nodeE3等),不再赘述。
在本说明书实施中,任一消息内容对应于一条转发路径,该转发路径由多个节点设备构成,其中,起点是源子网节点所处的节点设备、终点可以是目标子网节点所处的节点设备,或者也可以是目标子网节点所属目的区块链子网中任一其他子网节点所处的节点设备。示例性的,若图3所示nodeC1需要向nodeB2和nodeE2分别传输消息内容1和消息内容2,则消息内容1对应的转发路径可以是equipment3→equipment2,此时equipment可以将接收到的消息内容发送给nodeC2;消息内容2对应的转发路径可以是equipment3→equipment5,此时equipment5可以将接收到的消息内容发送给nodeE2,或者也可以是equipment3→equipment2,此时equipment2可以将接收到的消息内容发送给nodeC2,再由nodeC2通过subnet2的内部网络转发给nodeE2。
另外,第一节点设备同时属于所述n条转发路径,即所述n条转发路径均经过第一节点设备。在一实施例中,第一节点设备可以为所述源子网节点所在的源节点设备。在该场景下,第一节点设备可以先确定需要传输的n个消息内容,然后进一步确定所述n个消息内容一一对应的n条转发路径,即为各个消息内容分别确定相应的转发路径。显然,此时第一节点设备是所述n条转发路径共同的起点。
在另一实施例中,第一节点设备也可以不为所述源子网节点,即第一节点并非所述n条转发路径的起点,而是可以为终点,或者为起点和终点之间的中间节点设备。当然,第一节点设备可以为所述n条转发路径共同的终点;或者也可以为所述n条转发路径中部分(至少一条)转发路径的终点,同时为所述n条转发路径中其余转发路径的中间节点设备。在第一节点设备并非所述源子网节点的情况下,第一节点设备可以接收其在所述n条转发路径中的前一跳节点设备转发来的聚合消息,下文将该聚合消息称为第一节点设备的上一级聚合消息。可以理解的是,第一节点设备在所述n条转发路径上对应于同一个前一跳节点设备。其中,所述n个消息内容被记录在第一节点设备接收到的上一级聚合消息的消息体中,基于此,第一节点设备可以在接收到上一级聚合消息的情况下,将该消息的消息体中包含的n个消息内容作为自身需要传输的所述n个消息内容。
其中,所述上一级聚合消息的消息头部还可以记录有所述n个消息内容的路径信息,从而第一节点设备可以根据所述路径信息确定所述n个消息内容一一对应的n条转发路径,而该路径信息可以由源子网节点根据自身确定出的所述n条转发路径生成。源子网节点可以先针对待传输的n个消息内容确定相应的n条转发路径,然后生成所述n条转发路径的路径信息并将其记录在自身生成的初级聚合消息的消息头部(同时将所述n个消息内容记录在该消息的消息体中)。其中,所述路径信息可以包括各条转发路径所经过节点设备的设备标识;或者,在任一节点设备中部署一个主网节点的情况下,所述路径信息也可以包括各条转发路径所经过节点设备中部署的主网节点的节点标识等。示例性的,所述设备标识或节点标识可以为名称、编号或公钥等信息。
在一实施例中,所述源子网节点所处的源节点设备还可以维护有所述区块链主网中各主网节点分别所处的节点设备之间的网络拓扑结构。鉴于各个节点设备中分别维护有相应的主网节点,所以该网络拓扑结构可以基于所述区块链主网中各主网节点之间的网络连接关系生成。其中,由于区块链主网中通常同时包含共识节点和非共识节点,所以各主网节点之间的网络连接关系对应的网络链路可以包括:所述区块链主网中的共识主网节点之间建立的共识链路,以及共识主网节点与非共识主网节点之间建立的同步链路。
基于上述网络拓扑结构,所述源子网节点可以通过多种方式确定任一消息内容对应的转发路径。例如,源子网节点可以先确定所述任一消息内容对应的任一目标子网节点及其所处的任一目标节点设备。其中,因为区块链主网中通常维护有该主网所管理的各个区块链子网的基础信息(如包含哪些子网节点、各个子网节点的身份信息、各个子网节点之间的连接情况等),而任一节点设备中部署的主网节点和子网节点可以共享该节点设备中的功能插件(如维护上述基础信息的缓存插件等),所以源子网节点可以准确获知自身需要向哪些目标子网节点发送消息内容以及各个目标子网节点所处的目标节点设备。
进一步的,源子网节点可以根据所述网络拓扑结构确定所述源节点设备与所述任一目标节点设备之间总跳数最少的转发路径,并将其作为所述任一消息内容对应的转发路径。其中,从所述源节点设备到所述任一目标节点设备之间每经过一个节点设备即视为一跳。或者,在所述源节点设备还维护有所述网络拓扑结构对应的网络延迟信息的情况下,也可以基于所述网络延迟信息从所述网络拓扑结构中确定所述源节点设备与所述任一目标节点设备之间总延迟最小的转发路径,并将其作为所述任一消息内容对应的转发路径。在基于所述网络延迟信息确定所述转发路径的情况下,所述网络延迟信息可以包括所述网络拓扑结构中的网络链路的链路延迟,或者,也可以包括所述网络拓扑结构中的节点设备在转发消息时的节点延迟;当然,还可以同时包括上述链路延迟和节点延迟,具体可以根据网络结构以及实际需求进行确定,本说明书并不对此进行限制。例如,在所述网络延迟信息仅包括链路延迟的情况下,任一转发路径的总延迟可以为该转发路径上各个相邻节点设备之间的链路延迟之和(下称链路总延迟);而在所述网络延迟信息仅包括节点延迟的情况下,任一转发路径的总延迟可以为该转发路径上全部节点设备的节点延迟之和(下称节点总延迟);而在所述网络延迟信息包括链路延迟和节点延迟的情况下,任一转发路径的总延迟可以为该转发路径上全部节点设备的节点延迟与各个相邻节点设备之间的链路延迟之和(即该转发路径的链路总延迟和转发总延迟之和)。其中,任意两个节点设备之间的链路延迟是消息从前一个节点设备发出到后一个节点设备接收到所需的时延信息;节点设备的节点延迟是指消息在进入该节点设备到从该节点设备转发出去所需的时间,具体可以包含节点设备对消息进行解析、查路由表和转发等过程所需的时延信息之和。
如图5所示,假设区块链主网mainnet至少由nodeA~nodeE等主网节点构成,其中nodeA和nodeE为非共识节点,nodeB、nodeC和nodeE为共识节点,nodeA部署于节点设备equipment1中、nodeB部署于equipment2中、nodeC部署于equipment3中、nodeD部署于equipment4中、nodeE部署于equipment5中。另外,equipment1、Equipmen2和equipment3中还分别部署有区块链子网subnet1的子网节点,即nodeA1、nodeB1和nodeC1;equipment1、equipment3、equipment4和equipment5中还分别部署有区块链子网subnet2的子网节点,即nodeA2、nodeC2、ndoeD2和nodeE2;equipment2和equipment4中还分别部署有区块链子网subnet3的子网节点,即nodeB3和nodeD3。当然,对于上述区块链主网mainnet和区块链子网subnet1、subnet2和subnet3而言,其中任一网络中可能还包含图中并未绘出的其他节点,不再赘述。
其中,equipment1的节点延迟为2、equipment3的节点延迟为5、equipment1与equipment2之间的网络链路的链路延迟为10、equipment3与equipment4之间的网络链路的链路延迟为50,其他节点设备的节点延迟以及其他两个节点设备之间的网络链路的链路延迟可参见图5,不再一一赘述。在本说明书实施例中,链路延迟和节点延迟对应的数值可以代表具体的时延时长,也可以代表与具体时延时长具有相关性的其他时延指标,只需要确保链路延迟和节点延迟之间采用统一单位即可,本说明书并不对此进行限制。例如equipment1与equipment2之间的网络链路的链路延迟10可以理解为10微秒(us),即表征消息通过该网络链路需要经过10us,那么equipment3的节点延迟5同样应理解为5us。
在图5所示的网络拓扑结构中,不妨假设subnet1中的子网节点nodeA1为源子网节点,其需要向subnet2中的nodeC2、nodeD2和nodeE2以及subnet2中的nodeD3分别传输消息内容data1、data2、data3和data4。在该场景下,源区块链子网为subnet1、源子网节点为nodeA1。以前述总延迟最小的转发路径为例,nodeA1可以确定出data1对应的转发路径为“L1:equipment1→equipment2→equipment3”、data2和data3对应的转发路径均为“L2和L3:equipment1→equipment2→equipment3→equipment4”、data4对应的转发路径为“L4:equipment1→equipment2→equipment3→equipment4→equipment5”。其中,任一转发路径的总延迟可以为该转发路径所包含各个节点设备(也可以不包含目标节点设备)的节点延迟和该路径上各相邻节点设备之间链路延迟之和(即前述链路总延迟和节点总延迟之和)。以data2为例,从equipment1到equipment4存在两条可选的转发路径:“L21:equipment1→equipment2→equipment4”和“L22:equipment1→equipment2→equipment3→equipment4”,其中L21的总延迟为2++3+3+10+100=118,L22的总延迟为2+5+3+10+20+50=90,显然L22的总延迟最小,因此将上述L22确定为data2对应的(最短)转发路径L2。
由上述各个消息内容分别对应的转发路径可见,L1~L4之间存在部分重叠链路,如L1和L2之间存在重叠的“equipment1→equipment2→equipment3”、L2和L3完全重叠、L2(以及L3)和L4之间存在重叠的“equipment1→equipment2→equipment3→equipment4”。基于此,可以对上述各个消息内容进行聚合处理,以将需要分别转发的各个消息转换为一个聚合消息进行转发,从而有效减少节点设备需要转发的消息数量。
步骤404,第一节点设备若确定自身在所述n条转发路径上具有相同的下一跳节点设备,则将基于所述n个消息内容构建的下一级聚合消息转发至该下一跳节点设备。
如前所述,在第一节点设备并非源节点设备的情况下,第一节点设备可以从所在转发路径上的前一跳节点设备处接收其发送的上一级聚合消息。假设该消息中共包含S个消息内容,可能所述S个消息内容中的至少部分需要被转发至下一节点设备——这至少部分消息内容可能存在多个消息内容的下一跳节点设备相同,也可能存在至少一个消息内容的下一跳节点设备不同;还可能所述S个消息内容中的至少部分需要被发送至第一节点设备中部署的目标子网节点或者第一节点设备中部署的目标子网节点所属区块链子网中的其他目标子网节点等。针对上述多种情况,第一节点设备可以采用相应的方式处理各个消息内容。例如,响应于接收到上一级聚合消息,第一节点设备可以先确定所述S个消息内容分别对应的转发路径的终点是否为第一节点设备自身:若任一消息内容对应的转发路径的终点为第一节点设备(此时第一节点设备在该转发路径中不存在相应的下一跳节点设备),则该消息内容无需再转发至其他节点设备;反之,若任一消息内容对应的转发路径的终点不为第一节点设备(此时第一节点设备在该转发路径中存在相应的下一跳节点设备),则该消息内容还需要再转发至第一节点设备的下一跳节点设备。
在一实施例中,若确定存在n个消息内容需要转发且n=S(即所述S个消息内容都需要转发),则第一节点设备可以响应于自身在所述n条转发路径上具有相同的下一跳节点设备,将所述上一级聚合消息作为所述下一级聚合消息转发至该下一跳节点设备。承接于前述nodeA1作为源子网节点传输四个消息内容的实施例,在确定出与前述data1~4一一对应的转发路径L1~4的情况下,nodeA1可以生成初始聚合消息:该消息的消息头部包含转发路径L1~4的路径信息、消息体包含data1~4。进而equipment1可以将所述初始聚合消息转发至equipment2:对于equipment2(接收到该聚合消息后,该设备即成为第一节点设备)而言,该聚合消息即为自身接收到的上一级聚合消息,其根据消息头部和消息体可以确定:此时的n=S=4(如equipment1与equipment2之间箭头旁边的椭圆形虚线内“4”所示)且下一跳节点设备为equipment3,所以equipment2可以将该上一级聚合消息作为自身对应的下一级聚合消息转发至equipment3。可以理解的是,对于equipment3而言,其接收到的equipment2发送来的聚合消息即为自身的上一级聚合消息,不再赘述。
在另一实施例中,若第一节点设备并非源节点设备,则第一节点设备可能为至少部分转发路径中的目标节点设备(即这部分转发路径的终点)——此时第一节点设备内可能部署有这部分转发路径对应的目标子网节点或者相应目标区块链子网中的其他子网节点;或者,第一节点设备也可能为部分转发路径中除源节点设备和目标节点设备之外的中间节点设备——此时这部分转发路径对应的目标子网节点并未部署在第一节点设备内,而是被部署在相应转发路径上处于第一节点设备之后的其他节点设备内。可见,在第一节点设备接收到的包含S个消息内容的上一级聚合消息中,可能存在至少部分消息内容对应的目标子网节点被部署在第一节点设备中,也可能存在至少部分消息内容对应的目标子网节点被部署在第一节点设备之后的其他节点设备中。
对此,第一节点设备可以响应于接收到前述上一级聚合消息,在所述S个消息内容中确定所对应转发路径的终点为第一节点设备的m1(S≥m1≥0)个消息内容(这些消息内容对应的目标子网节点即被部署在第一节点设备中)。进而,响应于m1>0,第一节点设备可以将所述m1个消息内容分别发送至本地部署的相应的目标子网节点;或者,也可以将所述m1个消息内容中的部分消息内容分别发送至本地部署的相应的目标子网节点,并将其余部分消息内容的跨链消息发送至本地部署的属于目标区块链子网的子网节点,以由该子网节点将所述跨链消息转发至自身所处目标区块链子网中相应的目标子网节点;当然,还可以将所述m1个消息内容均发送至本地部署的属于目标区块链子网的子网节点以由其转发,从而完成对这m1个消息内容的传输过程。例如,equipment3在接收到来自equipment2的上一级聚合消息之后,根据其消息头部和消息体可以确定:此时的S=4(如equipment2与equipment3之间箭头旁边的椭圆形虚线内“4”所示)且m1=1(m1对应的一个消息内容为data1),所以其可以将data1发送至本地部署的nodeC2,或者也可以将包含data1的跨链消息发送至nodeC2,从而完成对data1的传输过程。再例如,若data1对应的目标子网节点并非nodeC1,而是subnet1中的nodeF1(途中并未示出),则在确定S=4且m1=1时,equipment3可以将包含data1的跨链消息发送至nodeC1,并由nodeC1通过subnet1的内部网络将该跨链消息转发至nodeF1,从而完成对data1的传输过程。可以理解的是,任一消息内容需要被传输至nodeC1还是nodeF1,可以由nodeA1在确定转发路径时确定,并将相应的目标子网节点的标识信息也记录在消息头部,以便于实现主网和子网的整体最短转发路径。
另外,第一节点设备还可以响应于接收到前述上一级聚合消息,在所述S个消息内容中确定m2(S≥m2≥0)个消息内容,其中,第一节点设备在所述m2个消息内容中任一消息内容对应的转发路径上的下一跳节点设备区别于在所述上一级聚合消息包含的任一其他消息内容对应的转发路径上的下一跳节点设备,换言之,所述m2个消息内容都需要被转发给相应的下一跳节点设备,且其中任一消息内容对应的下一跳节点设备都与其他消息内容的下一跳节点设备不同。显然,在所述m2>0的情况下,第一节点设备可以将这m2个消息内容分别包含在跨链消息中转发至相应的下一跳节点设备。如图5所示,equipment4在接收到来自equipment3的上一级聚合消息之后,根据其消息头部和消息体可以确定:此时的S=3(如equipment3与equipment4之间箭头旁边的椭圆形虚线内“3”所示)、m1=2(m1对应的消息内容为data2和data3)且m2=1(m2对应的消息内容为data4),所以其可以(按照消息头部记录的目标子网节点的标识信息)将data2和data3分别发送至本地部署的nodeD2和nodeD3,从而完成对data2和data3的传输过程。另外,由于此时第一节点设备(即equipment4)在(m2所对应的)data4的L4上的下一跳节点设备为equipment5,所以equipment4可以构建包含data4的跨链消息并将其转发至equipment5,从而完成对data4的传输过程。
图5所示的各个节点设备中,equipment1、equipment2、Equipmen3和equipment4可以分别作为不同场景下的第一节点设备。可以理解的是,对于任一场景下的第一节点设备而言,其对应的n、m1和m2满足n+m1+m2=S。
在一实施例中,第一节点设备需要转发至同一个下一跳节点设备的n个消息内容可能存在多种情况,如所述n个消息内容可能两两互不相同,也可能全部或部分相同。可以理解的是,在两两互不相同的情况下,可以将所述n个消息内容全部记录在下一级聚合消息的消息体中,以便下一跳节点设备能够获知各个消息内容。而在所述n个消息内容全部或部分相同的情况下,若仍然将这些消息内容全部记录在下一级聚合消息的消息体中,则可能导致消息体数据量过大甚至超出单次可传输的数据量上限。因此为尽量减少消息体的数据量,第一节点设备可以对所述n个消息内容进行去重处理,并将去重处理后的各个消息内容以及所述各个消息内容与所述n个跨链消息之间的映射关系记录在所述下一级聚合消息的消息体中。可以理解的是,经过去重处理后,下一级聚合消息的消息体中实际记录的消息内容的数量小于n,从而减少了消息体的数据量。同时,因为其中还记录了各个消息内容与所述n个跨链消息之间的映射关系,因此下一跳节点设备根据该映射关系和实际记录的各个消息内容仍然能够准确获知相应的n个消息内容,所以仍然可以认为所述下一级聚合消息的消息体中包含所述n个消息内容。
上述实施例中,对于待从源区块链子网中的源子网节点传输至相应的目标子网节点的n(n≥2)个消息内容而言,第一节点设备可以是这些消息内容的转发路径所经过的任一节点设备,该节点设备可以确定所述n个消息内容一一对应的n条转发路径。进而,若确定自身(即第一节点设备)在所述n条转发路径上具有相同的下一跳节点设备,则将基于所述n个消息内容构建的下一级聚合消息转发至该下一跳节点设备。
可以理解的是,任一消息内容会被其对应的转发路径上的各个节点设备依次转发,直至最后一个节点设备。而针对所述n个消息内容一一对应的n条转发路径,第一节点设备在所述n条转发路径上具有相同的下一跳节点设备,即表明第一节点设备需要将所述n个消息内容均传输至该下一跳节点设备。此时,通过基于所述n个消息内容构建下一级聚合消息,并由第一节点设备将该聚合消息转发至该下一跳节点设备的方式,实现了对这n个消息内容的聚合传输。换言之,第一节点设备只需要转发一个消息(即所述聚合消息)即可将所述n个消息内容一次性传输至下一跳节点设备,相对于相关技术中需要分别转发包含相应消息内容的n个跨链消息的方式,大大减少了第一节点设备需要转发的消息数量。可见,在源区块链子网中的源子网节点通过节点设备之间的网络连接向目标区块链子网中的目标子网节点发送跨链消息的场景下,本方案可以根据转发路径对多个跨链消息进行聚合,以减少节点设备之间实际需要转发的消息数量,从而尽量避免因消息数量过多可能导致的网络拥堵甚至故障,有助于提升跨链消息的转发效率,提升区块链系统的稳定性。
如前所述,各个节点设备中分别部署有主网节点,而这些主网节点之间建立有相应的网络链路,如前述共识链路和同步链路。基于此,第一节点设备可以通过第一节点设备上的主网节点与该下一跳节点设备上的主网节点之间建立的网络链路,将所述下一级聚合消息转发至该下一跳节点设备。所述网络链路可以在第一节点设备上运行的通讯插件与该下一跳节点设备上运行的通讯插件之间建立;其中,同一节点设备上的主网节点可以与子网节点共享该节点设备上运行的通讯插件,该通讯插件例如可以为前述的P2P插件。如前述的跨链交互方案中所介绍的,利用区块链主网中各主网节点之间建立的网络连接链路(包括共识链路和同步链路),使得目标区块链子网与源区块链子网之间无需建立新的网络连接链路,而是通过底层区块链主网预先建立的网络连接链路,实现源区块子网中源子网节点与目标区块链子网中目标子网节点之间的网络通讯。可以理解的是,此时各个消息内容实际上是通过区块链主网的网络连接链路在不同节点设备之间实现传输,由于区块链主网中任意两个主网节点均可达,所以该方式可以确保各个消息内容能够被可靠的传输至目标子网节点。
在通过前述方式将任一消息内容或者包含任一消息内容的跨链消息传输至相应的目标子网节点之后,该目标子网节点可以响应于接收到任一消息内容,对该消息内容进行预设处理。例如,可以响应于该消息内容的请求查询链上数据、参与共识或者参与隐私计算等。和/或,该目标子网节点也可以将所述任一消息内容或对所述任一消息内容进行预设处理的处理结果同步至自身所处区块链子网中的其他子网节点,其中,所述预设处理可以为预设方式的加/解密、共识、隐私计算等处理,本说明书对此并不进行限制。
另外,本说明书所述的任一消息内容可以由源子网节点使用相应目标子网节点的公钥进行加密。或者,在消息内容数据量较大的情况下,为尽量提升加/解密处理的效率,也可以采用数据信封的方式进行加密,如可以采用对称密钥加密任一消息内容,并使用该消息内容所对应目标子网节点的公钥加密该对称密钥得到密钥密文,并将加密后的消息内容和该密钥密文一并包含在消息体中传输至该目标子网节点,以便其使用自身私钥进行解密,不再赘述。
对应于上述实施例所述的跨子网交互方法,本说明书还提出一种区块链系统,该区块链系统由区块链主网及其所管理的多个区块链子网构成的,所述区块链子网中的子网节点与其所处节点设备中部署的主网节点相对应;其中,任一主网节点所处的第一节点设备用于:
针对待从源区块链子网中的源子网节点传输至相应的目标子网节点的n个消息内容,确定所述n个消息内容一一对应的n条转发路径,其中,任一目标子网节点所处的目标区块链子网区别于所述源区块链子网,n≥2;
若确定第一节点设备在所述n条转发路径上具有相同的下一跳节点设备,则将基于所述n个消息内容构建的下一级聚合消息转发至该下一跳节点设备。
其中源区块链节点和第一节点设备的运行方式可以参见前述实施例的记载,此处不再赘述。
图6是一示例性实施例提供的一种设备的示意结构图。请参考图6,在硬件层面,该设备包括处理器602、内部总线604、网络接口606、内存608以及非易失性存储器610,当然还可能包括其他功能所需要的硬件。本说明书一个或多个实施例可以基于软件方式来实现,比如由处理器602从非易失性存储器610中读取对应的计算机程序到内存608中然后运行。当然,除了软件实现方式之外,本说明书一个或多个实施例并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
如图7所示,图7是本说明书根据一示例性实施例提供的一种跨子网交互装置的框图,该装置可以应用于如图6所示的设备中,以实现本说明书的技术方案;所述装置应用于由区块链主网及其所管理的多个区块链子网构成的区块链系统,所述区块链子网中的子网节点与其所处节点设备中部署的主网节点相对应;所述装置包括:
路径确定单元701,用于针对待从源区块链子网中的源子网节点传输至相应的目标子网节点的n个消息内容,由第一节点设备确定所述n个消息内容一一对应的n条转发路径,其中,任一目标子网节点所处的目标区块链子网区别于所述源区块链子网,n≥2;
聚合转发单元702,用于由第一节点设备若确定自身在所述n条转发路径上具有相同的下一跳节点设备,则将基于所述n个消息内容构建的下一级聚合消息转发至该下一跳节点设备。
可选的,在第一节点设备为所述源子网节点所处的源节点设备的情况下,所述n个消息内容和所述n条转发路径由第一节点设备确定。
可选的,在第一节点设备不为所述源子网节点所处的源节点设备的情况下,所述n个消息内容被记录在第一节点设备接收到的上一级聚合消息的消息体中。
可选的,所述路径确定单元701具体用于:
由第一节点设备根据所述上一级聚合消息的消息头部记录的对应于所述n个消息内容的路径信息,确定所述n个消息内容一一对应的n条转发路径,所述路径信息由所述源子网节点根据自身确定出的所述n条转发路径生成。
可选的,所述源子网节点所处的源节点设备维护有所述区块链主网中各主网节点分别所处的节点设备之间的网络拓扑结构,所述装置还包括:
初始路径确定单元703,用于由所述源子网节点确定任一消息内容对应的转发路径;具体用于:
确定所述任一消息内容对应的任一目标子网节点及其所处的任一目标节点设备;
根据所述网络拓扑结构确定所述源节点设备与所述任一目标节点设备之间总跳数最少的转发路径,并将其作为所述任一消息内容对应的转发路径;或者,
在所述源节点设备还维护有所述网络拓扑结构对应的网络延迟信息的情况下,基于所述网络延迟信息从所述网络拓扑结构中确定所述源节点设备与所述任一目标节点设备之间总延迟最小的转发路径,并将其作为所述任一消息内容对应的转发路径。
可选的,在基于所述网络延迟信息确定所述转发路径的情况下,所述网络延迟信息包括:
所述网络拓扑结构中的网络链路的链路延迟;和/或,
所述网络拓扑结构中的节点设备在转发消息时的节点延迟。
可选的,所述上一级聚合消息共包含S个消息内容,
所述聚合转发单元702具体用于:第一节点设备若确定所述n个消息内容都需要转发且n=S,则响应于自身在所述n条转发路径上具有相同的下一跳节点设备,将所述上一级聚合消息作为所述下一级聚合消息转发至该下一跳节点设备;
所述装置还包括:
消息发送单元704,用于由第一节点设备在所述S个消息内容中确定所对应转发路径的终点为第一节点设备的m1个消息内容,并响应于m1>0将所述m1个消息内容分别发送至本地部署的相应的目标子网节点;以及,
非聚合转发单元705,用于由第一节点设备在所述S个消息内容中确定m2个消息内容,第一节点设备在所述m2个消息内容中任一消息内容对应的转发路径上的下一跳节点设备区别于在所述上一级聚合消息包含的任一其他消息内容对应的转发路径上的下一跳节点设备,并响应于m2>0将所述m2个消息内容分别包含在跨链消息中转发至相应的下一跳节点设备。
可选的,还包括:
内容处理单元706,用于由任一目标子网节点响应于接收到任一消息内容,对所述任一消息内容进行预设处理;和/或将所述任一消息内容或对所述任一消息内容进行预设处理的处理结果同步至自身所处区块链子网中的其他子网节点。
可选的,所述聚合转发单元702具体用于:
通过第一节点设备上的主网节点与该下一跳节点设备上的主网节点之间建立的网络链路,将所述下一级聚合消息转发至该下一跳节点设备。
可选的,所述网络链路在第一节点设备上运行的通讯插件与该下一跳节点设备上运行的通讯插件之间建立;其中,同一节点设备上的主网节点与子网节点共享该节点设备上运行的通讯插件。
可选的,还包括:
聚合消息构建单元707,用于由第一节点设备基于所述n个消息内容构建所述下一级聚合消息;具体用于:
对所述n个消息内容进行去重处理,并将去重处理后的各个消息内容以及所述各个消息内容与所述n个跨链消息之间的映射关系记录在所述下一级聚合消息的消息体中。
在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device,PLD)(例如现场可编程门阵列(Field Programmable GateArray,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware DescriptionLanguage)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(RubyHardware Description Language)等,目前最普遍使用的是VHDL(Very-High-SpeedIntegrated Circuit Hardware Description Language)与Verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20以及Silicone Labs C8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为服务器系统。当然,本发明不排除随着未来计算机技术的发展,实现上述实施例功能的计算机例如可以为个人计算机、膝上型计算机、车载人机交互设备、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
虽然本说明书一个或多个实施例提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的手段可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的装置或终端产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境,甚至为分布式数据处理环境)。术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、产品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、产品或者设备所固有的要素。在没有更多限制的情况下,并不排除在包括所述要素的过程、方法、产品或者设备中还存在另外的相同或等同要素。例如若使用到第一,第二等词语用来表示名称,而并不表示任何特定的顺序。
为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本说明书一个或多个时可以把各模块的功能在同一个或多个软件和/或硬件中实现,也可以将实现同一功能的模块由多个子模块或子单元的组合实现等。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
本发明是参照根据本发明实施例的方法、装置(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储、石墨烯存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
本领域技术人员应明白,本说明书一个或多个实施例可提供为方法、系统或计算机程序产品。因此,本说明书一个或多个实施例可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本说明书一个或多个实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本说明书一个或多个实施例可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本本说明书一个或多个实施例,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本说明书的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
以上所述仅为本说明书一个或多个实施例的实施例而已,并不用于限制本本说明书一个或多个实施例。对于本领域技术人员来说,本说明书一个或多个实施例可以有各种更改和变化。凡在本说明书的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在权利要求范围之内。
Claims (15)
1.一种跨子网交互方法,应用于由区块链主网及其所管理的多个区块链子网构成的区块链系统,所述区块链子网中的子网节点与其所处节点设备中部署的主网节点相对应;所述方法包括:
针对待从源区块链子网中的源子网节点传输至相应的目标子网节点的n个消息内容,第一节点设备确定所述n个消息内容一一对应的n条转发路径,其中,任一目标子网节点所处的目标区块链子网区别于所述源区块链子网,n≥2;
第一节点设备若确定自身在所述n条转发路径上具有相同的下一跳节点设备,则将基于所述n个消息内容构建的下一级聚合消息转发至该下一跳节点设备。
2.根据权利要求1所述的方法,在第一节点设备为所述源子网节点所处的源节点设备的情况下,所述n个消息内容和所述n条转发路径由第一节点设备确定。
3.根据权利要求1所述的方法,在第一节点设备不为所述源子网节点所处的源节点设备的情况下,所述n个消息内容被记录在第一节点设备接收到的上一级聚合消息的消息体中。
4.根据权利要求3所述的方法,第一节点设备确定所述n个消息内容一一对应的n条转发路径,包括:
根据所述上一级聚合消息的消息头部记录的对应于所述n个消息内容的路径信息,确定所述n个消息内容一一对应的n条转发路径,所述路径信息由所述源子网节点根据自身确定出的所述n条转发路径生成。
5.根据权利要求2或4所述的方法,所述源子网节点所处的源节点设备维护有所述区块链主网中各主网节点分别所处的节点设备之间的网络拓扑结构,所述源子网节点确定任一消息内容对应的转发路径,包括:
确定所述任一消息内容对应的任一目标子网节点及其所处的任一目标节点设备;
根据所述网络拓扑结构确定所述源节点设备与所述任一目标节点设备之间总跳数最少的转发路径,并将其作为所述任一消息内容对应的转发路径;或者,
在所述源节点设备还维护有所述网络拓扑结构对应的网络延迟信息的情况下,基于所述网络延迟信息从所述网络拓扑结构中确定所述源节点设备与所述任一目标节点设备之间总延迟最小的转发路径,并将其作为所述任一消息内容对应的转发路径。
6.根据权利要求5所述的方法,在基于所述网络延迟信息确定所述转发路径的情况下,所述网络延迟信息包括:
所述网络拓扑结构中的网络链路的链路延迟;和/或,
所述网络拓扑结构中的节点设备在转发消息时的节点延迟。
7.根据权利要求3所述的方法,所述上一级聚合消息共包含S个消息内容,
所述第一节点设备若确定自身在所述n条转发路径上具有相同的下一跳节点设备,则将基于所述n个消息内容构建的下一级聚合消息转发至该下一跳节点设备,包括:第一节点设备若确定所述n个消息内容都需要转发且n=S,则响应于自身在所述n条转发路径上具有相同的下一跳节点设备,将所述上一级聚合消息作为所述下一级聚合消息转发至该下一跳节点设备;
所述方法还包括:在所述S个消息内容中确定所对应转发路径的终点为第一节点设备的m1个消息内容,并响应于m1>0将其中至少部分消息内容分别发送至本地部署的相应的目标子网节点,或者响应于m1>0将包含其中至少部分消息内容的跨链消息发送至本地部署的属于目标区块链子网的子网节点,以由所述子网节点将所述跨链消息转发至自身所处目标区块链子网中相应的目标子网节点;以及,在所述S个消息内容中确定m2个消息内容,第一节点设备在所述m2个消息内容中任一消息内容对应的转发路径上的下一跳节点设备区别于在所述上一级聚合消息包含的任一其他消息内容对应的转发路径上的下一跳节点设备,并响应于m2>0将所述m2个消息内容分别包含在跨链消息中转发至相应的下一跳节点设备。
8.根据权利要求7所述的方法,还包括:
任一目标子网节点响应于接收到任一消息内容,对所述任一消息内容进行预设处理;和/或将所述任一消息内容或对所述任一消息内容进行预设处理的处理结果同步至自身所处区块链子网中的其他子网节点。
9.根据权利要求1中所述的方法,第一节点设备将所述下一级聚合消息转发至该下一跳节点设备,包括:
通过第一节点设备上的主网节点与该下一跳节点设备上的主网节点之间建立的网络链路,将所述下一级聚合消息转发至该下一跳节点设备。
10.根据权利要求9所述的方法,所述网络链路在第一节点设备上运行的通讯插件与该下一跳节点设备上运行的通讯插件之间建立;其中,同一节点设备上的主网节点与子网节点共享该节点设备上运行的通讯插件。
11.根据权利要求1所述的方法,第一节点设备基于所述n个消息内容构建所述下一级聚合消息,包括:
对所述n个消息内容进行去重处理,并将去重处理后的各个消息内容以及所述各个消息内容与所述n个跨链消息之间的映射关系记录在所述下一级聚合消息的消息体中。
12.一种区块链系统,所述区块链系统由区块链主网及其所管理的多个区块链子网构成,所述区块链子网中的子网节点与其所处节点设备中部署的主网节点相对应;其中,任一主网节点所处的第一节点设备用于:
针对待从源区块链子网中的源子网节点传输至相应的目标子网节点的n个消息内容,确定所述n个消息内容一一对应的n条转发路径,其中,任一目标子网节点所处的目标区块链子网区别于所述源区块链子网,n≥2;
若确定第一节点设备在所述n条转发路径上具有相同的下一跳节点设备,则将基于所述n个消息内容构建的下一级聚合消息转发至该下一跳节点设备。
13.一种跨子网交互装置,应用于由区块链主网及其所管理的多个区块链子网构成的区块链系统,所述区块链子网中的子网节点与其所处节点设备中部署的主网节点相对应;所述装置包括:
路径确定单元,用于针对待从源区块链子网中的源子网节点传输至相应的目标子网节点的n个消息内容,由第一节点设备确定所述n个消息内容一一对应的n条转发路径,其中,任一目标子网节点所处的目标区块链子网区别于所述源区块链子网,n≥2;
聚合转发单元,用于由第一节点设备若确定自身在所述n条转发路径上具有相同的下一跳节点设备,则将基于所述n个消息内容构建的下一级聚合消息转发至该下一跳节点设备。
14.一种电子设备,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器通过运行所述可执行指令以实现如权利要求1-11中任一项所述的方法。
15.一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现如权利要求1-11中任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310494437.4A CN116455900A (zh) | 2023-04-28 | 2023-04-28 | 一种跨子网交互方法及装置、区块链系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310494437.4A CN116455900A (zh) | 2023-04-28 | 2023-04-28 | 一种跨子网交互方法及装置、区块链系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116455900A true CN116455900A (zh) | 2023-07-18 |
Family
ID=87127428
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310494437.4A Pending CN116455900A (zh) | 2023-04-28 | 2023-04-28 | 一种跨子网交互方法及装置、区块链系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116455900A (zh) |
-
2023
- 2023-04-28 CN CN202310494437.4A patent/CN116455900A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113259455B (zh) | 跨子网交互方法及装置 | |
CN113259460B (zh) | 跨链交互方法及装置 | |
CN113259457B (zh) | 区块链子网的信息同步方法及装置 | |
CN113259456B (zh) | 跨链交互方法及装置 | |
CN113067902B (zh) | 区块链消息的传输方法及装置 | |
CN114301828A (zh) | 一种跨子网交互方法、装置、电子设备和存储介质 | |
WO2024001022A1 (zh) | 跨子网调用 | |
CN113067897B (zh) | 跨链交互方法及装置 | |
CN113259453A (zh) | 跨链交互方法及装置 | |
CN114374699A (zh) | 跨链交互方法和跨链交互的审计方法 | |
CN113259118B (zh) | 同步节点信息列表的方法 | |
CN113259117B (zh) | 同步节点信息列表的方法 | |
CN113259461B (zh) | 跨链交互方法和区块链系统 | |
CN113259120B (zh) | 同步节点信息列表的方法 | |
CN113259454B (zh) | 跨链交互方法及装置 | |
CN114363335B (zh) | 跨链交互方法及装置 | |
WO2023124744A1 (zh) | 跨子网交互 | |
CN114422520B (zh) | 跨链交互方法及装置 | |
CN114095507B (zh) | 跨链交互方法和区块链系统 | |
CN114338714B (zh) | 一种区块同步方法、装置、电子设备和存储介质 | |
CN113067838B (zh) | 跨链交互方法及装置 | |
CN116455900A (zh) | 一种跨子网交互方法及装置、区块链系统 | |
CN113259459B (zh) | 区块链子网运行状态的控制方法和区块链系统 | |
CN114866560A (zh) | 区块链节点的迁移方法及装置 | |
CN114285755B (zh) | 一种跨子网交互方法、装置、电子设备和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |