基于中继链的跨链资源交换方法、装置和系统与流程

    专利2022-07-07  132


    本申请涉及区块链技术领域,特别是涉及一种基于中继链的跨链资源交换方法、装置、系统、计算机设备和存储介质。



    背景技术:

    目前的跨链资源交换主要使用哈希时间锁定技术。哈希时间锁(hashtimelockedcontract,简称htlc)是一个跨链原子交换协议。它以去中心化的方式完成用户间点对点的跨链互换。该技术主要原理如下:假设用户a和b分别在区块链chaina和chainb上拥有资源,想要进行资源交换。用户a生成一个随机值s,计算其哈希值h,将随机值告诉用户b,并且a和b协商两个时间t1和t2,并且t1晚于t2。a和b将资源锁定到各自链上的智能合约,并规定对方只有在特定时间之内提供哈希值h的正确原文才能得到资源,若超时则将资源归还给锁定者。a在t2时间之前提供s给链chainb的智能合约得到用户b的资源,这时b得到了哈希值h的原文s,在t1时间之前提供s给链chaina的智能合约得到用户a的资源。

    然而,哈希时间锁技术有如下缺点:如果用户b由于网络问题、设备问题或者用户遗忘的原因,无法在t1时间前提供s给链chaina的智能合约,用户b将无法得到资源。此时用户a获取资源成功,但是用户b获取资源失败,因此该方案无法保证跨链交易事务的原子性。此外,该技术依赖于时间,但是很多区块链尤其是联盟链的出块时间不是固定的,所以参与资源交换的区块链无法有一个统一的时间标准。这种情况下该方案便无法使用。

    针对相关技术中,跨链资源交换时间依赖性强的问题,目前尚未提出有效的解决方案。



    技术实现要素:

    基于此,有必要针对上述技术问题,提供一种基于中继链的跨链资源交换方法、装置、系统、计算机设备和存储介质。

    第一方面,本申请实施例提供了一种基于中继链的跨链资源交换方法,所述方法包括:

    接收交易请求方发起的请求交易,根据所述请求交易生成跨链事务,设置所述跨链事务的状态为初始状态,所述请求交易中包括所述交易请求方、交易参与方、交易资源和跨链事务标识符,所述跨链事务标识符与所述跨链事务对应;

    接收所述交易参与方的参与交易,将所述跨链事务的状态更新为提交状态,生成包含所述跨链事务标识符以及所述提交状态的提交消息体,其中,所述参与交易是所述交易参与方在接收到所述请求交易之后生成的交易;

    将所述提交消息体分别发送至所述交易请求方和所述交易参与方,其中,所述交易请求方和所述交易参与方在接收到所述提交消息体后执行所述交易资源的交换。

    在其中一个实施例中,所述设置所述跨链事务的状态为初始状态之后,所述方法还包括:

    发送跨链消息至所述交易参与方,其中,所述交易参与方根据所述跨链消息生成所述参与交易,所述跨链消息根据所述请求交易生成,所述跨链消息中包括所述交易请求方、所述交易参与方、所述交易资源和所述跨链事务标识符。

    在其中一个实施例中,所述生成包含所述跨链事务标识符以及所述提交状态的提交消息体之后,所述方法还包括:

    对所述提交消息体进行签名,得到签名内容,并将所述签名内容分别发送至所述交易请求方和所述交易参与方,其中,所述交易请求方和所述交易参与方在对所述签名内容进行验证后执行所述交易资源的交换。

    在其中一个实施例中,所述接收交易请求方发起的请求交易,根据所述请求交易生成跨链事务,设置所述跨链事务的状态为初始状态包括:

    接收交易请求方发起的请求交易,在所述交易请求方身份验证通过并且所述交易请求方完成了所述交易资源的资产冻结的情况下,根据所述请求交易初始化跨链事务,其中,所述交易资源为交易资产。

    在其中一个实施例中,所述根据所述请求交易生成跨链事务,设置所述跨链事务的状态为初始状态之后,所述方法还包括:

    接收撤销交易,根据所述撤销交易中的所述跨链事务标识符查询所述跨链事务的状态;

    在所述跨链事务的状态为初始化状态的情况下,将所述跨链事务的状态更改为回滚状态,生成包含所述跨链事务标识符以及所述回滚状态的回滚消息体;

    对所述回滚消息体进行签名,并将签名后的所述回滚消息体发送至所述交易参与方,所述交易参与方根据所述回滚消息体执行事务回滚。

    在其中一个实施例中,所述根据所述撤销交易中的所述跨链事务标识符查询所述跨链事务的状态之后,生成包含所述跨链事务标识符以及所述回滚状态的回滚消息体之前,所述方法还包括:

    在所述跨链事务的状态为初始化状态的情况下,验证所述撤销交易的发起方;

    在所述撤销交易的发起方为所述交易请求方或者所述交易参与方的情况下,将所述跨链事务的状态更改为回滚状态。

    第二方面,本申请实施例还提供一种基于中继链的跨链资源交换方法,所述方法包括:

    第一应用链发起请求交易,所述请求交易中包括所述第一应用链、交易参与方、交易资源和跨链事务标识符;

    中继链接收所述请求交易,根据所述跨链事务标识符生成跨链事务,设置所述跨链事务的状态为初始状态,并发送跨链消息至第二应用链,所述跨链事务标识符与所述跨链事务对应,所述交易参与方包括所述第二应用链;

    所述第二应用链接收所述跨链消息,生成参与交易,并将所述参与交易发送至所述中继链;

    所述中继链接收所述参与交易并将所述跨链事务的状态更新为提交状态,生成包含所述跨链事务标识符以及所述提交状态的提交消息体,并将所述提交消息体发送至所述第一应用链和所述第二应用链;

    所述第一应用链和所述第二应用链在接收到所述提交消息体后执行所述交易资源交换。

    在其中一个实施例中,所述生成包含所述跨链事务标识符以及所述提交状态的提交消息体之后,所述方法包括:

    对所述提交消息体进行签名,得到签名内容,并将所述签名内容分别发送至所述第一应用链和所述第二应用链;

    所述第一应用链和所述第二应用链在接收到所述签名内容后对所述签名内容进行验证,在验证通过的情况下执行所述交易资源的交换。

    在其中一个实施例中,所述方法还包括:

    所述第一应用链接收第一交易,根据所述第一交易生成所述请求交易并根据所述请求交易中的所述交易资源进行资产冻结,冻结的资产与所述跨链事务标识符对应,其中,所述交易资源为交易资产;

    所述第二应用链接收所述跨链消息生成参与交易,根据所述跨链消息进行资产冻结,冻结的资产与所述跨链事务标识符对应,并将所述参与交易发送至所述中继链,所述跨链消息中包括所述交易资产和所述跨链事务标识符;

    所述第一应用链和所述第二应用链在接收到所述提交消息体后,根据所述提交消息体中的所述跨链事务标识符获取到被冻结的资产并进行资产交换。

    第三方面,本申请实施例提供了一种基于中继链的跨链资源交换装置,其特征在于,所述装置包括初始化模块、提交模块和发送模块:

    所述初始化模块用于接收交易请求方发起的请求交易,根据所述请求交易生成跨链事务,设置所述跨链事务的状态为初始状态,所述请求交易中包括所述交易请求方、交易参与方、交易资产和跨链事务标识符,所述跨链事务标识符与所述跨链事务对应;

    所述提交模块用于接收所述交易参与方的参与交易,将所述跨链事务的状态更新为提交状态,生成包含所述跨链事务标识符以及所述提交状态的提交消息体,所述参与交易是所述交易参与方在接收到所述请求交易之后生成的交易;

    所述发送模块用于将所述提交消息体分别发送至所述交易请求方和所述交易参与方,其中,所述交易请求方和所述交易参与方在接收到所述提交消息体后执行所述交易资源的交换。

    第四方面,本申请实施例提供了一种基于中继链的跨链资源交换系统,所述系统包括中继链,所述中继链用于接收交易请求方发起的请求交易,根据所述请求交易生成跨链事务,设置所述跨链事务的状态为初始状态,接收所述交易参与方的参与交易,将所述跨链事务的状态更新为提交状态,生成包含所述跨链事务标识符以及所述提交状态的提交消息体,并将所述提交消息体分别发送至所述交易请求方和所述交易参与方,其中,所述请求交易中包括所述交易请求方、交易参与方、交易资源和跨链事务标识符,所述跨链事务标识符与所述跨链事务对应,所述参与交易是所述交易参与方在接收到所述请求交易之后生成的交易,所述交易请求方和所述交易参与方在接收到所述提交消息体后执行所述交易资源的交换。

    第五方面,本申请实施例提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述基于中继链的跨链资源交换方法。

    第六方面,本申请实施例还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述基于中继链的跨链资源交换方法。

    上述基于中继链的跨链资源交换方法、装置、计算机设备和存储介质,通过接收交易请求方发起的请求交易,根据请求交易生成跨链事务,设置跨链事务的状态为初始状态,接收交易参与方的参与交易,将跨链事务的状态更新为提交状态,生成包含跨链事务标识符以及提交状态的提交消息体,将提交消息体分别发送至交易请求方和交易参与方,交易请求方和交易参与方在接收到提交消息体后执行交易资源的交换,解除了跨链资源交换对时间的依赖性,交易的发起方和参与方在接收到提交消息体的情况下进行资源交换,实现了跨链交易事务的原子性。

    附图说明

    此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:

    图1是根据本发明实施例中的基于中继链的跨链资源交换方法的应用场景图;

    图2是根据本发明一个实施例中基于中继链的跨链资源交换方法的流程图;

    图3是根据本发明实施例的基于中继链的跨链资源交换方法中提交消息体签名流程图;

    图4是根据本发明实施例的基于中继链的跨链资源交换方法中资源交换撤销的流程图;

    图5是根据本发明另一个实施例中基于中继链的跨链资源交换方法的流程图;

    图6是根据本发明优选实施例中的基于中继链的跨链资源交换方法的时序图;

    图7是根据本发明实施例中基于中继链的跨链资源交换装置的结构示意图。

    具体实施方式

    为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行描述和说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。基于本申请提供的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。

    显而易见地,下面描述中的附图仅仅是本申请的一些示例或实施例,对于本领域的普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图将本申请应用于其他类似情景。此外,还可以理解的是,虽然这种开发过程中所作出的努力可能是复杂并且冗长的,然而对于与本申请公开的内容相关的本领域的普通技术人员而言,在本申请揭露的技术内容的基础上进行的一些设计,制造或者生产等变更只是常规的技术手段,不应当理解为本申请公开的内容不充分。

    在本申请中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域普通技术人员显式地和隐式地理解的是,本申请所描述的实施例在不冲突的情况下,可以与其它实施例相结合。

    除非另作定义,本申请所涉及的技术术语或者科学术语应当为本申请所属技术领域内具有一般技能的人士所理解的通常意义。本申请所涉及的“一”、“一个”、“一种”、“该”等类似词语并不表示数量限制,可表示单数或复数。本申请所涉及的术语“包括”、“包含”、“具有”以及它们任何变形,意图在于覆盖不排他的包含;例如包含了一系列步骤或模块(单元)的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可以还包括没有列出的步骤或单元,或可以还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。本申请所涉及的“连接”、“相连”、“耦接”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电气的连接,不管是直接的还是间接的。本申请所涉及的“多个”是指两个或两个以上。“和/或”描述关联对象的关联关系,表示可以存在三种关系,例如,“a和/或b”可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。本申请所涉及的术语“第一”、“第二”、“第三”等仅仅是区别类似的对象,不代表针对对象的特定排序。

    图1是根据本发明实施例中的基于中继链的跨链资源交换方法的应用场景图,本实施例提供的方法实施例可以应用于如图1所示的场景中。如图1所示,跨链资源交换的应用场景中包含中继链102、应用链a104和应用链b106,应用链a104和应用链b106是进行跨链资源原子交换的两条区块链;中继链102是接入参与跨链的区块链,是特殊作用的应用链,可以用于实现跨链交易的验证和路由。上述跨链资源的交换中,跨链资源可以是各个应用链所持有的信息、资金或者资产等。进行跨链资源原子交换的应用链a104和应用链b106需要在中继链102上注册应用链的id。a用户所对应的a节点112在应用链a上,并且a用户持有资源a,b用户所对应的b节点122在应用链b上,并且b用户持有资源b,a用户想用资源a交换b用户的资源b。其中,a用户在应用链a104和应用链b106上均拥有账户,b用户在应用链a104和应用链b106上也都拥有账户。应用链a104和应用链b106使用中继链102实现跨链交易的验证和路由,应用链a104和应用链b106在中继链102上注册的id分别为chainida和chainidb。中继链102上部署了资源交换管理合约scr。需要说明的是,上述应用场景图不用于限制所述基于中继链的跨链资源交换方法,例如,在实施应用中,应用链数量可以大于两条。

    在一个实施例中,图2是根据本发明一个实施例中基于中继链的跨链资源交换方法的流程图,如图2所示,提供了一种基于中继链的跨链资源交换方法,以该方法应用于图1中应用场景中的中继链102为例进行说明,包括以下步骤:

    步骤s210,中继链接收交易请求方发起的请求交易,根据请求交易生成跨链事务,设置跨链事务的状态为初始状态。例如,交易请求方是应用链a,请求交易中包括交易请求方、交易参与方、交易资源和跨链事务标识符。请求交易提交到中继链上,调用中继链的资源交换管理合约scr中的事务初始化方法,该方法将根据请求交易中的跨链事务标识符,将相应的交易请求内容注册到资源交换管理合约scr中,并且设置上述跨链事务标识符所对应的跨链事务状态为初始状态(init)。可选地,上述交易请求内容包括交易请求方所对应的应用链在中间链上的注册id、交易参与方所对应的应用链在中间链上的注册id、交易请求方的交易资源以及交易参与方的交易资源等。

    在一些实施例中,在交易资源为交易资产的情况下,中继链接收交易请求方发起的请求交易,根据请求交易初始化跨链事务的过程还包括:接收交易请求方发起的请求交易,在交易请求方身份验证通过并且交易请求方完成了资金冻结的情况下,根据请求交易初始化跨链事务。在本实施例中,在请求交易被提交到中继链上,会调用中继链的资源交换管理合约scr中的事务初始化方法,该方法还将进行身份验证和资金验证,例如,验证请求交易确实来自应用链a,并且验证应用链a中确实已经冻结了用于资源交换的交易资产。在上述验证通过之后,scr中的事务初始化方法将根据请求交易中的跨链事务标识符,将相应的交易请求内容注册到资源交换管理合约scr中,并且设置上述跨链事务标识符所对应的跨链事务状态为初始化状态(init),从而提高资源交换的可靠性和安全性。

    步骤s220,中继链接收交易参与方的参与交易,将跨链事务的状态更新为提交状态,生成包含跨链事务标识符以及提交状态的提交消息体。在步骤s210中,交易请求方发起的请求交易可以通过中继链、直接发送给交易参与方或者通过其他信息路由方式将资源交换的交易内容发送至各个交易参与方。无论通过哪种方式通知交易参与方资源交换的具体内容之后,交易参与方在接收到请求交易之后生成都将生成参与交易,用于对参与资源交换的确认和反馈。该参与交易将被发送至中继链。参与交易提交到中继链上,调用中继链的资源交换管理合约scr中的事务准备完成的相关方法,认为跨链事务已经准备完成,将跨链事务的状态更新为提交状态(commit),并且生成包含跨链事务标识符以及提交状态的提交消息体[跨链事务id||commit]。

    步骤s230,中继链将提交消息体分别发送至交易请求方和交易参与方。交易请求方和交易参与方在接收到提交消息体后,根据提交消息体中的跨链事务id确认需要进行交换的交易资源以及进行资源交换的各个交易方,执行资源的交换。

    步骤s210至步骤s230中,中继链接收交易请求方发起的请求交易,根据请求交易初始化跨链事务,接收交易参与方的参与交易,根据参与交易将跨链事务的状态更新为提交状态,生成包含跨链事务标识符以及提交状态的提交消息体,并将提交消息体分别发送至交易请求方和交易参与方,交易请求方和交易参与方在接收到提交消息体后执行交易资源的交换。现有的哈希时间锁定技术中资源是需要用户主动发起去获取的,如果出现网络问题或者用户忘记执行获取操作,后获取的一方则有可能超时,导致无法拿到资源,无法保证跨链资源交换的原子性;并且哈希时间锁定技术依赖于时间,然而很多区块链尤其是联盟链的出块时间不是固定的,所以参与资源交换的区块链无法有一个统一的时间标准。而通过本实施方式,应用链触发资源交换不依赖于时间,只和中继链发给应用链的消息体有关,两条应用链对收到的同一个消息体执行的操作是相同的。应用链在接收到提交消息体时可以主动触发将资源转给交易方,所以不会出现一方获取了资源,另一方超时的问题。因此,本实施例通过中继链实现了跨链资源交换,并且克服了相关技术中资源交换对时间以及网络状态的依赖性,实现了跨链资源交换的原子性。

    在一个实施例中,中继链根据请求交易生成跨链事务,设置跨链事务的状态为初始状态,之后,还根据请求交易生成跨链消息并发送跨链消息至交易参与方。跨链消息中包括交易请求方、交易参与方、交易资源和跨链事务标识符等资源交换相关的内容。交易参与方则根据跨链消息生成参与交易。在本实施例中,中继链还负责在接收到请求交易后根据请求交易生成跨链消息发送给各个交易参与方,交易请求方无需再直接发送消息至交易参与方或者借助其他消息路由方式发送消息至交易参与方,可以提高交易资源交换的效率。

    在一个实施例中,图3是根据本发明实施例的基于中继链的跨链资源交换方法中提交消息体签名流程图,如图3所示,生成包含跨链事务标识符以及提交状态的提交消息体之后,还包括以下步骤:

    步骤s310,中继链各节点对提交消息体进行签名,得到签名内容,并将签名内容分别发送至交易请求方和交易参与方。中继链各节点将[跨链事务id||commit]进行签名,并将签名后的内容[跨链事务id||commi||multi-sig]发送给参与该事务的各条应用链。请求方和交易参与方对应的应用链验证签名确实来自中继链的多个节点,签名内容中的commit表示事务可以提交,根据事务id找到事务相关信息,将与该跨链事务id对应的资源发送给与该跨链事务id对应的目标用户。从而进一步提高了基于中继链的跨链资源交换的安全性和可靠性。

    在一个实施例中,图4是根据本发明实施例的基于中继链的跨链资源交换方法中资源交换撤销的流程图,如图4所示,根据请求交易生成跨链事务,设置跨链事务的状态为初始状态之后,该方法还包括以下步骤:

    步骤s410,中继链接收撤销交易,根据撤销交易中的跨链事务标识符查询跨链事务的状态。资源交换的任意一个参与方可以提交撤销交易,撤销交易被提交至中继链后,将调用中继链上的智能合约scr中撤销事务相关方法,中继链智能合约scr根据事务id查询事务信息并获取该事务的当前状态。

    在一些实施例中,中继链在根据撤销交易中的跨链事务标识符查询跨链事务的状态之后,在跨链事务的状态为初始化状态的情况下,验证撤销交易的发起方身份;在撤销交易的发起方为交易请求方或者交易参与方的情况下,将跨链事务的状态更改为回滚状态。仅跨链事务所涉及的交易方有资格进行资源交换的撤销,防止不相干的接入方对跨链事务进行干扰,将进一步提高资源撤销的可靠性。

    步骤s420,中继链在跨链事务的状态为初始化状态的情况下,将跨链事务的状态更改为回滚状态,生成包含跨链事务标识符以及回滚状态的回滚消息体。中继链的智能合约在确认当前事务状态为init的情况下,将该事务状态更新为rollback;否则视为回滚失败,可以返回相应的消息提示当前事务无法执行回滚。

    步骤s430,中继链各节点对回滚消息体进行签名,并将签名后的回滚消息体发送至交易参与方,交易参与方根据回滚消息体执行事务回滚。中继链各节点将[跨链事务id||rollback]进行签名,并将签名后的内容[跨链事务id||rollback||multi-sig]发送给参与该事务的应用链,可选地,该签名内容将调用应用链上的智能合约开放给中继链的回滚接口。参与该事务的应用链验证签名确实来自中继链的多个节点,签名内容中的rollback表示事务需要回滚,可选地,根据事务id找到事务相关信息,将之前冻结的资产归还给原用户。

    步骤s410至步骤s430提供了资源交换的撤回方法,通过中继链实现了跨链资源交换事务的回滚,并且克服了相关技术中资源交换事务对时间以及网络状态的依赖性,实现了跨链资源交换事务回滚的原子性。在跨链事务处于commit状态之前,均可以简便且可靠地对资源交换事务进行回滚,使得跨链资源交换更加灵活可控。

    在一个实施例中,图5是根据本发明另一个实施例中基于中继链的跨链资源交换方法的流程图,如图5所示,本发明提供了一种基于中继链的跨链资源交换方法,该方法包括:

    步骤s510,第一应用链发起请求交易,请求交易中包括第一应用链、交易参与方、交易资源和跨链事务标识符。

    步骤s520,中继链接收请求交易,根据跨链事务标识符生成跨链事务,设置跨链事务的状态为初始状态,并发送跨链消息至第二应用链,跨链事务标识符与跨链事务对应,交易参与方包括第二应用链。

    步骤s530,第二应用链接收跨链消息生成参与交易,并将参与交易发送至中继链。

    步骤s540,中继链接收参与交易并将跨链事务的状态更新为提交状态,生成包含跨链事务标识符以及提交状态的提交消息体,并将提交消息体发送至第一应用链和第二应用链。

    步骤s550,第一应用链和第二应用链在接收到提交消息体后执行交易资源交换。

    步骤s510至步骤s550中,第一应用链发起请求交易,中继链接收第一应用链发起的请求交易,根据请求交易初始化跨链事务并发送跨链消息给第二应用链,第二应用链根据跨链消息生成参与交易并发给中继链,中继链接收参与交易,根据参与交易将跨链事务的状态更新为提交状态,生成包含跨链事务标识符以及提交状态的提交消息体,并将提交消息体分别发送至交易请求方和交易参与方,交易请求方和交易参与方在接收到提交消息体后执行交易资源的交换。通过本实施方式,应用链触发资源交换不依赖于时间,只和中继链发给应用链的消息体有关,两条应用链对收到的同一个消息体执行的操作是相同的,应用链在接收到提交消息体时可以主动触发将资源转给交易方,所以不会出现一方获取了资源,另一方超时的问题。因此,本实施例通过中继链实现了跨链资源交换,并且克服了相关技术中资源交换对时间以及网络状态的依赖性,实现了跨链资源交换的原子性。

    在一些实施例中,生成包含跨链事务标识符以及提交状态的提交消息体之后,中继链各个节点对提交消息体进行签名,得到签名内容,并将签名内容分别发送至第一应用链和第二应用链;第一应用链和第二应用链在接收到签名内容后对签名内容进行验证,在验证通过的情况下执行交易资源的交换。从而进一步提高了基于中继链的跨链资源交换的安全性和可靠性。

    在一些实施例中,在交易资源为资产的情况下,在第一应用链上部署有智能合约sca,第一应用链接收第一交易,根据第一交易生成请求交易并根据请求交易中的所述交易资产进行资产冻结,冻结的资产与跨链事务标识符对应。上述冻结即调用智能合约sca,将需要冻结的资产转移至sca的地址。第二应用链上部署有智能合约scb,第二应用链接收跨链消息将调用scb,通过scb进行第二应用链的资产冻结并生成参与交易,上述冻结即将需要冻结的资产转移至scb的地址,冻结的资产也与跨链事务标识符对应。在本实施例中,第一应用链和第二应用链上有提前部署好的智能合约,用于进行资金冻结并将冻结资金与跨链事务标识符进行对应。一方面可以更加可靠地执行资金冻结的过程,另一方面即使在应用链上有多个跨链资产交换的跨链事务要执行,也可以根据跨链事务标识快速准确地进行资源交换。

    在一些实施例中,在交易资源为跨链信息的情况下,第一应用链上部署的智能合约sca可以用于暂时存储用户上传的待交换信息,第一应用链接收第一交易,根据第一交易生成请求交易并将请求交易中的待交换信息进行信息暂存,将暂存的待交换信息与跨链事务标识符对应。可选地,上述暂存过程是将需要暂存的信息转移至sca的地址。第二应用链上部署的智能合约scb也可以用于暂存进行信息交换的另一方的待交换信息。第二应用链接收跨链消息将调用scb,通过scb进行第二应用链的信息暂存并生成参与交易,该信息也与跨链事务标识符对应。参与交易提交到中继链上,调用中继链的资源交换管理合约scr中的事务准备完成的相关方法,认为跨链事务已经准备完成,将跨链事务的状态更新为提交状态(commit),并且生成包含跨链事务标识符以及提交状态的提交消息体[跨链事务id||commit]。中继链将提交消息体分别发送至交易请求方和交易参与方,即各个信息交换方。信息交换方在接收到提交消息体后,根据提交消息体中的跨链事务id确认需要进行交换的待交换信息以及进行信息交换的各个交易方,执行信息交换。

    下面通过优选实施例对本申请实施例进行描述和说明。图6是根据本发明优选实施例中的基于中继链的跨链资源交换方法的时序图,在本实施例中,交易资源为交易资产,如图6所示,用户a在应用链a上持有资产a,用户b在应用链b上持有资产b,用户a想用资产a交换用户b的资产b。应用链a、b使用中继链r实现跨链交易的验证和路由,应用链a和b在中继链上注册的id分别为chainida和chainidb。用户a、b各自在链a、b上部署智能合约sca、scb,同时中继链r上部署了资产交换管理合约scr。

    跨链的用户a和用户b之间的资产交换包括以下过程:

    用户a向应用链a发起交易tx1,该交易调用智能合约sca,将用户a的资产a冻结(转移给sca的地址),发起目的链为区块链b的跨链交易tx2,tx2中携带应用链a的chainida、应用链b的chainidb、用户a和b在应用链b的地址和待交换的资产a和b,以及跨链事务id。同时智能合约sca中记录跨链事务id对应的用户a的资产冻结记录和待交换资产的用户b在应用链a的地址。

    tx2提交到中继链r,调用r的资产交换管理合约scr的事务初始化方法。该方法验证交易tx2确实来自应用链a,并且验证应用链a的用户a确实冻结了资产a,然后将该跨链事务id和相应内容(区块链b的chainidb和资产b、区块链a的chainida和资产a)注册到资产交换管理合约scr,同时设置跨链事务的状态为init。

    中继链r将跨链消息,路由至区应用链b,调用区块链b的智能合约scb。跨链消息包含应用链a的chainida、应用链b的chainidb、用户a和b在应用链b的地址和待交换的资产a和b,以及跨链事务id。

    用户b监听智能合约scb的相应事件,区块链b的智能合约scb抛出跨链事件通知区块链b的用户b,告知其应用链a的用户a已经冻结了资产a,等待用户b冻结资产b。

    区块链b的用户b监听到智能合约scb发给自己的事件,向区块链b发起交易tx3,该交易调用区块链b中的智能合约scb,将用户b的资产b冻结到scb,并以当前跨链事务id为key记录用户b的资产冻结记录和待交换资产的用户a在应用链b的地址,同时向中继链发起交易tx4。

    tx4调用中继链r的智能合约scr事务准备完成相关方法。中继链智能合约scr能够识别该交易来自id为chainidb的应用链,且用户b确实冻结了资产b,认为事务itx1已经准备完成,跨链事务的状态更新为commit,同时中继链各节点将[跨链事务id||commit]进行签名,并将签名后的内容[跨链事务id||commi||multi-sig]发送给参与该事务的应用链a和b,调用应用链a和b上的智能合约,分别为交易tx5和tx6。

    应用链上的智能合约验证签名确实来自中继链的多个节点,签名内容中的commit表示事务可以提交,根据事务id找到事务相关信息,将之前冻结的资产发送给目标用户。

    此外,在用户a想撤销资产交换的情况下,可以发起资产撤销请求。具体过程如下(该过程未在图6中示出):

    用户a向应用链a的智能合约sca发起交易tx5,该交易携带跨链事务id,调用sca的开放给用户的回滚事务相关方法;

    智能合约sca找到相关事务,并向中继链发起交易tx6,携带跨链事务id和相关信息调用中继链智能合约scr中撤销事务相关方法;

    中继链智能合约scr根据事务id查询事务信息,确认当前事务状态为init,并且验证该交易来源应用链的id和事务内容中的某个应用链id一致,则将该事务状态更新为rollback,否则回滚失败。同时中继链各节点将[跨链事务id||rollback]进行签名,并将签名后的内容[跨链事务id||rollback||multi-sig]发送给参与该事务的应用链a和b,调用应用链a和b上的智能合约开放给中继链的回滚接口;

    应用链上的智能合约验证签名确实来自中继链的多个节点,签名内容中的rollback表示事务需要回滚,根据事务id找到事务相关信息,将之前冻结的资产归还给原用户。

    上述基于中继链的跨链资源交换方法,即使资产交换过程中出现网络问题,a、b账户在两条区块链上的资产交换不会收到影响,智能合约可以在外界交易触发的情况下,将之前冻结的资产发给相应的用户账户,并将各个操作记录在区块链上。即使网络中断,只要中继链上的跨链事务状态已经是commit了,网络恢复以后,之前的提交消息体可以继续发送给应用链,应用链只要收到中继链的提交消息体,就可以把冻结的资产转给用户,不会出现因为断网而超时的情况;而如果问题出现在跨链事务状态为commit前的某个环节,那中继链上该跨链事务也不会改变状态,也不会影响后续应用链资产交换的原子性。因此,本实施例中的基于中继链的跨链资源交换方法通过中继链实现了跨链资源交换,克服了相关技术中资源交换对时间以及网络状态的依赖性,实现了跨链资源交换的原子性。

    应该理解的是,虽然图2至图6的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2至图6中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。

    在一个实施例中,图7是根据本发明实施例中基于中继链的跨链资源交换装置的结构示意图,如图7所示,提供了一种基于中继链的跨链资源交换装置,包括初始化模块72、提交模块74和发送模块76:

    初始化模块72用于接收交易请求方发起的请求交易,根据请求交易生成跨链事务,设置跨链事务的状态为初始状态,请求交易中包括交易请求方、交易参与方、交易资源和跨链事务标识符,跨链事务标识符与跨链事务对应;

    提交模块74用于接收交易参与方的参与交易,将跨链事务的状态更新为提交状态,生成包含跨链事务标识符以及提交状态的提交消息体,参与交易是交易参与方在接收到请求交易之后生成的交易;

    发送模块76用于将提交消息体分别发送至交易请求方和交易参与方,其中,交易请求方和交易参与方在接收到提交消息体后执行交易资源的交换。

    基于中继链的跨链资源交换装置的具体限定可以参见上文中对于基于中继链的跨链资源交换方法的限定,在此不再赘述。上述基于中继链的跨链资源交换装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。

    上述基于中继链的跨链资源交换装置,通过接收交易请求方发起的请求交易,根据请求交易生成跨链事务,设置跨链事务的状态为初始状态,接收交易参与方的参与交易,将跨链事务的状态更新为提交状态,生成包含跨链事务标识符以及提交状态的提交消息体,将提交消息体分别发送至交易请求方和交易参与方,交易请求方和交易参与方在接收到提交消息体后执行交易资源的交换,解除了跨链资源交换对时间的依赖性,交易的发起方和参与方在接收到提交消息体的情况下进行资源交换,实现了跨链交易事务的原子性。

    在一个实施例中,提供了一种基于中继链的跨链资源交换系统,包括中继链,中继链用于接收交易请求方发起的请求交易,根据请求交易生成跨链事务,设置跨链事务的状态为初始状态,接收交易参与方的参与交易,将跨链事务的状态更新为提交状态,生成包含跨链事务标识符以及提交状态的提交消息体,并将提交消息体分别发送至交易请求方和交易参与方,其中,请求交易中包括所述交易请求方、交易参与方、交易资源和跨链事务标识符,跨链事务标识符与跨链事务对应,参与交易是交易参与方在接收到请求交易之后生成的交易,交易请求方和交易参与方在接收到提交消息体后执行交易资源的交换。

    基于中继链的跨链资源交换系统的具体限定可以参见上文中对于基于中继链的跨链资源交换方法的限定,在此不再赘述。上述基于中继链的跨链资源交换系统,通过接收交易请求方发起的请求交易,根据请求交易生成跨链事务,设置跨链事务的状态为初始状态,接收交易参与方的参与交易,将跨链事务的状态更新为提交状态,生成包含跨链事务标识符以及提交状态的提交消息体,将提交消息体分别发送至交易请求方和交易参与方,交易请求方和交易参与方在接收到提交消息体后执行交易资源的交换,解除了跨链资源交换对时间的依赖性,交易的发起方和参与方在接收到提交消息体的情况下进行资源交换,实现了跨链交易事务的原子性。

    在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现以下步骤:

    接收交易请求方发起的请求交易,根据请求交易生成跨链事务,设置跨链事务的状态为初始状态,请求交易中包括交易请求方、交易参与方、交易资源和跨链事务标识符,跨链事务标识符与跨链事务对应;

    接收交易参与方的参与交易,将跨链事务的状态更新为提交状态,生成包含跨链事务标识符以及提交状态的提交消息体,其中,参与交易是交易参与方在接收到请求交易之后生成的交易;

    将提交消息体分别发送至交易请求方和交易参与方,其中,交易请求方和交易参与方在接收到提交消息体后执行交易资源的交换。

    上述基于中继链的跨链资源交换计算机设备,通过接收交易请求方发起的请求交易,根据请求交易生成跨链事务,设置跨链事务的状态为初始状态,接收交易参与方的参与交易,将跨链事务的状态更新为提交状态,生成包含跨链事务标识符以及提交状态的提交消息体,将提交消息体分别发送至交易请求方和交易参与方,交易请求方和交易参与方在接收到提交消息体后执行交易资源的交换,解除了跨链资源交换对时间的依赖性,交易的发起方和参与方在接收到提交消息体的情况下进行资源交换,实现了跨链交易事务的原子性。

    在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:

    接收交易请求方发起的请求交易,根据请求交易生成跨链事务,设置跨链事务的状态为初始状态,请求交易中包括交易请求方、交易参与方、交易资源和跨链事务标识符,跨链事务标识符与跨链事务对应;

    接收交易参与方的参与交易,将跨链事务的状态更新为提交状态,生成包含跨链事务标识符以及提交状态的提交消息体,其中,参与交易是交易参与方在接收到请求交易之后生成的交易;

    将提交消息体分别发送至交易请求方和交易参与方,其中,交易请求方和交易参与方在接收到提交消息体后执行交易资源的交换。

    上述基于中继链的跨链资源交换存储介质,通过接收交易请求方发起的请求交易,根据请求交易生成跨链事务,设置跨链事务的状态为初始状态,接收交易参与方的参与交易,将跨链事务的状态更新为提交状态,生成包含跨链事务标识符以及提交状态的提交消息体,将提交消息体分别发送至交易请求方和交易参与方,交易请求方和交易参与方在接收到提交消息体后执行交易资源的交换,解除了跨链资源交换对时间的依赖性,交易的发起方和参与方在接收到提交消息体的情况下进行资源交换,实现了跨链交易事务的原子性。

    本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双数据率sdram(ddrsdram)、增强型sdram(esdram)、同步链路(synchlink)dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。

    以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

    以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。


    技术特征:

    1.一种基于中继链的跨链资源交换方法,其特征在于,所述方法包括:

    接收交易请求方发起的请求交易,根据所述请求交易生成跨链事务,设置所述跨链事务的状态为初始状态,所述请求交易中包括所述交易请求方、交易参与方、交易资源和跨链事务标识符,所述跨链事务标识符与所述跨链事务对应;

    接收所述交易参与方的参与交易,将所述跨链事务的状态更新为提交状态,生成包含所述跨链事务标识符以及所述提交状态的提交消息体,其中,所述参与交易是所述交易参与方在接收到所述请求交易之后生成的交易;

    将所述提交消息体分别发送至所述交易请求方和所述交易参与方,其中,所述交易请求方和所述交易参与方在接收到所述提交消息体后执行所述交易资源的交换。

    2.根据权利要求1所述的方法,其特征在于,所述设置所述跨链事务的状态为初始状态之后,所述方法还包括:

    发送跨链消息至所述交易参与方,其中,所述交易参与方根据所述跨链消息生成所述参与交易,所述跨链消息根据所述请求交易生成,所述跨链消息中包括所述交易请求方、所述交易参与方、所述交易资源和所述跨链事务标识符。

    3.根据权利要求1所述的方法,其特征在于,所述生成包含所述跨链事务标识符以及所述提交状态的提交消息体之后,所述方法还包括:

    对所述提交消息体进行签名,得到签名内容,并将所述签名内容分别发送至所述交易请求方和所述交易参与方,其中,所述交易请求方和所述交易参与方在对所述签名内容进行验证后执行所述交易资源的交换。

    4.根据权利要求1所述的方法,其特征在于,所述接收交易请求方发起的请求交易,根据所述请求交易生成跨链事务,设置所述跨链事务的状态为初始状态包括:

    接收交易请求方发起的请求交易,在所述交易请求方身份验证通过并且所述交易请求方完成了所述交易资源的资产冻结的情况下,根据所述请求交易生成跨链事务,设置所述跨链事务的状态为初始状态,其中,所述交易资源为交易资产。

    5.根据权利要求1至4任一项所述的方法,其特征在于,所述根据所述请求交易生成跨链事务,设置所述跨链事务的状态为初始状态之后,所述方法还包括:

    接收撤销交易,根据所述撤销交易中的所述跨链事务标识符查询所述跨链事务的状态;

    在所述跨链事务的状态为初始化状态的情况下,将所述跨链事务的状态更改为回滚状态,生成包含所述跨链事务标识符以及所述回滚状态的回滚消息体;

    对所述回滚消息体进行签名,并将签名后的所述回滚消息体发送至所述交易参与方,所述交易参与方根据所述回滚消息体执行事务回滚。

    6.根据权利要求5所述的方法,其特征在于,所述根据所述撤销交易中的所述跨链事务标识符查询所述跨链事务的状态之后,生成包含所述跨链事务标识符以及所述回滚状态的回滚消息体之前,所述方法还包括:

    在所述跨链事务的状态为初始化状态的情况下,验证所述撤销交易的发起方;

    在所述撤销交易的发起方为所述交易请求方或者所述交易参与方的情况下,将所述跨链事务的状态更改为回滚状态。

    7.一种基于中继链的跨链资源交换方法,其特征在于,所述方法包括:

    第一应用链发起请求交易,所述请求交易中包括所述第一应用链、交易参与方、交易资源和跨链事务标识符;

    中继链接收所述请求交易,根据所述跨链事务标识符生成跨链事务,设置所述跨链事务的状态为初始状态,并发送跨链消息至第二应用链,所述跨链事务标识符与所述跨链事务对应,所述交易参与方包括所述第二应用链;

    所述第二应用链接收所述跨链消息,生成参与交易,并将所述参与交易发送至所述中继链;

    所述中继链接收所述参与交易并将所述跨链事务的状态更新为提交状态,生成包含所述跨链事务标识符以及所述提交状态的提交消息体,并将所述提交消息体发送至所述第一应用链和所述第二应用链;

    所述第一应用链和所述第二应用链在接收到所述提交消息体后执行所述交易资源交换。

    8.根据权利要求7所述的方法,其特征在于,所述生成包含所述跨链事务标识符以及所述提交状态的提交消息体之后,所述方法包括:

    对所述提交消息体进行签名,得到签名内容,并将所述签名内容分别发送至所述第一应用链和所述第二应用链;

    所述第一应用链和所述第二应用链在接收到所述签名内容后对所述签名内容进行验证,在验证通过的情况下执行所述交易资源的交换。

    9.根据权利要求7所述的方法,其特征在于,所述方法还包括:

    所述第一应用链接收第一交易,根据所述第一交易生成所述请求交易并根据所述请求交易中的所述交易资源进行资产冻结,冻结的资产与所述跨链事务标识符对应,其中,所述交易资源为交易资产;

    所述第二应用链接收所述跨链消息生成参与交易,根据所述跨链消息进行资产冻结,冻结的资产与所述跨链事务标识符对应,并将所述参与交易发送至所述中继链,所述跨链消息中包括所述交易资产和所述跨链事务标识符;

    所述第一应用链和所述第二应用链在接收到所述提交消息体后,根据所述提交消息体中的所述跨链事务标识符获取到被冻结的资产并进行资产交换。

    10.一种基于中继链的跨链资源交换装置,其特征在于,所述装置包括初始化模块、提交模块和发送模块:

    所述初始化模块用于接收交易请求方发起的请求交易,根据所述请求交易生成跨链事务,设置所述跨链事务的状态为初始状态,所述请求交易中包括所述交易请求方、交易参与方、交易资源和跨链事务标识符,所述跨链事务标识符与所述跨链事务对应;

    所述提交模块用于接收所述交易参与方的参与交易,将所述跨链事务的状态更新为提交状态,生成包含所述跨链事务标识符以及所述提交状态的提交消息体,所述参与交易是所述交易参与方在接收到所述请求交易之后生成的交易;

    所述发送模块用于将所述提交消息体分别发送至所述交易请求方和所述交易参与方,其中,所述交易请求方和所述交易参与方在接收到所述提交消息体后执行所述交易资源的交换。

    11.一种基于中继链的跨链资源交换系统,其特征在于,所述系统包括中继链,所述中继链用于接收交易请求方发起的请求交易,根据所述请求交易生成跨链事务,设置所述跨链事务的状态为初始状态,接收所述交易参与方的参与交易,将所述跨链事务的状态更新为提交状态,生成包含所述跨链事务标识符以及所述提交状态的提交消息体,并将所述提交消息体分别发送至所述交易请求方和所述交易参与方,其中,所述请求交易中包括所述交易请求方、交易参与方、交易资源和跨链事务标识符,所述跨链事务标识符与所述跨链事务对应,所述参与交易是所述交易参与方在接收到所述请求交易之后生成的交易,所述交易请求方和所述交易参与方在接收到所述提交消息体后执行所述交易资源的交换。

    12.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至9中任一项所述方法的步骤。

    13.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至9中任一项所述的方法的步骤。

    技术总结
    本申请涉及一种基于中继链的跨链资源交换方法、装置和系统。所述方法包括:接收交易请求方发起的请求交易,根据请求交易生成跨链事务,设置跨链事务的状态为初始状态,接收交易参与方的参与交易,将跨链事务的状态更新为提交状态,生成包含跨链事务标识符以及提交状态的提交消息体,将提交消息体分别发送至交易请求方和交易参与方,交易请求方和交易参与方在接收到提交消息体后执行交易资源的交换。采用本方法能够解除跨链资源交换对时间的依赖性,交易的发起方和参与方在接收到提交消息体的情况下进行资源交换,实现了跨链交易事务的原子性。

    技术研发人员:李伟;邱炜伟;汪小益;匡立中;张帅
    受保护的技术使用者:杭州趣链科技有限公司
    技术研发日:2020.10.28
    技术公布日:2021.03.12

    转载请注明原文地址:https://wp.8miu.com/read-7603.html

    最新回复(0)