CN113259460B - 跨链交互方法及装置 - Google Patents

跨链交互方法及装置 Download PDF

Info

Publication number
CN113259460B
CN113259460B CN202110611546.0A CN202110611546A CN113259460B CN 113259460 B CN113259460 B CN 113259460B CN 202110611546 A CN202110611546 A CN 202110611546A CN 113259460 B CN113259460 B CN 113259460B
Authority
CN
China
Prior art keywords
node
blockchain
network
chain
message
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.)
Active
Application number
CN202110611546.0A
Other languages
English (en)
Other versions
CN113259460A (zh
Inventor
陶友贤
王江
邓福喜
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Ant Blockchain Technology Shanghai Co Ltd
Original Assignee
Alipay Hangzhou Information Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Alipay Hangzhou Information Technology Co Ltd filed Critical Alipay Hangzhou Information Technology Co Ltd
Priority to CN202110611546.0A priority Critical patent/CN113259460B/zh
Publication of CN113259460A publication Critical patent/CN113259460A/zh
Application granted granted Critical
Publication of CN113259460B publication Critical patent/CN113259460B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • H04L67/1059Inter-group management mechanisms, e.g. splitting, merging or interconnection of groups
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q40/00Finance; Insurance; Tax strategies; Processing of corporate or income taxes
    • G06Q40/04Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/50Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees

Landscapes

  • Engineering & Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Accounting & Taxation (AREA)
  • Finance (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computer Security & Cryptography (AREA)
  • Technology Law (AREA)
  • Strategic Management (AREA)
  • Physics & Mathematics (AREA)
  • General Business, Economics & Management (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Marketing (AREA)
  • Economics (AREA)
  • Development Economics (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)

Abstract

本说明书一个或多个实施例提供一种跨链交互方法及装置。所述方法包括:源区块链网络中的至少一个源节点向目的区块链网络发起跨链请求,以使所述目的区块链网络中的各目的节点分别获得所述跨链请求;各源节点获取各目的节点分别响应于所述跨链请求而返回的跨链消息,并在自身获取到的跨链消息通过校验的情况下在所述源区块链网络中针对所述跨链消息的消息内容构造多重签名的重构消息;各源节点在确定接收到的任一重构消息中包含的源节点签名的签名数量通过拜占庭容错校验的情况下,根据所述任一重构消息生成区块链交易并提交至所述源区块链网络进行共识;各源节点分别执行通过共识的多条区块链交易中的同一区块链交易。

Description

跨链交互方法及装置
技术领域
本说明书一个或多个实施例涉及区块链技术领域,尤其涉及一种跨链交互方法及装置。
背景技术
区块链技术构建在传输网络(例如点对点网络)之上。区块链网络中的节点利用链式数据结构来验证与存储数据,并采用分布式节点共识算法来生成和更新数据。在一些区块链网络中,部分节点有时存在实现小范围交易的需求,以避免其他节点获得这些交易及其相关数据,因此可以在区块链主网的基础上进一步建立区块链子网。
然而,不同区块链网络之间可能存在跨链交互需求,从而源区块链网络中的节点可以向目的区块链网络发起交互请求。但是因为源区块链网络中的不同节点可能接收到目的区块链子网中的不同节点返回的多个区块链消息,所以如何保证源区块链网络中的各个节点处理目的区块链网络返回的跨链消息后得到一致的处理结果,是跨链交互过程中亟待解决的问题。
发明内容
有鉴于此,本说明书一个或多个实施例提供一种跨链交互方法及装置。
为实现上述目的,本说明书一个或多个实施例提供技术方案如下:
根据本说明书一个或多个实施例的第一方面,提出了一种跨链交互方法,包括:
源区块链网络中的至少一个源节点向目的区块链网络发起跨链请求,以使所述目的区块链网络中的各目的节点分别获得所述跨链请求;
各源节点获取各目的节点分别响应于所述跨链请求而返回的跨链消息,并在自身获取到的跨链消息通过校验的情况下在所述源区块链网络中针对所述跨链消息的消息内容构造多重签名的重构消息;
各源节点在确定接收到的任一重构消息中包含的源节点签名的签名数量通过拜占庭容错校验的情况下,根据所述任一重构消息生成区块链交易并提交至所述源区块链网络进行共识;
各源节点分别执行通过共识的多条区块链交易中的同一区块链交易。
根据本说明书一个或多个实施例的第二方面,提出了一种跨链交互方法,包括:
源区块链网络中的至少一个源节点向目的区块链网络发起跨链请求,以使所述目的区块链网络中的各目的节点分别获得所述跨链请求;
所述源区块链网络中的主节点获取多重签名的任一重构消息;其中,在各目的节点分别响应于所述跨链请求而返回的跨链消息通过校验的情况下,所述任一重构消息由所述跨链消息的消息内容构造得到;
所述主节点在确定所述任一重构消息中包含的源节点签名的签名数量通过拜占庭容错校验的情况下,根据所述任一重构消息生成区块链交易并提交至所述源区块链网络进行共识;
各源节点分别执行通过共识的所述区块链交易。
根据本说明书一个或多个实施例的第三方面,提出了一种跨链交互装置,包括:
请求发起单元,使源区块链网络中的至少一个源节点向目的区块链网络发起跨链请求,以使所述目的区块链网络中的各目的节点分别获得所述跨链请求;
消息构造单元,使各源节点获取各目的节点分别响应于所述跨链请求而返回的跨链消息,并在自身获取到的跨链消息通过校验的情况下在所述源区块链网络中针对所述跨链消息的消息内容构造多重签名的重构消息;
交易生成单元,使各源节点在确定接收到的任一重构消息中包含的源节点签名的签名数量通过拜占庭容错校验的情况下,根据所述任一重构消息生成区块链交易并提交至所述源区块链网络进行共识;
交易执行单元,使各源节点分别执行通过共识的多条区块链交易中的同一区块链交易。
根据本说明书一个或多个实施例的第四方面,提出了一种跨链交互装置,包括:
请求发起单元,使源区块链网络中的至少一个源节点向目的区块链网络发起跨链请求,以使所述目的区块链网络中的各目的节点分别获得所述跨链请求;
消息获取单元,使所述源区块链网络中的主节点获取多重签名的任一重构消息;其中,在各目的节点分别响应于所述跨链请求而返回的跨链消息通过校验的情况下,所述任一重构消息由所述跨链消息的消息内容构造得到;
交易生成单元,使所述主节点在确定所述任一重构消息中包含的源节点签名的签名数量通过拜占庭容错校验的情况下,根据所述任一重构消息生成区块链交易并提交至所述源区块链网络进行共识;
交易执行单元,使各源节点分别执行通过共识的所述区块链交易。
根据本说明书一个或多个实施例的第五方面,提出了一种电子设备,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器通过运行所述可执行指令以实现如第一方面或第二方面中任一项所述的方法。
根据本说明书一个或多个实施例的第六方面,提出了一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现如第一方面或第二方面中任一项所述方法的步骤。
附图说明
图1是一示例性实施例提供的一种创建智能合约的示意图。
图2是一示例性实施例提供的一种调用智能合约的示意图。
图3是一示例性实施例提供的一种创建和调用智能合约的示意图。
图4是一示例性实施例提供的一种基于区块链主网组建区块链子网的示意图。
图5是一示例性实施例提供的一种跨链交互方法的示意图。
图6是一示例性实施例提供的一种跨链交互方法的流程图。
图7是一示例性实施例提供的另一种跨链交互方法的流程图。
图8是一示例性实施例提供的一种设备的结构示意图。
图9是一示例性实施例提供的一种跨链交互装置的框图。
图10是一示例性实施例提供的另一种跨链交互装置的框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书一个或多个实施例相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书一个或多个实施例的一些方面相一致的装置和方法的例子。
需要说明的是:在其他实施例中并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤。在一些其他实施例中,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其他实施例中可能被分解为多个步骤进行描述;而本说明书中所描述的多个步骤,在其他实施例中也可能被合并为单个步骤进行描述。
区块链一般被划分为三种类型:公有链(Public Blockchain),私有链(PrivateBlockchain)和联盟链(Consortium Blockchain)。此外,还有多种类型的结合,比如私有链+联盟链、联盟链+公有链等不同组合形式。其中去中心化程度最高的是公有链。公有链以比特币、以太坊为代表,加入公有链的参与者可以读取链上的数据记录、参与交易以及竞争新区块的记账权等。而且,各参与者(即节点)可自由加入以及退出网络,并进行相关操作。私有链则相反,该网络的写入权限由某个组织或者机构控制,数据读取权限受组织规定。简单来说,私有链可以为一个弱中心化系统,参与节点具有严格限制且少。这种类型的区块链更适合于特定机构内部使用。联盟链则是介于公有链以及私有链之间的区块链,可实现“部分去中心化”。联盟链中各个节点通常有与之相对应的实体机构或者组织;参与者通过授权加入网络并组成利益相关联盟,共同维护区块链运行。
不论是公有链、私有链还是联盟链,都可能提供智能合约的功能。区块链上的智能合约是在区块链系统上可以被交易触发执行的合约。智能合约可以通过代码的形式定义。
以以太坊为例,支持用户在以太坊网络中创建并调用一些复杂的逻辑,这是以太坊区别于比特币区块链技术的最大挑战。以太坊作为一个可编程区块链的核心是以太坊虚拟机(EVM),每个以太坊节点都可以运行EVM。EVM是一个图灵完备的虚拟机,这意味着可以通过它实现各种复杂的逻辑。用户在以太坊中发布和调用智能合约就是在EVM上运行的。实际上,虚拟机直接运行的是虚拟机代码(虚拟机字节码,下简称“字节码”)。部署在区块链上的智能合约可以是字节码的形式。
例如图1所示,Bob将一个包含创建智能合约信息的交易发送到以太坊网络后,节点1的EVM可以执行这个交易并生成对应的合约实例。图1中的“0x6f8ae93…”代表了这个合约的地址,交易的data字段保存的可以是字节码,交易的to字段为空。节点间通过共识机制达成一致后,这个合约成功创建,并且可以在后续过程中被调用。合约创建后,区块链上出现一个与该智能合约对应的合约账户,并拥有一个特定的地址,合约代码将保存在该合约账户中。智能合约的行为由合约代码控制。换句话说,智能合约使得区块链上产生包含合约代码和账户存储(Storage)的虚拟账户。
如图2所示,仍以以太坊为例,Bob将一个用于调用智能合约的交易发送到以太坊网络后,某一节点的EVM可以执行这个交易并生成对应的合约实例。图2中交易的from字段是交易发起方(即Bob)的账户的地址,to字段中的“0x6f8ae93…”代表了被调用的智能合约的地址,value字段在以太坊中是以太币的值,交易的data字段保存的调用智能合约的方法和参数。调用智能合约后,balance的值可能改变。后续,某个客户端可以通过某一区块链节点(例如图2中的节点6)查看balance的当前值。智能合约以规定的方式在区块链网络中每个节点独立的执行,所有执行记录和数据都保存在区块链上,所以当交易完成后,区块链上就保存了无法篡改、不会丢失的交易凭证。
创建智能合约和调用智能合约的示意图如图3所示。以太坊中要创建一个智能合约,需要经过编写智能合约、编译成字节码、部署到区块链等过程。以太坊中调用智能合约,是发起一笔指向智能合约地址的交易,智能合约代码分布式的运行在以太坊网络中每个节点的虚拟机中。
需要说明的是,除了可以由用户创建智能合约,也可以在创世块中由系统设置智能合约。这类合约一般称为创世合约。一般的,创世合约中可以设置一些区块链网络的数据结构、参数、属性和方法。此外,具有系统管理员权限的账户可以创建系统级的合约,或者修改系统级的合约(简称为系统合约)。另外除了以太坊中的EVM外,不同的区块链网络还可能采用各种的虚拟机,这里并不限定。
区块链网络中的节点在执行调用智能合约的交易后,会生成相应的收据(receipt),以用于记录与执行该智能合约相关的信息。这样,可以通过查询交易的收据来获得合约执行结果的相关信息。合约执行结果可以表现为收据中的事件(event)。消息机制可以通过收据中的事件实现消息传递,以触发区块链节点执行相应的处理。事件的结构譬如可以为:
Event:
[topic][data]
[topic][data]
......
在上述示例中,事件的数量可以为一个或多个;其中,每个事件分别包括主题(topic)和数据(data)等字段。区块链节点可以通过监听事件的topic,从而在监听到预定义的topic的情况下,执行预设处理,或者从相应事件的data字段读取相关内容,以及可以基于读取的内容执行预设处理。
上述的事件机制中,相当于在监听方(比如存在监听需求的用户)处存在具有监听功能的客户端,譬如该客户端上运行了用于实现监听功能的SDK等,由该客户端对区块链节点产生的事件进行监听,而区块链节点只需要正常生成收据即可。除了上述的事件机制之外,还可以通过其他方式实现交易信息的透出。例如,可以通过在区块链节点运行的区块链平台代码中嵌入监听代码,使得该监听代码可以监听区块链交易的交易内容、智能合约的合约状态、合约产生的收据等其中的一种或多种数据,并将监听到的数据发送至预定义的监听方。由于监听代码部署于区块链平台代码中,而非监听方的客户端处,因而相比于事件机制而言,这种基于监听代码的实现方式相对更加的主动。其中,上述的监听代码可以由区块链平台的开发人员在开发过程中加入区块链平台代码,也可以由监听方基于自身的需求而嵌入,本说明书并不对此进行限制。
区块链技术区别于传统技术的去中心化特点之一,就是在各个节点上进行记账,或者称为分布式记账,而不是传统的集中式记账。区块链系统要成为一个难以攻破的、公开的、不可篡改数据记录的去中心化诚实可信系统,需要在尽可能短的时间内做到分布式数据记录的安全、明确及不可逆。不同类型的区块链网络中,为了在各个记录账本的节点中保持账本的一致,通常采用共识算法来保证,即前述提到的共识机制。例如,区块链节点之间可以实现区块粒度的共识机制,比如在节点(例如某个独特的节点)产生一个区块后,如果产生的这个区块得到其它节点的认可,其它节点记录相同的区块。再例如,区块链节点之间可以实现交易粒度的共识机制,比如在节点(例如某个独特的节点)获取一笔区块链交易后,如果这笔区块链交易得到其他节点的认可,认可该区块链交易的各个节点可以分别将该区块链交易添加至自身维护的最新区块中,并且最终能够确保各个节点产生相同的最新区块。共识机制是区块链节点就区块信息(或称区块数据)达成全网一致共识的机制,可以保证最新区块被准确添加至区块链。当前主流的共识机制包括:工作量证明(Proof ofWork,POW)、股权证明(Proof of Stake,POS)、委任权益证明(Delegated Proof of Stake,DPOS)、实用拜占庭容错(Practical Byzantine Fault Tolerance,PBFT)算法,HoneyBadgerBFT算法等。
由于区块链网络的去中心化特性,使得区块链网络中的所有区块链节点均会维护相同的区块数据,无法满足部分节点的特殊需求。以联盟链为例,所有联盟成员(即联盟内的节点成员)可以组成一区块链网络,所有联盟成员在该区块链网络中分别存在对应的区块链节点,并可以通过对应的区块链节点获得该区块链网络上发生的所有交易和相关数据。但在一些情况下,可能存在部分联盟成员希望完成一些具有保密需求的交易,这些联盟成员既希望这些交易能够在区块链上存证或借助于区块链技术的其他优势,又能够避免其他联盟成员查看到这些交易和相关数据。虽然这些联盟成员可以额外组建一新的区块链网络,其建立方式与上述包含所有联盟成员的区块链网络类似,但是从头开始建立一条新的区块链网络需要消耗大量的资源,且无论是该区块链网络的建立过程或是建成后的配置过程都非常耗时。联盟成员之间的需求往往是临时的或者具有一定的时效性,使得新建的区块链网络很快就会由于需求消失而失去存在的意义,从而进一步增加了上述区块链网络的建链成本。而联盟成员之间的需求经常会变化,而每一需求所对应的联盟成员也往往不同,因而每当联盟成员发生变化时就可能需要组建一新的区块链网络,从而造成资源和时间的大量浪费。
为此,可以将已组建的区块链网络作为区块链主网,并在该区块链主网的基础上组建区块链子网。那么,在诸如上述的联盟链场景下,联盟成员可以在已经参与区块链主网的情况下,基于自身需求而在区块链主网的基础上组建所需的区块链子网。由于区块链子网是在区块链主网的基础上所建立,使得区块链子网的组建过程相比于完全独立地组建一条区块链网络,所消耗的资源和所需的耗时等都极大地降低,灵活性极高。
基于区块链主网快捷组建区块链子网的过程如下:区块链主网中的各主网节点分别获取组建区块链子网的交易,所述交易包含所述区块链子网的配置信息,所述配置信息包括节点成员的身份信息。然后,所述区块链主网中的各主网节点分别执行所述交易;其中,当第一主网节点属于所述配置信息所指示的节点成员时,部署第一主网节点的节点设备基于所述交易生成包含所述配置信息的创世块并启动属于所述区块链子网的第一子网节点。
组建区块链子网的交易可由区块链主网的管理员发起,即仅允许管理员在区块链主网的基础上组建区块链子网,而避免将区块链子网的组建权限开放给普通用户,以防止由此导致的安全性问题。在一些情况下,也可以允许区块链主网的普通用户发起上述组建区块链子网的交易,以满足普通用户的组网需求,使得普通用户能够在管理员不便于发起交易的情况下依然能够快捷地组建区块链子网。
以图4所示为例,区块链主网为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来发起该组建区块链子网的交易。
在区块链主网的基础上组建区块链子网时,容易理解的是,会使得该区块链子网与区块链主网之间存在逻辑上的层次关系。比如在图4所示的subnet0上组建区块链子网subnet1时,可以认为subnet0处于第一层、subnet1处于第二层,subnet0为subnet1的父网,subnet1为subnet0的子网。并且区块链子网也可以组建对应的区块链子网,例如可以在图4中subnet1的基础上进一步组建另一区块链子网subnet3,此时可以认为subnet处于第三层,subnet1为subnet3对应的父网,subnet3为subnet1的子网,而subnet3则为subnet0的孙子网,同样的,subnet3仍然可以在其基础上新的组建区块链子网,使得各区块链网络之间构成这种多层次树形结构,而在本说明书中,任一区块链网络是由其对应的父网所管理,也即由组建该任一区块链网络的区块链网络所管理,因此在如图4这种由以区块链主网为根结点(根结点的层级最低)、各个区块链子网分别为其他结点的区块链网络树形系统中,任一结点代表的区块链子网由其父结点对应的区块链网络所管理,而作为特例,区块链主网为底层区块链网络时,区块链主网由区块链主网自身进行管理。本说明书中的区块链主网可以为底层区块链网络,底层区块链网络是指并非在其他区块链网络的基础上组建的区块链子网,因此除该区块链主网以外不存在其他区块链网络能够对区块链主网进行管理,比如图4中的subnet0可以认为属于底层区块链网络类型的区块链主网,subnet0管理subnet0自身,当然,区块链主网也可以为其他区块链网络的子网,本说明书对此不作任何限制。上述区块链网络树形系统通过父结点管理对应子结点的方式,实现了逐层管理,降低了区块链主网的管理压力,同时避免向下层网络暴露上层网络的子网信息,从而实现各级网络的隐秘管理。
上述组建区块链子网的交易在被发送至区块链主网后,由区块链主网内的共识节点进行共识,并在通过共识后由各主网节点执行该交易,以完成区块链子网的组建。共识过程取决于所采用的共识机制,譬如上文所述的任一共识机制,本说明书并不对此进行限制。
通过在上述组建区块链子网的交易中包含配置信息,该配置信息可以用于对所组建的区块链子网进行配置,使得组建的区块链子网符合组网需求。例如,通过在配置信息中包含节点成员的身份信息,可以指定组建的区块链子网包含哪些区块链节点。
节点成员的身份信息可以包括节点的公钥,或者采用节点ID等其他能够表征节点身份的信息,本说明书并不对此进行限制。以公钥为例,每个区块链节点都存在对应的一组或多组公私钥对,由区块链节点持有私钥而公钥被公开且唯一对应于该私钥,因而可以通过公钥来表征相应区块链节点的身份。因此,对于希望作为区块链子网的节点成员的区块链节点,可以将这些区块链节点的公钥添加至上述组建区块链子网的交易中,以作为上述节点成员的身份信息。
第一主网节点可以为区块链主网上属于配置信息所指示的节点成员的区块链节点。在组建区块链子网时,并非由第一主网节点直接加入区块链子网、成为其节点成员,而是需要由用于部署该第一主网节点的节点设备生成第一子网节点,并由第一子网节点成为区块链子网中的节点成员。第一主网节点和第一子网节点对应于同一个区块链成员,比如在联盟链场景下对应于同一联盟链成员,但第一主网节点属于区块链主网、第一子网节点属于区块链子网,使得该区块链成员可以分别参与到区块链主网和区块链子网的交易中;并且,由于区块链主网和区块链子网属于相互独立的两个区块链网络,使得第一主网节点生成的区块与第一子网节点生成的区块分别存入所述节点设备上的不同存储(采用的存储譬如可以为数据库),实现了第一主网节点与第一子网节点分别使用的存储之间的相互隔离,因而区块链子网所产生的数据仅会在区块链子网的节点成员之间同步,使得仅参与了区块链主网的区块链成员无法获得区块链子网上产生的数据,实现了区块链主网与区块链子网之间的数据隔离,满足了部分区块链成员(即参与区块链子网的区块链成员)之间的交易需求。
可见,第一主网节点和第一子网节点是在逻辑上划分出来的区块链节点,而从物理设备的角度来说,相当于上述部署了第一主网节点和第一子网节点的节点设备同时参与了区块链主网和区块链子网。由于区块链主网与区块链子网之间相互独立,使得这两个区块链网络的身份体系也相互独立,因而即便第一主网节点和第一子网节点可以采用完全相同的公钥,仍然应当将两者视为不同的区块链节点。譬如在图4中,subnet0中的nodeA相当于第一主网节点,而部署该nodeA的节点设备生成了属于subnet1的nodeA1,该nodeA1相当于第一子网节点。可见,由于身份体系相互独立,所以即便第一子网节点所采用的公钥区别于第一主网节点,也不影响本说明书方案的实施。
当然,区块链子网的节点成员并不一定只是区块链主网的部分节点成员。在一些情况下,区块链子网的节点成员可以与区块链主网的节点成员完全一致,此时所有的区块链成员都可以获得区块链主网和区块链子网上的数据,但是区块链主网与区块链子网所产生的数据依然可以相互隔离,比如可以通过在区块链主网上实现一类业务、在区块链子网上实现另一类业务,从而可以使得这两类业务分别产生的业务数据之间相互隔离。
除了上述的节点成员的身份信息之外,配置信息还可以包括下述至少之一:所述区块链子网的网络标识、所述区块链子网的管理员的身份信息、针对区块链平台代码的属性配置等,本说明书并不对此进行限制。网络标识用于唯一表征该区块链子网,因而该区块链子网的网络标识应当区别于区块链主网和该区块链主网上组建的其他区块链子网。区块链子网的管理员的身份信息,譬如可以为作为管理员的节点成员的公钥;其中,区块链主网与区块链子网的管理员可以相同,也可以不同。
通过区块链主网来组建区块链子网的优势之一,就是由于生成第一子网节点的节点设备上已经部署了第一主网节点,因而可以将第一主网节点所使用的区块链平台代码复用在第一子网节点上,免去了区块链平台代码的重复部署,极大地提高了区块链子网的组建效率。那么,如果配置信息中未包含针对区块链平台代码的属性配置,第一子网节点可以复用第一主网节点上采用的属性配置;如果配置信息中包含了针对区块链平台代码的属性配置,第一子网节点可以采用该属性配置,使得第一子网节点所采用的属性配置不受限于第一主网节点的属性配置、与第一主网节点无关。针对区块链平台代码的属性配置可以包括下述至少之一:代码版本号、是否需要共识、共识算法类型、区块大小等,本说明书并不对此进行限制。
组建区块链子网的交易包括调用合约的交易。该交易中可以指明被调用的智能合约的地址、调用的方法和传入的参数。例如,调用的合约可以为前述的创世合约或系统合约,调用的方法可以为组建区块链子网的方法,传入的参数可以包括上述的配置信息。在一实施例中,该交易可以包含如下信息:
from:Administrator
to:Subnet
method:AddSubnet(string)
string:genesis
其中,from字段为该交易的发起方的信息,譬如Administrator表明该发起方为管理员;to字段为被调用的智能合约的地址,譬如该智能合约可以为Subnet合约,则to字段具体为该Subnet合约的地址;method字段为调用的方法,譬如在Subnet合约中用于组建区块链子网的方法可以为AddSubnet(string),而string为AddSubnet()方法中的参数,上述示例中通过genesis表征该参数的取值,该genesis具体为前述的配置信息。
以Subnet0上的节点nodeA~nodeE执行调用Subnet合约中AddSubnet()方法的交易为例。在交易通过共识后,nodeA~nodeE分别执行AddSubnet()方法并传入配置信息,得到相应的执行结果。
合约的执行结果可以包括所述配置信息,该执行结果可以处于前文所述的收据中,该收据中可以包含与执行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在确定subnet1是需要新组建的区块链子网的情况下,会进一步识别data字段中包含的节点成员的身份信息,以确定自身的处理方式。比如,nodeA~nodeD会发现在data字段包含自身的公钥、IP地址和端口号等身份信息,假定nodeA~nodeD分别部署在节点设备1~4上,以nodeA和节点设备1为例: nodeA会触发节点设备1,使得节点设备1基于上述的消息机制从data字段获得配置信息并生成包含该配置信息的创世块,且节点设备1会在本地部署nodeA1,该nodeA1加载生成的创世块,从而成为subnet1的子网节点;类似地,nodeB会触发节点设备2生成nodeB1、nodeC会触发节点设备3生成nodeC1、nodeD会触发节点设备4生成nodeD1。以及,nodeE会发现data字段包含的身份信息与自身均不匹配,假定nodeE部署在节点设备5上,那么该节点设备5不会根据data字段中的配置信息生成创世块,也不会生成subnet1中的节点。
如前所述,第一主网节点与第一子网节点并不一定采用相同的身份信息。因此,在上述实施例中,data字段中可以包含预先为nodeA1~nodeD1生成的身份信息,且区别于nodeA~nodeD的身份信息。仍以nodeA为例,nodeA如果在data字段中发现了nodeA1的身份信息,那么nodeA会触发节点设备1生成创世块、部署nodeA1,并由nodeA1加载该创世块;nodeB~nodeD的处理方式类似,此处不再一一赘述。
除了配置信息之外,合约的执行结果可以包括创世块。换言之,除了可以在data字段中包含配置信息,还可以直接在执行合约调用的过程中生成包含配置信息的创世块,从而将创世块包含于data字段中,那么对于上述的nodeA~nodeD而言,相应的节点设备1~4可以通过消息机制直接从data字段获得创世块,而无需自行生成,可以提升对nodeA1~nodeD1的部署效率。
在本说明书中,组建区块链子网的交易可以并非是调用智能合约的交易,使得不支持智能合约的区块链网络也可以实现本说明书的技术方案,从而在区块链主网的基础上快捷地创建出区块链子网。例如,可以预先定义一组网交易类型标识,当交易包含该组网交易类型标识时,就表明该交易用于组建新的区块链子网,即该交易为组建区块链子网的交易。区块链平台代码可以包含相关的用于组建区块链子网的处理逻辑,使得运行该区块链平台代码的第一主网节点在执行交易时,如果发现该交易中包含上述的组网交易类型标识,且第一主网节点属于该交易中的配置信息所指示的节点成员,可以基于上述处理逻辑来触发部署第一主网节点的节点设备生成包含该配置信息的创世块并启动第一子网节点,由第一子网节点加载该创世块,以形成为区块链子网中的区块链节点。
节点设备通过拉起一进程,并在该进程中创建一个实例,由该实例运行区块链平台代码,相当于在该节点设备上部署一区块链节点。对于第一主网节点而言,由节点设备在上述进程中创建第一实例,并由该第一实例运行区块链平台代码而形成。类似地,对于第一子网节点而言,由节点设备在上述进程中创建区别于第一实例的第二实例,并由该第二实例运行区块链平台代码而形成。当第一实例与第二实例位于同一进程时,由于不涉及跨进程交互,可以降低对第一子网节点的部署难度、提高部署效率;当然,第二实例也可能与第一实例分别处于节点设备上的不同进程中,本说明书并不对此进行限制。事实上,本说明书实施例中涉及的任一节点设备上部署的各区块链节点均为运行在所述任一节点设备上的不同的区块链实例,任一节点设备上部署的各区块链节点生成的区块分别存入所述任一节点设备上的不同存储(例如数据库),且任一节点设备部署的各区块链节点分别使用的存储之间相互隔离。
通过上述方式,可以在区块链主网上创建出区块链子网。以图4为例,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的基础上组建出区块链子网subnet3,其过程与subnet1或subnet2的组建相似,仅仅是将区块链主网替换为区块链子网subnet1,此处不再赘述,最后得到subnet3包含nodeA3、nodeB3和nodeC3,使得且nodeA与nodeA1、nodeA2、nodeA3,nodeB与nodeB1、nodeB2、nodeB3,nodeC与nodeC1、nodeC2、nodeC3分别部署在同一节点设备上。
无论在不同区块链主网之间,还是在通过上述方式建立的不同区块链子网之间,均可能存在跨链交互需求。但是,因为发起跨链交互请求的源区块链节点和响应于跨链请求返回消息的目的区块链节点通常均存在多个,所以源区块链网络中的不同节点可能接收到目的区块链子网中的不同节点返回的多个区块链消息,因而如何保证源区块链网络中的各个节点所处理目的区块链网络返回的消息的一致性,是跨链交互过程中亟待解决的问题。
为解决这一问题,本说明书提出一种跨链交互方法,在源区块链网络中的源节点分别接收到目的区块链网络中的目的节点返回的跨链消息后,根据验证通过的跨链消息构造重构消息并在源区块链网络中广播签名后的重构消息,接收到该重构消息的其他源节点则在验证通过后再次进行签名并继续广播,直至任一源节点根据节点总量和该重构消息中包含的源节点签名的签名数量通过对该重构消息的拜占庭容错校验时,根据该重构消息生成区块链交易并提交共识,进而由各个源节点分别执行同一区块链交易。一方面,通过多个源节点对重构消息的多次验证及签名,保证了用于生成区块链交易的重构消息得到足够多的源节点的共同认可;另一方面,通过各个源节点分别执行同一区块链交易,有效保证了各个源节点所处理目的区块链网络返回的消息的一致性。
首先结合对应于图4的图5对本说明书的跨链交互方案进行简要说明。请参见图5,图5是一示例性实施例提供的一种跨链交互方法的示意图。如图4所示,在区块链主网subnet0的基础上创建区块链子网subnet1和区块链子网subnet2,图5所示即为subnet1和subnet2基于subnet0实现跨链交互的过程示意图。
如图5所示,subnet1和subnet2中的任一节点所属的节点设备可以部署有相应的数据库和虚拟机,以图5为例,subnet1中的nodeD1具体为所属的节点设备4在本地部署的虚拟机中运行预先部署的区块链平台代码所形成的区块链节点实例(下称区块链节点),而nodeD1作为区块链节点在运行过程中的相关数据保存在nodeD1对应的数据库中。其中,节点设备中部署的区块链节点所归属的区块链网络,可以为通过前述方式建立的区块链主网或区块链子网,当然,本方案也可以应用于独立区块链网络(即该区块链网络并非基于其他区块链网络而建立,也不存在其他区块链网络基于该区块链网络而建立)。换言之,本说明书所述的跨链交互方法,可以应用于任意两个区块链网络,本说明书对于该区块链网络与其他区块链网络之间的相互关系并不进行限制。另外,节点设备中可以部署有区块链共识代码,节点设备可以运行该共识代码以在本地形成共识组件实例;以及,节点设备中还可以部署有以组件形式管理的P2P组件代码,节点设备可以运行该P2P组件代码以在本地形成P2P组件实例,也即P2P组件。节点设备中还部署有区块链业务代码,节点设备可以运行该区块链业务代码以在本地形成业务实例,其中,任一节点设备中可以实现至少一个业务实例,如用于实现数据读/写功能的存储实例、用于实现隐私计算等计算功能的计算实例、用于实现数据加密功能的加密实例等,不再赘述。
特别的,在本说明书所述的跨链交互方法应用于区块链主网管理下的两个区块链子网的情况下,对应源区块链网络中源节点或目的区块链网络中的目的节点所属的节点设备上均部署有区块链主网中的主网节点,结合图4和图5,subnet1中nodeD1所属的节点设备4上还部署有主网节点nodeD,subnet2中nodeE2所属的节点设备5上还部署有主网节点nodeE,由于节点设备上的P2P组件可以被该节点设备上各个区块链节点所共享,因此虽然subnet1和subnet2之间不存在直接的网络连接链路,但由于节点设备4上部署的nodeD和节点设备5上部署的nodeE已经预先通过形成subnet0时所实现的网络连接链路建立有基于P2P组件的网络连接,所以subnet1中的nodeD1可以通过调用节点设备4本地运行的P2P组件,借助形成subnet0时所实现的网络连接链路,建立与subnet2中各目的节点(例如nodeE2)所属节点设备(例如节点设备5)上运行的P2P组件之间的网络连接,由此进一步实现与目的节点之间的网络通讯,使得源区块链网络与目的区块链网络之间无需建立新的网络连接链路,而是通过底层区块链主网预先建立的网络连接链路,源区块链网络中源节点与目的区块链网络中目的节点之间的网络通讯。
subnet1中的各节点在实现业务功能的过程中可能需要使用subnet2中各节点保存的数据,从而subnet1可以向subnet2请求获取该数据,在通过本公开所述的跨链交互方案获取数据的过程中,上述subnet1即为源区块链网络、subnet2即为目的区块链网络。如subnet1可以向subnet2发送跨链请求,以期获取subnet2的节点数据库中保存的特定合约中特定字段的合约状态。可以理解的是,“subnet1向subnet2发送跨链请求”即为“subnet1中的子网节点(即源节点)向subnet2中的子网节点(即目的节点)发送跨链请求”。
具体的,在本说明书所述的跨链交互方法应用于区块链主网管理下的两个区块链子网的情况下,subnet1中的任一节点可以在跨链请求中封装目的区块链网络subnet2的网络标识,通过调用节点设备本地部署且与subnet0中主网节点共享的P2P组件,将所述跨链请求通过subnet0的网络连接链路广播至部署有主网节点的各节点设备上运行的P2P组件。在一实施例中,若subnet1中的nodeA1通过节点设备1上的P2P组件发出跨链请求,那么其他部署有主网节点的节点设备2~5均将收到该跨链请求,例如,节点设备5上的P2P组件在接收到该跨链请求后,将根据所述跨链请求携带的所述网络标识判断节点设备5本地是否部署有该网络标识对应区块链网络中的区块链节点,显然,节点设备5上部署有subnet2中的nodeE2,因此,节点设备5上的P2P组件将基于该网络标识,进一步将跨链请求转发至nodeE2,而节点设备4上的P2P组件在接收到该跨链请求后,同样会基于其所携带的网络标识进行转发,但由于节点设备4本地并未部署有subnet2中的区块链节点,因此,节点设备4将不会保留该跨链请求,而是进一步将该跨链请求转发至其他部署有主网节点的节点设备。另外,subnet1中的任一节点除了可以在跨链请求中封装网络标识外,还可以在跨链请求中封装目的区块链网络中任意节点的身份信息,如节点ID、节点公钥,从而可以在调用P2P组件实现跨链传输跨链请求的过程中,不需要以广播的形式发送给各主网节点所属的节点设备,而是直接使得P2P组件以点对点通讯的方式发送给所述跨领请求中携带的各节点身份信息所指定的节点设备,例如,subnet1中的nodeD1可以在跨链请求中封装nodeE2的身份信息并调用节点设备4本地运行的P2P组件,使P2P组件可以根据该nodeE2的身份信息,将该跨链请求以单播形式发送至同时部署有subnet2中的nodeE2以及subnet0中的nodeE的节点设备5,节点设备5上的P2P组件在接收到该跨链请求后,除了可以通过跨链请求携带的网络标识将该跨链请求转发至nodeE2,也可以直接通过跨链请求携带的nodeE2的身份信息,将跨链请求转发至nodeE2。
以上过程描述的是源区块链网络通过区块链主网建立的网络连接链路向目的区块链网络发送消息请求的过程,类似的,目的区块链网络也可以通过调用本地P2P组件的方式实现向源区块链网络的消息传输,例如将上述源区块链网络发送的区块请求对应的跨链数据返回给源区块链网络,由此通过形成的源区块链网络与目的区块链网络之间的双向通讯信道,实现源区块链网络中源节点与目的区块链网络中目的节点之间的网络通讯。
可以向subnet0中的主网节点发送数据获取请求,并由主网节点将该请求转发至相应的subnet2,其中,subnet2中的目的节点为保证被响应的数据获取请求的合法性,可以对接收到的数据获取请求进行验证,并在验证通过的情况下进行响应。目的节点响应上述数据获取请求的过程,即为确定接收到的数据获取请求执行的数据(即subnet1需要的数据),并将基于该数据生成跨链消息并通过subnet0中的主网节点返回至subnet1的过程。类似的,subnet1中的源节点也可以对接收到的跨链消息进行合法性验证,并在验证通过的情况下使用跨链消息中包含的数据继续实现相关业务功能。
图5仅是结合图4以区块链子网subnet1和subnet2为例进行的示例性说明。实际上,图4中的各个区块链网络之间均可以实现跨链交互,本说明书对于跨链交互的区块链网络之间的关系并不进行限制。例如,上述区块链主网subnet0和区块链子网subnet1之间、区块链主网subnet0和区块链子网subnet3(即subnet0的孙子网)之间、区块链子网subnet2和subnet3之间等,均可以实现跨链交互,具体过程不再赘述。
下面结合图6对本说明书的跨链交互方案进行详细说明。请参见图6,图6是一示例性实施例提供的一种跨链交互方法的示意图。如图6所示,该方法应用于包含源区块链网络和目的区块链网络的区块链系统,该方法可以包括以下步骤:
步骤602,源区块链网络中的至少一个源节点向目的区块链网络发起跨链请求,以使所述目的区块链网络中的各目的节点分别获得所述跨链请求。
步骤604,各源节点获取各目的节点分别响应于所述跨链请求而返回的跨链消息,并在自身获取到的跨链消息通过校验的情况下在所述源区块链网络中针对所述跨链消息的消息内容构造多重签名的重构消息。
在本实施例中,源区块链网络中的源节点可以向目的区块链网络发起跨链请求,从而目的区块链网络中的各个目的节点可以响应于上述跨链请求向源节点返回跨链消息。进而,各源节点在获取到各目的节点分别返回的跨链消息后,可以对自身获取到的跨链消息进行校验,并在通过校验的情况下根据自身获取到的跨链消息构造包括跨链消息的消息内容和自身生成的源节点签名的重构消息,进而可以向源区块链网络中的其他源节点广播该重构消息。而源区块链网络中的任一源节点可以对自身接收到的重构消息进行验证,并在验证通过的情况下向该重构消息中添加自身生成的源节点签名,并继续在源区块链网络中广播该重构消息。可以理解的是,源区块链网络中的各个源节点都会分别执行上述操作,从而任一源节点在接收到其他各个源节点分别广播的重构消息后,可以分别对各个重构消息进行处理。因此,该重构消息即被接收到该消息的各个源节点添加有多重签名,即该重构消息包含多重签名。
以图4所示的网络结构中区块链子网subnet1和subnet2之间的跨链交互过程为例进行说明。subnet1中的至少一个源节点(源节点nodeA1、nodeB1、nodeC1和/或nodeD1)通过区块链主网subnet0向subnet2发起跨链请求,subnet2中的各个目的节点(目的节点nodeA2、nodeB2、nodeC2和nodeE2)分别获取到跨链请求后,可以响应于跨链请求分别生成相应的跨链消息,并分别通过subnet0将各自生成的跨链消息返回至subnet1。以源节点nodeA1为例,nodeA1接收到各个目的节点返回的跨链消息后,可以分别对各个跨链消息进行验证,进而在验证通过的情况下根据各个跨链消息生成重构消息。可以理解的是,因为nodeA1接收到的各个跨链消息是各个目的节点分别响应于相同的跨链请求生成的,所以各个跨链消息的消息内容相同,且各个跨链消息分别包含发送方目的节点生成的目的节点签名。因此,nodeA1可以对接收到的各个跨链消息包含的(相同的)消息内容进行签名,并根据该消息内容和相应的目的节点签名构造重构消息。进一步的,nodeA1可以将构造的上述重构消息广播至其他源节点,以便其他源节点分别进行相应处理,具体处理步骤参见下述实施例,此处暂不赘述。下面结合多个具体实施例对源节点向目的节点发起跨链请求并接收目的节点返回的跨链消息的过程进行详细说明。
在一实施例中,为保证所发起的跨链请求的私密性,避免请求的内容泄露,任一源节点可以采用数字信封技术对待传输的跨链请求进行加密传输。具体传输方式可以参见前述实施例的记载,此处,不再赘述。
目的节点在确定源节点请求获取的信息后,可以生成包含该信息的跨链消息。类似的,目的节点也可以采用上述数字信封技术对跨链消息进行加密。例如,目的节点可以使用对称密钥对该信息进行加密、使用各源节点的节点公钥对对称密钥进行加密,并将加密后的该信息和加密后的各对称密钥均添加至上述跨链消息中;相应的,接收到跨链消息的各源节点可以分别通过自身的节点私钥对跨链消息中采用自身节点公钥加密的对称密钥进行解密,并通过该对称密钥解密得到上述信息。可见,因为目的节点使用源区块链网络中各源节点的公钥对对称密钥进行加密,所以各源节点在接收到该跨链消息后,可以分别使用自身的节点私钥对其中包含的加密后的对称密钥进行解密,并进一步使用对称密钥解密得到自身请求获取的信息。
以图4为例,在subnet1向subnet2发起跨链请求、subnet2向subnet1返回跨链消息的情况下,subnet1为源区块链网络、subnet2为目的区块链网络。则subnet1中的任一子网节点nodeA1可以在使用对称密钥加密区块链消息后,使用subnet2中各个子网节点nodeA2、nodeB2、nodeC2和nodeE2的节点公钥加密该对称密钥,并将加密后的对称密钥和区块链消息包含在跨链请求中通过subnet0发送至subnet2。subnet2中的任一子网节点(如nodeA2)接收跨链请求后,在确定自身的节点私钥可以解密跨链请求中加密的对称密钥的情况下,即确定自身为跨链请求的合法接收方,进而可以使用解密得到的对称密钥解密区块链消息。类似的,nodeA2在生成跨链消息后,可以采用同样的方法加密跨链消息,具体过程不再赘述。
可以理解的是,利用数字信封技术,可以同时使用多个目的节点的节点公钥加密对称密钥,所以任一源节点可以使用目的区块链网络中全部目的节点的公钥加密区块链消息并将其包含在跨链请求中、任一目的节点可以使用源区块链网络中全部源节点的公钥加密源节点请求获取的信息并将其包含在跨链消息中,进而各目的节点可以根据自身的节点私钥解密跨链请求中的区块链消息、各源节点可以根据自身的节点私钥解密跨链请求中的上述信息,实现源节点向目的节点广播跨链请求,目的节点向源节点广播跨链消息的效果。当然,在采用上述数字信封方式的情况下,任一源节点也可以仅使用某一个(或多个)目的节点的节点公钥对跨链请求中的对称密钥进行加密、任一目的节点也可以仅使用某一个(或多个)源节点的节点公钥对跨链消息中的对称密钥进行加密,从而实现源节点向目的节点单播(或多播)跨链请求,目的节点向源节点单播(或多播)跨链消息的效果,具体过程不再赘述。实际上,本说明书对于上述跨链请求和跨链消息的具体发送方式并不进行限制,如不采用数字信封而直接使用节点公钥对跨链请求中的区块链消息或者跨链消息中的待处理数据进行加密,或者广播跨链请求而单播跨链消息等,不再赘述。
如前所述,源区块链网络中的各个源节点可以向目的区块链网络中的各个目的节点分别发起(即广播)跨链请求,或者各个源节点也可以分别向目的区块链网络中的任一个(或多个)目的节点发起(即单播或多播)跨链请求,并由各个目的节点将自身接收到的跨链请求同步至目的区块链网络中的其他目的节点。可见,无论是采用广播的方式发起跨链请求,还是采用单播或多播的方式发起并由接收方在自身所属网络中同步,都能够保证目的区块链网络中的各个目的节点均接收到源区块链网络中的至少一个源节点发起的跨链请求。另外,上述跨链消息也可以由各目的节点分别通过单播或广播的方式返回源区块链网络。例如,任一目的节点除了可以使用前述实施例所述的广播方式(数字信封使用源区块链网络中各个子网节点的节点公钥加密对称密钥)外,还可以根据自身所接收的跨链请求确定跨链请求的发送方,进而仅向该发送方返回相应的跨链消息。如subnet2中的目的节点nodeA2在接收到subnet1中的源节点nodeA1通过单播方式发起的跨链请求后,可以仅向该nodeA1返回相应的跨链消息,并由nodeA1在接收到该跨链消息后将其同步至源区块链网络中的nodeB1、nodeC1和nodeD1等其他源节点。显然,上述两种方式均能够保证源区块链网络中的各个源节点均接收到目的区块链网络中各个目的节点返回的跨链消息。
在一实施例中,源区块链网络可以为区块链主网所管理的区块链子网,该区块链主网可以维护有源区块链网络中各源节点的节点身份信息,上述跨链请求中可以包含用于表征发起跨链请求的源节点的节点身份的身份证明信息,此时,接收到跨链请求的各目的节点可以分别向区块链主网查询发起跨链请求的源节点的节点身份信息以对身份证明信息进行校验,并在校验通过的情况下对跨链请求进行响应。类似的,上述目的区块链网络也可以为区块链主网所管理的区块链子网,该区块链主网维护有目的区块链网络中各目的节点的节点身份信息,上述跨链消息包含用于表征返回跨链消息的目的节点的节点身份的身份证明信息,相应的,各源节点可以分别向区块链主网查询返回跨链消息的目的节点的节点身份信息以对身份证明信息进行校验,并根据通过校验的跨链消息生成区块链交易。
以图4为例,区块链主网subnet0可以维护区块链子网subnet1和subnet2中各个子网节点的节点身份信息。可以理解的是,目的节点nodeA2接收到的源节点nodeA1发起的跨链请求中可以包含nodeA1的身份证明信息,因此nodeA2可以据此确定该请求对应的源节点(即该请求的发起方)为nodeA1,从而nodeA2可以向区块链主网subnet0查询nodeA1的节点身份信息,并根据subnet0返回的节点身份信息确定nodeA1是否为合法源节点。当然,nodeA2也可以向subnet0发起携带nodeA1的身份证明信息的查询请求,并接收subnet0返回的查询结果,进而根据该查询结果确定nodeA1是否为合法源节点。其中,subnet0中保存的节点身份信息可以包括节点的网络地址、端口、节点公钥和/或节点标识等。以节点公钥为例,nodeA2可以向subnet0中的主网节点nodeA发起包含跨链请求中携带的nodeA1的节点公钥的查询请求,此时A可以在本地维护的子网节点的节点公钥中查询是否存在nodeA1的节点公钥,并向nodeA2返回相应的查询结果,从而nodeA2可以根据该查询结果实现对nodeA1的节点公钥的校验。若查询到nodeA1的节点公钥则校验通过,即表明nodeA1确实为nodeA2所接收的跨链请求的可信发起方,从而nodeA2可以进一步响应该跨链请求;否则,若未查询到nodeA1的节点公钥则校验未通过,即表明nodeA1不可信,此时nodeA2可以直接丢弃nodeA1发起的跨链请求。另外,在验证未通过的情况下,nodeA2还可以将nodeA1记录为非法源节点,以便在后续再次接收到nodeA1发起的跨链请求的情况下,可以直接丢弃该请求,避免无效处理并加快响应速度。
类似的,nodeA1在接收到nodeA2返回的跨链消息后,也可以根据跨链消息中携带的nodeA2的身份证明信息向subnet0中的A请求查询nodeA2的节点身份信息,以对nodeA2的身份证明信息进行验证。若校验通过,则表明nodeA2确实为nodeA1所接收的跨链消息的可信发起方,从而nodeA1可以进一步根据接收到的跨链消息生成区块链交易,区块链交易的具体生成过程可参见下述实施例,此处暂不赘述;否则,若校验未通过,则表明nodeA2不可信,此时nodeA1可以直接丢弃跨链消息。当然,在验证未通过的情况下,nodeA1还可以将nodeA2记录为非法目的节点,以便在后续再次接收到nodeA2返回的跨链消息的情况下,可以直接丢弃该信息,避免无效处理并加快响应速度。当然,在以单播方式发起跨链请求的情况下,若nodeA1将nodeA2记录为非法目的节点,则nodeA1可以拒绝向nodeA2发起跨链请求,甚至可以将nodeA2的非法记录同步至subnet1中的其他源节点。
在源区块链网络或目的区块链网络为区块链子网的前述实施例中,当区块链主网中主网节点与区块链主网所管理的区块链子网中的子网节点部署于同一节点设备时,该节点设备上的主网节点和子网节点可以共享该节点设备上运行的区块链插件,此时任一区块链节点可以通过区块链插件查询任一子网节点的节点身份信息,如可以通过与自身所属节点设备上部署的主网节点共享的区块链插件,读取该主网节点维护的任一子网节点的节点身份信息。以图4为例,若主网节点nodeA、子网节点nodeA1和nodeA2均部署在同一节点设备(下称节点设备A)中,则三者可以共用节点设备A上运行的区块链插件。如nodeA1可以通过区块链插件查询nodeA2的节点身份信息,nodeA2也可以通过区块链插件查询nodeA2的节点身份信息。其中,上述区块链插件可以为区块链主网中部署的用于调用子网管理合约的插件,任一区块链节点可以通过相应的主网节点在subnet0中发起调用子网管理合约的交易(如读取子网管理合约所维护的子网节点信息)的方式查询子网节点的节点身份信息。当然,为保证查询速度,上述交易可以为无需共识的交易。显然,在同一节点设备中部署有归属于不同区块链网络的网络节点的情况下,通过各个节点共用节点设备的区块链插件,可以实现对区块链插件的高效复用,并有效减少节点设备中需要部署的区块链插件的数量,有助于简化节点设备配置及区块链节点的部署流程,提升区块链节点的部署效率及节点设备的管理效率。实际上,部署于同一节点设备中的不同区块链节点也可以共用其他功能插件,如前述的P2P插件实例、共识插件实例和/或业务实例等,不再赘述。
在源区块链网络或目的区块链网络为区块链子网的前述实施例中,上述区块链主网上可以部署子网管理合约,该子网管理合约用于维护基于区块链主网组建的各个区块链子网中子网节点的节点身份信息;此时,任一区块链节点可以读取子网管理合约维护的任一子网节点的节点身份信息。以图4为例,因为子网节点nodeA1所属的subnet1和子网节点nodeA2所属的subnet2均在subnet0的基础上建立,所以subnet0中部署的子网管理合约可以用于管理subnet1和subnet2中各个子网节点的节点身份信息,进而任一源节点可以读取子网管理合约所维护的任一目的节点的节点身份信息、任一目的节点也可以读取子网管理合约所维护的任一源节点的节点身份信息。可见,通过由区块链主网中部署的子网管理合约维护子网节点的节点身份信息,能够保证对于节点身份信息的高效管理。而由区块链子网中的子网节点直接读取子网管理合约所维护的节点身份信息,使得节点身份信息的获取过程无需区块链主网中主网节点的共识等过程,有助于提升节点身份信息的获取效率。
在源区块链网络或目的区块链网络为区块链子网的前述实施例中,任一子网节点的身份证明信息可以包含该子网节点声明的节点标识和该子网节点所属区块链子网的子网标识;任一区块链节点向区块链主网查询任一子网节点的节点身份信息,可以包括:任一区块链节点向区块链主网查询任一子网节点声明的节点标识和子网标识是否相匹配。以图4为例,子网节点nodeA1向nodeA2发起的跨链请求中包含的节点身份信息可以包括nodeA1的节点标识和subnet1的子网标识;类似的,子网节点nodeA2向nodeA1返回的跨链消息中包含的节点身份信息可以包括nodeA2的节点标识和subnet2的子网标识。因此,在接收到nodeA1发起的跨链请求后,nodeA2可以向subnet0查询nodeA1声明的节点标识和子网标识是否相匹配,如nodeA2可以向nodeA查询其维护的全部子网标识中是否包含subnet1的子网标识,并在包含的情况下进一步查询subnet1的子网标识对应的全部节点标识中是否包含nodeA1的节点标识:若包含节点nodeA1的节点标识,则表明nodeA1声明的节点标识和子网标识相匹配,进而表明nodeA2接收到的跨链请求确实为nodeA1发起,因此nodeA2可以进一步的响应该请求;否则,若不包含nodeA1的节点标识,则表明nodeA1声明的节点标识和子网标识不相匹配,进而表明nodeA2接收到的跨链请求可能为其他节点发起的虚假请求,因此可以终止响应该请求。与此类似的,在接收到nodeA2返回的跨链消息后,nodeA1可以向subnet0查询nodeA2声明的节点标识和子网标识是否相匹配,进而根据查询结果进行相应的处理,如在二者相匹配的情况下,根据接收到的跨链消息生成区块链交易;或者在二者不相匹配的情况下,终止直接丢弃跨链消息等,不再赘述。通过该方式,能够充分利用区块链主网中维护的各个子网节点的节点身份信息对子网节点发起的跨链请求或发送的跨链消息进行验证,以保证后续处理的请求或消息的合法性。
在源区块链网络或目的区块链网络为区块链子网的前述实施例中,任一子网节点的身份证明信息也可以包含该子网节点基于自身的节点私钥生成的签名;此时,任一区块链节点向区块链主网查询任一子网节点的节点身份信息以对该身份证明信息进行校验,可以包括:任一区块链节点向区块链主网查询任一子网节点的节点公钥,并采用该节点公钥对上述签名进行验签。以图4为例,子网节点nodeA1可以基于自身的节点私钥生成对跨链请求所包含区块链消息(或对跨链请求)的签名,并将该签名包含在跨链请求中(或与跨链请求关联发起)至子网节点nodeA2,从而nodeA2在接收到上述跨链请求和签名后,可以向subnet0查询nodeA1的节点身份信息以对该签名进行校验,如根据从subnet0中查询到的nodeA1的节点公钥对上述签名进行验签。从而,在验签通过的情况下,可以进一步响应跨链请求;而在验签失败的情况下,可以终止针对跨链请求的响应,如可以直接丢弃跨链请求甚至将nodeA1记录为非法节点。与此类似的,在接收到nodeA2返回的跨链消息和相应签名后,nodeA1也可以向subnet0请求获取nodeA2的节点公钥并对该签名进行验签,进而根据验签结果进行相应处理:在验签通过的情况下,可以根据跨链消息生成区块链交易;而在验签失败的情况下,可以终止针对跨链消息的响应,如可以直接丢弃跨链消息甚至将nodeA2记录为非法节点。
如前所述,因为任一源节点接收到的多个跨链消息都是响应于源节点发起的跨链请求生成的,所以在不存在非法目的节点的情况下,任一源节点接收到的多个跨链消息中应当包含相同的消息内容。因此,对于任一源节点接收到的多个跨链消息,该源节点可以比较各个跨链消息中包含的消息内容,并对包含相同消息内容的跨链消息进行校验。其中,上述校验可以采用PBFT算法、HoneyBadgerBFT算法等多种容错算法进行,下面结合图4所示场景以子网节点nodeA1采用PBFT容错算法为例仅进行说明。由图4可知,作为目的区块链网络的subnet2中包含nodeA2、nodeB2、nodeC2和nodeE2共四个子网节点(节点总量为3f+1=4,即f=1),所以上述在nodeA1接收到其中至少f+1(即2)个子网节点返回的跨链消息包含相同的消息内容的情况下,即可确定接收到的至少2个跨链消息通过容错校验。当然,在方案实践中,上述节点总量及接收到的跨链消息的消息数量也可以为其他数值,本说明书并不对此进行限制。其中,通过上述校验的(包含相同消息内容的跨链消息)才会被用于构建重构消息。
步骤606,各源节点在确定接收到的任一重构消息中包含的源节点签名的签名数量通过拜占庭容错校验的情况下,根据所述任一重构消息生成区块链交易并提交至所述源区块链网络进行共识。
源区块链网络中的各源节点在获取到其他节点广播的重构消息后,可以分别对获取到的重构消息进行验证,并在验证通过后为该重构消息添加自身生成的源节点签名,并继续将该重构消息向源区块链网络中的其他源节点广播。如前所述,重构消息中包含构建重构消息所使用跨链消息的消息内容以及构建重构消息的源节点(即该重构消息的构建方)生成的源节点签名,所以对任一重构消息的验证过程可以包括对该重构消息中包含的源节点签名的验证过程;当然,若该重构消息中还包含目的节点对该重构消息中的消息内容对应的跨链消息进行的目的节点签名,则对任一重构消息的验证过程还可以包括对该重构消息中包含的目的节点签名的验证过程,具体验证过程可参见下述实施例,此处暂不赘述。可以理解的是,对于任一重构消息,上述“接收其他节点广播的重构消息——对重构消息验证通过后添加自身生成的源节点签名——继续广播添加自身生成的源节点签名后的重构消息”的处理过程,可以由源区块链网络中的多个源节点依次进行;而在任一源节点发现其接收到的任一重构消息中已经包含自身生成的源节点签名的情况下,即表明自身已经对该重构消息进行过上述处理,从而可以直接丢弃该重构消息。
可见,任一重构消息在源区块链网络中每广播一次,就会被添加一个新的源节点签名,所以接收到该重构消息的各个源节点均可以对该重构消息进行拜占庭容错校验,如可以根据接收到的重构消息中包含的源节点签名的签名数量,以及源区块链网络包含的源节点总量对该重构消息进行拜占庭容错校验,任一源节点可以在对任一重构消息校验通过的情况下,根据该重构消息生成区块链交易并提交至源区块链网络进行共识。例如,以图4为例,源节点nodeC1可以先确定其所在subnet1的节点总量(3f+1),进而可以在接收到其他源节点广播的任一重构消息后即对该重构消息进行验证,并在验证通过后为该重构消息添加自身生成的源节点签名,进而判断当前重构消息中所包含源节点签名的签名数量是否满足(不小于)上述节点总量对应的第一临界值f+1,并在满足的情况下基于该重构消息生成区块链交易。或者,为进一步加快处理速度,源节点nodeC1也可以在接收到其他源节点广播的任一重构消息后即确定该重构消息中包含的源节点签名的签名数量,并判断该签名数量是否满足(不小于)上述节点总量对应的第二临界值f,若满足,则该源节点可以在对该重构消息验证通过的情况下(此时对该重构消息验证通过的源节点数量满足f+1),基于该重构消息生成区块链交易。在该方式下,nodeC1在判断重构消息满足预设条件的情况下,可以不必为该重构消息添加自身生成的源节点签名,有助于进一步加快处理速度。
其中,在目的区块链网络为区块链主网所管理的区块链子网的情况下,该区块链主网可以维护有目的区块链网络中的目的节点的节点总量,因此各源节点可以分别向区块链主网查询目的区块链网络中目的节点的节点总量,获取的该节点总量即用于进行上述拜占庭容错校验。另外,在本说明书中所提及的区块链主网和区块链子网的实施例中,区块链子网在向区块链主网查询相应的信息后,可以将该信息保存在本地,以避免后续处理过程中的重复查询,进一步提升交互效率。当然,为保证上述信息的时效性,也可以为本地保存的信息设置有效时长,以及时更新上述信息。
在一实施例中,源区块链网络中的各源节点可以采用其他源节点的节点公钥对其接收到的重构消息进行验证。例如,各源节点可以分别通过自身维护的其他源节点的节点公钥对接收到的重构消息中包含的源节点签名进行验证。以图4为例,可以理解的是,源区块链网络中的任一源节点本地均维护有其他源节点的节点公钥,相应的,其他各个源节点本地也维护有该源节点的节点公钥。如nodeA1将利用自身的节点公钥生成的源节点签名添加至重构消息并广播后,接收到该重构消息的其他源节点(nodeB1、nodeC1和nodeD1)可以分别利用本地维护的nodeA1的节点公钥对该重构消息中包含的nodeA1添加的源节点签名进行验证(即验签)。类似的,在nodeB1对该重构消息验证通过的情况下,可以将利用自身的节点公钥生成的源节点签名添加至重构消息,若判断当前的签名数量无法通过拜占庭容错校验则继续广播,从而nodeC1和nodeD1在接收到该重构消息后可以根据本地维护的nodeA1和nodeB1的节点公钥分别对nodeA1和nodeB1添加的源节点签名进行验签,在验签通过的情况下添加自身生成的源节点签名,并进一步判断当前重构消息是否能够通过拜占庭容错校验:若通过,则可以根据该重构消息生成区块链交易;否则,若不通过,则可以继续广播该重构消息。当然,在上述nodeA1接收到nodeB1广播的重构消息后,可以确定出其中包含自身添加的源节点签名,因而可以直接丢弃该重构消息。
在另一实施例中,上述目的区块链网络可以为区块链主网所管理的区块链子网,该区块链主网可以维护有目的区块链网络中各目的节点的节点公钥,上述重构消息除包含上述消息内容和源节点签名外,还可以包括构造该重构消息的源节点接收到的各跨链消息中分别携带的目的节点签名(即该重构消息中包含的消息内容对应的各个跨链消息携带的目的节点签名)因此,各源节点可以对自身接收到的重构消息进行进一步验证,例如,各源节点可以分别向区块链主网查询自身接收到的重构消息所指示的目的节点的节点公钥,并通过查询到的节点公钥对自身接收到的重构消息中包含的目的节点签名进行验证。上述节点公钥的具体获取方式及验证方式可以参见前述实施例的详细记载,此处不再赘述。在该实施例中,源节点在接收到重构消息之后,除了对重构消息中包含的源节点添加的源节点签名进行验证外,还通过从区块链主网获取的目的区块链网络中相应目的节点的节点公钥对重构消息中包含的目的节点签名进行验证,从而实现对重构消息的双重验证,进一步保证了用于生成区块链交易的重构消息的可靠性,避免了源区块链网络内部的非法节点(拜占庭节点)对重构消息内容甚至签名造假可能导致的执行结果不一致。
在一实施例中,上述消息内容可以包含待处理数据,此时各源节点可以根据自身获取到的跨链消息中包含的第一待处理数据和其他源节点同步的区块链交易中包含的第二待处理数据,对其他源节点同步的区块链交易进行校验,并对校验通过的区块链交易进行共识。例如,源区块链网络中的各源节点可以将自身接收到的跨链消息中携带的(即该跨链消息中的消息内容包含的)待处理数据作为第一待处理数据(如前所述,同一源节点接收到的跨链消息或者通过容错校验的跨链消息携带相同的待处理数据)。因为各个源节点将自身生成的区块链交易同步至源区块链网络中的其他源节点,从而可以将从接收到的其他源节点同步的区块链消息中提取的待处理数据作为第二待处理数据。进而可以通过比较上述第一待处理数据和第二待处理数据是否相同,实现对其他源节点同步的上述区块链交易的校验:在第一待处理数据与第二待处理数据相同的情况下,可以确定上述区块链交易通过验证;否则,在第一待处理数据与第二待处理数据不相同的情况下,则确定上述区块链交易未通过验证。
或者,为提升对其他源节点生成的区块链交易的验证效率,任一源节点生成的区块链交易中还可以携带待处理数据的哈希,从而其他源节点可以将该哈希作为第二哈希,并将自身接收到的跨链消息中携带的待处理数据的哈希作为第一哈希。进而可以通过比较上述第一哈希和第二哈希是否相同,实现对其他源节点同步的上述区块链交易的校验:在第一哈希与第二哈希相同的情况下,可以确定上述区块链交易通过验证;否则,在第一哈希与第二哈希不相同的情况下,则确定上述区块链交易未通过验证。通常情况下待处理数据的数据量都远大于哈希的数据量,因此通过比较哈希可以有效提升验证效率。
可以理解的是,只有通过源区块链网络中某一源节点进行拜占庭容错校验的重构消息,才会被用于生成区块链交易并提交至源区块链网络共识。对于任一区块链交易,可以采用工作量证明、股权证明、委任权益证明、实用拜占庭容错算法,HoneyBadgerBFT算法等进行共识,具体过程不再赘述。
步骤608,各源节点分别执行通过共识的多条区块链交易中的同一区块链交易。
因为源区块链网络中的各个源节点均根据自身获取到的通过验证的跨链消息构建重构消息,并在重构消息通过拜占庭容错校验的情况下根据重构消息生成区块链交易,所以源区块链网络中可能存在上述跨链请求对应的多个区块链交易通过共识,但是为保证区块链交易执行结果的一致性,需要各源节点执行通过共识的同一区块链交易,从而实现相同的业务效果。为保证源区块链网络中的各个源节点分别执行通过共识的同一区块链交易,可以由各源节点分别执行源区块链网络中通过共识的首个区块链交易。或者,也可以执行通过共识的区块链交易中首最先被生成的区块链交易,例如,各个源节点可以根据区块链交易所携带的时间戳保证被执行的区块链交易为最先被生成的区块链交易。而任一源节点在执行上述区块链交易后,可以终止针对其他区块链交易的处理过程。例如,任一区块链交易中均携带请求标识,则该源节点在接收到携带与已执行的区块链交易相同请求标识的新的区块链交易的情况下,可以不执行新的区块链交易(即不执行与具体业务相关的合约代码)。当然,该源节点也可能在短时间内接收到多个携带相同请求标识的区块链交易,并按照接收各交易的时间顺序依次对各交易进行校验、执行等处理,因此各区块链交易的处理进度可能有所不同,进而在执行完首个区块链交易后,该源节点可以立即终止针对其他区块链交易的执行过程,以保证仅有首个区块链交易被顺利执行,从而与其他源节点保持一致的交易执行结果,并减少无效处理带来的算力损耗。
因为源区块链网络可能同时参与多个跨链请求的处理过程(如在第一个跨链请求的处理过程尚未结束时,发起第二个跨链请求)、目的区块链网络可能同时响应于多个跨链消息(如针对第一个跨链请求的响应过程尚未结束时,接收到第二个跨链请求),所以为避免不同跨链请求或者不同跨链消息之间的混乱,可以通过请求标识实现跨链请求与跨链消息之间的关联。例如,在上述跨链请求由源节点执行智能合约生成的情况下,跨链请求可以将该智能合约的合约标识作为自身的请求标识;或者,在上述跨链请求由源节点执行智能合约中定义的某一合约任务生成的情况下,跨链请求可以将该合约任务的任务标识作为自身的请求标识,进而,目的节点响应于任一跨链请求生成的跨链消息中也包含该请求的请求标识,从而保证各源节点发起的跨链请求以及各目的节点返回的跨链消息中均包含该请求标识。即通过该请求标识将各个源节点针对同一智能合约(或合约任务)发起的各个跨链请求关联起来,并通过该请求标识将各个目的节点响应于该请求标识对应的各个跨链请求返回的各个跨链消息关联起来,从而实现同一智能合约(或合约任务)对应的全部跨链请求和全部跨链消息的关联,有助于不同跨链请求或不同跨链消息之间的有效区分。
相应的,源区块链网络可以维护请求标识集合,该集合用于记录当前时刻源区块链网络所参与的尚未被响应(即其对应的区块链交易尚未被执行)的各个跨链请求的请求标识。从而,各源节点可以通过下述方式分别执行通过共识的多条区块链交易中的任一区块链交易:各源节点可以分别确定请求标识集合中是否存在自身对应的任一区块链交易中携带的目标请求标识;并在分别确定请求标识集合中存在所述目标请求标识的情况下,执行自身对应的所述任一区块链交易。可以理解的是,上述请求标识集合中包含目标请求标识,则表明该目标请求标识对应的各个区块链交易均未被执行,因此各源节点只需要执行该区块链交易即可实现对上述跨链请求的响应。当然,在任一源节点执行某一请求标识对应的区块链交易后,可以将请求标识从自身维护的请求标识集合中删除,以保证不会重复执行该请求标识对应的其他区块链交易。
在一实施例中,上述消息内容可以包含待处理数据,而跨链请求可以由源节点调用部署于源区块链网络的智能合约创建;相应的,源节点可以响应于上述跨链消息调用智能合约任务回调方法,以将待处理数据返回至上述智能合约。承接于前述自动登录用户账号的实施例,假设源节点执行用于实现用户账号登录的智能合约,但是源节点本地未保存用户账号和登录密码,从而源节点可以生成用于获取用户账号和登录密码的跨链请求,进而在目的区块链网络中的目的节点响应于请求返回跨链消息后,源节点可以根据跨链消息中包含的用户账号和登录密码实现对用户账号的自动登录。此时,上述用户账号和登录密码即为待处理数据,源节点将上述用户账号和登录密码返回至智能合约用于实现业务功能。
可见,前述实施例由各个源节点分别生成区块链交易并提交共识,即“无主共识”。说明书还提出一种“有主共识”的跨链交互方法。通过前述实施例,在源区块链网络中的源节点分别接收到目的区块链网络中的目的节点返回的跨链消息后,根据验证通过的跨链消息构造重构消息并在源区块链网络中广播签名后的重构消息,接收到该重构消息的其他源节点则在验证通过后再次进行签名并继续广播,直至任一源节点根据源节点总量和该重构消息中包含的源节点签名的签名数量通过对该重构消息的拜占庭容错校验时,根据该重构消息生成区块链交易并提交共识,进而由各个源节点分别执行同一区块链交易。一方面,通过多个源节点对重构消息的多次验证及签名,保证了用于生成区块链交易的重构消息得到足够多的源节点的共同认可;另一方面,通过各个源节点分别执行同一区块链交易,有效保证了各个源节点所处理目的区块链网络返回的消息的一致性,有效解决了前述问题。
实际上,在上述源区块链网络内各个源节点之间的网络延迟较大等情况下,任一目的节点可能无法接收到足够数量的重构消息:获取到的重构消息的数量无法通过拜占庭容错校验,因此就无法生成区块链交易,显然,在各个源节点均无法获取足够数量的重构消息的情况下,元区块链网络中将无法生成区块链交易,进而无法对目的区块链网络返回的跨链消息进行有效处理。为避免这一问题,本说明书还提出一种“有主共识”的跨链交互方法,由源区块链网络中的各个源节点将自身获取到的重构消息均发送至源区块链网络的主节点,以保证该主节点能够获取到足够数量的重构消息,进而保证区块链交易的可靠生成及执行。
下面结合图7对本说明书的跨链交互方案进行详细说明。请参见图7,图7是一示例性实施例提供的另一种跨链交互方法的示意图。如图7所示,该方法应用于包含源区块链网络和目的区块链网络的区块链系统,该方法可以包括以下步骤:
步骤702,源区块链网络中的至少一个源节点向目的区块链网络发起跨链请求,以使所述目的区块链网络中的各目的节点分别获得所述跨链请求。
步骤704,所述源区块链网络中的主节点获取多重签名的任一重构消息;其中,在各目的节点分别响应于所述跨链请求而返回的跨链消息通过校验的情况下,所述任一重构消息由所述跨链消息的消息内容构造得到。
步骤706,所述主节点在确定所述任一重构消息中包含的源节点签名的签名数量通过拜占庭容错校验的情况下,根据所述任一重构消息生成区块链交易并提交至所述源区块链网络进行共识。
步骤708,各源节点分别执行通过共识的所述区块链交易。
在一实施例中,所述跨链消息可以由各目的节点分别通过单播或广播的方式返回所述源区块链网络。
在一实施例中,所述重构消息可以由所述源区块链网络中的任一源节点构造得到。例如可以由主节点生成后广播至源区块链网络,并在其他源节点添加签名后返回至主节点;也可以由各个源节点各自生成并广播至源区块链网,并在其他源节点添加签名后发送至主节点络。
在一实施例中,所述目的区块链网络为区块链主网所管理的区块链子网,所述区块链主网维护有所述目的区块链网络中各目的节点的节点身份信息,所述跨链消息包含用于表征返回所述跨链消息的目的节点的节点身份的身份证明信息;所述方法还可以包括:主节点向所述区块链主网查询返回所述跨链消息的目的节点的节点身份信息以对所述身份证明信息进行校验,并根据通过校验的跨链消息生成所述区块链交易。
在一实施例中,当所述区块链主网中主网节点与所述区块链主网所管理的区块链子网中的子网节点部署于同一节点设备时,该节点设备上的主网节点和子网节点共享该节点设备上运行的区块链插件;所述主节点向所述区块链主网查询任一目的节点的节点身份信息,所述主节点通过与自身所属节点设备上部署的主网节点共享的区块链插件,读取该主网节点维护的所述任一目的节点的节点身份信息。
在一实施例中,所述区块链主网上部署有子网管理合约,所述子网管理合约用于维护基于所述区块链主网组建的各个区块链子网中子网节点的节点身份信息,所述主节点可以读取所述子网管理合约维护的任一目的节点的节点身份信息。
在一实施例中,任一子网节点的身份证明信息包含所述任一子网节点声明的节点标识和所述任一子网节点所属区块链子网的子网标识;所述主节点可以向所述区块链主网查询所述任一目的节点声明的节点标识和子网标识是否相匹配。
在一实施例中,任一子网节点的身份证明信息包含所述任一子网节点基于自身的节点私钥生成的签名;所述主节点可以向所述区块链主网查询任一目的节点的节点公钥,并采用所述节点公钥对所述签名进行验签。
在一实施例中,所述主节点还可以通过自身维护的其他源节点的节点公钥对接收到的重构消息中包含的源节点签名进行验证。
在一实施例中,所述目的区块链网络为区块链主网所管理的区块链子网,所述区块链主网维护有所述目的区块链网络中各目的节点的节点公钥,所述重构消息还包括构造所述重构消息的源节点接收到的各跨链消息中分别携带的目的节点签名;所述主节点还可以向所述区块链主网查询自身接收到的重构消息所指示的目的节点的节点公钥,并通过查询到的节点公钥对自身接收到的重构消息中包含的目的节点签名进行验证。
在一实施例中,所述目的区块链网络为区块链主网所管理的区块链子网,所述区块链主网维护有所述目的区块链网络中的目的节点的节点总量,所述主节点还可以向所述区块链主网查询所述节点总量,以用于进行所述拜占庭容错校验。
在一实施例中,所述源区块链网络维护有请求标识集合,各源节点发起的跨链请求以及各目的节点返回的跨链消息包含同一请求标识,各源节点可以分别通过下述方式执行所述区块链交易:各源节点分别在确定所述请求标识集合中存在所述区块链交易携带的目标请求标识的情况下,执行所述区块链交易,并将所述目标请求标识从所述请求标识集合中删除。
图8是一示例性实施例提供的一种设备的结构示意图。请参考图8,在硬件层面,该设备包括处理器802、内部总线804、网络接口806、内存808以及非易失性存储器810,当然还可能包括其他业务所需要的硬件。本说明书一个或多个实施例可以基于软件方式来实现,比如由处理器802从非易失性存储器810中读取对应的计算机程序到内存808中然后运行。当然,除了软件实现方式之外,本说明书一个或多个实施例并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
图9是一示例性实施例提供的一种跨链交互装置的框图。请参考图9,该装置可以应用于如图8所示的设备中,以实现本说明书的技术方案。其中,该跨链交互装置可以包括:
请求发起单元901,使源区块链网络中的至少一个源节点向目的区块链网络发起跨链请求,以使所述目的区块链网络中的各目的节点分别获得所述跨链请求;
消息构造单元902,使各源节点获取各目的节点分别响应于所述跨链请求而返回的跨链消息,并在自身获取到的跨链消息通过校验的情况下在所述源区块链网络中针对所述跨链消息的消息内容构造多重签名的重构消息;
交易生成单元903,使各源节点在确定接收到的任一重构消息中包含的源节点签名的签名数量通过拜占庭容错校验的情况下,根据所述任一重构消息生成区块链交易并提交至所述源区块链网络进行共识;
交易执行单元904,使各源节点分别执行通过共识的多条区块链交易中的同一区块链交易。
可选的,还包括:
消息加密单元905,使所述源节点采用自身节点私钥对待传输的区块链消息进行签名、采用对称密钥对待传输的消息内容和所述区块链消息的签名加密、采用各目的节点的节点公钥分别对所述对称密钥加密,并将加密后的所述签名、加密后的所述消息内容和加密后的各对称密钥均添加至所述跨链消息中;
请求解密单元906,使各目的节点分别通过自身的节点私钥对所述跨链消息中采用自身节点公钥加密的对称密钥进行解密、通过解密得到的对称密钥对加密后的消息内容和所述签名进行解密,并在通过源节点的节点公钥对所述签名验签通过的情况下,以获取所述消息内容用于生成所述区块链交易。
可选的,所述跨链消息由各目的节点分别通过单播或广播的方式返回所述源区块链网络。
可选的,所述源区块链网络为区块链主网所管理的区块链子网,所述区块链主网维护有所述源区块链网络中各源节点的节点身份信息,所述跨链请求包含用于表征发起所述跨链请求的源节点的节点身份的身份证明信息;所述装置还包括:
源节点校验单元907,使各目的节点分别向所述区块链主网查询发起所述跨链请求的源节点的节点身份信息以对所述身份证明信息进行校验,并在校验通过的情况下对所述跨链请求进行响应。
可选的,所述目的区块链网络为区块链主网所管理的区块链子网,所述区块链主网维护有所述目的区块链网络中各目的节点的节点身份信息,所述跨链消息包含用于表征返回所述跨链消息的目的节点的节点身份的身份证明信息;所述装置还包括:
目的节点校验单元908,使各源节点分别向所述区块链主网查询返回所述跨链消息的目的节点的节点身份信息以对所述身份证明信息进行校验,并根据通过校验的跨链消息生成所述区块链交易。
可选的,当所述区块链主网中主网节点与所述区块链主网所管理的区块链子网中的子网节点部署于同一节点设备时,该节点设备上的主网节点和子网节点共享该节点设备上运行的区块链插件;所述源节点校验单元907或所述目的节点校验单元908还用于:
所述任一区块链节点通过与自身所属节点设备上部署的主网节点共享的区块链插件,读取该主网节点维护的所述任一子网节点的节点身份信息。
可选的,所述区块链主网上部署有子网管理合约,所述子网管理合约用于维护基于所述区块链主网组建的各个区块链子网中子网节点的节点身份信息;所述源节点校验单元907或所述目的节点校验单元908还用于:
任一区块链节点读取所述子网管理合约维护的任一子网节点的节点身份信息。
可选的,任一子网节点的身份证明信息包含所述任一子网节点声明的节点标识和所述任一子网节点所属区块链子网的子网标识;所述源节点校验单元907或所述目的节点校验单元908还用于:
任一区块链节点向所述区块链主网查询所述任一子网节点声明的节点标识和子网标识是否相匹配。
可选的,任一子网节点的身份证明信息包含所述任一子网节点基于自身的节点私钥生成的签名;所述源节点校验单元907或所述目的节点校验单元908还用于:
任一区块链节点向所述区块链主网查询任一子网节点的节点公钥,并采用所述节点公钥对所述签名进行验签。
可选的,还包括:
源签名验证单元909,使各源节点分别通过自身维护的其他源节点的节点公钥对接收到的重构消息中包含的源节点签名进行验证。
可选的,所述目的区块链网络为区块链主网所管理的区块链子网,所述区块链主网维护有所述目的区块链网络中各目的节点的节点公钥,所述重构消息还包括构造所述重构消息的源节点接收到的各跨链消息中分别携带的目的节点签名;所述装置还包括:
目的签名验证单元910,使各源节点分别向所述区块链主网查询自身接收到的重构消息所指示的目的节点的节点公钥,并通过查询到的节点公钥对自身接收到的重构消息中包含的目的节点签名进行验证。
可选的,所述目的区块链网络为区块链主网所管理的区块链子网,所述区块链主网维护有所述目的区块链网络中的目的节点的节点总量,所述装置还包括:
总量查询单元911,使各源节点分别向所述区块链主网查询所述节点总量,以用于进行所述拜占庭容错校验。
可选的,所述区块链交易中包含所述待处理数据,所述装置还包括:
交易校验单元912,使各源节点根据自身获取到的跨链消息中包含的第一待处理数据和其他源节点提交的区块链交易中包含的第二待处理数据,或者根据自身按照获取到的跨链消息中包含的第一待处理数据计算得到的第一哈希和其他源节点提交的区块链交易中包含的第二待处理数据的第二哈希,对其他源节点提交的区块链交易进行校验,并对校验通过的区块链交易进行共识。
可选的,所述源区块链网络维护有请求标识集合,各源节点发起的跨链请求以及各目的节点返回的跨链消息包含同一请求标识,所述交易执行单元904还用于:
使各源节点分别在确定所述请求标识集合中存在所述区块链交易携带的目标请求标识的情况下,执行所述区块链交易,并将所述目标请求标识从所述请求标识集合中删除。
可选的,所述跨链消息中包含待处理数据,所述装置还包括:
合约调用单元913,使所述源节点调用部署于所述源区块链网络的智能合约以创建所述跨链请求;
合约回调单元914,使所述源节点响应于所述跨链消息调用所述智能合约任务回调装置,以将所述待处理数据返回至所述智能合约。
可选的,各源节点分别执行的所述区块链交易为:
通过共识的首个区块链交易;或者,
通过共识的区块链交易中最先被生成的区块链交易。
图10是一示例性实施例提供的另一种跨链交互装置的框图。请参考图10,该装置可以应用于如图8所示的设备中,以实现本说明书的技术方案。其中,该跨链交互装置可以包括:
请求发起单元1001,使源区块链网络中的至少一个源节点向目的区块链网络发起跨链请求,以使所述目的区块链网络中的各目的节点分别获得所述跨链请求;
消息获取单元1002,使所述源区块链网络中的主节点获取多重签名的任一重构消息;其中,在各目的节点分别响应于所述跨链请求而返回的跨链消息通过校验的情况下,所述任一重构消息由所述跨链消息的消息内容构造得到;
交易生成单元1003,使所述主节点在确定所述任一重构消息中包含的源节点签名的签名数量通过拜占庭容错校验的情况下,根据所述任一重构消息生成区块链交易并提交至所述源区块链网络进行共识;
交易执行单元1004,使各源节点分别执行通过共识的所述区块链交易。
可选的,所述跨链消息由各目的节点分别通过单播或广播的方式返回所述源区块链网络。
可选的,所述重构消息由所述源区块链网络中的任一源节点构造得到。
可选的,所述目的区块链网络为区块链主网所管理的区块链子网,所述区块链主网维护有所述目的区块链网络中各目的节点的节点身份信息,所述跨链消息包含用于表征返回所述跨链消息的目的节点的节点身份的身份证明信息;所述装置还包括:
目的节点校验单元1005,使所述主节点向所述区块链主网查询返回所述跨链消息的目的节点的节点身份信息以对所述身份证明信息进行校验,并根据通过校验的跨链消息生成所述区块链交易。
可选的,当所述区块链主网中主网节点与所述区块链主网所管理的区块链子网中的子网节点部署于同一节点设备时,该节点设备上的主网节点和子网节点共享该节点设备上运行的区块链插件;所述目的节点校验单元1005还用于:
使所述主节点通过与自身所属节点设备上部署的主网节点共享的区块链插件,读取该主网节点维护的所述任一目的节点的节点身份信息。
可选的,所述区块链主网上部署有子网管理合约,所述子网管理合约用于维护基于所述区块链主网组建的各个区块链子网中子网节点的节点身份信息;所述目的节点校验单元1005还用于:
所述主节点读取所述子网管理合约维护的任一目的节点的节点身份信息。
可选的,任一子网节点的身份证明信息包含所述任一子网节点声明的节点标识和所述任一子网节点所属区块链子网的子网标识;所述目的节点校验单元1005还用于:
所述主节点向所述区块链主网查询所述任一目的节点声明的节点标识和子网标识是否相匹配。
可选的,任一子网节点的身份证明信息包含所述任一子网节点基于自身的节点私钥生成的签名;所述目的节点校验单元1005还用于:
所述主节点向所述区块链主网查询任一目的节点的节点公钥,并采用所述节点公钥对所述签名进行验签。
可选的,还包括:
源签名校验单元1006,使所述主节点通过自身维护的其他源节点的节点公钥对接收到的重构消息中包含的源节点签名进行验证。
可选的,所述目的区块链网络为区块链主网所管理的区块链子网,所述区块链主网维护有所述目的区块链网络中各目的节点的节点公钥,所述重构消息还包括构造所述重构消息的源节点接收到的各跨链消息中分别携带的目的节点签名;所述装置还包括:
目的签名验证单元1007,使消息校验所述主节点向所述区块链主网查询自身接收到的重构消息所指示的目的节点的节点公钥,并通过查询到的节点公钥对自身接收到的重构消息中包含的目的节点签名进行验证。
可选的,所述目的区块链网络为区块链主网所管理的区块链子网,所述区块链主网维护有所述目的区块链网络中的目的节点的节点总量,所述装置还包括:
总量获取单元1008,使所述主节点向所述区块链主网查询所述节点总量,以用于进行所述拜占庭容错校验。
可选的,所述源区块链网络维护有请求标识集合,各源节点发起的跨链请求以及各目的节点返回的跨链消息包含同一请求标识,所述交易执行单元1004还用于:
使各源节点分别在确定所述请求标识集合中存在所述区块链交易携带的目标请求标识的情况下,执行所述区块链交易,并将所述目标请求标识从所述请求标识集合中删除。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
在一个典型的配置中,计算机包括一个或多个处理器 (CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器 (RAM) 和/或非易失性内存等形式,如只读存储器 (ROM) 或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存 (PRAM)、静态随机存取存储器 (SRAM)、动态随机存取存储器 (DRAM)、其他类型的随机存取存储器 (RAM)、只读存储器 (ROM)、电可擦除可编程只读存储器 (EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘 (DVD) 或其他光学存储、磁盒式磁带、磁盘存储、量子存储器、基于石墨烯的存储介质或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
在本说明书一个或多个实施例使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本说明书一个或多个实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
以上所述仅为本说明书一个或多个实施例的较佳实施例而已,并不用以限制本说明书一个或多个实施例,凡在本说明书一个或多个实施例的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书一个或多个实施例保护的范围之内。

Claims (32)

1.一种跨链交互方法,包括:
源区块链网络中的至少一个源节点向目的区块链网络发起跨链请求,以使所述目的区块链网络中的各目的节点分别获得所述跨链请求,其中,所述源区块链网络和所述目的区块链网络为区块链主网所管理的区块链子网,所述区块链主网中的主网节点与所述区块链主网所管理的区块链子网中的子网节点部署于同一节点设备;
各源节点获取各目的节点分别响应于所述跨链请求而返回的跨链消息,并在自身获取到的跨链消息通过校验的情况下在所述源区块链网络中针对所述跨链消息的消息内容构造多重签名的重构消息;
各源节点在确定接收到的任一重构消息中包含的源节点签名的签名数量通过拜占庭容错校验的情况下,根据所述任一重构消息生成区块链交易并提交至所述源区块链网络进行共识;
各源节点分别执行通过共识的多条区块链交易中的同一区块链交易。
2.根据权利要求1所述的方法,还包括:
所述源节点采用自身节点私钥对待传输的区块链消息进行签名、采用对称密钥对待传输的消息内容和所述区块链消息的签名加密、采用各目的节点的节点公钥分别对所述对称密钥加密,并将加密后的所述签名、加密后的所述消息内容和加密后的各对称密钥均添加至所述跨链消息中;
各目的节点分别通过自身的节点私钥对所述跨链消息中采用自身节点公钥加密的对称密钥进行解密、通过解密得到的对称密钥对加密后的消息内容和所述签名进行解密,并在通过源节点的节点公钥对所述签名验签通过的情况下,以获取所述消息内容用于生成所述区块链交易。
3.根据权利要求1所述的方法,所述跨链消息由各目的节点分别通过单播或广播的方式返回所述源区块链网络。
4.根据权利要求1所述的方法,所述区块链主网维护有所述源区块链网络中各源节点的节点身份信息,所述跨链请求包含用于表征发起所述跨链请求的源节点的节点身份的身份证明信息;所述方法还包括:
各目的节点分别向所述区块链主网查询发起所述跨链请求的源节点的节点身份信息以对所述身份证明信息进行校验,并在校验通过的情况下对所述跨链请求进行响应。
5.根据权利要求1所述的方法,所述区块链主网维护有所述目的区块链网络中各目的节点的节点身份信息,所述跨链消息包含用于表征返回所述跨链消息的目的节点的节点身份的身份证明信息;所述方法还包括:
各源节点分别向所述区块链主网查询返回所述跨链消息的目的节点的节点身份信息以对所述身份证明信息进行校验,并根据通过校验的跨链消息生成所述区块链交易。
6.根据权利要求4或5所述的方法,所述节点设备上的主网节点和子网节点共享该节点设备上运行的区块链插件;任一区块链节点向所述区块链主网查询任一子网节点的节点身份信息,包括:
所述任一区块链节点通过与自身所属节点设备上部署的主网节点共享的区块链插件,读取该主网节点维护的所述任一子网节点的节点身份信息。
7.根据权利要求4或5所述的方法,所述区块链主网上部署有子网管理合约,所述子网管理合约用于维护基于所述区块链主网组建的各个区块链子网中子网节点的节点身份信息;任一区块链节点向所述区块链主网查询任一子网节点的节点身份信息,包括:
任一区块链节点读取所述子网管理合约维护的任一子网节点的节点身份信息。
8.根据权利要求4或5所述的方法,任一子网节点的身份证明信息包含所述任一子网节点声明的节点标识和所述任一子网节点所属区块链子网的子网标识;任一区块链节点向所述区块链主网查询任一子网节点的节点身份信息,包括:
任一区块链节点向所述区块链主网查询所述任一子网节点声明的节点标识和子网标识是否相匹配。
9.根据权利要求4或5所述的方法,任一子网节点的身份证明信息包含所述任一子网节点基于自身的节点私钥生成的签名;任一区块链节点向所述区块链主网查询任一子网节点的节点身份信息以对所述身份证明信息进行校验,包括:
任一区块链节点向所述区块链主网查询任一子网节点的节点公钥,并采用所述节点公钥对所述签名进行验签。
10.根据权利要求1所述的方法,还包括:
各源节点分别通过自身维护的其他源节点的节点公钥对接收到的重构消息中包含的源节点签名进行验证。
11.根据权利要求1所述的方法,所述区块链主网维护有所述目的区块链网络中各目的节点的节点公钥,所述重构消息还包括构造所述重构消息的源节点接收到的各跨链消息中分别携带的目的节点签名;所述方法还包括:
各源节点分别向所述区块链主网查询自身接收到的重构消息所指示的目的节点的节点公钥,并通过查询到的节点公钥对自身接收到的重构消息中包含的目的节点签名进行验证。
12.根据权利要求1所述的方法,所述区块链主网维护有所述目的区块链网络中的目的节点的节点总量,所述方法还包括:
各源节点分别向所述区块链主网查询所述节点总量,以用于进行所述拜占庭容错校验。
13.根据权利要求1所述的方法,所述区块链交易中包含待处理数据,所述方法还包括:
各源节点根据自身获取到的跨链消息中包含的第一待处理数据和其他源节点提交的区块链交易中包含的第二待处理数据,或者根据自身按照获取到的跨链消息中包含的第一待处理数据计算得到的第一哈希和其他源节点提交的区块链交易中包含的第二待处理数据的第二哈希,对其他源节点提交的区块链交易进行校验,并对校验通过的区块链交易进行共识。
14.根据权利要求1所述的方法,所述源区块链网络维护有请求标识集合,各源节点发起的跨链请求以及各目的节点返回的跨链消息包含同一请求标识,各源节点分别执行所述区块链交易,包括:
各源节点分别在确定所述请求标识集合中存在所述区块链交易携带的目标请求标识的情况下,执行所述区块链交易,并将所述目标请求标识从所述请求标识集合中删除。
15.根据权利要求1所述的方法,所述消息内容包含待处理数据,所述方法还包括:
所述源节点调用部署于所述源区块链网络的智能合约以创建所述跨链请求;
所述源节点响应于所述跨链消息调用所述智能合约任务回调方法,以将所述待处理数据返回至所述智能合约。
16.根据权利要求1所述的方法,各源节点分别执行的所述区块链交易为:
通过共识的首个区块链交易;或者,
通过共识的区块链交易中最先被生成的区块链交易。
17.一种跨链交互方法,包括:
源区块链网络中的至少一个源节点向目的区块链网络发起跨链请求,以使所述目的区块链网络中的各目的节点分别获得所述跨链请求,其中,所述源区块链网络和所述目的区块链网络为区块链主网所管理的区块链子网,所述区块链主网中的主网节点与所述区块链主网所管理的区块链子网中的子网节点部署于同一节点设备;
所述源区块链网络中的主节点获取多重签名的任一重构消息;其中,在各目的节点分别响应于所述跨链请求而返回的跨链消息通过校验的情况下,所述任一重构消息由所述跨链消息的消息内容构造得到;
所述主节点在确定所述任一重构消息中包含的源节点签名的签名数量通过拜占庭容错校验的情况下,根据所述任一重构消息生成区块链交易并提交至所述源区块链网络进行共识;
各源节点分别执行通过共识的所述区块链交易。
18.根据权利要求17所述的方法,所述跨链消息由各目的节点分别通过单播或广播的方式返回所述源区块链网络。
19.根据权利要求17所述的方法,所述重构消息由所述源区块链网络中的任一源节点构造得到。
20.根据权利要求17所述的方法,所述区块链主网维护有所述目的区块链网络中各目的节点的节点身份信息,所述跨链消息包含用于表征返回所述跨链消息的目的节点的节点身份的身份证明信息;所述方法还包括:
所述主节点向所述区块链主网查询返回所述跨链消息的目的节点的节点身份信息以对所述身份证明信息进行校验,并根据通过校验的跨链消息生成所述区块链交易。
21.根据权利要求20所述的方法,所述节点设备上的主网节点和子网节点共享该节点设备上运行的区块链插件;所述主节点向所述区块链主网查询任一目的节点的节点身份信息,包括:
所述主节点通过与自身所属节点设备上部署的主网节点共享的区块链插件,读取该主网节点维护的所述任一目的节点的节点身份信息。
22.根据权利要求20所述的方法,所述区块链主网上部署有子网管理合约,所述子网管理合约用于维护基于所述区块链主网组建的各个区块链子网中子网节点的节点身份信息;所述主节点向所述区块链主网查询任一目的节点的节点身份信息,包括:
所述主节点读取所述子网管理合约维护的任一目的节点的节点身份信息。
23.根据权利要求20所述的方法,任一子网节点的身份证明信息包含所述任一子网节点声明的节点标识和所述任一子网节点所属区块链子网的子网标识;所述主节点向所述区块链主网查询任一目的节点的节点身份信息,包括:
所述主节点向所述区块链主网查询所述任一目的节点声明的节点标识和子网标识是否相匹配。
24.根据权利要求20所述的方法,任一子网节点的身份证明信息包含所述任一子网节点基于自身的节点私钥生成的签名;所述主节点向所述区块链主网查询任一目的节点的节点身份信息以对所述身份证明信息进行校验,包括:
所述主节点向所述区块链主网查询任一目的节点的节点公钥,并采用所述节点公钥对所述签名进行验签。
25.根据权利要求17所述的方法,还包括:
所述主节点通过自身维护的其他源节点的节点公钥对接收到的重构消息中包含的源节点签名进行验证。
26.根据权利要求17所述的方法,所述区块链主网维护有所述目的区块链网络中各目的节点的节点公钥,所述重构消息还包括构造所述重构消息的源节点接收到的各跨链消息中分别携带的目的节点签名;所述方法还包括:
所述主节点向所述区块链主网查询自身接收到的重构消息所指示的目的节点的节点公钥,并通过查询到的节点公钥对自身接收到的重构消息中包含的目的节点签名进行验证。
27.根据权利要求17所述的方法,所述区块链主网维护有所述目的区块链网络中的目的节点的节点总量,所述方法还包括:
所述主节点向所述区块链主网查询所述节点总量,以用于进行所述拜占庭容错校验。
28.根据权利要求17所述的方法,所述源区块链网络维护有请求标识集合,各源节点发起的跨链请求以及各目的节点返回的跨链消息包含同一请求标识,各源节点分别执行所述区块链交易,包括:
各源节点分别在确定所述请求标识集合中存在所述区块链交易携带的目标请求标识的情况下,执行所述区块链交易,并将所述目标请求标识从所述请求标识集合中删除。
29.一种跨链交互装置,包括:
请求发起单元,使源区块链网络中的至少一个源节点向目的区块链网络发起跨链请求,以使所述目的区块链网络中的各目的节点分别获得所述跨链请求,其中,所述源区块链网络和所述目的区块链网络为区块链主网所管理的区块链子网,所述区块链主网中的主网节点与所述区块链主网所管理的区块链子网中的子网节点部署于同一节点设备;
消息构造单元,使各源节点获取各目的节点分别响应于所述跨链请求而返回的跨链消息,并在自身获取到的跨链消息通过校验的情况下在所述源区块链网络中针对所述跨链消息的消息内容构造多重签名的重构消息;
交易生成单元,使各源节点在确定接收到的任一重构消息中包含的源节点签名的签名数量通过拜占庭容错校验的情况下,根据所述任一重构消息生成区块链交易并提交至所述源区块链网络进行共识;
交易执行单元,使各源节点分别执行通过共识的多条区块链交易中的同一区块链交易。
30.一种跨链交互装置,包括:
请求发起单元,使源区块链网络中的至少一个源节点向目的区块链网络发起跨链请求,以使所述目的区块链网络中的各目的节点分别获得所述跨链请求,其中,所述源区块链网络和所述目的区块链网络为区块链主网所管理的区块链子网,所述区块链主网中的主网节点与所述区块链主网所管理的区块链子网中的子网节点部署于同一节点设备;
消息获取单元,使所述源区块链网络中的主节点获取多重签名的任一重构消息;其中,在各目的节点分别响应于所述跨链请求而返回的跨链消息通过校验的情况下,所述任一重构消息由所述跨链消息的消息内容构造得到;
交易生成单元,使所述主节点在确定所述任一重构消息中包含的源节点签名的签名数量通过拜占庭容错校验的情况下,根据所述任一重构消息生成区块链交易并提交至所述源区块链网络进行共识;
交易执行单元,使各源节点分别执行通过共识的所述区块链交易。
31.一种电子设备,其特征在于,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器通过运行所述可执行指令以实现如权利要求1-28中任一项所述的方法。
32.一种计算机可读存储介质,其上存储有计算机指令,其特征在于,该指令被处理器执行时实现如权利要求1-28中任一项所述方法的步骤。
CN202110611546.0A 2021-06-02 2021-06-02 跨链交互方法及装置 Active CN113259460B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110611546.0A CN113259460B (zh) 2021-06-02 2021-06-02 跨链交互方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110611546.0A CN113259460B (zh) 2021-06-02 2021-06-02 跨链交互方法及装置

Publications (2)

Publication Number Publication Date
CN113259460A CN113259460A (zh) 2021-08-13
CN113259460B true CN113259460B (zh) 2021-10-15

Family

ID=77185885

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110611546.0A Active CN113259460B (zh) 2021-06-02 2021-06-02 跨链交互方法及装置

Country Status (1)

Country Link
CN (1) CN113259460B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113886495B (zh) * 2021-09-30 2024-05-24 支付宝(杭州)信息技术有限公司 验证区块链数据的方法、装置、电子设备和存储介质
CN114679274A (zh) * 2021-12-31 2022-06-28 支付宝(杭州)信息技术有限公司 跨子网交互的权限控制方法及装置、电子设备、存储介质
CN114374699B (zh) * 2021-12-31 2024-07-16 支付宝(杭州)信息技术有限公司 跨链交互方法和跨链交互的审计方法
CN114363335B (zh) * 2021-12-31 2024-03-15 支付宝(杭州)信息技术有限公司 跨链交互方法及装置
CN114844904B (zh) * 2022-04-29 2024-03-29 蚂蚁区块链科技(上海)有限公司 用于跨区块链交互的系统及方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110417502A (zh) * 2019-07-31 2019-11-05 中国工商银行股份有限公司 一种区块链节点时钟共识方法及装置

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107301536B (zh) * 2017-06-12 2019-07-12 腾讯科技(深圳)有限公司 资源转移方法及装置
US20190213048A1 (en) * 2018-01-11 2019-07-11 William Bohannon Mason Device network for incentivized mining utilizing leveraged computing resources within a block chain architecture
CN109286685A (zh) * 2018-11-21 2019-01-29 北京蓝石环球区块链科技有限公司 可拓展子链的主链加并行多子链的系统架构
CN111080452B (zh) * 2019-12-17 2023-12-29 电子科技大学 一种适用于能源区块链的分层交易方法
CN111681003B (zh) * 2020-07-07 2021-06-25 腾讯科技(深圳)有限公司 资源跨链转移方法、装置、计算机设备以及存储介质

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110417502A (zh) * 2019-07-31 2019-11-05 中国工商银行股份有限公司 一种区块链节点时钟共识方法及装置

Also Published As

Publication number Publication date
CN113259460A (zh) 2021-08-13

Similar Documents

Publication Publication Date Title
CN113259456B (zh) 跨链交互方法及装置
CN113259460B (zh) 跨链交互方法及装置
CN113259455B (zh) 跨子网交互方法及装置
CN113259453B (zh) 跨链交互方法及装置
CN113067902B (zh) 区块链消息的传输方法及装置
WO2023124746A1 (zh) 跨子网交互的权限控制
CN113259457B (zh) 区块链子网的信息同步方法及装置
CN113067897B (zh) 跨链交互方法及装置
CN113098982B (zh) 区块链消息的传输方法及装置
CN113055190B (zh) 针对客户端的访问控制方法
CN113067838B (zh) 跨链交互方法及装置
CN113259454B (zh) 跨链交互方法及装置
WO2024001022A1 (zh) 跨子网调用
WO2023050986A1 (zh) 维护区块链系统的网络架构信息
WO2023050966A1 (zh) 验证区块链数据
CN113259464B (zh) 组建区块链子网的方法和区块链系统
CN114363162A (zh) 区块链日志的生成方法及装置、电子设备、存储介质
CN113067896B (zh) 区块链子网中加入节点的方法和区块链系统
CN113259120B (zh) 同步节点信息列表的方法
CN113259117B (zh) 同步节点信息列表的方法
CN113259461B (zh) 跨链交互方法和区块链系统
CN113259463B (zh) 跨链交互方法和区块链系统
CN113259459B (zh) 区块链子网运行状态的控制方法和区块链系统
CN116743765A (zh) 区块链系统、跨链交互方法和装置
CN114363349A (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
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20240926

Address after: Room 803, floor 8, No. 618 Wai Road, Huangpu District, Shanghai 200010

Patentee after: Ant blockchain Technology (Shanghai) Co.,Ltd.

Country or region after: China

Address before: 310000 801-11 section B, 8th floor, 556 Xixi Road, Xihu District, Hangzhou City, Zhejiang Province

Patentee before: Alipay (Hangzhou) Information Technology Co.,Ltd.

Country or region before: China