CN114217911A - 一种跨链事务处理方法、装置、计算设备和介质 - Google Patents
一种跨链事务处理方法、装置、计算设备和介质 Download PDFInfo
- Publication number
- CN114217911A CN114217911A CN202111590196.0A CN202111590196A CN114217911A CN 114217911 A CN114217911 A CN 114217911A CN 202111590196 A CN202111590196 A CN 202111590196A CN 114217911 A CN114217911 A CN 114217911A
- Authority
- CN
- China
- Prior art keywords
- chain
- cross
- transaction
- source
- destination
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/466—Transaction processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2358—Change logging, detection, and notification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION 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/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/04—Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Business, Economics & Management (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- Finance (AREA)
- Accounting & Taxation (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Development Economics (AREA)
- Economics (AREA)
- Marketing (AREA)
- Strategic Management (AREA)
- Technology Law (AREA)
- General Business, Economics & Management (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请实施例适用于区块链技术领域,提供了一种跨链事务处理方法、装置、计算设备和介质,该方法包括:来源链和目的链需要在中继链中进行注册;当中继链接收到来源链发起的第一跨链交易时,可以初始化第一跨链交易的事务状态表,第一跨链交易包含对应的跨链事务;中继链可以确定第一跨链交易的目的链;若目的链在中继链中注册过,则中继链可以根据第一跨链交易和事务状态表构建并向目的链发送第二跨链交易;当中继链接收到目的链根据第二跨链交易返回的执行结果时,可以将执行结果返回至来源链,来源链可以根据执行结果更新跨链事务。通过上述方法,能够保障跨链事务执行过程中的原子性,并简化跨链流程。
Description
技术领域
本申请属于区块链技术领域,特别是涉及一种跨链事务处理方法、装置、计算设备和介质。
背景技术
跨链是在不同区块链之间实现可信互操作。跨链事务的原子性是指跨链交易的来源链与目的链要么都执行成功,要么都执行失败,如执行失败还需要恢复到未执行的状态。
现有的跨链事务处理机制大致分为两种:哈希时间锁定机制(Hash Time LockedContract,简称HTLC)、基于中继链的二阶段机制。哈希时间锁定机制是一种去中心化、无需受信任的第三方中介的跨链原子交换协议。但是哈希锁定机制的应用场景十分受限,仅用作资产交换,并且有着严格的时间时钟上限。如果一方因为网络、设备等问题,无法在时钟上限内处理跨链事务,无法完全保证跨链交易事务的原子性。基于中继链的二阶段机制需要提前冻结来源链与目的链的相关资产,根据中继链返回的事务处理结果执行或回滚。但这种方式需要在目的链执行两次交易上链。
发明内容
有鉴于此,本申请实施例提供了一种跨链事务处理方法、装置、计算设备和介质,用以跨链事务处理过程中的原子性,并简化了目的链的跨链流程。
本申请实施例的第一方面提供了一种跨链事务处理方法,应用于中继链,所述方法包括:
当接收到来源链发起的第一跨链交易时,初始化所述第一跨链交易的事务状态表,所述第一跨链交易具有对应的跨链事务;
对所述第一跨链交易进行解析,确定所述第一跨链交易的目的链;
若所述来源链与所述目的链在所述中继链中注册过,则根据所述第一跨链交易和所述事务状态表构建第二跨链交易;
将所述第二跨链交易发送至所述目的链;
接收所述目的链根据所述第二跨链交易返回的第三跨链交易,所述第三跨链交易包括所述目的链对所述跨链事务的执行结果;
根据所述执行结果更新所述事务状态表;
根据所述第三跨链交易和更新后的所述事务状态表构建第四跨链交易,所述第四跨链交易中包括所述执行结果和所述跨链事务的事务状态;
将所述第四跨链交易返回至所述来源链,以供所述来源链根据所述执行结果和所述事务状态处理所述跨链事务。
本申请实施例的第二方面提供了一种跨链事务处理装置,应用于中继链,所述装置包括:
事务状态表初始化模块,用于当接收到来源链发起的第一跨链交易时,初始化所述第一跨链交易的事务状态表,所述第一跨链交易具有对应的跨链事务;
目的链确定模块,用于对所述第一跨链交易进行解析,确定所述第一跨链交易的目的链;
第二跨链交易构建模块,用于若所述来源链和所述目的链在所述中继链中注册过,则根据所述第一跨链交易和所述事务状态表构建第二跨链交易;
第二跨链交易发送模块,用于将所述第二跨链交易发送至所述目的链;
第三跨链交易接收模块,用于接收所述目的链根据所述第二跨链交易返回的第三跨链交易,所述第三跨链交易包括所述目的链对所述跨链事务的执行结果;
事务状态表更新模块,用于根据所述执行结果更新所述事务状态表;
第四跨链交易构建模块,用于根据所述第三跨链交易和更新后的所述事务状态表构建第四跨链交易,所述第四跨链交易中包括所述执行结果和所述跨链事务的事务状态;
第四跨链交易发送模块,用于将所述第四跨链交易返回至所述来源链,以供所述来源链根据所述执行结果和所述事务状态处理所述跨链事务。
本申请实施例的第三方面提供了一种计算设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上述第一方面所述的方法。
本申请实施例的第四方面提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如上述第一方面所述的方法。
本申请实施例的第五方面提供了一种计算机程序产品,当所述计算机程序产品在计算设备上运行时,使得所述计算设备执行上述第一方面所述的方法。
与现有技术相比,本申请实施例包括以下优点:
本申请实施例,来源链和目的链之间的跨链事务可以通过中继链来进行。来源链发起第一跨链交易,第一跨链交易具有对应的跨链事务;来源链通过跨链网关将第一跨链交易发送至中继链;中继链在接收到第一跨链交易后,初始化该第一跨链交易的事务状态表,采用该事务状态表可以在中继链中记录跨链事务的事务状态。中继链对该第一跨链交易进行解析,确定跨链交易的目的链;若该目的链在中继链中注册过,则可以根据该第一跨链交易和事务状态表构第二跨链交易,然后通过跨链网关将第二跨链交易发送至目的链。目的链在接收到第二跨链交易后,可以执行跨链事务,然后将根据跨链事务的执行结果返回第三跨链交易;中继链在接收到第三跨链交易后,可以根据第三跨链交易获取跨链事务的执行结果,根据执行结果更新事务状态表,然后根据更新后的事务状态表和第三跨链交易构建第四跨链交易,并通过跨链网关将第四跨链交易发送至来源链。来源链接收到第四跨链交易后可以对第四跨链交易进行解析,从而确定跨链事务的执行结果,来源链根据执行结果更新跨链事务的处理状态。在本申请实施例中,目的链、中继链和来源链中,可以保持跨链事务的执行结果是统一的,实现了跨链交易的事务原子性。同时,在跨链事务的执行过程中,只需要在目的链中进行一次上链,简化了目的链的跨链流程。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍。显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请一个实施例提供的一种跨链事务处理方法的步骤流程示意图;
图2是本申请一个实施例提供的一种跨链交易执行成功的示意图;
图3是本申请一个实施例提供的一种跨链交易执行失败的示意图;
图4是本申请一个实施例提供的另一种跨链交易执行失败的示意图;
图5是本申请一个实施例提供的另一种跨链事务处理方法的流程图;
图6是本申请一个实施例提供的一种跨链事务处理装置的示意图;
图7是本申请一个实施例提供的一种计算设备的示意图。
具体实施方式
以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本申请实施例。然而,本领域技术人员应当清楚,在没有这些具体细节的其他实施例中也可以实现本申请。在其他情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本申请的描述。
应当理解,当在本申请说明书和所附权利要求书中使用时,术语“包括”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在本申请说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本申请说明书和所附权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
另外,在本申请说明书和所附权利要求书的描述中,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
在本申请说明书中描述的参考“一个实施例”或“一些实施例”等意味着在本申请的一个或多个实施例中包括结合该实施例描述的特定特征、结构或特点。由此,在本说明书中的不同之处出现的语句“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。
下面通过具体实施例来说明本申请的技术方案。
本申请实施例中,来源链是指跨链交易场景中,发起跨链交易的来源区块链。目的链是指跨链交易场景中,接收跨链交易的目的区块链。中继链是指跨链场景中,负责将来源链的跨链交易中转到目的链的区块链。
参照图1,示出了本申请一个实施例提供的一种跨链事务处理方法的步骤流程示意图,具体可以包括如下步骤:
S101,当接收到来源链发起的第一跨链交易时,中继链初始化第一跨链交易的事务状态表,第一跨链交易具有对应的跨链事务。
本实施例的执行主体为中继链。在本实施例中,来源链和中继链之间可以通过跨链网关进行通信;目的链和中继链之间可以通过跨链网关进行通信。跨链事务要实现不同区块链之间的可信互操作,可以借助具有公信力的第三方来进行跨链交易,本实施例中,中继链可以为公有链,作为第三方来保障不同应用链之间的可以互相信任的进行跨链交易。
在本申请实施例中,来源链和目的链均可部署跨链智能合约,然后可以调用跨链智能合约在中继链上进行注册。
当需要处理跨链事务时,来源链可以根据跨链事务生成第一跨链交易,第一跨链交易中可以携带有来源链地址、目的链地址、跨链事务信息和跨链相关证明信息等。来源链根据部署的跨链智能合约抛出第一跨链交易,跨链网关可以捕捉到该第一跨链交易,并将第一跨链交易构造为采用公共网络协议(Inter Blockchain Transfer Protocol,IBTP)的格式的跨链交易,然后将该第一跨链交易发送至中继链。IBTP是一种通用的跨链交互的消息传输协议。
中继链接收到跨链交易后,初始化事务状态表,事务状态表中可以包括该跨链事务的前一个事务状态和当前的事务状态。事务状态表可以包括第一状态值和第二状态值,第一状态值用于标识跨链事务的前一个事务状态,第二状态值用于标识跨链事务的当前事务状态。在初始化时将第一状态值更新为初始值,初始值用于标识跨链事务还未开始处理;将第二状态值更新为开始值,开始值用于标识跨链事务开始处理。例如:初始化时记录前一个事务状态为INIT,当前事务状态为BEGIN,事务状态表为:INIT-->BEGIN。
S102,中继链对第一跨链交易进行解析,确定第一跨链交易的目的链。
由于第一跨链交易中包括来源链地址和目的链地址,因而中继链可以对第一跨链交易进行解析,从而确定跨链事务的来源链和目的链。
S103,若来源链和目的链在中继链中注册过,则中继链根据第一跨链交易和事务状态表构建第二跨链交易。
具体地,若目的链或者来源链在中继链中注册过,则中继链可以查找到对应的注册信息。
若中继链查找到目的链的注册信息,则表明目的链在中继链中注册过,中继链可以对该跨链事务进行处理。此时,中继链可以根据第一跨链交易和事务状态表构建第二跨链交易,第二跨链交易中可以包括来源链地址、目的链地址、跨链事务、中继链的签名与更新后的跨链事务的状态。
若中继链中未查找到目的链的注册信息,则表明目的链未在中继链中注册过,中继链无法将跨链事务信息发送至目的链,也就无法对该跨链事务进行处理。此时,可以更新事务状态表,将第一状态值更新为开始值;将第二状态值更新为开始失败值;然后根据第一跨链交易和更新后的事务状态表构建第五跨链交易;并将第五跨链交易发送至来源链。来源链接收到该第五跨链交易后,可以确定出该跨链事务是由于目的链未在中继链中注册而导致失败,来源链可以对跨链事务进行回滚,将来源链恢复到之前的状态。例如:若目的链未在中继链中注册过,则事务状态表更新为BEGIN-->BEGIN_FAILURE。
来源链在对跨链事务回滚完毕后,来源链需要将回执返回给中继链;中继链接收到目的链返回的回滚的回执以后,将跨链事务的事务状态从BEGIN_FAILURE变为FAILURE。至此,跨链事务处理完成。
在一种可能的实现方式中,若目的链未在中继链中注册过,中继链可通知目的链与来源链。当目的链注册完成时,目的链的跨链网关将会对中继链的index进行+1,index记录了中继链与来源链的跨链交易。从而防止网关因为网络宕机等原因转发时遗漏了部分交易。但因为交易的状态是BEGIN_FAILURE,该第一跨链交易还是不会转发给目的链。
当然,若来源链未在中继链中注册过,则中继链也无法进行该跨链事务。在一种可能的实现方式中,若来源链没有在中继链中注册,中继链可以直接返回错误给来源链的跨链网关。中继链将不会把该第一跨链交易上链,可以相当于这笔跨链事务没存在过。
S104,中继链将第二跨链交易发送至目的链。
具体地,中继链可以根据目的链的注册信息,确定目的链的跨链网关;然后中继链可以将第二跨链交易发送至目的链的跨链网关,目的链的跨链网关再将第二跨链交易发送至目的链。
S105,中继链接收目的链根据第二跨链交易返回的第三跨链交易,第三跨链交易包括目的链对跨链事务的执行结果。
具体地,目的链接收到第二跨链交易后,可以对第二跨链交易进行解析,确定该第二跨链交易对应的跨链事务;然后通过跨链智能合约调用相关方法执行跨链事务,得到跨链事务的执行结果。跨链事务的执行结果包括执行成功和执行失败。执行成功可以为RECEIPT_SUCCESS,执行失败可以为RECEIPT_FAILURE。
目的链根据执行结果,可以构建第三跨链交易。然后通过跨链网关将该第三跨链交易发送至中继链。中继链接收到第三跨链交易后,可以对该第三跨链交易进行解析,得到跨链事务的执行结果。
S106,中继链根据执行结果更新事务状态表。
根据跨链事务的执行结果,中继链可以更新事务状态表。具体地,由于第一状态值用于标识前一个处理状态,故可以将第一状态值设置为当前第二状态值,然后根据执行结果更新第二状态值。若执行结果为执行失败,则将第二状态值更新为失败值。若执行结果为执行成功,则将所述第二状态值更新为成功值。
例如,若跨链事务执行失败,则事务状态为:BEGIN-->FAILURE;若跨链事务执行成功,则事务状态为BEGIN-->SUCCESS。
S107,中继链根据第三跨链交易和更新后的事务状态表构建第四跨链交易,第四跨链交易中包括执行结果和跨链事务的事务状态。
中继链根据第三跨链交易和更新后的事务状态构建第四跨链交易,第四跨链交易中心可以包括来源链地址、目的链地址、跨链事务、中继链的签名与更新后的跨链事务的状态。
具体地,跨链事务的事务状态可以来源于事务状态表,事务状态可以包括:INIT-->BEGIN,BEGIN-->BEGIN_FAILURE,BEGIN-->FAILURE,BEGIN-->SUCCESS,BEGIN_FAILURE-->FAILURE。INIT-->BEGIN用于表示该跨链事务开始处理;BEGIN-->BEGIN_FAILURE用于表示该跨链事务无法发送至目的链,BEGIN-->FAILURE用于表示该跨链事务在目的链上执行失败,BEGIN-->SUCCESS用于表示该跨链事务在目的链上执行成功,BEGIN_FAILURE-->FAILURE用于表示该跨链事务未发送至目的链,跨链事务执行失败,在来源链已经回滚完毕。
S108,中继链将第四跨链交易返回至来源链,以供来源链根据执行结果和事务状态处理跨链事务。
中继链可以根据来源链的注册信息确定来源链的跨链网关;然后通过来源链的跨链网关,将第四跨链交易发送至来源链。
来源链接收到第四跨链交易后,可以对第四跨链交易进行解析,获取跨链交易的执行结果。若执行结果为执行失败,则来源链对跨链事务进行回滚。若执行结果为执行成功,则来源链完成所述跨链事务。
来源链在对跨链事务进行回滚后,还可以向中继链发送回滚回执,中继链接收到回滚回执后,可以将事务状态表更新为BEGIN_FAILURE-->FAILURE,从而确定该跨链事务执行完毕,执行失败。
此时,目的链中的跨链事务的处理结果和来源链中的跨链事务处理结果是相同的,保障了跨链事务处理过程中的原子性。
本实施例中,事务状态表中包括前一个事务状态和当前事务状态,而中继链发送至来源链和目的链的信息中包括了事务状态表中的信息,使得来源链和事务链能够清楚当前事务的处理状态;另外,当跨链事务执行失败时,来源链也可以根据事务状态表中的前一个事务状态和当前事务状态,确定是由于目的链未在中继链中注册而失败;还是由于目的链执行事务失败。
本实施例在基于中继链的二阶段机制上进行优化,选用多链事务状态表的方案,通过内置中继链事务管理合约实现跨链交易的事务管理。在跨链流程中将目的链的两次交易上链简化为一次,简化了目的链的上链流程。
需要说明的是,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
以具体的实例对本申请中的方法进行说明。该实例的背景为:来源链为A链,目的链为B链。A链的账户Alice想要获取位于B链的Bob的数据dataB。
A链的账户Alice成功获取位于B链的Bob的数据dataB的执行过程可以为图2所示。图2是本申请一个实施例提供的一种跨链交易执行成功的示意图。
首先A链与B链需要部署用于跨链的智能合约,记A链的跨链智能合约为SCa,B链的跨链智能合约为SCb。
然后,A链与B链可以调用已部署的跨链智能合约的register方法在中继链进行注册。
当A链的账户Alice想要获取位于B链的Bob的数据dataB时,A链根据该跨链事务构建交易Tx1,Tx1是由跨链网关封装成跨链通用的IBTP网络协议格式的跨链交易,内容包括:跨链交易类型、来源链地址、目的链地址、跨链相关证明信息、跨链事务具体内容等。
中继链收到跨链交易Tx1,将Tx1的事务状态表初始化为INIT-->BEGIN,INIT为跨链事务前一个的事务状态,BEGIN为跨链事务当前的事务状态。然后解析跨链交易Tx1,检查A链与B链是否在中继链注册。
如A链与B链均已经在中继链中注册,则中继链封装跨链交易Tx2,将Tx2提交至目的链。
目的链成功执行跨链交易,返回内容为B链的dataB,类型为RECEIPT_SUCCESS,格式为通用网络协议IBTP的跨链交易Tx3。并将Tx3提交至中继链。
中继链解析收到的跨链交易Tx3,根据Tx3的RECEIPT_SUCCESS类型更新事务状态为BEGIN-->SUCCESS。然后构造跨链交易Tx4提交到来源链。
来源链解析收到的跨链交易Tx4,发现交易的类型为RECEIPT_SUCCESS类型,事务状态是BEGIN-->SUCCESS,执行交易内容,获取数据dataB,跨链事务操作完成。
由于B链执行失败而导致A链的账户Alice不能获取位于B链的Bob的数据dataB的执行过程可以为图3所示。3是本申请一个实施例提供的一种跨链交易执行失败的示意图。
A链的账户Alice成功获取位于B链的Bob的数据dataB的执行过程可以为图2所示。图2是本申请一个实施例提供的一种跨链交易执行成功的示意图。
首先A链与B链需要部署用于跨链的智能合约,记A链的跨链智能合约为SCa,B链的跨链智能合约为SCb。
然后,A链与B链可以调用已部署的跨链智能合约的register方法在中继链进行注册。
当A链的账户Alice想要获取位于B链的Bob的数据dataB时,A链根据该跨链事务构建交易Tx1,Tx1是由跨链网关封装成跨链通用的IBTP网络协议格式的跨链交易,内容包括:跨链交易类型、来源链地址、目的链地址、跨链相关证明信息、跨链事务具体内容等。
中继链收到跨链交易Tx1,将Tx1的事务状态初始化为INIT-->BEGIN,INIT为跨链事务前一个的事务状态,BEGIN为跨链事务当前的事务状态。解析跨链交易Tx1,检查A链与B链是否在中继链注册。
若A链与B链均已经在中继链注册,则中继链封装跨链交易Tx2,提交至目的链。
目的链执行跨链交易失败,因为Bob没有dataB这个数据,返回内容为空,类型为RECEIPT_FAILURE,格式为通用网络协议IBTP的跨链交易Tx3。并将Tx3提交至中继链。
中继链解析收到的跨链交易Tx3,根据Tx3的RECEIPT_FAILURE类型更新事务状态为BEGIN-->FAILURE。中继链构造跨链交易Tx4提交到来源链。
来源链解析收到的跨链交易Tx4,发现交易的类型为RECEIPT_SUCCESS类型,事务状态是BEGIN-->FAILURE,说明跨链交易执行失败,进行跨链事务回滚。跨链事务操作完成。
由于B链未在中继链中注册而导致A链的账户Alice不能获取位于B链的Bob的数据dataB的执行过程可以为图4所示。图4是本申请一个实施例提供的另一种跨链交易执行失败的示意图。
当A链的账户Alice想要获取位于B链的Bob的数据dataB时,A链根据该跨链事务构建交易Tx1,Tx1是由跨链网关封装成跨链通用的IBTP网络协议格式的跨链交易,内容包括:跨链交易类型、来源链地址、目的链地址、跨链相关证明信息、跨链事务具体内容等。
中继链解析跨链交易Tx1,将Tx1的事务状态初始化为INIT-->BEGIN,检查A链与B链是否在中继链注册,发现B链未注册,更新事务状态为BEGIN-->BEGIN_FAILURE。中继链事务管理器构建跨链交易Tx2,跨链交易类型是INTERCHAIN,提交至来源链A链。
A链收到跨链交易Tx2,根据收到的是跨链交易类型为INTERCHAIN,并且交易事务状态为BEGIN_FAILURE,说明跨链事务执行失败,该跨链交易需要进行回滚。跨链事务操作完成。来源链在对跨链事务回滚完毕后,来源链需要将回执返回给中继链;中继链接收到目的链返回的回滚的回执以后,将跨链事务的事务状态从BEGIN_FAILURE变为FAILURE。至此,跨链事务处理完成。
图5是本申请一个实施例提供的另一种跨链事务处理方法的流程图,参照图5,来源链与目的链部署跨链合约,调用跨链合约相关方法在中继链进行注册。
当进行跨链事务时,来源链发起跨链交易,来源链部署的跨链合约SC1根据交易请求抛出跨链事务,跨链网关捕获该跨链事务,并构造为公共网络协议IBTP格式的第一跨链交易Tx1向中继链传输。
中继链收到第一跨链交易Tx1,进行交易检查、交易打包、交易执行,交易执行开始前初始化事务状态表,事务状态表维护了前一个事务状态与当前的事务状态,初始化时记录前一个事务状态为INIT,当前事务状态为BEGIN。
第一跨链交易Tx1在中继链成功上链后,中继链检查目的链相关信息并更新事务状态,如果目的链未在中继链注册,进入步骤5.1,如果目的链已注册,进入步骤5.2。
5.1)中继链将跨链事务状态从BEGIN更改为BEGIN_FAILURE,中继链事务管理器将构建第五跨链交易Tx2.1,通知来源链进行回滚。
5.2)中继链事务管理器根据第一跨链交易Tx1的内容构建第二跨链交易Tx2.2,通过跨链网关将第二跨链交易Tx2.2路由到目的链。第二跨链交易Tx2.2包含了来源链地址、目的链地址、跨链事务、中继链的签名与更新后的跨链事务的状态。
目的链收到第二跨链交易Tx2.2后,解析跨链事务,并通过跨链合约SC2调用相关方法执行跨链事务。跨链事务执行结果通过构造第三跨链交易Tx3发送至中继链。第三跨链交易Tx3包含了跨链事务执行的结果。跨链事务的执行结果分为两类:执行成功返回RECEIPT_SUCCESS,执行失败返回RECIPT_FAILURE。
中继链根据收到的跨链交易Tx3的执行结果是否成功更改事务状态。成功的执行结果将事务状态从BEGIN更新为SUCCESS,失败的执行结果将事务状态从BEGIN更新为FAILURE;根据第三跨链交易Tx3构建第四跨链交易Tx4,将第四跨链交易Tx4转发至来源链。
来源链根据收到的第四跨链交易Tx4的事务状态进行相关操作。来源链的智能合约SC1调用相关方法执行跨链事务,如果收到的是跨链回执交易,并且交易事务状态为SUCCESS,说明跨链事务正常执行,如果收到的是跨链回执交易,并且交易事务状态为FAILURE,说明跨链事务执行失败,该跨链交易需要进行回滚,如果收到的是跨链交易,并且交易事务状态为BEGIN_FAILURE,说明跨链事务执行失败,该跨链交易需要进行回滚。来源链在对跨链事务回滚完毕后,来源链需要将回执返回给中继链;中继链接收到目的链返回的回滚的回执以后,将跨链事务的事务状态从BEGIN_FAILURE变为FAILURE。至此,一笔跨链交易流程结束,该方法保证了跨链事务的原子性。
参照图6,示出了本申请一个实施例的一种跨链事务处理装置的示意图,具体可以包括事务状态表初始化模块61、目的链确定模块62、第二跨链交易构建模块63、第二跨链交易发送模块64、第三跨链交易接收模块65、事务状态表更新模块66、第四跨链交易构建模块67和第四跨链交易发送模块68,其中:
事务状态表初始化模块61,用于当接收到来源链发起的第一跨链交易时,初始化所述第一跨链交易的事务状态表,所述第一跨链交易具有对应的跨链事务;
目的链确定模块62,用于对所述第一跨链交易进行解析,确定所述第一跨链交易的目的链;
第二跨链交易构建模块63,用于若所述来源链和所述目的链在所述中继链中注册过,则根据所述第一跨链交易和所述事务状态表构建第二跨链交易;
第二跨链交易发送模块64,用于将所述第二跨链交易发送至所述目的链;
第三跨链交易接收模块65,用于接收所述目的链根据所述第二跨链交易返回的第三跨链交易,所述第三跨链交易包括所述目的链对所述跨链事务的执行结果;
事务状态表更新模块66,用于根据所述执行结果更新所述事务状态表;
第四跨链交易构建模块67,用于根据所述第三跨链交易和更新后的所述事务状态表构建第四跨链交易,所述第四跨链交易中包括所述执行结果和所述跨链事务的事务状态;
第四跨链交易发送模块68,用于将所述第四跨链交易返回至所述来源链,以供所述来源链根据所述执行结果和所述事务状态处理所述跨链事务。
在一种可能的实现方式中,上述事务状态表初始化模块61包括:
第一初始化子模块,用于将所述第一状态值更新为初始值,所述第一状态值用于标识所述跨链事务的前一个事务状态;
第二初始化子模块,用于将所述第二状态值更新为开始值,所述第二状态值用于标识所述跨链事务的当前事务状态。
在一种可能的实现方式中,上述跨链事务处理装置还包括:
第一更新模块,用于若所述目的链未在所述中继链中注册,则将所述第一状态值更新为开始值;将所述第二状态值更新为开始失败值,所述开始失败值用于表征所述目的链未被发送至所述目的链;
第二更新模块,用于根据所述第一跨链交易和更新后的所述事务状态表构建第五跨链交易;
第五跨链交易发送模块,用于将所述第五跨链交易发送至所述来源链,以供所述来源链根据所述第五跨链交易对所述跨链事务进行回滚;
回滚回执接收子模块,用于接收所述来源链返回的回滚回执;
第三更新子模块,用于根据所述回滚回执将所述事务状态表的第二状态值更新为失败值,所述失败值用于表征所述跨链事务执行失败。
在一种可能的实现方式中,上述第二跨链交易发送模块64包括:
目的跨链网关确定子模块,用于根据所述目的链的注册信息,确定所述目的链的跨链网关;
第二跨链交易发送子模块,用于将所述第二跨链交易发送至所述目的链的跨链网关,所述目的链的跨链网关用于将所述第二跨链交易发送至所述目的链。
在一种可能的实现方式中,上述事务状态表更新模块66,包括:
第四更新子模块,用于若所述执行结果为执行失败,则将所述第一状态值更新为所述第二状态值,将所述第二状态值更新为失败值。
在一种可能的实现方式中,上述第四跨链交易发送模块68包括:
第一来源跨链网关确定子模块,用于确定所述来源链的跨链网关;
第一发送子模块,用于通过所述来源链的跨链网关,将所述第四跨链交易发送至所述来源链,以供所述来源链根据所述第四跨链交易在所述来源链中对所述跨链事务进行回滚。
在另一种可能的实现方式中,上述事务状态表更新模块66还包括:
第五更新子模块,用于若所述执行结果为执行成功,则将所述第一状态值更新为所述第二状态值,将所述第二状态值更新为成功值。
在另一种可能的实现方式中,上述第四跨链交易发送模块68包括:
第二来源跨链网关确定子模块,用于确定所述来源链的跨链网关;
第二发送子模块,用于通过所述来源链的跨链网关,将所述第四跨链交易发送至所述来源链,以供所述来源链根据所述第四跨链交易在所述来源链中完成所述跨链事务。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述得比较简单,相关之处参见方法实施例部分的说明即可。
图7为本申请一实施例提供的计算设备的结构示意图。如图7所示,该实施例的计算设备7包括:至少一个处理器70(图7中仅示出一个)处理器、存储器71以及存储在所述存储器71中并可在所述至少一个处理器70上运行的计算机程序72,所述处理器70执行所述计算机程序72时实现上述任意各个方法实施例中的步骤。
所述计算设备7可以是桌上型计算机、笔记本、掌上电脑及云端计算设备等计算设备。该计算设备可包括,但不仅限于,处理器70、存储器71。本领域技术人员可以理解,图7仅仅是计算设备7的举例,并不构成对计算设备7的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如还可以包括输入输出设备、网络接入设备等。
所称处理器70可以是中央处理单元(Central Processing Unit,CPU),该处理器70还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
所述存储器71在一些实施例中可以是所述计算设备7的内部存储单元,例如计算设备7的硬盘或内存。所述存储器71在另一些实施例中也可以是所述计算设备7的外部存储设备,例如所述计算设备7上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,所述存储器71还可以既包括所述计算设备7的内部存储单元也包括外部存储设备。所述存储器71用于存储操作系统、应用程序、引导装载程序(BootLoader)、数据以及其他程序等,例如所述计算机程序的程序代码等。所述存储器71还可以用于暂时地存储已经输出或者将要输出的数据。
本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现可实现上述各个方法实施例中的步骤。
本申请实施例提供了一种计算机程序产品,当计算机程序产品在计算设备上运行时,使得计算设备执行时实现可实现上述各个方法实施例中的步骤。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质至少可以包括:能够将计算机程序代码携带到拍照装置/计算设备的任何实体或装置、记录介质、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,RandomAccess Memory)、电载波信号、电信信号以及软件分发介质。例如U盘、移动硬盘、磁碟或者光盘等。在某些司法管辖区,根据立法和专利实践,计算机可读介质不可以是电载波信号和电信信号。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
在本申请所提供的实施例中,应该理解到,所揭露的装置/计算设备和方法,可以通过其它的方式实现。例如,以上所描述的装置/计算设备实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
以上所述实施例仅用以说明本申请的技术方案,而非对其限制。尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围,均应包含在本申请的保护范围之内。
Claims (10)
1.一种跨链事务处理方法,其特征在于,应用于中继链,所述方法包括:
当接收到来源链发起的第一跨链交易时,初始化所述第一跨链交易的事务状态表,所述第一跨链交易具有对应的跨链事务;
对所述第一跨链交易进行解析,确定所述第一跨链交易的目的链;
若所述来源链与所述目的链在所述中继链中注册过,则根据所述第一跨链交易和所述事务状态表构建第二跨链交易;
将所述第二跨链交易发送至所述目的链;
接收所述目的链根据所述第二跨链交易返回的第三跨链交易,所述第三跨链交易包括所述目的链对所述跨链事务的执行结果;
根据所述执行结果更新所述事务状态表;
根据所述第三跨链交易和更新后的所述事务状态表构建第四跨链交易,所述第四跨链交易中包括所述执行结果和所述跨链事务的事务状态;
将所述第四跨链交易返回至所述来源链,以供所述来源链根据所述执行结果和所述事务状态处理所述跨链事务。
2.如权利要求1所述的方法,其特征在于,所述事务状态表包括第一状态值和第二状态值,所述初始化所述第一跨链交易的事务状态表,包括:
将所述第一状态值更新为初始值,所述第一状态值用于标识所述跨链事务的前一个事务状态,所述初始值用于标识所述跨链事务还未开始处理;
将所述第二状态值更新为开始值,所述第二状态值用于标识所述跨链事务的当前事务状态,所述开始值用于标识所述跨链事务开始处理。
3.如权利要求2所述的方法,其特征在于,在对所述第一跨链交易进行解析,确定所述第一跨链交易的目的链步骤之后,还包括:
若所述目的链未在所述中继链中注册,则将所述第一状态值更新为开始值;将所述第二状态值更新为开始失败值,所述开始失败值用于表征所述跨链事务未被发送至所述目的链;
根据所述第一跨链交易和更新后的所述事务状态表构建第五跨链交易;
将所述第五跨链交易发送至所述来源链,以供所述来源链根据所述第五跨链交易对所述跨链事务进行回滚;
接收所述来源链返回的回滚回执;
根据所述回滚回执将所述事务状态表的第二状态值更新为失败值,所述失败值用于表征所述跨链事务执行失败。
4.如权利要求1-3任一项所述的方法,其特征在于,所述将所述第二跨链交易发送至所述目的链,包括:
根据所述目的链的注册信息,确定所述目的链的跨链网关;
将所述第二跨链交易发送至所述目的链的跨链网关,所述目的链的跨链网关用于将所述第二跨链交易发送至所述目的链。
5.如权利要求2或3任一项所述的方法,其特征在于,所述根据所述执行结果更新所述事务状态表,包括:
若所述执行结果为执行失败,则将所述第一状态值更新为所述第二状态值,将所述第二状态值更新为失败值。
6.如权利要求5所述的方法,其特征在于,所述将所述第四跨链交易返回至所述来源链,以供所述来源链根据所述执行结果和所述事务状态处理所述跨链事务,包括:
确定所述来源链的跨链网关;
通过所述来源链的跨链网关,将所述第四跨链交易发送至所述来源链,以供所述来源链根据所述执行结果和所述事务状态对所述跨链事务进行回滚。
7.如权利要求2或3任一项所述的方法,其特征在于,所述根据所述执行结果更新所述事务状态表,还包括:
若所述执行结果为执行成功,则将所述第一状态值更新为所述第二状态值,将所述第二状态值更新为成功值。
8.如权利要求7所述的方法,其特征在于,所述将所述第四跨链交易返回至所述来源链,以供所述来源链根据所述执行结果和所述事务状态处理所述跨链事务,包括:
确定所述来源链的跨链网关;
通过所述来源链的跨链网关,将所述第四跨链交易发送至所述来源链,以供所述来源链根据所述执行结果和所述事务状态完成所述跨链事务。
9.一种计算设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1-8任一项所述的方法。
10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-8任一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111590196.0A CN114217911A (zh) | 2021-12-23 | 2021-12-23 | 一种跨链事务处理方法、装置、计算设备和介质 |
PCT/CN2022/120865 WO2023116098A1 (zh) | 2021-12-23 | 2022-09-23 | 一种跨链事务处理方法、装置、计算设备和介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111590196.0A CN114217911A (zh) | 2021-12-23 | 2021-12-23 | 一种跨链事务处理方法、装置、计算设备和介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114217911A true CN114217911A (zh) | 2022-03-22 |
Family
ID=80705424
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111590196.0A Pending CN114217911A (zh) | 2021-12-23 | 2021-12-23 | 一种跨链事务处理方法、装置、计算设备和介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN114217911A (zh) |
WO (1) | WO2023116098A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023116098A1 (zh) * | 2021-12-23 | 2023-06-29 | 杭州趣链科技有限公司 | 一种跨链事务处理方法、装置、计算设备和介质 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11194837B2 (en) * | 2018-05-01 | 2021-12-07 | International Business Machines Corporation | Blockchain implementing cross-chain transactions |
CN112650764A (zh) * | 2020-12-30 | 2021-04-13 | 北京百度网讯科技有限公司 | 跨链数据处理方法、装置、设备和存储介质 |
CN112822181B (zh) * | 2020-12-30 | 2022-08-16 | 杭州趣链科技有限公司 | 跨链交易的验证方法、终端设备及可读存储介质 |
CN112882802A (zh) * | 2021-02-01 | 2021-06-01 | 杭州云象网络技术有限公司 | 一种用于跨链的多链消息表事务处理方法及跨链系统 |
CN112907262B (zh) * | 2021-02-20 | 2022-03-25 | 北京邮电大学 | 农产品溯源下的一种基于中继链的区块链跨链交互方法 |
CN114217911A (zh) * | 2021-12-23 | 2022-03-22 | 杭州趣链科技有限公司 | 一种跨链事务处理方法、装置、计算设备和介质 |
-
2021
- 2021-12-23 CN CN202111590196.0A patent/CN114217911A/zh active Pending
-
2022
- 2022-09-23 WO PCT/CN2022/120865 patent/WO2023116098A1/zh unknown
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023116098A1 (zh) * | 2021-12-23 | 2023-06-29 | 杭州趣链科技有限公司 | 一种跨链事务处理方法、装置、计算设备和介质 |
Also Published As
Publication number | Publication date |
---|---|
WO2023116098A1 (zh) | 2023-06-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10693630B1 (en) | Cross-blockchain interaction method, apparatus, system, and electronic device | |
CN112003703B (zh) | 一种跨链发送可认证消息的方法和装置 | |
CN111163129B (zh) | 一种基于跨链网络的资源处理方法及装置 | |
CN112615871B (zh) | 一种跨链发送可认证消息的方法和装置 | |
US20200177391A1 (en) | Sending cross-chain authenticatable messages | |
CN114255031A (zh) | 用于执行交易的跨区块链的系统、跨链交易方法及设备 | |
CN112000730B (zh) | 基于区块链的溯源信息写入、溯源信息验证的方法、系统 | |
CN110502319B (zh) | 分布式事务的处理方法、装置、电子设备及存储介质 | |
CN113691635B (zh) | 调用微服务的方法、装置、电子设备和可读存储介质 | |
CN110875850A (zh) | 一种固件升级方法、系统、可读存储介质及终端设备 | |
CN109104368B (zh) | 一种请求连接方法、装置、服务器及计算机可读存储介质 | |
CN114465998A (zh) | 多设备的文件传输方法、装置、终端设备及可读存储介质 | |
CN111008206A (zh) | 跨链交易的状态数据的存储方法、装置及存储介质 | |
CN114217911A (zh) | 一种跨链事务处理方法、装置、计算设备和介质 | |
CN114637611A (zh) | 基于消息队列的信息处理方法、装置及计算机设备 | |
CN110908801B (zh) | 基于区块链的数据处理方法、装置、计算机设备和存储介质 | |
CN112615868B (zh) | 一种跨链发送可认证消息的方法和装置 | |
CN110852744A (zh) | 一种切换交易通道的方法、装置、终端设备及介质 | |
CN113342481B (zh) | 一种事务状态的确认方法及装置 | |
CN113472781B (zh) | 一种服务获取方法、服务器及计算机可读存储介质 | |
CN111061576B (zh) | 一种实体对象的创建方法及系统 | |
CN112650627A (zh) | 智能合约的数据恢复方法、装置、终端设备及存储介质 | |
CN117632445B (zh) | 请求处理方法以及装置、任务执行方法以及装置 | |
CN111339097A (zh) | 一种数据处理方法及相关设备 | |
CN113077241A (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 |