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

跨链交互方法及装置 Download PDF

Info

Publication number
CN113259454A
CN113259454A CN202110611518.9A CN202110611518A CN113259454A CN 113259454 A CN113259454 A CN 113259454A CN 202110611518 A CN202110611518 A CN 202110611518A CN 113259454 A CN113259454 A CN 113259454A
Authority
CN
China
Prior art keywords
node
blockchain
network
message
cross
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.)
Granted
Application number
CN202110611518.9A
Other languages
English (en)
Other versions
CN113259454B (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.)
Alipay Hangzhou Information Technology 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 CN202111406523.2A priority Critical patent/CN113923228A/zh
Priority to CN202110611518.9A priority patent/CN113259454B/zh
Publication of CN113259454A publication Critical patent/CN113259454A/zh
Application granted granted Critical
Publication of CN113259454B publication Critical patent/CN113259454B/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

Landscapes

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

Abstract

本说明书一个或多个实施例提供一种跨链交互方法及装置。所述方法包括:目的区块链网络中的各目的节点分别获取源区块链网络中的至少一个源节点向目的区块链网络发送的跨链消息;各目的节点分别根据自身获取到的跨链消息生成区块链交易,并分别将生成的区块链交易提交至所述目的区块链网络;各目的节点分别执行通过共识的多条区块链交易中的同一区块链交易。

Description

跨链交互方法及装置
技术领域
本说明书一个或多个实施例涉及区块链技术领域,尤其涉及一种跨链交互方法及装置。
背景技术
区块链技术构建在传输网络(例如点对点网络)之上。区块链网络中的节点利用链式数据结构来验证与存储数据,并采用分布式节点共识算法来生成和更新数据。在一些区块链网络中,部分节点有时存在实现小范围交易的需求,以避免其他节点获得这些交易及其相关数据,因此可以在区块链主网的基础上进一步建立区块链子网。
然而,不同区块链网络之间可能存在跨链交互需求,从而源区块链网络中的节点可以向目的区块链网络发起交互请求,如发送跨链消息。但是因为目的区块链网络中的不同节点可能接收到来自源区块链网络中的不同节点发起的多个跨链消息,所以如何保证目的区块链网络中的各个节点在处理源区块链网络发送的跨链消息后得到一致的处理结果,是跨链交互过程中亟待解决的问题。
发明内容
有鉴于此,本说明书一个或多个实施例提供一种跨链交互方法及装置。
为实现上述目的,本说明书一个或多个实施例提供技术方案如下:
根据本说明书一个或多个实施例的第一方面,提出了一种跨链交互方法,包括:
目的区块链网络中的各目的节点分别获取源区块链网络中的至少一个源节点向目的区块链网络发送的跨链消息;
各目的节点分别根据自身获取到的跨链消息生成区块链交易,并分别将生成的区块链交易提交至所述目的区块链网络;
各目的节点分别执行通过共识的多条区块链交易中的同一区块链交易。
根据本说明书一个或多个实施例的第二方面,提出了一种跨链交互装置,包括:
消息接收单元,使目的区块链网络中的各目的节点分别获取源区块链网络中的至少一个源节点向目的区块链网络发送的跨链消息;
交易共识单元,使各目的节点分别根据自身获取到的跨链消息生成区块链交易,并分别将生成的区块链交易提交至所述目的区块链网络;
交易执行单元,使各目的节点分别执行通过共识的多条区块链交易中的同一区块链交易。
根据本说明书一个或多个实施例的第三方面,提出了一种电子设备,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器通过运行所述可执行指令以实现如第一方面中任一项所述的方法。
根据本说明书一个或多个实施例的第四方面,提出了一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现如第一方面中任一项所述方法的步骤。
通过上述实施例,在目的区块链网络中的各目的节点分别获取到源区块链网络中的源节点生成的跨链消息后,分别根据自身获取到的跨链消息生成区块链交易并提交共识,进而由各个目的节点分别执行同一区块链交易。因为各目的节点分别获取到的跨链消息均来自源区块链网络,所以各节点分别根据自身获取到的跨链消息生成的区块链交易能够包含相同的区块链消息,进而各节点分别执行通过共识的同一区块链交易后,即可获得相同的执行结果,从而各目的节点在处理源区块链网络发送的跨链消息后能够得到一致的处理结果。
附图说明
图1是一示例性实施例提供的一种创建智能合约的示意图。
图2是一示例性实施例提供的一种调用智能合约的示意图。
图3是一示例性实施例提供的一种创建和调用智能合约的示意图。
图4是一示例性实施例提供的一种基于区块链主网组建区块链子网的示意图。
图5是一示例性实施例提供的一种跨链交互方法的示意图。
图6是一示例性实施例提供的一种跨链交互方法的流程图。
图7是一示例性实施例提供的一种设备的结构示意图。
图8是一示例性实施例提供的一种跨链交互装置的框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书一个或多个实施例相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书一个或多个实施例的一些方面相一致的装置和方法的例子。
需要说明的是:在其他实施例中并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤。在一些其他实施例中,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其他实施例中可能被分解为多个步骤进行描述;而本说明书中所描述的多个步骤,在其他实施例中也可能被合并为单个步骤进行描述。
区块链一般被划分为三种类型:公有链(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,目的区块链网络中的各目的节点分别获取源区块链网络中的至少一个源节点向目的区块链网络发送的跨链消息。
在本实施例中,源区块链网络中的至少一个源节点可以向目的区块链网络发送跨链消息,从而目的区块链网络中的各个目的节点可以对接收到的跨链消息进行校验,然后使用校验通过的跨链消息生成区块链交易并提交共识,并分别执行通过共识的同一区块链交易。可以理解的是,目的区块链网络中的各个目的节点都会分别执行上述接收跨链消息、验证跨链消息、生成区块链交易、执行区块链交易等针对跨链消息的响应过程。
以图4所示的网络结构中区块链子网subnet1和subnet2之间的跨链交互过程为例进行说明。subnet1中的至少一个源节点(源节点nodeA1、nodeB1、nodeC1和/或nodeD1)可以采用前述单播、多播或广播的方式通过区块链主网subnet0向subnet2发送跨链消息,subnet2中的各个目的节点(目的节点nodeA2、nodeB2、nodeC2和nodeE2)分别获取到跨链消息后,可以分别响应于自身接收到的跨链消息进行相应的校验等处理。下面结合多个具体实施例对目的节点获取其接收到的跨链消息包含的消息内容以及对各个跨链消息进行验证的具体过程进行详细说明。
在一实施例中,为保证所发送的跨链消息的私密性,避免请求的内容泄露,源节点可以采用数字信封技术对跨链消息进行加密。例如,对于待传输的区块链消息(对应于源节点需要完成的具体业务,如可以用于调用智能合约,此时的消息内容可以包括相关参数、被调用合约的合约信息、被调用合约中的功能信息等),源节点可以采用自身的节点私钥对该区块链消息进行签名,并采用对称密钥对该区块链消息及其签名进行加密,以及采用各目的节点的节点公钥分别对上述对称密钥加密,并将对称密钥加密后的区块链消息和及其签名,以及节点公钥加密后的各对称密钥均添加至上述跨链请求中;相应的,接收到跨链请求的各目的节点可以分别通过源节点的节点公钥对上述跨链请求进行解密,并通过自身的节点私钥对解密得到的加密后的对称密钥进行解密,进而通过解密得到的对称密钥对加密后的区块链消息进行解密,以及使用源节点的节点公钥对区块链消息的签名进行验签,在验签通过的情况下对区块链消息进行后续处理,以向源区块链网络返回相应的跨链消息。其中,对上述跨链请求进行验签通过,则表明接收到的区块链消息确实为相应的源节点所发送,未被篡改。可见,一方面,采用对称密钥对数据量相对较大的消息内容进行加密,并采用非对称密钥对数据量相对较小的对称密钥进行加密,不仅有助于保证较快的加密速度,而且能够使被加密的消息内容实现更加严格的数据私密性。另一方面,因为源节点使用目的区块链网络中各目的节点的节点公钥对对称密钥进行加密,所以各目的节点在接收到跨链消息后,均可以分别使用自身的节点私钥对对称密钥进行解密,进而使用解密得到的对称密钥解密消息内容,实现在目的区块链网络中广播跨链消息的效果。
以图4为例,在subnet1向subnet2发送跨链消息的场景下,subnet1为源区块链网络、subnet2为目的区块链网络。则subnet1中的任一子网节点nodeA1可以在使用对称密钥加密消息内容后,使用subnet2中各个子网节点nodeA2、nodeB2、nodeC2和nodeE2的节点公钥加密该对称密钥,并将加密后的对称密钥和消息内容包含在跨链消息中通过subnet0发送至subnet2。subnet2中的任一子网节点(如nodeA2)接收跨链消息后,在确定自身的节点私钥可以解密跨链消息中加密的对称密钥的情况下,即确定自身为跨链消息的合法接收方,进而可以使用解密得到的对称密钥解密获取上述消息内容。
可以理解的是,利用数字信封技术,可以同时使用多个目的节点的节点公钥加密对称密钥,所以任一源节点可以使用目的区块链网络中全部目的节点的公钥加密区块链消息并将其包含在跨链消息中,进而各目的节点可以根据自身的节点私钥解密跨链消息中的区块链消息,实现源节点向目的节点广播跨链消息的消息跨链传输效果。当然,在采用上述数字信封方式的情况下,任一源节点也可以仅使用某一个(或多个)目的节点的节点公钥对跨链消息中的对称密钥进行加密,从而实现源节点向目的节点单播(或多播)跨链消息的消息跨链传输效果,具体过程不再赘述。实际上,本说明书对于上述跨链消息和跨链消息的具体发送方式并不进行限制,如不采用数字信封而直接使用节点公钥对跨链消息中的消息内容进行加密等,不再赘述。
如前所述,源区块链网络中的各个源节点可以向目的区块链网络中的各个目的节点分别发送(即广播)跨链消息;或者,各个源节点也可以分别向目的区块链网络中的任一个(或多个)目的节点发送(即单播或多播)跨链消息,并由各个目的节点将自身接收到的跨链消息同步至目的区块链网络中的其他目的区块链网络。可见,无论是采用广播的方式发送跨链消息;还是采用单播或多播的方式发送跨链消息并由接收方在自身所属网络中同步,都能够保证目的区块链网络中的各个目的节点分别接收到源区块链网络中的至少一个源节点发送的跨链消息。
在一实施例中,源区块链网络可以为区块链主网所管理的区块链子网,该区块链主网可以维护有源区块链网络中各源节点的节点身份信息,上述跨链消息中可以包含用于表征发送跨链消息的源节点的节点身份的身份证明信息,此时,接收到跨链消息的各目的节点可以分别向区块链主网查询发送跨链消息的源节点的节点身份信息以对身份证明信息进行校验,并在校验通过的情况下对跨链消息进行响应。
以图4为例,区块链主网subnet0可以维护区块链子网subnet1和subnet2中各个子网节点的节点身份信息。可以理解的是,目的节点nodeA2接收到的源节点nodeA1发送的跨链消息中可以包含nodeA1的身份证明信息,因此nodeA2可以据此确定该请求对应的源节点(即该请求的发送方)为nodeA1,从而nodeA2可以向区块链主网subnet0查询nodeA1的节点身份信息,并根据subnet0返回的节点身份信息确定nodeA1是否为合法源节点。其中,subnet0中保存的节点身份信息可以包括节点的网络地址、端口、节点公钥和/或节点标识等。以节点公钥为例,nodeA2可以向subnet0中的主网节点nodeA发送包含跨链消息中携带的nodeA1的节点公钥的查询请求,此时nodeA可以在本地维护的(基于subnet0组建的各个区块链子网所包含的)子网节点的节点公钥中查询是否存在nodeA1的节点公钥,并向nodeA2返回相应的查询结果,从而nodeA2可以根据该查询结果实现对nodeA1的节点公钥的校验。若查询到nodeA1的节点公钥则校验通过,即表明nodeA1确实为nodeA2所接收的跨链消息的可信发送方,从而nodeA2可以进一步响应该跨链消息;否则,若未查询到nodeA1的节点公钥则校验未通过,即表明nodeA1不可信,此时nodeA2可以直接丢弃nodeA1发送的跨链消息。另外,在验证未通过的情况下,nodeA2还可以将nodeA1记录为非法源节点,以便在后续再次接收到nodeA1发送的跨链消息的情况下,可以直接丢弃该请求,避免无效处理并加快响应速度。当然,nodeA2还可以将nodeA1的非法记录同步至subnet2中的其他目的节点。
在源区块链网络为区块链子网的前述实施例中,目的区块链网络也可以为区块链子网,进而区块链主网中主网节点与区块链主网所管理的区块链子网中的子网节点可以部署于同一节点设备,该节点设备上的主网节点和子网节点可以共享该节点设备上运行的区块链插件,此时各目的节点在接收到跨链消息后,可以通过区块链插件查询源节点的节点身份信息,如通过与自身所属节点设备上部署的主网节点共享的区块链插件,读取该主网节点维护的该跨链消息对应的源节点(即该跨链消息的发送方)的身份信息。以图4为例,若主网节点nodeA和子网节点nodeA2均部署在同一节点设备(下称节点设备A)中,则二者可以共用节点设备A上运行的区块链插件。此时nodeA2可以通过区块链插件查询nodeA1的节点身份信息(当然,若子网节点nodeA1也部署在节点设备A中,则nodeA1也可以通过区块链插件查询nodeA2的节点身份信息)。其中,上述区块链插件可以为区块链主网中部署的用于调用子网管理合约的插件,任一区块链节点可以通过相应的主网节点在subnet0中发送调用子网管理合约的交易(如读取子网管理合约所维护的子网节点信息)的方式查询子网节点的节点身份信息。当然,为保证查询速度,上述交易可以为无需共识的交易。显然,在同一节点设备中部署有归属于不同区块链网络的网络节点的情况下,通过各个节点共用节点设备的区块链插件,可以实现对区块链插件的高效复用,并有效减少节点设备中需要部署的区块链插件的数量,有助于简化节点设备配置及区块链节点的部署流程,提升区块链节点的部署效率及节点设备的管理效率。实际上,部署于同一节点设备中的不同区块链节点也可以共用其他功能插件,如前述的P2P插件实例、共识插件实例和/或业务实例等,不再赘述。
在源区块链网络为区块链子网的前述实施例中,上述区块链主网上可以部署子网管理合约,该子网管理合约用于维护基于区块链主网组建的各个区块链子网中子网节点的节点身份信息;此时,任一目的节点可以读取子网管理合约维护的任一源节点的节点身份信息,如可以在接收到跨链消息后,读取该跨链消息对应的源节点(即该跨链消息的发送方)的身份信息。以图4为例,因为子网节点nodeA1所属的subnet1和子网节点nodeA2所属的subnet2均在subnet0的基础上建立,所以subnet0中部署的子网管理合约可以用于管理subnet1和subnet2中各个子网节点的节点身份信息,进而任一目的节点也可以读取子网管理合约所维护的任一源节点的节点身份信息,如nodeA2可以读取nodeA1的节点身份信息。通过由区块链主网中部署的子网管理合约维护子网节点的节点身份信息,能够保证对于节点身份信息的高效管理。而由区块链子网中的子网节点直接读取子网管理合约所维护的节点身份信息,使得节点身份信息的获取过程无需区块链主网中主网节点的共识过程,有助于提升节点身份信息的获取效率。
在源区块链网络为区块链子网的前述实施例中,任一子网节点的身份证明信息可以包含该子网节点声明的节点标识和该子网节点所属区块链子网的子网标识;此时,各目的节点可以分别向区块链主网查询发送跨链消息的源节点声明的节点标识和子网标识是否相匹配。以图4为例,子网节点nodeA1向nodeA2发送的跨链消息中包含的节点身份信息可以包括nodeA1的节点标识和subnet1的子网标识。因此,在接收到nodeA1发送的跨链消息后,nodeA2可以向subnet0查询nodeA1声明的节点标识和子网标识是否相匹配,如nodeA2可以向主网节点A查询其维护的全部子网标识中是否包含subnet1的子网标识,并在包含的情况下进一步查询subnet1的子网标识对应的全部节点标识中是否包含nodeA1的节点标识:若包含节点nodeA1的节点标识,则表明nodeA1声明的节点标识和子网标识相匹配,进而表明nodeA2接收到的跨链消息确实为nodeA1发送,因此nodeA2可以进一步的响应该消息;否则,若不包含nodeA1的节点标识,则表明nodeA1声明的节点标识和子网标识不相匹配,进而表明nodeA2接收到的跨链消息可能为其他节点发送的虚假请求,因此可以终止响应该消息,如直接丢弃该消息等。通过该方式,能够充分利用区块链主网中维护的各个子网节点的节点身份信息对源节点发送的跨链消息进行验证,以保证目的节点实际处理的跨链消息的合法性。
在源区块链网络为区块链子网的前述实施例中,任一子网节点的身份证明信息也可以包含该子网节点基于自身的节点私钥生成的签名;因此,各目的节点可以分别向区块链主网查询发送跨链消息的源节点的节点公钥,并采用该节点公钥对上述签名进行验签。以图4为例,子网节点nodeA1可以基于自身的节点私钥生成针对跨链消息所包含消息内容(或对跨链消息)的签名,并将该签名包含在跨链消息中(或与跨链消息关联发送)至子网节点nodeA2,从而nodeA2可以向subnet0查询nodeA1的节点身份信息以对该签名进行校验,如根据从subnet0中查询到的nodeA1的节点公钥对上述签名进行验签等。相应的,在验签通过的情况下,可以进一步响应跨链消息;而在验签失败的情况下,可以终止针对跨链消息的响应,如可以直接丢弃跨链消息甚至将nodeA1记录为非法节点。
步骤604,各目的节点分别根据自身获取到的跨链消息生成区块链交易,并分别将生成的区块链交易提交至所述目的区块链网络。
如前所述,因为任一目的节点接收到的多个跨链消息都是同一源节点发送的,所以在源区块链网络和目的区块链网络中不存在作恶节点的情况下,各目的节点接收到的跨链消息应当足够多,因此为避免源区块链网络或目的区块链网络中可能存在的作恶节点对跨链消息的篡改或造假,各目的节点可以对各自接收到的跨链消息进行拜占庭容错校验。例如,各目的节点可以分别根据自身获取到的跨链消息的消息数量和源区块链网络中的源节点的节点总量对自身获取到的跨链消息进行拜占庭容错校验。当然,只有通过上述拜占庭容错校验的跨链消息才能够被相应目的节点用于生成区块链交易。由前述实施可知,任一目的节点可能接收到多个源节点发送的多个跨链消息,所以任一目的节点在接收到跨链消息后,根据自身获取到的跨链消息的消息数量和源区块链网络中源节点的节点总量对自身获取到的跨链消息进行拜占庭容错校验,并仅根据通过校验的跨链消息生成区块链消息,保证了用于生成区块链消息的跨链消息的可靠性,进而保证了所生成区块链消息的可靠性。
其中,在上述源区块链网络为区块链主网所管理的区块链子网的情况下,上述区块链主网可以维护有源区块链网络中的源节点的节点总量,因此各目的节点可以分别向区块链主网查询该节点总量。例如,子网节点nodeA2可能接收到由子网节点nodeA1、nodeB1、nodeC1和nodeD1中的一个或多个节点分别发送的跨链消息,所以nodeA2可以向subnet0查询源区块链网络中源区块链节点的节点总量,进而根据该节点总量与自身接收到的跨链消息的消息数量对接收到的跨链消息进行拜占庭容错校验。此时,能够充分利用区块链主网所维护的区块链子网的子网信息,有助于提升交互效率。另外,在上述各实施例所提及的区块链主网和区块链子网的场景下,任一区块链节点在向区块链主网查询其他区块链子网的信息后,可以将该信息保存在本地,以避免后续处理过程中的重复查询,进一步提升交互效率。当然,为保证上述信息的时效性,也可以为本地保存的信息设置有效时长,以及时查询更新上述信息。
另外,在源区块链网络和目的区块链网络中不存在作恶节点的情况下,任一目的节点获取到的多个跨链消息中应当包含相同的消息内容。因此,各目的节点可以对前述过程验证通过的区块链进行内容验证,即比较各个区块链交易是否包含相同的消息内容。进而,各目的节点可以对包含相同消息内容的跨链消息进行上述拜占庭容错校验。例如,各目的节点可以分别根据自身获取到的包含相同消息内容的跨链消息的消息数量和源区块链网络中的源节点的节点总量对自身获取到的跨链消息进行拜占庭容错校验。其中,通过上述拜占庭容错校验且包含相同消息内容的跨链消息才会被用于生成区块链交易。
下面结合图4所示场景以nodeA2采用PBFT容错算法为例仅进行说明。由图4可知,作为源区块链网络的subnet1中包含nodeA1、nodeB1、nodeC1和nodeD1共四个子网节点(节点总量为3f+1=4,即f=1),所以若nodeA2接收到其中至少f+1(即2)个源节点发送的合法跨链消息包含相同的消息内容,则可以确定这些跨链消息通过拜占庭容错校验。当然,在方案实践中,上述节点总量及接收到的跨链消息的消息数量也可以为其他数值,本说明书并不对此进行限制。其中,通过上述校验的(包含相同消息内容的)跨链消息才会被用于生成区块链交易。通过上述拜占庭容错校验,可以保证subnet2中的各目的节点用于生成区块链交易的跨链消息均是由subnet1中的合法源节点生成的,有效降低了作恶节点(即拜占庭节点)对于区块链交易的作恶可能。
目的区块链网络中的任一目的节点生成区块链交易后,可以将该区块链交易提交至目的区块链网络参与共识,即将该区块链交易广播至目的区块链网络中的其他节点,以由目的区块链网络中的各个目的节点对该区块链交易进行共识。目的节点接收到跨链消息中可以包含待处理数据,如用于更新本地数据的数据、用于参与本地计算的数据等。相应的,目的节点根据自身获取的跨链消息生成的区块链交易也可以包含该数据。然而,生成或者转发任一区块链交易的目的节点都可能为作恶节点,因此任一节点在接收到其他目的节点提交的任一区块链交易后,可以根据该交易中包含的待处理数据或其哈希对该交易进行校验。
作为一示例性实施例,目的区块链网络中的各目的节点可以直接根据区块链交易中包含的待处理数据对区块链交易进行校验。例如,各目的节点可以将自身接收到的跨链消息中携带的(即该跨链消息中的消息内容包含的)待处理数据作为第一待处理数据(如前所述,同一目的节点接收到的跨链消息或者通过容错校验的跨链消息携带相同的待处理数据),并将从其他目的节点提交的区块链消息(即待验证的区块链消息)中提取的待处理数据作为第二待处理数据。进而可以通过比较上述第一待处理数据和第二待处理数据是否相同,实现对其他目的节点提交的上述区块链交易的校验:在第一待处理数据与第二待处理数据相同的情况下,可以确定该区块链交易通过验证;否则,在第一待处理数据与第二待处理数据不相同的情况下,则确定该区块链交易未通过验证。
或者,作为另一示例性实施例,为提升对其他目的节点生成的区块链交易的验证效率,任一目的节点生成的区块链交易中还可以包含待处理数据的哈希,从而各目的节点可以将该哈希作为第二哈希,并将自身接收到的跨链消息中包含的待处理数据的哈希(该哈希可以包含在跨链消息中或者由目标节点根据跨链消息中包含的待处理数据计算得到)作为第一哈希。进而可以通过比较上述第一哈希和第二哈希是否相同,实现对其他目的节点提交的上述区块链交易的校验:若第一哈希与第二哈希相同,则可以确定该区块链交易通过验证;否则,若第一哈希与第二哈希不相同,则可以确定该区块链交易未通过验证。通常情况下待处理数据的数据量都远大于哈希的数据量,因此通过比较哈希可以有效提升验证效率。
可以理解的是,对于任一目的节点获取的各个跨链消息,只有通过前述签名验证和/或拜占庭容错校验,并包含相同消息内容的跨链消息才会被该目的节点用于生成区块链交易。其中,对于生成的任一区块链交易,各个目的节点可以采用前述的工作量证明、股权证明、委任权益证明、实用拜占庭容错算法、HoneyBadgerBFT算法等进行共识,具体过程不再赘述。
另外需要说明的是,源区块链网络中的各个源节点在处理同一业务事件(如执行同一智能合约)的过程中,分别生成包含相同消息内容的跨链消息并发送至目的区块链网络;相应的,目的区块链网络中的各目的节点在对自身获取到的跨链消息验证通过后,分别根据其生成区块链交易,可见,上述跨链消息和区块链交易之间应当保持对应关系。实际上,源区块链网络可以同时处理多个业务事件相应的生成并发送包含多种消息内容的不同跨链消息,而目的区块链网络可以同时参与处理包含多种消息内容的跨链消息,因此,为避免不同跨链消息或区块链交易之间的混乱,源节点生成跨链消息时可以携带唯一标识,而目的节点根据跨链消息生成的区块链交易也相应的包含与跨链消息相同的该标识(即将跨链消息的唯一标识作为根据跨链消息生成的区块链交易的唯一标识),从而保证跨链消息和根据跨链消息生成的区块链交易包含相同的唯一标识,以便实现对不同跨链消息和不同区块链交易的有效区分。显然,本说明书前述各实施例所述的跨链消息和区块链交易,即为包含相同唯一标识的跨链消息和区块链交易。
步骤606,各目的节点分别执行通过共识的多条区块链交易中的同一区块链交易。
因为目的区块链网络中的各个目的节点均根据自身获取到的通过验证的跨链消息生成区块链交易,所以目的区块链网络中可能存在跨链消息对应的多个区块链交易通过共识,但是为保证区块链交易执行结果的一致性,需要各目的节点执行通过共识的同一区块链交易,从而实现相同的业务效果。为保证目的区块链网络中的各个目的节点分别执行通过共识的同一区块链交易,可以由各目的节点分别执行目的区块链网络中通过共识的首个区块链交易。或者,也可以分别执行通过共识的区块链交易中最先被生成的区块链交易,例如,各个目的节点可以根据区块链交易所携带的时间戳保证被执行的区块链交易为最先被生成的区块链交易。而任一目的节点在执行上述区块链交易后,可以终止针对其他区块链交易的处理过程。例如,任一区块链交易中均携带请求标识,则该目的节点在接收到携带与已执行的区块链交易相同请求标识的新的区块链交易的情况下,可以不执行新的区块链交易(即不执行与具体业务相关的合约代码)。当然,该目的节点也可能在短时间内接收到多个携带相同请求标识的区块链交易,并按照接收各交易的时间顺序依次对各交易进行校验、执行等处理,因此各区块链交易的处理进度可能有所不同,进而在执行完首个区块链交易后,该目的节点可以立即终止针对其他区块链交易的执行过程,以保证仅有首个区块链交易被顺利执行,从而与其他目的节点保持一致的交易执行结果,并减少无效处理带来的算力损耗。
如前所述,因为源区块链网络可能同时参与多个跨链请求的处理过程(如各源节点分别在短时间内生成多个跨链消息)、目的区块链网络可能同时响应于多个跨链消息处理多个区块链交易(如针对第一个跨链消息的响应过程尚未结束时,接收到第二个跨链消息),所以为避免不同跨链消息或者不同区块链交易之间的混乱,可以通过请求标识实现跨链消息与区块链交易之间的关联,即将请求标识作为前述的唯一标识。例如,在跨链消息由源节点执行智能合约生成的情况下,源节点可以将该智能合约的合约标识(如合约地址、合约标号、合约名称等)作为跨链消息的请求标识;或者,在上述跨链消息由源节点执行智能合约中定义的某一合约任务生成的情况下,源节点可以将该合约任务的任务标识作为跨链消息的请求标识,进而,目的节点根据接收到的跨链消息生成的区块链交易中也包含该请求的请求标识,从而保证各源节点发送的跨链消息以及各目的节点生成的区块链交易中均包含该请求标识。即通过该请求标识将各个源节点针对同一智能合约(或合约任务)发送的各个跨链消息关联起来,并通过该请求标识将各个目的节点响应于该请求标识对应的各个跨链消息生成的各个区块链交易关联起来,从而实现同一智能合约(或合约任务)对应的全部跨链消息和全部区块链交易的关联,有助于不同跨链消息或不同区块链交易之间的有效区分。
因为目的区块链网络中的任一目的节点可能同时参与包含不同请求标识的多个跨链消息的处理过程,所以为避免对包含同一请求标识的区块链交易进行多次重复执行,目的区块链网络可以维护请求标识集合,该集合用于记录当前时刻目的区块链网络中已经被执行完毕的区块链交易中携带的请求标识。从而,任一目的节点可以通过下述方式执行通过共识的多条区块链交易中的某一区块链交易:目的节点在确定某一区块链交易通过共识之后,可以提取该消息中包含的目标请求标识,然后在本地维护的请求标识集合中查询该目标请求标识,并在查询结果表明请求标识集合中未记录目标请求标识的情况下,执行该区块链交易。可以理解的是,上述请求标识集合中包含目标请求标识,则表明该目标请求标识对应的若干区块链交易(由若干目的节点分别生成的)均未被执行,因此该目的节点只需要执行该区块链交易即可实现对跨链消息的响应。当然,在任一目的节点执行上述区块链交易完成后,可以将目标请求标识添加至上述请求标识集合中,以保证不会重复执行目标请求标识对应的其他区块链交易。
在一实施例中,上述消息内容可以包含待处理数据,而跨链消息可以由目的节点调用部署于目的区块链网络的智能合约创建;相应的,目的节点可以响应于上述跨链消息调用智能合约任务回调方法,以将待处理数据返回至上述智能合约。承接于前述自动登录用户账号的实施例,假设目的节点执行用于实现用户账号登录的智能合约,但是目的节点本地未保存用户账号和登录密码,从而目的节点可以生成用于获取用户账号和登录密码的跨链消息,进而在源区块链网络中的源节点响应于请求返回跨链消息后,目的节点可以根据跨链消息中包含的用户账号和登录密码实现对用户账号的自动登录。此时,上述用户账号和登录密码即为待处理数据,目的节点将上述用户账号和登录密码返回至智能合约用于实现业务功能。
进一步的,因为请求标识集合中记录的是已经执行完毕的区块链交易包含的请求标识,所以为避免对获取到的跨链消息的无效响应以及对获取到的区块链交易的无效共识,任一目标节点可以在获取到任一跨链消息或任一区块链交易后,即查询请求标识集合中是否记录有该跨链消息或该区块链交易包含的请求标识。进而,可以在确定请求标识集合中记录有任一跨链消息包含的请求标识的情况下,终止针对该跨链消息的响应过程;或者,也可以在确定请求标识集合中记录有任一区块链交易包含的请求标识的情况下,终止针对该区块链交易的共识过程。
在一实施例中,源区块链网络和目的区块链网络中可以部署有同一智能合约,上述跨链消息中可以包含待处理数据,而该跨链消息可以由源节点调用部署于源区块链网络的智能合约创建;相应的,源节点可以响应于上述跨链消息调用智能合约任务回调方法,以将待处理数据返回至本地部署的智能合约。例如,上述智能合约可以用于使用待处理数据更新本地数据,或者也可以使用通过回调方法获取的待处理数据实现其他业务功能,如参与隐私计算等。
通过上述实施例,在目的区块链网络中的各目的节点分别获取到源区块链网络中的源节点生成的跨链消息后,分别根据自身获取到的跨链消息生成区块链交易并提交共识,进而由各个目的节点分别执行同一区块链交易。因为各目的节点分别获取到的跨链消息均来自源区块链网络,所以各节点分别根据自身获取到的跨链消息生成的区块链交易能够包含相同的区块链消息,进而各节点分别执行通过共识的同一区块链交易后,能够获得相同的执行结果,即各目的节点在处理源区块链网络发送的跨链消息后能够得到一致的处理结果。
至此,完成了针对目的区块链网络中的目的节点响应于源区块链网络发送的跨链消息的处理过程的完整介绍。实际上,各目的节点也可以响应于跨链消息向源区块链网络返回响应消息(即目的区块链网络将源区块链网络发送的跨链消息作为其发起的跨链请求),或者在执行区块链交易后向源区块链网络返回响应消息,上述响应消息中包含的响应信息可以为目的节点对于跨链消息的响应结果或者对区块链交易的执行结果,进而源节点可以根据该响应信息进行相应操作。下面对源节点对响应消息的获取、验证及后续处理过程进行说明。
在一实施例中,为保证所发送响应消息的私密性,避免响应信息泄露,任一目的节点可以采用数字信封技术对待传输的响应消息进行加密传输。具体传输方式可以参见前述实施例的记载,此处,不再赘述。
目的区块链网络中的目的节点可以向源区块链网络中的各个源节点分别发送(即广播)响应消息,或者各个目的节点也可以分别向源区块链网络中的任一个(或多个)源节点发送(即单播或多播)响应消息,并由各个源节点将自身接收到的响应消息同步至源区块链网络中的其他源区块链节点。可见,无论是采用广播的方式发送响应消息,还是采用单播或多播的方式发送并由接收方在自身所属网络中同步,都能够保证源区块链网络中的各个源节点均接收到目的区块链网络中的至少一个目的节点发送的响应消息。任一目的节点除了可以使用前述实施例所述的广播方式(数字信封使用源区块链网络中各个子网节点的节点公钥加密对称密钥)外,还可以根据自身所接收的跨链消息确定跨链消息的发送方,进而仅向该发送方返回相应的响应消息。如subnet2中的目的节点nodeA2在接收到subnet1中的源节点nodeA1通过单播方式发送的跨链消息后,可以仅向该nodeA1返回相应的响应消息,并由nodeA1在接收到该响应消息后将其同步至源区块链网络中的nodeB1、nodeC1和nodeD1等其他源节点。显然,上述两种方式均能够保证源区块链网络中的各个源节点均接收到目的区块链网络中各个目的节点返回的响应消息。
在一实施例中,目的区块链网络可以为区块链主网所管理的区块链子网,该区块链主网维护有目的区块链网络中各目的节点的节点身份信息,上述响应消息包含用于表征返回响应消息的目的节点的节点身份的身份证明信息,相应的,各源节点可以分别向区块链主网查询返回响应消息包含的目的节点的节点身份信息以对身份证明信息进行校验,并根据通过校验的响应消息生成区块链交易。
仍以图4为例,nodeA1在接收到nodeA2返回的响应消息后,也可以根据响应消息中携带的nodeA2的身份证明信息向subnet0中的A请求查询nodeA2的节点身份信息,以对nodeA2的身份证明信息进行验证。若校验通过,则表明nodeA2确实为nodeA1所接收的响应消息的可信发送方,从而nodeA1可以进一步根据接收到的响应消息进行后续处理,如生成区块链交易等(具体生成过程可参见下述实施例,此处暂不赘述)。否则,若校验未通过,则表明nodeA2不可信,此时nodeA1可以直接丢弃响应消息。当然,在验证未通过的情况下,nodeA1还可以将nodeA2记录为非法目的节点,以便在后续再次接收到nodeA2返回的响应消息的情况下,可以直接丢弃该信息,避免无效处理并加快响应速度。当然,在以单播方式发送跨链消息的情况下,若nodeA1将nodeA2记录为非法目的节点,则nodeA1可以拒绝向nodeA2发送跨链消息,甚至可以将nodeA2的非法记录同步至subnet1中的其他源节点。
在目的区块链网络为区块链子网的前述实施例中,当区块链主网中主网节点与区块链主网所管理的区块链子网中的子网节点部署于同一节点设备时,该节点设备上的主网节点和子网节点可以共享该节点设备上运行的区块链插件,此时源节点可以通过区块链插件查询目的节点的节点身份信息,如可以通过与自身所属节点设备上部署的主网节点共享的区块链插件,读取该主网节点维护的目的节点的节点身份信息。具体读取方式可参见前述实施例的相关记载。显然,在同一节点设备中部署有归属于不同区块链网络的网络节点的情况下,通过各个节点共用节点设备的区块链插件,可以实现对区块链插件的高效复用,并有效减少节点设备中需要部署的区块链插件的数量,有助于简化节点设备配置及区块链节点的部署流程,提升区块链节点的部署效率及节点设备的管理效率。实际上,部署于同一节点设备中的不同区块链节点也可以共用其他功能插件,如前述的P2P插件实例、共识插件实例和/或业务实例等,不再赘述。
在目的区块链网络为区块链子网的前述实施例中,上述区块链主网上可以部署子网管理合约,该子网管理合约用于维护基于区块链主网组建的各个区块链子网中子网节点的节点身份信息;此时,源节点可以读取子网管理合约维护的目的节点的节点身份信息。以图4为例,因为子网节点nodeA1所属的subnet1和子网节点nodeA2所属的subnet2均在subnet0的基础上建立,所以subnet0中部署的子网管理合约可以用于管理subnet1和subnet2中各个子网节点的节点身份信息,进而nodeA1可以读取子网管理合约所维护的nodeA2的节点身份信息。通过由区块链主网中部署的子网管理合约维护子网节点的节点身份信息,能够保证对于节点身份信息的高效管理。而由源节点直接读取子网管理合约所维护的目的节点的节点身份信息,使得节点身份信息的获取过程无需区块链主网中主网节点的共识等过程,有助于提升节点身份信息的获取效率。
在目的区块链网络为区块链子网的前述实施例中,任一子网节点的身份证明信息可以包含该子网节点声明的节点标识和该子网节点所属区块链子网的子网标识;此时源节点可以向区块链主网查询目的节点声明的节点标识和子网标识是否相匹配。以图4为例,在接收到nodeA2返回的响应消息后,nodeA1可以向subnet0查询nodeA2声明的节点标识和子网标识是否相匹配,进而根据查询结果进行相应的处理,如在二者相匹配的情况下,根据接收到的响应消息生成区块链交易;或者在二者不相匹配的情况下,终止直接丢弃响应消息等,不再赘述。通过该方式,能够充分利用区块链主网中维护的各个子网节点的节点身份信息对子网节点发送的响应消息进行验证,以保证后续处理的消息的合法性。
在目的区块链网络为区块链子网的前述实施例中,任一子网节点的身份证明信息也可以包含该子网节点基于自身的节点私钥生成的签名;此时,向区块链主网查询目的节点的节点身份信息以对响应消息中携带的身份证明信息进行校验,可以包括:接收到响应消息的源节点可以向区块链主网查询发送响应消息的目的节点的节点公钥,并采用该节点公钥对上述响应消息中包含的目的节点签名进行验签。以图4为例,在接收到nodeA2返回的响应消息和相应目的节点签名后,nodeA1可以向subnet0请求获取nodeA2的节点公钥并对该签名进行验签,进而根据验签结果进行相应处理:在验签通过的情况下,可以根据响应消息进行后续处理,如生成区块链交易等;而在验签失败的情况下,可以终止针对响应消息的响应,如可以直接丢弃响应消息甚至将nodeA2记录为非法节点。当然,在nodeA2记录为非法节点的情况下,nodeA1可以在后续再次生成跨链消息后,不向nodeA2发送该跨链消息(如在前述数字信封中不使用nodeA2的节点公钥加密对称密钥),从而避免无效发送。
如前所述,因为任一源节点接收到的多个响应消息都是目的节点响应于源节点发送的跨链消息生成的,所以在源区块链网络和目的区块链网络中不存在非法节点的情况下,任一源节点接收到的多个响应消息中应当包含相同的响应信息。因此,对于任一源节点接收到的多个响应消息,该源节点可以比较各个响应消息中包含的响应信息,并对包含相同响应信息的响应消息进行校验。或者,源节点还可以采用PBFT算法、HoneyBadgerBFT算法等多种容错算法对包含相同响应信息的多个响应消息进行校验,具体过程不再赘述。当然,在方案实践中,上述节点总量及接收到的跨链消息的消息数量也可以为其他数值,本说明书并不对此进行限制。其中,通过上述校验的(包含相同消息内容的)响应消息才会被用于后续处理过程,如被用于生成区块链交易。
如前所述,目的区块链网络中的各个目的节点均会向源区块链网络返回包含相同请求标识的响应消息,以便各源节点分别获取到响应消息。因为各目的节点分别根据包含相同消息内容的跨链消息生成响应消息,或者分别在执行包含相同消息内容的区块链交易后生成响应消息,所以各源节点接收到的各响应消息包含相同的响应信息,进而各目的节点需要分别响应任一响应消息。
以响应响应消息的过程包括根据响应消息生成并执行区块链交易(显然,源节点生成的区块链交易不同于前述实施例所述的源节点生成的区块链交易)为例进行说明。为保证各源节点所执行区块链交易的可靠性,可以通过多种方式对目的节点返回的响应消息进行处理。一种方式是“分散验证、分别提议”,即由各源节点分别对自身接收到的各个响应消息进行拜占庭容错校验,并分别根据通过验证的响应消息生成区块链交易;另一种方式是“分散验证、集中提议”,即由各源节点分别对接收到的任一响应消息进行验证并添加自身生成的源节点签名,然后由任一源节点在确定任一响应消息的源节点签名数量能够通过拜占庭容错校验的情况下,根据该响应消息生成区块链交易。下面对两种方式分别进行说明:
(1)分散验证、分散提议
首先需要说明的是,本实施例中提及的任一源节点获取到的多个响应消息,均包含相同的请求标识。在本实施例中,源节点可以在获取到任一响应消息后,可以先验证该响应消息是否合法,进而确定验证合法的响应消息且包含相同响应信息的响应消息消息数量,并在该消息数量与目的区块链网络中目的节点的节点总量使得响应消息能够通过拜占庭容错校验的情况下,使用这部分通过拜占庭容错校验的响应消息生成区块链交易并提交至源区块链网络进行共识。
在一实施例中,D1可以先分别验证其获取到的各响应消息是否合法。例如对于任一响应消息,在该响应消息中包含生成该响应消息的目的节点(即该响应消息的生成方)的签名的情况下,源节点可以获取该目的节点的节点公钥,并使用该节点公钥对上述验签:若验签通过,则表明该响应消息合法;否则表明该响应消息不合法,此时可以直接丢弃该响应消息。其中,在目的区块链网络为区块链主网所管理的区块链子网的情况下,该区块链主网可以维护基于该区块链主网创建的各个区块链子网的子网节点的IP地址、端口、节点公钥、节点标识等信息,因此源节点可以向区块链主网查询目的节点的节点公钥,具体过程可参见前述实施例的记载,此处不再赘述。或者,在响应消息中包含目的区块链网络的子网标识以及目的节点的节点标识的情况下,源节点也可以向区块链主网查询该子网标识下是否存在该节点标识:若存在,则则表明该响应消息及目的节点合法;否则表明该响应消息或目的节点不合法,此时可以直接丢弃该响应消息。
如前所述,在源区块链网络和目的区块链网络不存在作恶节点的正常情况下,包含相同请求标识的全部响应消息应当包含相同的响应信息,因此任一源节点可以比较其获取到的多个合法响应消息中包含的响应信息是否相同。显然,若多个合法响应消息包含的响应信息相同,则表明各个响应消息中的响应信息未遭到篡改;否则,表明与其他响应消息(通常为其他的多数)中的响应信息不同的响应消息可能遭到篡改,此时可以直接丢弃该响应消息。
在上述校验均通过的情况下,源节点可以进一步对包含响应信息相同的合法响应消息进行拜占庭容错校验。例如,可以根据自身获取到的跨链消息的消息数量和目的区块链网络中的目的节点的节点总量对自身获取到的包含响应信息相同的合法响应消息进行容错校验。其中,在目的区块链网络为区块链主网所管理的区块链子网的情况下,上述区块链主网可以维护有目的区块链网络中的目的节点的节点总量,因此上述源节点可以向区块链主网查询目的区块链网络中目的节点的节点总量。此时,能够充分利用区块链主网所维护的区块链子网的子网信息,有助于提升交互效率。另外,源节点在向区块链主网查询到目的节点的相关信息后,可以将其保存在本地,以避免后续处理过程中的重复查询,进一步提升交互效率。当然,为保证上述相关信息的时效性,也可以为本地保存的相关信息设置有效时长,以及时更新相关信息。
仍以图4为例对上述过程进行说明。假设源节点nodeA1接收到由目的节点nodeA2、nodeB2、nodeC2和nodeE2分别返回的响应消息,则nodeA1可以分别根据各个响应消息携带的目的节点签名等信息对各响应消息进行验证,以确定各响应消息是否合法;其次,可以进一步比较各合法响应消息所包含的响应信息是否相同,以找出包含相同响应信息的合法响应消息;然后,可以根据合法响应消息的消息数量和从主网节点查询到的目的区块链网络的节点总量对包含相同响应信息的合法响应消息进行拜占庭容错校验。其中,因为目的区块链网络包括目的节点nodeA2、nodeB2、nodeC2和nodeE2,所以节点总量3f+1=4(即f=1),因此临界数量f+1=2——表明若nodeA1接收到2个包含相同响应信息的合法响应消息,则这2个合法响应消息通过拜占庭容错校验。
在上述拜占庭容错校验校验通过的情况下,源节点可以使用通过校验的响应消息生成区块链交易。例如,不妨假设上述包含相同响应信息的合法响应消息的节点数量为3,则因为这3个响应消息包含相同的响应信息,所以源节点可以生成包含该响应信息的区块链交易,并将该区块链交易提交至目的区块链网络进行共识。可见,通过拜占庭容错校验的(包含相同待处理数据的)响应消息才会被用于生成区块链交易。
显然,上述任一源节点生成的区块链交易需要广播至其他源节点,而其他源节点生成的区块链交易也会广播至该源节点,任一源节点可以使用响应信息或者响应信息的哈希对其接收到的其他源节点生成的区块链交易进行验证。
例如,任一源节点可以比较自身获取到的响应消息中包含的第一响应信息和自身接收到的区块链交易中包含的第二响应信息,对该区块链交易进行校验:在第一响应信息与第二响应信息相同的情况下,可以确定上述区块链交易通过验证;否则,在第一响应信息与第二响应信息不相同的情况下,则确定上述区块链交易未通过验证。或者,为提升对其他源节点生成的区块链交易的验证效率,任一源节点生成的区块链交易中还可以携带响应信息的哈希,从而该源节点可以将该哈希作为第二哈希,并将自身接收到的响应消息中携带的响应信息的哈希作为第一哈希。进而可以通过比较上述第一哈希和第二哈希是否相同,实现对其他源节点广播的上述区块链交易的校验:在第一哈希与第二哈希相同的情况下,可以确定上述区块链交易通过验证;否则,在第一哈希与第二哈希不相同的情况下,则确定上述区块链交易未通过验证。通常情况下响应信息的数据量都远大于哈希的数据量,因此通过比较哈希可以有效提升验证效率。
可见,若将生成区块链交易并发起共识的过程视为是针对响应消息的“提议”过程,则在该实施例中,源区块链网络中的各源节点分别对自身获取到的响应消息进行验证(即分散验证),并由验证通过的各源节点分别使用通过验证的响应消息生成区块链交易并发起共识(即分散提议)。显然,该方式能够有尽可能多的源节点都发起对应于同一请求标识的区块链交易,充分保证了各源节点能够执行区块链交易,从而完成对自身发送的跨链消息(即自身发起的跨链请求)的响应闭环。
(2)分散验证、集中提议
首先需要说明的是,本实施例中提及的任一源节点获取到的多个响应消息,均包含相同的请求标识。任一源节点在获取到各目的节点分别返回的响应消息后,可以对自身获取到的响应消息进行校验,并在通过校验的情况下根据自身获取到的响应消息构造包括响应消息的消息内容和自身生成的源节点签名的重构消息(显然,该方案中的重构消息与前述实施例中目的节点根据跨链消息生成的重构消息并不相同),进而可以向源区块链网络中的其他源节点广播该重构消息。可以理解的是,源区块链网络中的各个源节点都会分别执行上述操作,从而任一源节点在接收到其他源节点广播的任一重构消息后可以对该重构消息进行验证,并在验证通过的情况下为该重构消息添加自身生成的源节点签名,并继续将该重构消息向源区块链网络中的其他源节点广播。直至任一源节点在根据接收到的重构消息中包含的源节点签名的签名数量,以及源区块链网络包含的源节点总量,确定接收到的重构消息通过拜占庭容错校验的情况下,由该源节点根据接收到的重构消息生成区块链交易并提交至源区块链网络进行共识。
重构消息中包含构建重构消息所使用响应消息中包含的响应信息以及构建重构消息的源节点(即该重构消息的构建方)生成的源节点签名。可以理解的是,对于任一重构消息,上述“接收其他节点广播的重构消息——对重构消息验证通过后添加自身生成的源节点签名——继续广播添加自身生成的源节点签名后的重构消息”的处理过程,可以由源区块链网络中的多个源节点依次进行;而在任一源节点发现其接收到的任一重构消息中已经包含自身生成的源节点签名的情况下,即表明自身已经对该重构消息进行过上述处理,从而可以直接丢弃该重构消息。
其中,任一源节点对任一重构消息的验证过程可以包括对该重构消息中包含的源节点签名的验证过程;当然,若该重构消息中还包含目的节点对该重构消息中的响应信息对应的响应消息进行的目的节点签名,则对任一重构消息的验证过程还可以包括对该目的节点签名的验证过程,下面分别进行说明。
在一实施例中,源区块链网络中的各源节点可以采用其他源节点的节点公钥对其接收到的重构消息进行验证。例如,各源节点可以分别通过自身维护的其他源节点的节点公钥对接收到的重构消息中包含的源节点签名进行验证。以图4为例,可以理解的是,源区块链网络中的任一源节点本地均维护有其他源节点的节点公钥,相应的,其他各个源节点本地也维护有该源节点的节点公钥。如nodeA1将利用自身的节点公钥生成的源节点签名添加至重构消息并广播后,接收到该重构消息的其他源节点(nodeB1、nodeC1和nodeD1)可以分别利用本地维护的nodeA1的节点公钥对该重构消息中包含的nodeA1添加的源节点签名进行验证(即验签)。类似的,在nodeB1对该重构消息验证通过的情况下,可以将利用自身的节点公钥生成的源节点签名添加至重构消息,若判断当前的签名数量无法通过拜占庭容错校验则继续广播,从而nodeC1和nodeD1在接收到该重构消息后可以根据本地维护的nodeA1和nodeB1的节点公钥分别对nodeA1和nodeB1添加的源节点签名进行验签,在验签通过的情况下添加自身生成的源节点签名,并进一步判断当前重构消息是否能够通过拜占庭容错校验:若通过,则可以根据该重构消息生成区块链交易;否则,若不通过,则可以继续广播该重构消息。当然,在上述nodeA1接收到nodeB1广播的重构消息后,可以确定出其中包含自身添加的源节点签名,因而可以直接丢弃该重构消息。
在另一实施例中,上述目的区块链网络可以为区块链主网所管理的区块链子网,该区块链主网可以维护有目的区块链网络中各目的节点的节点公钥,上述重构消息除包含上述响应信息和源节点签名外,还包括构造该重构消息的源节点接收到的各响应消息中分别携带的目的节点签名(即该重构消息中包含的响应信息对应的各个响应消息携带的目的节点签名)因此,各源节点可以对自身接收到的重构消息进行进一步验证。例如,各源节点可以分别向区块链主网查询自身接收到的重构消息所指示的目的节点的节点公钥,并通过查询到的节点公钥对自身接收到的重构消息中包含的目的节点签名进行验证。节点公钥的具体获取方式及验证方式可以参见前述实施例的详细记载,此处不再赘述。在该实施例中,源节点在接收到重构消息之后,除了对重构消息中包含的源节点添加的源节点签名进行验证外,还通过从区块链主网获取的相应目的节点的节点公钥对重构消息中包含的目的节点签名进行验证,从而实现对重构消息的双重验证,进一步保证了用于生成区块链交易的重构消息的可靠性,避免了源区块链网络内部的非法节点对重构响应信息甚至签名造假可能导致的交易执行结果不一致。
可见,任一重构消息在源区块链网络中每广播一次,就会被添加一个新的源节点签名,所以接收到该重构消息的各个源节点均可以对该重构消息进行拜占庭容错校验,如可以根据接收到的重构消息中包含的源节点签名的签名数量,以及源区块链网络包含的源节点总量对该重构消息进行拜占庭容错校验,任一源节点可以在对任一重构消息校验通过的情况下,根据该重构消息生成区块链交易并提交至源区块链网络进行共识。例如,以图4为例,源节点nodeC1可以先确定其所在subnet1的节点总量(3f+1),进而可以在接收到其他源节点广播的任一重构消息后即对该重构消息进行验证,并在验证通过后为该重构消息添加自身生成的源节点签名,进而判断当前重构消息中所包含源节点签名的签名数量是否满足(不小于)上述节点总量对应的第一临界值f+1,并在满足(即该重构消息已经被f+1个目的节点所认可)的情况下基于该重构消息生成区块链交易。或者,为进一步加快处理速度,源节点nodeC1也可以在接收到其他源节点广播的任一重构消息后即确定该重构消息中包含的源节点签名的签名数量,并判断该签名数量是否满足(不小于)上述节点总量对应的第二临界值f,若满足,则该源节点可以在对该重构消息验证通过的情况下(此时对该重构消息验证通过的源节点数量满足f+1),基于该重构消息生成区块链交易。在该方式下,nodeC1在判断重构消息满足预设条件的情况下,可以不必为该重构消息添加自身生成的源节点签名,有助于进一步加快处理速度。
其中,在目的区块链网络为区块链主网所管理的区块链子网的情况下,该区块链主网可以维护有目的区块链网络中的目的节点的节点总量,因此各源节点可以分别向区块链主网查询目的区块链网络中目的节点的节点总量,并根据该节点总量进行上述拜占庭容错校验。另外,在本说明书中所提及的区块链主网和区块链子网的实施例中,区块链子网在向区块链主网查询相应的信息后,可以将该信息保存在本地,以避免后续处理过程中的重复查询,进一步提升交互效率。当然,为保证上述信息的时效性,也可以为本地保存的信息设置有效时长,以及时更新上述信息。可以理解的是,只有通过源区块链网络中某一源节点进行拜占庭容错校验的重构消息,才会被用于生成区块链交易。
至此,对目的节点返回的响应消息进行处理的两种方式即介绍完毕。其中,对于生成的任一区块链交易,可以采用工作量证明、股权证明、委任权益证明、实用拜占庭容错算法,HoneyBadgerBFT算法等进行共识,具体过程不再赘述。
因为各源节点分别根据自身获取到的响应消息生成区块链交易,或者分别根据自身获取到的通过验证的响应消息构建重构消息,并在重构消息通过拜占庭容错校验的情况下根据重构消息生成区块链交易,所以源区块链网络中可能存在上述跨链请求对应的多个区块链交易通过共识,但是为保证区块链交易执行结果的一致性,需要各源节点执行通过共识的同一区块链交易,从而实现相同的业务效果。为保证源区块链网络中的各个源节点分别执行通过共识的同一区块链交易,可以由各源节点分别执行源区块链网络中通过共识的首个区块链交易。或者,也可以执行通过共识的区块链交易中首最先被生成的区块链交易,例如,各个源节点可以根据区块链交易所携带的时间戳保证被执行的区块链交易为最先被生成的区块链交易。而任一源节点在执行上述区块链交易后,可以终止针对其他区块链交易的处理过程。例如,任一区块链交易中均携带请求标识,则该源节点在接收到携带与已执行的区块链交易相同请求标识的新的区块链交易的情况下,可以不执行新的区块链交易(即不执行与具体业务相关的合约代码)。当然,该源节点也可能在短时间内接收到多个携带相同请求标识的区块链交易,并按照接收各交易的时间顺序依次对各交易进行校验、执行等处理,因此各区块链交易的处理进度可能有所不同,进而在执行完首个区块链交易后,该源节点可以立即终止针对其他区块链交易的执行过程,以保证仅有首个区块链交易被顺利执行,从而与其他源节点保持一致的交易执行结果,并减少无效处理带来的算力损耗。
如前所述,源节点响应于响应消息生成的区块链交易中可以包含该响应消息携带的请求标识,从而实现跨链消息、响应消息与区块链交易之间的相互关联。源区块链网络可以维护请求标识集合(显然,源节点维护的请求标识集合与前述实施例所述的目的节点维护的请求标识集合并不相同),该集合用于记录当前时刻源区块链网络中尚未被响应的跨链消息(即对应的区块链交易尚未被执行完毕的跨链消息)中携带的请求标识。从而,任一源节点在确定某一区块链交易通过共识之后,可以提取该消息中包含的目标请求标识,并在本地维护的请求标识集合中查询该目标请求标识,并在查询结果表明请求标识集合中记录有目标请求标识的情况下,执行该区块链交易。可以理解的是,上述请求标识集合中包含目标请求标识,则表明该目标请求标识对应的若干区块链交易(由若干源节点分别生成的)均未被执行完毕,因此该源节点只需要执行该区块链交易即可实现对跨链消息的响应。当然,在任一源节点执行上述区块链交易完成后,可以将目标请求标识从请求标识集合中删除,以保证不会重复执行目标请求标识对应的其他区块链交易。
在一实施例中,跨链消息可以由源节点调用部署于源区块链网络的智能合约创建;相应的,源节点可以响应于上述响应消息调用智能合约任务回调方法,以将响应信息返回至上述智能合约。进一步的,因为请求标识集合中记录的是尚未执行完毕的区块链交易包含的请求标识,所以为避免对获取到的跨链消息的无效响应以及对获取到的重构消息的无效处理,任一目标节点可以在获取到任一跨链消息或任一重构消息后,即查询请求标识集合中是否记录有该跨链消息或该重构消息包含的请求标识。进而,可以在确定请求标识集合中未记录任一响应消息包含的请求标识的情况下,终止针对该响应消息的响应过程;或者,也可以在确定请求标识集合中未记录任一重构消息包含的请求标识的情况下,终止针对该重构消息的处理过程。
通过上述实施例,一方面,通过多个源节点对响应消息(或重构消息)的多次验证及签名,保证了用于生成区块链交易的响应消息(或重构消息)得到足够多的源节点的共同认可;另一方面,通过各个源节点分别执行同一区块链交易,有效保证了各个源节点对于自身生成的跨链消息的响应结果一致性。
图7是一示例性实施例提供的一种设备的结构示意图。请参考图7,在硬件层面,该设备包括处理器702、内部总线704、网络接口706、内存708以及非易失性存储器710,当然还可能包括其他业务所需要的硬件。本说明书一个或多个实施例可以基于软件方式来实现,比如由处理器702从非易失性存储器710中读取对应的计算机程序到内存708中然后运行。当然,除了软件实现方式之外,本说明书一个或多个实施例并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
图8是一示例性实施例提供的一种跨链交互装置的框图。请参考图8,该装置可以应用于如图7所示的设备中,以实现本说明书的技术方案。其中,该跨链交互装置可以包括:
消息接收单元801,使目的区块链网络中的各目的节点分别获取源区块链网络中的至少一个源节点向目的区块链网络发送的跨链消息;
交易共识单元802,使各目的节点分别根据自身获取到的跨链消息生成区块链交易,并分别将生成的区块链交易提交至所述目的区块链网络;
交易执行单元803,使各目的节点分别执行通过共识的多条区块链交易中的同一区块链交易。
可选的,还包括:
消息加密单元804,使所述源节点采用自身节点私钥对待传输的区块链消息进行签名、采用对称密钥对待传输的消息内容和所述区块链消息的签名加密、采用各目的节点的节点公钥分别对所述对称密钥加密,并将加密后的所述签名、加密后的所述消息内容和加密后的各对称密钥均添加至所述跨链消息中;
消息解密单元805,使各目的节点分别通过自身的节点私钥对所述跨链消息中采用自身节点公钥加密的对称密钥进行解密、通过解密得到的对称密钥对加密后的消息内容和所述签名进行解密,并在通过源节点的节点公钥对所述签名验签通过的情况下,以获取所述消息内容用于生成所述区块链交易。
可选的,所述源区块链网络为区块链主网所管理的区块链子网,所述区块链主网维护有所述源区块链网络中各源节点的节点身份信息,所述跨链消息包含用于表征发送所述跨链消息的源节点的节点身份的身份证明信息;所述装置还包括:
目的节点校验单元806,使各目的节点分别向所述区块链主网查询发送所述跨链消息的源节点的节点身份信息以对所述身份证明信息进行校验,并在校验通过的情况下对所述跨链消息进行响应。
可选的,所述目的区块链网络为区块链主网所管理的区块链子网,当所述区块链主网中主网节点与所述区块链主网所管理的区块链子网中的子网节点部署于同一节点设备时,该节点设备上的主网节点和子网节点共享该节点设备上运行的区块链插件;所述目的节点校验单元806还用于:
使各目的节点分别通过与自身所属节点设备上部署的主网节点共享的区块链插件,读取该主网节点维护的发送所述跨链消息的源节点的节点身份信息。
可选的,所述区块链主网上部署有子网管理合约,所述子网管理合约用于维护基于所述区块链主网组建的各个区块链子网中子网节点的节点身份信息;所述目的节点校验单元806还用于:
使各目的节点分别读取所述子网管理合约维护的发送所述跨链消息的源节点的节点身份信息。
可选的,任一源节点的身份证明信息包含所述任一源节点声明的节点标识和所述任一源节点所属区块链子网的子网标识;所述目的节点校验单元806还用于:
使各目的节点分别向所述区块链主网查询发送所述跨链消息的源节点声明的节点标识和子网标识是否相匹配。
可选的,任一源节点的身份证明信息包含所述任一源节点基于自身的节点私钥生成的签名;所述目的节点校验单元806还用于:
使各目的节点分别向所述区块链主网查询发送所述跨链消息的源节点的节点公钥,并采用所述节点公钥对所述签名进行验签。
可选的,还包括:
消息校验单元807,使各目的节点分别根据自身获取到的跨链消息的消息数量和所述源区块链网络中的源节点的节点总量对自身获取到的跨链消息进行拜占庭容错校验,并根据通过校验的跨链消息生成所述区块链交易。
可选的,所述源区块链网络为区块链主网所管理的区块链子网,所述区块链主网维护有所述源区块链网络中的源节点的节点总量,所述装置还包括:
总量查询单元808,使各目的节点分别向所述区块链主网查询所述节点总量。
可选的,所述消息校验单元807还用于:
使各目的节点分别根据自身获取到的包含相同消息内容的跨链消息的消息数量和所述源区块链网络中的源节点的节点总量对自身获取到的跨链消息进行拜占庭容错校验。
可选的,所述区块链交易中包含待处理数据,所述装置还包括:
交易校验单元809,使各目的节点根据自身获取到的跨链消息中包含的第一待处理数据和其他目的节点提交的区块链交易中包含的第二待处理数据,或者根据自身按照获取到的跨链消息中包含的第一待处理数据计算得到的第一哈希和其他源节点提交的区块链交易中包含的第二待处理数据的第二哈希,对其他源节点提交的区块链交易进行校验,并对校验通过的区块链交易进行共识。
可选的,所述目的区块链网络维护有请求标识集合,任一目的节点接收到的跨链消息和根据接收到的跨链消息生成的区块链交易包含同一请求标识,
所述交易执行单元803还用于:使任一目的节点在确定所述请求标识集合中未记录所述区块链交易包含的目标请求标识的情况下,执行所述区块链交易;
所述装置还包括标识添加单元810,使所述任一目的节点在执行所述区块链交易成功后,将所述目标请求标识添加至所述请求标识集合。
可选的,所述装置还包括:
响应终止单元811,使各目的节点在确定所述请求标识集合中记录有任一跨链消息包含的请求标识的情况下,终止针对所述任一跨链消息的响应过程。
可选的,所述源区块链网络和所述目的区块链网络中部署有同一智能合约,所述跨链消息的消息内容包含待处理数据,所述装置还包括:
合约调用单元812,使所述源节点调用本地部署的所述智能合约以创建所述跨链消息;
合约回调单元813,使所述目的节点响应于所述跨链消息调用所述智能合约任务回调方法,以将所述待处理数据返回至本地部署的所述智能合约。
可选的,所述目的节点本地部署的所述智能合约用于使用所述待处理数据更新本地数据。
可选的,各源节点分别执行的所述区块链交易为:
通过共识的首个区块链交易;或者,
通过共识的区块链交易中最先被生成的区块链交易。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
在一个典型的配置中,计算机包括一个或多个处理器 (CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器 (RAM) 和/或非易失性内存等形式,如只读存储器 (ROM) 或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存 (PRAM)、静态随机存取存储器 (SRAM)、动态随机存取存储器 (DRAM)、其他类型的随机存取存储器 (RAM)、只读存储器 (ROM)、电可擦除可编程只读存储器 (EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘 (DVD) 或其他光学存储、磁盒式磁带、磁盘存储、量子存储器、基于石墨烯的存储介质或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
在本说明书一个或多个实施例使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本说明书一个或多个实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
以上所述仅为本说明书一个或多个实施例的较佳实施例而已,并不用以限制本说明书一个或多个实施例,凡在本说明书一个或多个实施例的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书一个或多个实施例保护的范围之内。

Claims (19)

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

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202111406523.2A CN113923228A (zh) 2021-06-02 2021-06-02 跨链交互方法及装置
CN202110611518.9A CN113259454B (zh) 2021-06-02 2021-06-02 跨链交互方法及装置

Applications Claiming Priority (1)

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

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN202111406523.2A Division CN113923228A (zh) 2021-06-02 2021-06-02 跨链交互方法及装置

Publications (2)

Publication Number Publication Date
CN113259454A true CN113259454A (zh) 2021-08-13
CN113259454B CN113259454B (zh) 2021-10-15

Family

ID=77185843

Family Applications (2)

Application Number Title Priority Date Filing Date
CN202111406523.2A Pending CN113923228A (zh) 2021-06-02 2021-06-02 跨链交互方法及装置
CN202110611518.9A Active CN113259454B (zh) 2021-06-02 2021-06-02 跨链交互方法及装置

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN202111406523.2A Pending CN113923228A (zh) 2021-06-02 2021-06-02 跨链交互方法及装置

Country Status (1)

Country Link
CN (2) CN113923228A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113746824A (zh) * 2021-08-26 2021-12-03 浙商银行股份有限公司 基于区块链跨链的隐私数据共享方法、设备及存储介质
CN113923228A (zh) * 2021-06-02 2022-01-11 支付宝(杭州)信息技术有限公司 跨链交互方法及装置

Citations (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107301536A (zh) * 2017-06-12 2017-10-27 腾讯科技(深圳)有限公司 资源转移方法及装置
CN109286685A (zh) * 2018-11-21 2019-01-29 北京蓝石环球区块链科技有限公司 可拓展子链的主链加并行多子链的系统架构
CN109587131A (zh) * 2018-11-29 2019-04-05 浙江超脑时空科技有限公司 一种区块链网络间数据通信方法和装置
CN110019103A (zh) * 2018-10-16 2019-07-16 陕西医链区块链集团有限公司 一种基于区块链的跨链系统和跨链实现方法
CN110288345A (zh) * 2019-06-26 2019-09-27 深圳市网心科技有限公司 跨链通信方法、装置、主链节点及存储介质
CN110716983A (zh) * 2019-09-26 2020-01-21 联想(北京)有限公司 一种信息处理方法和区块链网络服务平台
US20200175003A1 (en) * 2017-08-29 2020-06-04 Huawei Technologies Co., Ltd. Cross-Chain Transaction Method and Apparatus
US20200177388A1 (en) * 2019-06-28 2020-06-04 Alibaba Group Holding Limited Cross-blockchain resource transmission
CN111464518A (zh) * 2020-03-25 2020-07-28 北京创世智链信息技术研究院 一种跨链通信数据的发送、验证方法及装置
CN111681003A (zh) * 2020-07-07 2020-09-18 腾讯科技(深圳)有限公司 资源跨链转移方法、装置、计算机设备以及存储介质
CN112418860A (zh) * 2020-12-07 2021-02-26 苏州科技大学 一种基于跨链技术的区块链高效管理架构及工作方法
CN112686668A (zh) * 2020-12-29 2021-04-20 东软集团股份有限公司 联盟链跨链系统及方法
CN112804360A (zh) * 2021-03-30 2021-05-14 支付宝(杭州)信息技术有限公司 提供跨链隐私数据的方法和装置
CN112861190A (zh) * 2021-04-23 2021-05-28 腾讯科技(深圳)有限公司 数据跨链协同方法、系统及装置

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110059495B (zh) * 2018-12-14 2020-11-17 创新先进技术有限公司 数据共享方法、装置及系统、电子设备
CN110443704B (zh) * 2019-06-28 2021-02-19 创新先进技术有限公司 一种跨链发送资源的方法和装置
CN110650189B (zh) * 2019-09-20 2022-01-18 深圳供电局有限公司 一种基于中继的区块链的交互系统及方法
CN111612619A (zh) * 2020-04-29 2020-09-01 南京邮电大学 一种基于区块链的仓储共享平台及仓储交易方法
CN112688934B (zh) * 2020-12-21 2022-07-19 杭州云象网络技术有限公司 一种基于智能网关和合约引擎的合约调用方法及系统
CN112669038B (zh) * 2020-12-28 2024-03-15 杭州趣链科技有限公司 账户查询系统、跨链网关
CN113923228A (zh) * 2021-06-02 2022-01-11 支付宝(杭州)信息技术有限公司 跨链交互方法及装置

Patent Citations (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107301536A (zh) * 2017-06-12 2017-10-27 腾讯科技(深圳)有限公司 资源转移方法及装置
US20200175003A1 (en) * 2017-08-29 2020-06-04 Huawei Technologies Co., Ltd. Cross-Chain Transaction Method and Apparatus
CN110019103A (zh) * 2018-10-16 2019-07-16 陕西医链区块链集团有限公司 一种基于区块链的跨链系统和跨链实现方法
CN109286685A (zh) * 2018-11-21 2019-01-29 北京蓝石环球区块链科技有限公司 可拓展子链的主链加并行多子链的系统架构
CN109587131A (zh) * 2018-11-29 2019-04-05 浙江超脑时空科技有限公司 一种区块链网络间数据通信方法和装置
CN110288345A (zh) * 2019-06-26 2019-09-27 深圳市网心科技有限公司 跨链通信方法、装置、主链节点及存储介质
US20200177388A1 (en) * 2019-06-28 2020-06-04 Alibaba Group Holding Limited Cross-blockchain resource transmission
CN110716983A (zh) * 2019-09-26 2020-01-21 联想(北京)有限公司 一种信息处理方法和区块链网络服务平台
CN111464518A (zh) * 2020-03-25 2020-07-28 北京创世智链信息技术研究院 一种跨链通信数据的发送、验证方法及装置
CN111681003A (zh) * 2020-07-07 2020-09-18 腾讯科技(深圳)有限公司 资源跨链转移方法、装置、计算机设备以及存储介质
CN112418860A (zh) * 2020-12-07 2021-02-26 苏州科技大学 一种基于跨链技术的区块链高效管理架构及工作方法
CN112686668A (zh) * 2020-12-29 2021-04-20 东软集团股份有限公司 联盟链跨链系统及方法
CN112804360A (zh) * 2021-03-30 2021-05-14 支付宝(杭州)信息技术有限公司 提供跨链隐私数据的方法和装置
CN112861190A (zh) * 2021-04-23 2021-05-28 腾讯科技(深圳)有限公司 数据跨链协同方法、系统及装置

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113923228A (zh) * 2021-06-02 2022-01-11 支付宝(杭州)信息技术有限公司 跨链交互方法及装置
CN113746824A (zh) * 2021-08-26 2021-12-03 浙商银行股份有限公司 基于区块链跨链的隐私数据共享方法、设备及存储介质
CN113746824B (zh) * 2021-08-26 2023-09-12 浙商银行股份有限公司 基于区块链跨链的隐私数据共享方法、设备及存储介质

Also Published As

Publication number Publication date
CN113923228A (zh) 2022-01-11
CN113259454B (zh) 2021-10-15

Similar Documents

Publication Publication Date Title
CN113259460B (zh) 跨链交互方法及装置
CN113259456B (zh) 跨链交互方法及装置
CN113259455B (zh) 跨子网交互方法及装置
CN113259453B (zh) 跨链交互方法及装置
CN113067904B (zh) 组建区块链子网的方法和区块链系统
CN113067902B (zh) 区块链消息的传输方法及装置
CN113067897B (zh) 跨链交互方法及装置
CN113098982B (zh) 区块链消息的传输方法及装置
CN113259454B (zh) 跨链交互方法及装置
WO2023124746A1 (zh) 跨子网交互的权限控制
CN113259461B (zh) 跨链交互方法和区块链系统
CN115134075A (zh) 跨子网调用方法、装置、电子设备和存储介质
CN113259457B (zh) 区块链子网的信息同步方法及装置
CN113259464B (zh) 组建区块链子网的方法和区块链系统
CN114363162A (zh) 区块链日志的生成方法及装置、电子设备、存储介质
CN113067896B (zh) 区块链子网中加入节点的方法和区块链系统
CN113326290B (zh) 跨网查询控制方法
CN113067838B (zh) 跨链交互方法及装置
CN113259463B (zh) 跨链交互方法和区块链系统
CN113259459B (zh) 区块链子网运行状态的控制方法和区块链系统
CN113067903B (zh) 组建区块链子网的方法和区块链系统
CN113259466B (zh) 区块链子网运行状态的控制方法和区块链系统
CN114363349B (zh) 区块链子网的启动方法及装置
CN116743765A (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