CN115310974A - 一种跨链交易的处理方法、计算机设备及介质 - Google Patents
一种跨链交易的处理方法、计算机设备及介质 Download PDFInfo
- Publication number
- CN115310974A CN115310974A CN202210899739.5A CN202210899739A CN115310974A CN 115310974 A CN115310974 A CN 115310974A CN 202210899739 A CN202210899739 A CN 202210899739A CN 115310974 A CN115310974 A CN 115310974A
- Authority
- CN
- China
- Prior art keywords
- chain
- transaction
- cross
- application
- link
- 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
- 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
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/382—Payment protocols; Details thereof insuring higher security of transaction
- G06Q20/3825—Use of electronic signatures
-
- 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
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/382—Payment protocols; Details thereof insuring higher security of transaction
- G06Q20/3829—Payment protocols; Details thereof insuring higher security of transaction involving key management
-
- 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
- Business, Economics & Management (AREA)
- Engineering & Computer Science (AREA)
- Accounting & Taxation (AREA)
- Finance (AREA)
- Physics & Mathematics (AREA)
- Strategic Management (AREA)
- General Business, Economics & Management (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Development Economics (AREA)
- Economics (AREA)
- Marketing (AREA)
- Technology Law (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请实施例适用于区块链技术领域,提供了一种跨链交易的处理方法、计算机设备及介质,所述方法应用于第一应用链,包括:当第一业务合约发起跨链交易时,通过中继链将跨链交易发送至第二应用链,第二应用链为跨链交易的目的链;接收所述中继链针对所述跨链交易返回的反馈信息,所述反馈信息包括交易序号和反馈结果;确定第一跨链合约中记录的第一计数值,第一计数值用于标识第一应用链接收到的跨链交易回执的数量;若交易序号与第一计数值匹配,则根据反馈结果对第一业务合约进行调用,以在第一应用链上处理跨链交易;更新第一计数值。通过上述方法,能够对跨链交易进行定序执行或回滚,保障跨链事务的原子性。
Description
技术领域
本申请属于区块链技术领域,特别是涉及一种跨链交易的处理方法、计算机设备及介质。
背景技术
跨链是在不同区块链之间实现可信互操作。跨链事务的原子性是指跨链交易的来源链与目的链要么都执行成功,要么都执行失败,如执行失败还需要恢复到未执行的状态。
在跨链事务中,跨链交易之间经常具有业务逻辑,因此,跨链交易在执行时,具有执行顺序。区块链p2p网络具有不稳定性,可能会导致跨链交易的数据传输不稳定,跨链交易无法按顺序到达目的链,从而可能导致跨链交易无法按照执行顺序进行交易执行或者交易回滚,影响跨链事务的原子性。
发明内容
有鉴于此,本申请实施例提供了一种跨链交易的处理方法、计算机设备及介质,用以实现跨链交易的定序执行或回滚,保障跨链事务的原子性。
本申请实施例的第一方面提供了一种跨链交易的处理方法,应用于第一应用链,所述方法包括:
当第一业务合约发起跨链交易时,通过中继链将所述跨链交易发送至第二应用链,所述第二应用链为所述跨链交易的目的链;
接收所述中继链针对所述跨链交易返回的反馈信息,所述反馈信息包括交易序号和反馈结果;
确定第一跨链合约中记录的第一计数值,所述第一计数值用于标识所述第一应用链接收到的跨链交易回执的数量;
若所述交易序号与所述第一计数值匹配,则根据所述反馈结果对所述第一业务合约进行调用,以在所述第一应用链上处理所述跨链交易;
更新所述第一计数值。
本申请实施例的第二方面提供了一种跨链交易的处理方法,应用于第二应用链,所述方法包括:
接收由中继链转发的跨链交易,所述跨链交易具有交易序号;
获取第二跨链合约中记录的第三计数值,所述第三计数值用于标识所述第二应用链接收到的跨链交易的数量;
若所述交易序号与所述第三计数值匹配,则执行所述跨链交易,得到交易回执;
通过所述中继链将所述交易回执发送至第一应用链,所述第一应用链为所述跨链交易的来源链,所述第一应用链用于根据所述交易回执处理所述跨链交易;
更新所述第三计数值。
本申请实施例的第三方面提供了一种跨链交易的处理方法,应用于中继链,所述方法包括:
当接收到来自第一应用链的跨链交易时,对所述跨链交易进行验证,所述跨链交易具有超时时间;
若所述跨链交易通过验证,则通过所述中继链的多个共识节点对所述跨链交易进行签名;
将签名后的所述跨链交易发送至第二应用链,所述第二应用链为所述跨链交易的目的链;
在所述超时时间内,若接收到所述第二应用链针对所述跨链交易返回的交易回执,则对所述交易回执进行验证;
若所述交易回执通过验证,则通过多个所述共识节点对所述交易回执进行签名;
将签名后的所述交易回执发送至所述第一应用链,所述第一应用链用于根据所述交易回执完成所述跨链交易或对所述跨链交易进行回滚。
本申请实施例的第四方面提供了一种跨链交易的处理装置,应用于第一应用链,所述装置包括:
发送模块,用于当第一业务合约发起跨链交易时,通过中继链将所述跨链交易发送至第二应用链,所述第二应用链为所述跨链交易的目的链;
接收模块,用于接收所述中继链针对所述跨链交易返回的反馈信息,所述反馈信息包括交易序号和反馈结果;
确定模块,用于确定第一跨链合约中记录的第一计数值,所述第一计数值用于标识所述第一应用链接收到的跨链交易回执的数量;
调用模块,用于若所述交易序号与所述第一计数值匹配,则根据所述反馈结果对所述第一业务合约进行调用,以在所述第一应用链上处理所述跨链交易;
更新模块,用于更新所述第一计数值。
本申请实施例的第五方面提供了一种跨链交易的处理装置,应用于第二应用链,所述装置包括:
接收模块,用于接收由中继链转发的跨链交易,所述跨链交易具有交易序号;
获取模块,用于获取第二跨链合约中记录的第三计数值,所述第三计数值用于标识所述第二应用链接收到的跨链交易的数量;
生成模块,用于若所述交易序号与所述第三计数值匹配,则执行所述跨链交易,得到交易回执;
发送模块,用于通过所述中继链将所述交易回执发送至第一应用链,所述第一应用链为所述跨链交易的来源链,所述第一应用链用于根据所述交易回执处理所述跨链交易;
更新模块,用于更新所述第三计数值。
本申请实施例的第六方面提供了一种跨链交易的处理装置,应用于中继链,所述装置包括:
第一验证模块,用于当接收到来自第一应用链的跨链交易时,对所述跨链交易进行验证,所述跨链交易具有超时时间;
第一签名模块,用于若所述跨链交易通过验证,则通过所述中继链的多个共识节点对所述跨链交易进行签名;
第一发送模块,用于将签名后的所述跨链交易发送至第二应用链,所述第二应用链为所述跨链交易的目的链;
第二验证模块,用于在所述超时时间内,若接收到所述第二应用链针对所述跨链交易返回的交易回执,则对所述交易回执进行验证;
第二签名模块,用于若所述交易回执通过验证,则通过多个所述共识节点对所述交易回执进行签名;
第二发送模块,用于将签名后的所述交易回执发送至所述第一应用链,所述第一应用链用于根据所述交易回执完成所述跨链交易或对所述跨链交易进行回滚。
本申请实施例的第七方面提供了一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上述第一方面、第二方面或第三方面所述的方法。
本申请实施例的第八方面提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如上述第一方面、第二方面或第三方面所述的方法。
本申请实施例的第九方面提供了一种计算机程序产品,当所述计算机程序产品在计算机设备上运行时,使得所述计算机设备执行上述第一方面、第二方面或第三方面所述的方法。
与现有技术相比,本申请实施例包括以下优点:
本申请实施例,第一应用链的跨链交易可以通过中继链发送至第二应用链,然后,第一应用链可以接收中继链返回的反馈信息,反馈信息可以包括交易序号和反馈结果,其中交易序号是根据第二应用链发送给第一应用链的交易回执的顺序确定的。第一应用链的第一跨链合约中包括第一计数值,第一计数值可以用于标识第一应用链接收到的来自第二应用链的交易回执的数量。若第一应用链接收到的反馈信息的交易序号与第一计数值匹配,则说明该反馈信息是第一应用链当前处理的跨链交易所对应的反馈信息。此时,第一应用链可以根据反馈结果对跨链交易进行处理,并更新第一计数值。本实施例根据反馈信息的交易序号与第一计数值的匹配情况进行相应地处理,可以避免反馈信息被重复调用或者遗漏,保障了跨链交易可以定序执行,可以保障第一应用链只对每个反馈信息进行一次相应的处理,从而保障了跨链交易的原子性。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍。显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种跨链系统的示意图;
图2是本申请实施例提供的一种跨链交易的处理方法的步骤流程示意图;
图3是本申请实施例提供的另一种跨链交易的处理方法的步骤流程示意图;
图4是本申请实施例提供的又一种跨链交易的处理方法的流程示意图;
图5是本申请实施例提供的一种跨链交易的处理装置的示意图;
图6是本申请实施例提供的另一种跨链交易的处理装置的示意图;
图7是本申请实施例提供的又一种跨链交易的处理装置的示意图;
图8是本申请实施例提供的一种计算机设备的示意图。
具体实施方式
以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本申请实施例。然而,本领域技术人员应当清楚,在没有这些具体细节的其他实施例中也可以实现本申请。在其他情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本申请的描述。
应当理解,当在本申请说明书和所附权利要求书中使用时,术语“包括”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
另外,在本申请说明书和所附权利要求书的描述中,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
在本申请说明书中描述的参考“一个实施例”或“一些实施例”等意味着在本申请的一个或多个实施例中包括结合该实施例描述的特定特征、结构或特点。由此,在本说明书中的不同之处出现的语句“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。
跨链要达到安全可信必然对跨链机制、步骤有一些要求,其中最重要的就是跨链事务的原子性。对于普通的链内交易来说,交易需要支持原子性;跨链交易也是如此,跨链失败时要对涉及本次跨链交易的两条应用链进行回滚。
目前主流跨链方案为了保证跨链事务的原子性,大多采用经典的两阶段提交来完成,两个交易互为锚点,锚点超过一段时间仍然无效,就可以发起对交易的回滚。但是该方案需要所有节点对锚点的有效性达成没有分歧的判断,不能依赖远程访问证明,并且由于网络不稳定因素可能会造成验证难的问题。
针对区块链p2p网络的不稳定特性,本申请提供了一种跨链交易的处理方法,可以保证跨链交易定序执行与回滚,最终保证跨链事务的原子性。
图1是本申请实施例提供的一种跨链系统的示意图,如图1所示,跨链系统包括中继链,中继链可以提供跨链中继服务;跨链系统中的业务链A和业务链B可以通过中继链进行跨链交易。业务链A和业务链B分别为跨链系统的应用链,每个应用链中可以包括业务合约和跨链合约,如图1所示,业务链A可以包括业务合约A和跨链合约A,业务链B可以包括业务合约B和跨链合约B。业务合约可以发起跨链交易;跨链合约可以用于对跨链交易进行管理,跨链合约中可以存储跨链交易数据。在本申请中,跨链合约可以作为跨链交易执行顺序的协调者。
本实施例提供的跨链交易处理的方法可以应用于图1所示的跨链系统中。下面以具体的实施例对本申请的方案进行说明。
参照图2,示出了本申请实施例提供的一种跨链交易的处理方法的步骤流程示意图,具体可以包括如下步骤:
S201,当第一业务合约发起跨链交易时,通过中继链将所述跨链交易发送至第二应用链,所述第二应用链为所述跨链交易的目的链。
本实施例的执行主体为第一应用链,在本申请中,为了便于阐述方案,采用第一应用链表示发起跨链交易的应用链,也就是第一应用链为跨链交易的来源链。本领域技术人员应当清楚,第一应用链作为应用链,既可以是跨链交易的来源链,也可以是跨链交易的目的链。即,第一应用链也可以实现S301-S305中的步骤。
第一应用链中可以包括多个业务合约,基于业务合约应用链可以执行不同的交易。在执行交易的过程中,可能需要其他应用链的数据或者需要其他应用链上的业务合约提供合约服务,此时,业务合约可以发起跨链交易。
上述第一业务合约为第一应用链中可以发起跨链交易的一个业务合约。上述第一跨链合约为第一应用链上的跨链合约,可以用来对第一应用链的跨链交易进行管理,协调第一应用链上的跨链交易的执行顺序。
当第一跨链业务合约发起跨链交易时,第一应用链可以通过对应的跨链网关将跨链交易发送到中继链;中继链可以将接收到的跨链交易转发至跨链交易的目的链,也就是第二应用链。
上述跨链交易具有对应的交易信息,交易信息可以包括交易序号、交易ID、交易内容以及交易的调用信息等。其中,交易序号可以根据第一应用链发送至第二应用链的跨链交易的顺序得到。例如,第一应用链发送至第二应用链的第一个跨链交易的交易序号为1;第一应用链发送至第二应用链的第二个跨链交易的交易序号为2;第一应用链发送至第二应用链的第n个跨链交易的交易序号为n。因此,跨链交易的交易序号可以反映出跨链交易的执行顺序。
在一种可能的实现方式中,第一跨链合约中可以包括多个计数器,分别用于对发起的跨链交易、返回的交易回执、收到的跨链交易以及接收到的来自中继链的回滚通知进行计数。当业务合约发起跨链交易后,跨链合约可以更新记录第一应用链向第二应用链发起的跨链交易数量的计数器;使该计数器的计数值增加1;为方便描述,该计数器的计数值记为第二计数值。
示例性地,本实施例中应用链中的跨链合约中的计数器可以包括:outCounter、callbackCounter、inCounter和dstRollbackCounter;其中:outCounter可以用于记录当前应用链服务作为来源服务,向其他链的服务发起跨链请求的数量;callbackCounter可以记录当前应用链服务作为来源服务,向其他链的服务跨链接收到的反馈信息数量;inCounter可以记录当前应用链服务作为目的服务,收到其他链的服务跨链交易的数量;dstRollbackCounter可以用于中继链发现目的链执行跨链交易超时后,向目的链发送超时回滚通知,目的链回滚的记录。
除了记录相应跨链交易的序号,由于跨链合约还需要跨合约调用业务合约使其执行相应的调用、回调、回滚操作,所以跨链合约还需要记录跨链交易的调用、回调以及回滚的信息以及跨链交易执行的结果信息以便进行查询。示例性地,跨链合约中还可以包括outMessages和receiptMessages,其中outMessages可以用于记录当前应用链向外抛出跨链交易的ID以及交易的调用/回调/回滚信息;receiptMessages可以用于记录当前应用链接收到跨链交易的ID以及执行跨链交易后返回的回执信息。
本实施例中,第一跨链合约中可以包括第一跨链交易信息,即上述outMessages,第一跨链交易信息中可以记录第一应用链发起的跨链交易的交易信息。业务合约发起跨链交易后,跨链合约可以将跨链交易的交易信息记录在第一跨链交易信息中。当跨链交易丢失时,可以根据第一跨链交易信息,重新发送跨链交易。
在一种可能的实现方式中,第一应用链通过第一跨链网关将跨链交易发送到中继链;中继链中具有相应的计数器,来记录第一应用链发送至第二应用链的跨链交易的交易数量,该计数器的值为接收交易计数值。由于网络不稳定,跨链交易可能会丢失;或者第一跨链网关发生故障,也会造成无法将跨链交易转交给中继链。
第一应用链对应的第一跨链网关重启时,第一应用链可以获取接收交易计数值和第二计数值,即outCounter的值。若第二计数值和接收交易计数值不相等,则说明第一应用跨链发起的某些跨链交易并未被发送到中继链中,此时,可以根据第一跨链交易信息,将交易序号大于接收交易计数值且小于或等于第二计数值的跨链交易通过第一跨链网关发送至中继链。
S202,接收所述中继链针对所述第二应用链返回的反馈信息,所述反馈信息包括具有交易序号和反馈结果。
反馈信息可以包括来自第二应用链的交易回执或者来自中继链的超时回滚通知。第二应用链为跨链交易的目的链,可以对跨链交易进行执行,得到交易执行结果;然后生成交易回执。在生成交易回执后,第二应用链可以将交易回执发送至中继链;中继链接收到交易回执后,可以将交易回执发送给第一应用链。
交易回执具有交易序号,交易回执的交易序号可以用于标识第二应用链发送至第一应用链的跨链交易的顺序。例如,第二应用链返回至第一应用链的第一个交易回执的交易序号为1;第二应用链返回至第一应用链的第二个交易回执的交易序号为2;第二应用链返回至第一应用链的第n个交易回执的交易序号为n。即,交易序号可以标识第二应用链发送给第一应用链的交易回执的数量。
跨链交易具有相应的超时时间,中继链在接收到跨链交易后,可以将跨链交易发送至第二应用链。若中继链在超时时间内未接收到第二应用链返回的交易回执,则可以确定该跨链交易执行失败,中继链可以分别向第一应用链和第二应用链分别返回超时回滚通知。超时回滚通知也具有交易序号,该超时回滚通知的序号可以与对应的跨链交易的交易序号匹配。超时回滚通知的反馈结果为超时回滚。
S203,确定第一跨链合约中记录的第一计数值,所述第一计数值用于标识所述第一应用链接收到的反馈信息的数量。
对于一个跨链交易而言,第一应用链可以接收到一个对应的反馈信息,上述第一计数值用于记录接收到反馈信息的数量,即callbackCounter的值。
第一计数值的初始值可以为0,每当第一应用链接收到对应的反馈信息并对反馈信息验证通过后,可以将第一计数值加一。也是就是说,该第一计数值也可以相当于第一应用链处理过的反馈信息的数量。
S204,若所述交易序号与所述第一计数值匹配,则根据所述交易执行结果对所述第一业务合约进行调用,以在所述第一应用链上处理所述跨链交易。
由于第一计数值可以标识第一应用链已经接收到的反馈信息的数量,而反馈信息的交易序号可以标识发送至第一应用链的反馈信息的数量;因此,第一计数值的当前值加一即为下一个接收到的反馈信息的交易序号。若第一计数值加一等于交易序号,则说明第一计数值与交易序号匹配,接收到的交易回执的顺序正确。
本实施例中,中继链中包括多个共识节点,中继链可以采用多个共识节点对需要转发的跨链交易、交易回执或超时回滚通知进行多签,从而使得跨链交易、交易回执或超时回滚通知中可以携带中继链的签名信息。因此第一应用链接收到的反馈信息中会携带中继链的签名信息,基于该签名信息,可以对该反馈信息的存在性和有效性进行验证。
若第一计数值与交易序号匹配,则第一应用链可以对反馈信息的签名信息进行验证;在第一应用链注册到中继链中时,可以获取到中继链中签名的验签方式,从而可以采用该验签方式对该签名信息进行验证。比如中继链可以采用公钥密码体制对其进行签名,则第一应用链可以获取到各个共识节点的公钥;从而在接收到交易回执后,采用各个共识节点的公钥对签名信息进行验证。
若反馈信息的签名信息通过验证,则根据反馈结果调用第一业务合约的相应接口,以在第一应用链上处理跨链交易。具体地,若反馈结果为交易成功,则表明第二应用链已经成功执行该跨链交易,第一应用链可以调用第一业务合约的回调接口,以完成跨链交易,从而确保了该跨链交易在第一应用链和第二应用链上均执行成功。若反馈结果为交易失败或超时回滚,则表明跨链交易在第二应用链上执行失败,第一应用链可以调用第一业务合约的回滚接口,以回滚跨链交易,从而确保该跨链交易在第一应用链和第二应用链均执行失败。
若第一计数值与交易序号不匹配,则可以判断第一计数值和交易序号的关系。
若第一计数值加一大于交易序号,且该反馈信息为交易回执,则说明该交易回执已经被第一应用链处理过,此时可以丢弃该交易回执,从而避免对交易回执的重复处理。
若第一计数值加一小于交易序号,且该反馈信息为交易回执,则说明还存在未达到第一应用链的交易回执,此时,可以等待交易回执;也可以通过中继链向第二应用链发送缺失的交易回执的交易序号,以指示第二应用链重新发送缺失的交易回执。
若第一计数值与交易序号不匹配且该反馈信息为超时回滚通知,则可以直接丢弃该超时回滚通知。
示例性地,第一应用链向第二应用链发送跨链交易,该跨链交易的交易序号为16,此时第一应用链中的outCounter=16,即第一应用链之前发送给第二应用链的跨链交易已经有15个,则第二应用链中的inCounter=15;第一应用链发送至第二应用链的跨链交易已经15个,若这15个跨链交易均已经处理,则此时第一应用链的outCounter=15。
当第二应用链接收到该跨链交易时,可以确定该跨链交易的交易序号为16,而inCounter+1也为16,则说明该跨链交易确实为下一个要处理的跨链交易,此时,第二应用链执行跨链交易并生成交易回执,交易回执的交易序号可以为16,第二应用链的inCounter更新为16。若第一应用链接收待第二应用链通过中继链返回的交易回执,则可以确定该交易回执的交易序号为16;而此时第一应用链的outCounter+1也为16,第一应用链可以根据该交易回执对跨链交易进行处理。
在另一种情况下,中继链在超时时间内未接收到来自第二应用链的交易回执,则可以分别向第一应用链和第二应用链返回超时回滚通知,超时回滚通知的交易序号为16,反馈结果为超时回滚。第一中继链接收到超时回滚通知后,确定交易序号16=outCounter+1,则可以根据超时回滚调用回滚接口以回滚该跨链交易。
第一应用链在处理完跨链交易对应的反馈信息后,可以更新outCounter,即outCounter=16。
S205,更新所述第一计数值。
反馈信息的签名信息验证通过后,表明第一应用链会对该反馈信息进行处理,可以将第一计数值加一。更新后的第一计数值用于在下一次接收到来自第二应用链的反馈信息时,确定反馈信息的序号是否正确。
在一种可能的实现方式中,跨链交易具有超时时间,中继链在将跨链交易转发至第二应用链时,若在超时时间之内未接收到交易回执,可以将该跨链交易的执行结果确定为交易失败,然后向第一应用链和第二应用链发送回滚通知。
回滚通知也可以具有交易序号,第一跨链合约中可以包括第一应用链在接收到回滚通知后,确定第四计数值,也就是dstRollbackCounter的值;若第四计数值与回滚通知的交易序号匹配,则可以对该回滚通知的签名信息进行验证;在签名信息验证通过后,可以根据回滚通知调用第一业务合约的回滚接口,从而对跨链交易进行回滚。
本申请实施例中,是以交易序号加一递增为例对本申请方案进行说明的,本领域技术人员应当清楚,交易序号若能够确定对应的顺序,则其更新方式可以以其他任何可能的方式进行。
本申请实施例中,反馈信息具有对应的交易序号,第一跨链合约中可以包括第一计数值,第一计数值可以标识第一应用链接收到的反馈信息的数量;从而可以根据反馈信息的交易序号和第一计数值确定该反馈信息是否已经处理以及是否存在丢失的反馈信息,避免对反馈信息的重复处理或者遗漏;当交易序号与第一计数值匹配时,第一应用链才会根据反馈信息的交易处理结果对跨链交易进行回调或者回滚,从而保障了第一应用链和第二应用链上跨链交易的状态同步;保障了跨链事务的原子性。此外本实施例中,基于第二计数值,可以在跨链交易由于网络不稳定导致丢失时,通过跨链合约对跨链交易进行恢复并重新发送。本实施例中,应用链中的跨链合约可以对跨链交易以及反馈信息进行计数,且跨链交易和反馈信息具有与计数值匹配的交易序号,因此可以维护了跨链服务的有序性。
参照图3,示出了本申请实施例提供的另一种跨链交易的处理方法的步骤流程示意图,具体可以包括如下步骤:
S301,接收由中继链转发的跨链交易,所述跨链交易具有交易序号。
本实施例的执行主体为第二应用链,在本申请中,为了便于阐述方案,采用第二应用链表示接收跨链交易的应用链,也就是第二应用链为跨链交易的目的链。本领域技术人员应当清楚,第二应用链作为应用链,既可以是跨链交易的来源链,也可以是跨链交易的目的链。即,第二应用链也可以实现S201-S205中的步骤。
跨链交易具有交易序号,由上述S202步骤中的阐述可知,交易序号可以标识该跨链交易的执行顺序;另外,由于交易序号是根据跨链交易的执行顺序依次加一得到,则交易序号可以相当于第一应用链发送至第二应用链的跨链交易的数量。
第二应用链可以通过中继链接收来自第一应用链的跨链交易,该跨连交易之所以发送到第二应用链,是因为该跨链交易的执行需要第二应用链中的业务合约提供合约服务。
S302,获取第二跨链合约中记录的第三计数值,所述第三计数值用于标识所述第二应用链接收到的跨链交易的数量。
第二跨连合约中可以包括第三计数值,即incounter的值。第三计数值的初始值可以为0,每当接收到一个来自第一应用链的跨链交易并验证通过后,可以将该第三计数值加1,使得第三计数值可以标识第二应用链接收到的来自第一应用链的跨链交易的数量。
在本申请实施例中,应用链接收到来自其他应用链跨链交易或交易回执具体可以表现为:对该跨链交易或者交易回执验证通过。
S303,若所述交易序号与所述第三计数值匹配,则执行所述跨链交易,得到交易回执。
交易序号可以相当于第一应用链发送至第二应用链的跨链交易的数量,而第三计数值可以标识第二应用链接收到的来自第一应用链的跨链交易的数量。若跨连交易按照正常的执行顺序到达第二应用链,该跨链交易的交易序号应当等于第三计数值加1。若跨链交易的交易序号小于第三计数值加1,则说明第二应用链已经处理过该跨链交易,为了避免对跨链交易的重复执行,可以将该跨链交易丢弃;若跨链交易的交易序号大于第三计数值加一,则说明中间存在未处理的跨链交易;则第二应用链可以通过中继链向第一应用链发送跨链交易请求,以指示第一应用链将交易序号大于第三计数值且小于该交易序号的跨链交易发送至第二应用链,从而使得第二应用链能够对跨链交易顺序执行。
若交易序号等于第三计数值加一,则表明交易序号于第三计数值匹配。确定交易序号于第三计数值匹配后,为了确保该跨链交易安全有效,需要对该跨链交易进行验证。跨链交易可以包括签名信息,该签名信息可以由中继链的多个共识节点通过预设的签名规则对该跨链交易签名得到。其中,签名规则可以由第二应用链和中继链预先约定,第二应用链中可以存储于签名规则对应的验证算法。第二应用链可以按照验证算法对签名信息进行验证,若跨链交易的签名信息通过验证,则调用第二应用链的第二业务合约执行跨链交易,得到交易执行结果;然后根据交易执行结果,生成交易回执。其中,第二业务合约时该跨链交易完成交易时需要调用的业务合约。在一种可能的实现方式中,跨链交易可以包括第二业务合约的描述信息,以便第二应用链调用对应的第二业务合约。
交易执行结果可以包括交易成功和交易失败。若交易执行结果为交易失败,则可以调用第二业务合约的回滚接口,以将第二应用链恢复至跨链交易执行之前的状态。当第一应用链接收到交易回执后,也可以根据交易执行结果对跨链交易进行回滚,从而使得第一应用链和第二应用链都恢复到跨链交易执行前的状态,保障跨链交易的原子性。
S304,通过所述中继链将所述交易回执发送至第一应用链,所述第一应用链为所述跨链交易的来源链,所述第一应用链用于根据所述交易回执处理所述跨链交易。
在生成交易回执后,第二应用链可以将交易回执发送至中继链;中继链接收到交易回执后,可以将交易回执发送至第一应用链。第一应用链接收到交易回执后,可以根据交易执行结果对跨链交易进行回滚或者完成跨链交易,从而保证了跨链交易在第一应用链和第二应用链上的状态一致。
S305,更新所述第三计数值。
将第三计数值加一,从而标识第二应用链已经接收到该跨链交易。新的第三计数值可以用于在第二应用链下一次接收到来自第一应用链的跨链交易时,根据交易序号和第三计数值确定跨链交易的顺序是否正确。
在一种可能的实现方式中,跨链交易具有超时时间,中继链在将跨链交易转发至第二应用链时,若在超时时间之内未接收到交易回执,可以将该跨链交易的执行结果确定为交易失败,然后想第一应用链和第二应用链发送回滚通知。
第二应用链当接收到来自中继链的回滚通知时,可以确定回滚通知对应的待回滚跨链交易的交易序号。若第三计数值小于待回滚跨链交易的交易序号,则说明第二应用链还未接收到该待回滚跨链交易,未对该待回滚跨链交易进行处理,则可以直接向中继链返回待回滚跨链交易回滚成功的信息;若第三计数值大于或者等于待回滚跨链交易的交易序号,则说明该待回滚交易已经被执行,则可以调用待回滚跨链交易对应的业务合约,对待回滚交易进行回滚。
本实施例中,跨链交易具有交易序号,应用链的跨链合约中可以记录接收到的跨链交易的数量;因此,基于交易序号和跨链合约记录的信息,可以确定跨链交易的顺序是否正确,从而可以按照正确的顺序执行跨链交易;由于按照顺序处理跨链交易,则可以确保每个交易序号的跨链交易只被处理一次,而且当存在遗漏的跨链交易时可以及时发现并处理。本实施例基于对跨链交易的定序执行或者回滚,避免了由于网络不稳定而造成的跨链交易的重复调用或者遗漏。
参照图4,示出了本申请实施例提供的另一种跨链交易的处理方法的步骤流程示意图,具体可以包括如下步骤:
S401,当接收到来自第一应用链的跨链交易时,对所述跨链交易进行验证,所述跨链交易具有超时时间。
本实施例的执行主体为中继链,中继链可以为应用链提供跨链中级服务。需要中继链提供跨链中继服务的应用链可以预先在中继链中注册。
第一应用链可以通过中继链向第二应用链发送跨链交易。第一应用链发送的跨链交易中可以携带有第一应用链的验证信息。中继链可以基于该验证消息对跨链交易进行有效性验证。
由于不同的区块链的架构不同,中继链需要对不同的应用链采取不同的验证措施,因此应用链在向中继链注册时,可以同时向中继链注册本链验证规则,中继链会对该验证规则进行审核,审核通过后将会部署在中继链上,之后该链发出的跨链交易在中继链上会用该验证规则对这些交易进行有效性检查。
中继链还可以对跨链交易进行存在性检查。一般来说,不同的应用链在发送跨链交易时会对自身的验证信息做不同形式的封装,例如跨链交易可以携带proof,proof为链上共识节点签名过后的默克尔树证明,用于证明该笔交易确实在应用链上存在,中继链可以基于该proof对跨链交易进行存在性验证。
S402,若所述跨链交易通过验证,则通过所述中继链的多个共识节点对所述跨链交易进行签名。
跨链交易通过存在性和有效性验证后,中继链可以认为该跨链交易安全可信,中继链可以基于多个共识节点对该跨链交易进行签名;当第二应用链接收到该跨链交易后,可以通过对签名信息的验证,来验证跨链交易的存在性和有效性。
在一种可能的实现方式中,中继链的每个共识节点具有公钥和私钥;可以采用多个共识节点的私钥对跨链交易进行签名,得到跨链交易的聚合签名;该聚合签名可以根据签名的共识节点的公钥进行验证。注册在中继链中的应用链可以获得多个共识节点的公钥,从而可以在接收到跨链交易时对聚合签名进行验证。
S403,将签名后的所述跨链交易发送至第二应用链,所述第二应用链为所述跨链交易的目的链。
S404,在所述超时时间内,若接收到所述第二应用链针对所述跨链交易返回的交易回执,则对所述交易回执进行验证。
S405,若所述交易回执通过验证,则通过多个所述共识节点对所述交易回执进行签名。
跨链交易可以包括超时时间,在超时时间内,中继链可以接收该跨链交易的交易回执。当跨链交易接收到交易回执后,可以采用与S402-S403中相同的方法对交易回执进行验证和签名。
在一种可能的实现方式中,当跨链交易或交易回执没有通过验证时,可以确定该跨链交易或交易回执不合法,从而丢弃该跨链交易或者交易回执。
S406,将签名后的所述交易回执发送至所述第一应用链,所述第一应用链用于根据所述交易回执完成所述跨链交易或对所述跨链交易进行回滚。
若在超时时间之内,中继链没有接收到该跨链交易的交易回执,中继链可以确定该跨链交易执行失败,则可以分别向第一应用链和第二应用链发送回滚通知,以指示第一应用链和第二应用链对该跨链交易进行回滚。
为了保障跨链交易的安全可信,一般需要对跨链交易进行验证。不同的应用链存在不同的验证规则,若由应用链来对接收到的跨链交易进行验证,则需要在应用链中封装多个其他应用链的验证规则,使得应用链的负担增大。而在本实施例中,可以采用中继链对跨链交易或者交易回执进行验证;中继链在验证通过后,可以对跨链交易或者交易回执进行签名;这样应用链在接收到跨链交易或者交易回执后,可以根据签名对进行验证。采用本实施例中的方法,应用链中只需要存储中继链签名的验证规则,然后根据该规则对所有接收到的跨链交易或者交易回执进行验证,应用链中不需要存储其他多个应用链的验证规则,从而减轻了应用链的负担。
通过第三方中继链对跨链交易进行有效性验证,并对跨链交易进行签名后转发至应用链跨链合约进行验证执行,能够有效解决由于网络不稳定导致跨链交易验证难的问题。
需要说明的是,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
为了更好地对本申请中的方法进行说明,下面以图1中的跨链系统作为应用场景,以业务链A向业务链B发送跨链交易为例,对本申请中的方法进行说明。
跨链交易执行成功时的跨链交易处理流程为:
业务链A调用业务合约A发起跨链交易,跨链交易中携带有相应的超时时间。
跨链合约A记录该笔跨链交易,并更新outCounter、outMessage;然后抛出该跨链交易到中继链。
中继链接收该跨链交易后,首先验证该笔跨链交易的存在性与有效性;若该笔跨链交易的有效性和存在性验证通过后,中继链中的共识节点可以对跨链交易进行多签并将签名后的跨链交易转发至业务链B的跨链合约B。
跨链合约B收到该笔跨链交易,首先检查合约中记录的inCounter+1是否为该笔跨链交易的序号;若inCounter+1为该笔跨链交易的序号,则验证中继链多签是否合法;若中继链多签验证通过后,则更新合约inCounter并调用业务合约B相应接口;若接口调用成功,则将调用结果记录在receiptMessages中并抛出跨链交易回执给中继链。
中继链接收该交易回执后,首先验证跨链交易回执的存在性与有效性;交易回执的存在性和有效性验证通过后,中继链中的共识节点对交易回执进行多签,并将交易回执转发至跨链合约A。
跨链合约A收到该笔交易回执,首先检查合约中记录的callbackCounter+1是否为该笔交易回执的序号;若callbackCounter+1为该笔交易回执的序号,则验证中继链多签是否合法;若中继链多签验证通过,则可以更新合约中的callbackCounter并调用业务合约A中的回调接口,完成该笔跨链交易;至此跨链交易在业务链A和业务链B上均执行成功。
跨链交易执行失败时的跨链交易处理流程为:
业务链A调用业务合约A发起跨链交易,跨链交易中携带有相应的超时时间。
跨链合约A记录该笔跨链交易,并更新outCounter、outMessage;然后抛出该跨链交易到中继链。
中继链接收该跨链交易后,首先验证该笔跨链交易的存在性与有效性;若该笔跨链交易的有效性和存在性验证通过后,中继链中的共识节点可以对跨链交易进行多签并将签名后的跨链交易转发至业务链B的跨链合约B。
跨链合约B收到该笔跨链交易,首先检查合约中记录的inCounter+1是否为该笔跨链交易的序号;若inCounter+1为该笔跨链交易的序号,则验证中继链多签是否合法;若中继链多签验证通过后,则更新合约inCounter并调用业务合约B相应接口;若接口调用失败,业务合约B会自动revert并恢复状态至跨链交易执行前,跨链合约B将调用结果记录在receiptMessages中并抛出跨链交易回执给中继链。
中继链接收该交易回执后,首先验证跨链交易回执的存在性与有效性;交易回执的存在性和有效性验证通过后,中继链中的共识节点对交易回执进行多签,并将交易回执转发至跨链合约A。
跨链合约A收到该笔交易回执,首先检查合约中记录的callbackCounter+1是否为该笔交易回执的序号;若callbackCounter+1为该笔交易回执的序号,则验证中继链多签是否合法;若中继链多签验证通过,则可以更新合约中的callbackCounter并调用业务合约A中的回滚接口,回滚该笔跨链交易;至此跨链交易在业务链A和业务链B上均执行失败。
跨链交易超时回滚的流程如下:
业务链A调用业务合约A发起跨链交易,跨链交易中携带有相应的超时时间。
跨链合约A记录该笔跨链交易,并更新outCounter、outMessage;然后抛出该跨链交易到中继链。
中继链接收该跨链交易后,首先验证该笔跨链交易的存在性与有效性;若该笔跨链交易的有效性和存在性验证通过后,中继链中的共识节点可以对跨链交易进行多签并将签名后的跨链交易转发至业务链B的跨链合约B。
由于各种原因,例如网络状况不佳,中继链在超时时间后没有收到业务链B提交的交易回执,则中继链作为协调者,可以生成跨链交易回滚通知,并对该通知进行多签后发送给跨链合约A和跨链合约B,通知业务链A和业务链B进行回滚。
跨链合约A收到跨链交易回滚通知后,首先检查合约中记录的callbackCounter+1是否为该笔跨链交易回滚通知的序号;若callbackCounter+1为该笔跨链交易回滚通知的序号,则验证中继链多签是否合法;若中继链多签验证通过后,可以更新合约中的callbackCounter并调用业务合约A中的回滚接口,对跨链交易进行回滚。
跨链合约B收到跨链交易回滚通知后,首先检查合约中记录的inCounter是否大于等于该笔跨链交易回滚通知的序号,即检查该笔跨链交易是否已经在业务链B执行。若inCounter大于等于该笔跨链交易回滚通知的序号,表明该笔跨链交易已经在业务链B上执行过,则可以验证中继链多签是否合法并更新合约中记录的dstRollbackCounter,然后调用业务合约B相应接口的回滚逻辑,最后跨链合约B将调用结果记录在receiptMessages中并通知中继链业务链B回滚成功。若inCounter小于该笔跨链交易回滚通知的序号,表明该笔跨链交易还未在业务链B上执行过,则不需要执行任何操作,只需要更新合约中记录的dstRollbackCounter、inCounter以及receiptMessages,并通知中继链业务链B回滚成功。
本实施例中,业务合约通过调用跨链合约相应接口,并明确要调用目的链业务合约的相应接口与参数,明确相应的回调/回滚接口与参数,实现跨链交易的发起。业务合约供其他应用链进行跨链调用的接口需要实现跨链交易正常执行的逻辑以及相应的超时回滚逻辑。跨链交易在目的链执行失败会自动revert,因此失败回滚主要针对来源链,超时回滚是由中继链进行协调,然后通知来源链与目的链进行回滚。
基于以上示例,本申请中通过计数器counter我们实现了跨链交易的定序执行以及失败/超时回滚。
参照图5,示出了本申请实施例提供的一种跨链交易的处理装置的示意图,该装置可以应用于第一应用链,具体可以包括发送模块51、接收模块52、确定模块53、调用模块54和更新模块55,其中:
发送模块51,用于当第一业务合约发起跨链交易时,通过中继链将所述跨链交易发送至第二应用链,所述第二应用链为所述跨链交易的目的链;
接收模块52,用于接收所述中继链针对所述跨链交易返回的反馈信息,所述反馈信息包括交易序号和反馈结果;
确定模块53,用于确定第一跨链合约中记录的第一计数值,所述第一计数值用于标识所述第一应用链接收到的反馈信息的数量;
调用模块54,用于若所述交易序号与所述第一计数值匹配,则根据所述反馈结果对所述第一业务合约进行调用,以在所述第一应用链上处理所述跨链交易;
更新模块55,用于更新所述第一计数值。
在一种可能的实现方式中,上述调用模块54包括:
验证子模块,用于对所述交易回执的签名信息进行验证,所述签名信息由所述中继链的多个共识节点对所述交易回执进行签名得到;
接口调用子模块,用于若所述交易回执的签名信息通过验证,则根据所述反馈结果调用所述第一业务合约的相应接口,以在所述第一应用链上处理所述跨链交易。
在一种可能的实现方式中,上述接口调用子模块包括:
回调单元,用于若所述反馈结果为交易成功,则调用所述第一业务合约的回调接口,以完成所述跨链交易;
回滚单元,用于若所述反馈结果为交易失败,则调用所述第一业务合约的回滚接口,以回滚所述跨链交易。
在一种可能的实现方式中,上述装置还包括:
跨链合约更新模块,用于在所述第一跨链合约中,更新所述第一应用链的第一跨链交易信息和第二计数值,所述第一跨链交易信息用于描述所述第一应用链作为来源链发起的跨链交易的信息,所述第二计数值用于标识所述第一应用链发起的跨链交易的数量;
计数值确定模块,用于确定所述第二计数值和所述中继链中的接收交易计数值,所述接收交易计数值用于标识所述中继链接收到的来自所述第一应用链的跨链交易的数量;
重新发送模块,用于若所述第二计数值和所述接收交易计数值不相等,则根据所述第一跨链交易信息,将交易序号大于所述接收交易计数值且小于或等于所述第二计数值的跨链交易通过所述第一跨链网关发送至所述中继链。
参照图6,示出了本申请实施例提供的一种跨链交易的处理装置的示意图,该装置应用于第二应用链,具体可以包括接收模块61、获取模块62、生成模块63、发送模块64和更新模块65,其中:
接收模块61,用于接收由中继链转发的跨链交易,所述跨链交易具有交易序号;
获取模块62,用于获取第二跨链合约中记录的第三计数值,所述第三计数值用于标识所述第二应用链接收到的跨链交易的数量;
生成模块63,用于若所述交易序号与所述第三计数值匹配,则执行所述跨链交易,得到交易回执;
发送模块64,用于通过所述中继链将所述交易回执发送至第一应用链,所述第一应用链为所述跨链交易的来源链,所述第一应用链用于根据所述交易回执处理所述跨链交易;
更新模块65,用于更新所述第三计数值。
在一种可能的实现方式中,上述生成模块63包括:
验证子模块,用于对所述跨链交易的签名信息进行验证,所述签名信息由所述中继链的多个共识节点对所述跨链交易进行签名得到;
调用子模块,用于若所述跨链交易的签名信息通过验证,则调用所述第二应用链的第二业务合约执行所述跨链交易,得到交易执行结果;
生成子模块,用于根据所述交易执行结果,生成所述交易回执。
在一种可能的实现方式中,上述装置还包括:
回滚模块,用于若所述交易执行结果为交易失败,则调用所述第二业务合约的回滚接口,以将所述第二应用链恢复至所述跨链交易执行之前的状态。
在一种可能的实现方式中,上述装置还包括:
回滚通知接收模块,用于当接收到来自中继链的回滚通知时,确定所述回滚通知对应的待回滚跨链交易的交易序号;
第一回滚模块,用于若所述第三计数值小于所述待回滚跨链交易的交易序号,则向所述中继链返回所述待回滚跨链交易回滚成功的信息;
第二回滚模块,用于若所述第三计数值大于或者等于所述待回滚跨链交易的交易序号,则调用所述待回滚跨链交易对应的业务合约,对所述待回滚交易进行回滚。
参照图7,示出了本申请实施例提供的一种跨链交易的处理装置的示意图,该装置可以应用于中继链,具体可以包括第一验证模块71、第一签名模块72、第一发送模块73、第二验证模块74、第二签名模块75和第二发送模块76,其中:
第一验证模块71,用于当接收到来自第一应用链的跨链交易时,对所述跨链交易进行验证,所述跨链交易具有超时时间;
第一签名模块72,用于若所述跨链交易通过验证,则通过所述中继链的多个共识节点对所述跨链交易进行签名;
第一发送模块73,用于将签名后的所述跨链交易发送至第二应用链,所述第二应用链为所述跨链交易的目的链;
第二验证模块74,用于在所述超时时间内,若接收到所述第二应用链针对所述跨链交易返回的交易回执,则对所述交易回执进行验证;
第二签名模块75,用于若所述交易回执通过验证,则通过多个所述共识节点对所述交易回执进行签名;
第二发送模块76,用于将签名后的所述交易回执发送至所述第一应用链,所述第一应用链用于根据所述交易回执完成所述跨链交易或对所述跨链交易进行回滚。
在一种可能的实现方式中,上述装置还包括:
回滚通知发送模块,用于若在所述超时时间内,未接收到所述第二应用链针对所述跨链交易返回的交易回执,则向所述第一应用链和所述第二应用链发送针对所述跨链交易的回滚通知。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述得比较简单,相关之处参见方法实施例部分的说明即可。
图8为本申请一实施例提供的计算机设备的结构示意图。如图8所示,该实施例的计算机设备8包括:至少一个处理器80(图8中仅示出一个)处理器、存储器81以及存储在所述存储器81中并可在所述至少一个处理器80上运行的计算机程序82,所述处理器80执行所述计算机程序82时实现上述任意各个方法实施例中的步骤。
所述计算机设备8可以是桌上型计算机、笔记本、掌上电脑及云端计算机设备等计算设备。该计算机设备可包括,但不仅限于,处理器80、存储器81。本领域技术人员可以理解,图8仅仅是计算机设备8的举例,并不构成对计算机设备8的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如还可以包括输入输出设备、网络接入设备等。
所称处理器80可以是中央处理单元(Central Processing Unit,CPU),该处理器80还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
所述存储器81在一些实施例中可以是所述计算机设备8的内部存储单元,例如计算机设备8的硬盘或内存。所述存储器81在另一些实施例中也可以是所述计算机设备8的外部存储设备,例如所述计算机设备8上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,所述存储器81还可以既包括所述计算机设备8的内部存储单元也包括外部存储设备。所述存储器81用于存储操作系统、应用程序、引导装载程序(BootLoader)、数据以及其他程序等,例如所述计算机程序的程序代码等。所述存储器81还可以用于暂时地存储已经输出或者将要输出的数据。
本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现可实现上述各个方法实施例中的步骤。
本申请实施例提供了一种计算机程序产品,当计算机程序产品在计算机设备上运行时,使得计算机设备执行时实现可实现上述各个方法实施例中的步骤。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
以上所述实施例仅用以说明本申请的技术方案,而非对其限制。尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围,均应包含在本申请的保护范围之内。
Claims (10)
1.一种跨链交易的处理方法,其特征在于,应用于第一应用链,所述方法包括:
当第一业务合约发起跨链交易时,通过中继链将所述跨链交易发送至第二应用链,所述第二应用链为所述跨链交易的目的链;
接收所述中继链针对所述跨链交易返回的反馈信息,所述反馈信息包括交易序号和反馈结果;
确定第一跨链合约中记录的第一计数值,所述第一计数值用于标识所述第一应用链接收到的反馈信息的数量;
若所述交易序号与所述第一计数值匹配,则根据所述反馈结果对所述第一业务合约进行调用,以在所述第一应用链上处理所述跨链交易;
更新所述第一计数值。
2.如权利要求1所述的方法,其特征在于,所述根据所述反馈结果对所述第一业务合约进行调用,包括:
对所述反馈信息的签名信息进行验证,所述签名信息由所述中继链的多个共识节点对所述反馈信息进行签名得到;
若所述反馈信息的签名信息通过验证,则根据所述反馈结果调用所述第一业务合约的相应接口,以在所述第一应用链上处理所述跨链交易。
3.如权利要求2所述的方法,其特征在于,所述根据所述反馈结果调用所述第一业务合约的相应接口,以在所述第一应用链上处理所述跨链交易,包括:
若所述反馈结果为交易成功,则调用所述第一业务合约的回调接口,以完成所述跨链交易;
若所述反馈结果为交易失败或超时回滚,则调用所述第一业务合约的回滚接口,以回滚所述跨链交易。
4.如权利要求1-3任一项所述的方法,其特征在于,所述方法还包括:
在所述第一跨链合约中,更新所述第一应用链的第一跨链交易信息和第二计数值,所述第一跨链交易信息用于描述所述第一应用链作为来源链发起的跨链交易的信息,所述第二计数值用于标识所述第一应用链发起的跨链交易的数量;
确定所述第二计数值和所述中继链中的接收交易计数值,所述接收交易计数值用于标识所述中继链接收到的来自所述第一应用链的跨链交易的数量;
若所述第二计数值和所述接收交易计数值不相等,则根据所述第一跨链交易信息,将交易序号大于所述接收交易计数值且小于或等于所述第二计数值的跨链交易通过所述第一跨链网关发送至所述中继链。
5.一种跨链交易的处理方法,其特征在于,应用于第二应用链,所述方法包括:
接收由中继链转发的跨链交易,所述跨链交易具有交易序号;
获取第二跨链合约中记录的第三计数值,所述第三计数值用于标识所述第二应用链接收到的跨链交易的数量;
若所述交易序号与所述第三计数值匹配,则执行所述跨链交易,得到交易回执;
通过所述中继链将所述交易回执发送至第一应用链,所述第一应用链为所述跨链交易的来源链,所述第一应用链用于根据所述交易回执处理所述跨链交易;
更新所述第三计数值。
6.如权利要求5所述的方法,其特征在于,所述方法还包括:
当接收到来自中继链的回滚通知时,确定所述回滚通知对应的待回滚跨链交易的交易序号;
若所述第三计数值小于所述待回滚跨链交易的交易序号,则向所述中继链返回所述待回滚跨链交易回滚成功的信息;
若所述第三计数值大于或者等于所述待回滚跨链交易的交易序号,则调用所述待回滚跨链交易对应的业务合约,对所述待回滚交易进行回滚。
7.一种跨链交易的处理方法,其特征在于,应用于中继链,所述方法包括:
当接收到来自第一应用链的跨链交易时,对所述跨链交易进行验证,所述跨链交易具有超时时间;
若所述跨链交易通过验证,则通过所述中继链的多个共识节点对所述跨链交易进行签名;
将签名后的所述跨链交易发送至第二应用链,所述第二应用链为所述跨链交易的目的链;
在所述超时时间内,若接收到所述第二应用链针对所述跨链交易返回的交易回执,则对所述交易回执进行验证;
若所述交易回执通过验证,则通过多个所述共识节点对所述交易回执进行签名;
将签名后的所述交易回执发送至所述第一应用链,所述第一应用链用于根据所述交易回执完成所述跨链交易或对所述跨链交易进行回滚。
8.如权利要求7所述的方法,其特征在于,所述方法还包括:
若在所述超时时间内,未接收到所述第二应用链针对所述跨链交易返回的交易回执,则向所述第一应用链和所述第二应用链发送针对所述跨链交易的回滚通知。
9.一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1-8任一项所述的方法。
10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-8任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210899739.5A CN115310974A (zh) | 2022-07-28 | 2022-07-28 | 一种跨链交易的处理方法、计算机设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210899739.5A CN115310974A (zh) | 2022-07-28 | 2022-07-28 | 一种跨链交易的处理方法、计算机设备及介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115310974A true CN115310974A (zh) | 2022-11-08 |
Family
ID=83859013
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210899739.5A Pending CN115310974A (zh) | 2022-07-28 | 2022-07-28 | 一种跨链交易的处理方法、计算机设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115310974A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116861390A (zh) * | 2023-08-09 | 2023-10-10 | 之江实验室 | 基于聚合签名的跨区块链批量交易认证方法和装置 |
-
2022
- 2022-07-28 CN CN202210899739.5A patent/CN115310974A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116861390A (zh) * | 2023-08-09 | 2023-10-10 | 之江实验室 | 基于聚合签名的跨区块链批量交易认证方法和装置 |
CN116861390B (zh) * | 2023-08-09 | 2024-03-22 | 之江实验室 | 基于聚合签名的跨区块链批量交易认证方法和装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112446785B (zh) | 跨链交易方法、系统、装置、设备和存储介质 | |
TWI662435B (zh) | 分散式系統及訊息處理方法 | |
CN112035889B (zh) | 计算外包的区块链隐私验证方法、装置及计算机设备 | |
CN111163182B (zh) | 基于区块链的设备注册方法、装置、电子设备和存储介质 | |
CN110766408A (zh) | 异构区块链的跨链交易验证方法、引擎、设备和存储介质 | |
US11080691B2 (en) | Fork-tolerant consensus protocol | |
CN114255031A (zh) | 用于执行交易的跨区块链的系统、跨链交易方法及设备 | |
US11989284B2 (en) | Service API invoking method and related apparatus | |
US11843500B2 (en) | Systems and methods for registering computer server event notifications | |
CN110889640A (zh) | 防止个人数据泄露的风险评估方法、终端及网络中心 | |
CN112070501B (zh) | 一种区块链交易发起、验证方法及系统 | |
CN113127569A (zh) | 用于区块链系统的共识方法、装置、电子设备及存储介质 | |
CN112714158A (zh) | 事务处理方法、中继网络、跨链网关、系统、介质和设备 | |
US20230259930A1 (en) | Cross-chain transaction processing method and apparatus, electronic device, and storage medium | |
CN111260475A (zh) | 一种数据处理方法、区块链节点设备及存储介质 | |
WO2023040453A1 (zh) | 一种交易信息处理方法及装置 | |
US20200076619A1 (en) | Data certification as a service powered by permissioned blockchain network | |
CN115310974A (zh) | 一种跨链交易的处理方法、计算机设备及介质 | |
CN111385096B (zh) | 一种区块链网络系统、签名处理方法、终端及存储介质 | |
WO2024103854A1 (zh) | 跨链交易方法、系统、电子设备及存储介质 | |
CN111275417B (zh) | 交易背书处理方法、服务器及计算机可读存储介质 | |
WO2023116098A1 (zh) | 一种跨链事务处理方法、装置、计算设备和介质 | |
CN116009940A (zh) | 共识集群的变更方法、装置、计算机设备及介质 | |
US20210392002A1 (en) | Cross-certification for secure binding of cryptographic systems | |
CN113986578A (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 |