跨链交易方法、设备和存储介质
技术领域
本申请涉及互联网金融技术领域,具体涉及一种跨链交易方法、设备和存储介质。
背景技术
当前区块链跨链交易有中心化交易所(或中心化交易协议)、侧链/中继、哈希锁定和多方计算锁定等方式。其中,中继的方案因其对实时性要求不高而应用较多,一些大型的方案,例如COSMOS、Polkdot,都是以中继为基础的方案。
BTC Relay是一种比较典型、成熟的中继应用,BTC Relay是部署在ETH链上的一个合约程序,通过将BTC链的SPV头同步到ETH链上,与用户的交易数据进行对比来验证用户的交易数据,以确认BTC链上的交易发生了,然后执行用户合约,从而将ETH链当作BTC链的侧链,通过以太坊的智能合约与BTC链连接起来,可以使用户在以太坊上验证比特币交易。
上述BTC Relay方案的缺陷在于,两条链上的交易不具备原子性,其中用户A在BTC链上对用户B的转账交易是不可撤回的,而在ETH链上,可能因为智能合约代码漏洞、ETH链发生分叉等原因导致用户A收不到用户B转账的eth,使得用户A在该跨链交易中承担了较大的风险,从而导致互不信任的用户之间不愿通过上述方案进行跨链交易。
发明内容
鉴于现有技术中的上述缺陷或不足,期望提供一种交易具备原子性、交易双方的安全都受到保障的跨链交易方法、设备和存储介质。
第一方面,本发明提供一种适用于部署智能合约的区块链节点的跨链交易方法,包括:
根据第一交易终端发送的第一交易请求信息和第二交易终端发送的第二交易请求信息在第一区块链上触发第一智能合约进入校验状态;
接收第二交易终端发送的交易部署信息,根据交易部署信息锁定第二交易终端支付的第一加密货币;其中,交易部署信息包括用于锁定第一加密货币的第一哈希值,第一哈希值为第一交易终端生成的第一随机数的哈希值、由第一交易终端在触发第一智能合约后发送至第二交易终端;
接收第一交易终端发送的链外交易信息,根据链外交易信息获取第二区块链的数据以校验链外交易信息:若校验成功,则触发第一智能合约进入解锁状态;其中,链外交易信息包括第一交易终端在第二区块链上部署第二智能合约以支付第二加密货币的交易信息,以及第二智能合约的地址信息,第二加密货币通过第一哈希值锁定;
接收第一交易终端发送的第一随机数,通过第一随机数对第一加密货币进行解锁:若解锁成功,则将解锁的第一加密货币转账至第一交易终端指定的地址,以及,将第一随机数发送至第二交易终端,以供第二交易终端通过第一随机数在第二区块链上解锁并提取第二加密货币。
第二方面,本发明提供一种适用于用户端的跨链交易方法,包括:
向第一区块链的节点发送第一交易请求信息;其中,第一交易请求信息与第二交易终端发送的第二交易请求信息在第一区块链上触发第一智能合约进入校验状态;
生成第一哈希值,将第一哈希值发送至第二交易终端,以供第二交易终端生成交易部署信息并发送至第一智能合约,通过第一哈希值将支付的第一加密货币锁定在第一智能合约;其中,第一哈希值为第一随机数的哈希值;
在第二区块链上部署支付第二加密货币的第二智能合约,并通过第一哈希值锁定第二加密货币;
根据支付第二加密货币的交易信息和第二智能合约的地址信息生成链外交易信息并发送至第一智能合约,以供第一智能合约根据链外交易信息获取第二区块链的数据以校验链外交易信息:若校验成功,则触发进入解锁状态;
向第一智能合约发送第一随机数,以供第一智能合约解锁并发放第一加密货币,以及,将第一随机数发送至第二交易终端,以供第二交易终端通过第一随机数在第二区块链上解锁并提取第二加密货币。
第三方面,本发明提供另一种适用于用户端的跨链交易方法,包括:
向第一区块链的节点发送第二交易请求信息;其中,第二交易请求信息与第一交易终端发送的第一交易请求信息在第一区块链上触发第一智能合约进入校验状态;
接收第一交易终端发送的第一哈希值,根据第一哈希值生成交易部署信息并发送至第一智能合约,通过第一哈希值将支付的第一加密货币锁定在第一智能合约;其中,第一哈希值为第一交易终端生成的第一随机数的哈希值;
接收第一智能合约对第一加密货币解锁成功后发送的第一随机数,通过第一随机数在第二区块链上解锁并提取第二加密货币。其中,第一交易终端在第二区块链上部署支付第二加密货币的第二智能合约,并通过第一哈希值锁定第二加密货币,根据支付第二加密货币的交易信息和第二智能合约的地址信息生成链外交易信息并发送至第一智能合约,第一智能合约根据链外交易信息获取第二区块链的数据以校验链外交易信息:若校验成功,则触发进入解锁状态,并在解锁状态下根据第一交易终端发送的第一随机数对第一加密货币进行解锁。
第四方面,本发明还提供一种设备,包括一个或多个处理器和存储器,其中存储器包含可由该一个或多个处理器执行的指令以使得该一个或多个处理器执行根据本发明各实施例提供的跨链交易方法。
第五方面,本发明还提供一种存储有计算机程序的存储介质,该计算机程序使计算机执行根据本发明各实施例提供的跨链交易方法。
本发明诸多实施例提供的跨链交易方法、设备和存储介质通过在第一区块链上配置具有校验、解锁和完成状态的第一智能合约,并通过校验两条链上的交易信息触发第一智能合约进入解锁状态,从而提供了一种具备原子性的跨链交易方案,同时保障了交易双方的安全;
本发明一些实施例提供的跨链交易方法、设备和存储介质进一步通过为两条链上锁定的加密货币配置具有相同到期时间的冻结期,进一步保障了交易双方具有完全对等的撤回权利。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:
图1为本发明一实施例中跨链交易的场景示意图。
图2为本发明一实施例提供的一种跨链交易方法的流程图。
图3为图2所示方法的一种优选实施方式的流程图。
图4为本发明一实施例提供的另一种跨链交易方法的流程图。
图5为图4所示方法的一种优选实施方式的流程图。
图6为本发明一实施例提供的又一种跨链交易方法的流程图。
图7为图6所示方法的一种优选实施方式的流程图。
图8为本发明一实施例提供的一种设备的结构示意图。
具体实施方式
下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与发明相关的部分。
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
图1为本发明一实施例中跨链交易的场景示意图。如图1所示,在本实施例中,以在ETH链上部署第一智能合约、在BTC链上部署第二智能合约,用户甲与乙在ETH链和BTC链上进行跨链交易,甲在BTC链上向乙支付比特币,乙在ETH链上向甲支付以太坊为例,对本发明提供的跨链交易解决方案进行详细说明;在更多实施例中,还可以将本发明提供的跨链交易解决方案应用在任意不同的用户和任意两条区块链之间,只要在该二条区块链上可以部署智能合约,即可实现相同的技术效果。
以下结合图1和图2-7对本发明提供的跨链交易解决方案进行详细阐述。
图2为本发明一实施例提供的一种跨链交易方法的流程图。如图1和图2所示,在本实施例中,本发明提供一种适用于第一区块链网络300中的节点301的跨链交易方法,包括:
S101:根据第一交易终端发送的第一交易请求信息和第二交易终端发送的第二交易请求信息在第一区块链上触发第一智能合约进入校验状态;
S102:接收第二交易终端发送的交易部署信息,根据交易部署信息锁定第二交易终端支付的第一加密货币;其中,交易部署信息包括用于锁定第一加密货币的第一哈希值,第一哈希值为第一交易终端生成的第一随机数的哈希值、由第一交易终端在触发第一智能合约后发送至第二交易终端;
S103:接收第一交易终端发送的链外交易信息,根据链外交易信息获取第二区块链的数据以校验链外交易信息:
若校验成功,则执行步骤S104:触发第一智能合约进入解锁状态;其中,链外交易信息包括第一交易终端在第二区块链上部署第二智能合约以支付第二加密货币的交易信息,以及第二智能合约的地址信息,第二加密货币通过第一哈希值锁定;
S107:接收第一交易终端发送的第一随机数,通过第一随机数对第一加密货币进行解锁:
若解锁成功,则执行步骤S108:将解锁的第一加密货币转账至第一交易终端指定的地址;以及,
S109:将第一随机数发送至第二交易终端,以供第二交易终端通过第一随机数在第二区块链上解锁并提取第二加密货币。
具体地,以图1所示场景为例,在步骤S101中,用户甲的第一交易终端100和用户乙的第二交易终端200分别向ETH链的节点301发送第一交易请求信息和第二交易请求信息;当第一交易请求信息和第二交易请求信息达成一致时,例如甲和乙均同意,甲用4个比特币与乙交易55个以太坊时,在ETH链上触发第一智能合约进入校验状态;
触发第一智能合约进入校验状态后,第一交易终端100生成第一随机数s1,以及第一哈希值H1=hash(s1),并将第一哈希值H1发送至第二交易终端200;其中,在本实施例中,第一哈希值H1的计算方式为hash(s1),在另一实施例中,还可以将第一哈希值H1的计算方式配置为hash(s1+addETH-甲+addBTC-乙),addETH-甲为用户甲在ETH链上的地址,addBTC-乙为用户乙在BTC链上的地址,在更多实施例中,还可以将第一哈希值H1的计算方式配置为其它本领域技术人员可以理解的不同计算方式。
第二交易终端200接收第一哈希值H1之后,生成在ETH链上向用户甲支付55个以太坊,并通过第一哈希值H1锁定该55个以太坊的交易部署信息,将该交易部署信息发送至第一智能合约;
在步骤S102中,第一智能合约接收到第二交易终端200发送的交易部署信息后,通过交易部署信息中的第一哈希值H1锁定用户乙向用户甲支付的55个以太坊;
与此同时,第一交易终端100在BTC链上部署用户甲向用户乙支付4个比特币的第二智能合约,并同样通过第一哈希值H1锁定该4个比特币;
锁定向用户乙支付的4个比特币后,第一交易终端100根据支付4个比特币的交易信息以及第二智能合约的地址信息生成链外交易信息,并发送至第一智能合约;
在步骤S103中,第一智能合约接收第一交易终端100发送的链外交易信息后,根据第二智能合约的地址信息从BTC链获取数据以验证用户甲向乙支付4个比特币的交易信息:
若验证失败,则继续等待正确的链外交易信息;
若验证成功,则执行步骤S104:触发第一智能合约进入解锁状态。
需要说明的是,只有在交易双方的交易信息均通过校验后,才会触发第一智能合约进入解锁状态:
在本实施例中,只有在步骤S102成功锁定用户乙支付的以太坊后,才会触发步骤S103的校验;
在另一实施例中,也可以配置为,在先接收到第一交易终端100发送的链外交易信息,而未锁定第二交易终端200在第一区块链上支付的加密货币时,在成功验证链外交易信息之后继续等待第二交易终端200支付并锁定加密货币。
在触发第一智能合约进入解锁状态后,第一交易终端100向第一智能合约发送第一随机数s1,以解锁并提取锁定的55个以太坊(假定在不收取手续费的情况下)。
在步骤S107中,接收第一随机数s1后,对第一随机数s1进行哈希运算,验证是否得到第一哈希值H1,验证无误则解锁成功,将解锁的55个以太坊转账至用户甲的地址;
在解锁成功后,同步执行步骤S109,将第一随机数s1发送至第二交易终端200;
第二交易终端200接收第一随机数s1后,通过第一随机数s1在BTC链上解锁并提取上述锁定的4个比特币,从而完成跨链交易。
上述实施例通过在第一区块链上配置具有校验、解锁和完成状态的第一智能合约,并通过校验两条链上的交易信息触发第一智能合约进入解锁状态,从而提供了一种具备原子性的跨链交易方案,同时保障了交易双方的安全。
图3为图2所示方法的一种优选实施方式的流程图。如图3所示,在一优选实施例中,交易部署信息还包括用于约定第一加密货币的第一冻结期的失效时间信息,上述方法还包括:
S105:接收第二交易终端发送的撤回请求信息,根据失效时间信息判断是否已超出第一冻结期:
是,则执行步骤S106:解锁并返还第一加密货币,撤回第一智能合约。
同样以图1所示场景为例,在第一智能合约中可以配置锁定55个以太坊的第一冻结期,例如2个小时,则在该2个小时内用户乙无法撤回跨链交易;
当用户甲因各种原因,没有在btc链上锁定支付给用户乙的4个比特币,或,锁定后没有向第一智能合约发送链外交易信息,或,触发第一智能合约进入解锁状态后没有向第一智能合约发送第一随机数s1,等任意一种情况,导致没有在2个小时内完成跨链交易,则用户乙可以通过第二交易终端200在度过第一冻结期之后向第一智能合约发送撤回请求信息来撤回跨链交易,并取回锁定的55个以太坊。
优选地,第一智能合约在撤回跨链交易时会通知第一交易终端100,若第一交易终端100已经在BTC链上锁定了支付的4个btc,则可以在接收通知后撤回BTC链上的交易。
在一优选实施例中,第二智能合约配置有第二加密货币的第二冻结期,第一冻结期和第二冻结期的到期时间相同。
同样以图1所示场景为例,用户甲在BTC链上锁定的4个btc同样配置有冻结期,两条链上的冻结期的到期时间相同,以保障交易双方具有相同的撤回权利。
其中,在本实施例中,上述各项冻结期由交易双方协商约定,并通过交易双方的交易终端进行配置;在另一实施例中,上述各项冻结期还可以由智能合约默认配置,或为用户提供若干可选项。
上述实施例进一步通过为两条链上锁定的加密货币配置具有相同到期时间的冻结期,进一步保障了交易双方具有完全对等的撤回权利。
图4为本发明一实施例提供的另一种跨链交易方法的流程图。图4所示的方法可以配合图2所示的方法执行。如图4所示,在本实施例中,本发明还提供一种适用于上述第一交易终端100的跨链交易方法,包括:
S201:向第一区块链的节点发送第一交易请求信息;其中,第一交易请求信息与第二交易终端发送的第二交易请求信息在第一区块链上触发第一智能合约进入校验状态;
S203:生成第一哈希值,将第一哈希值发送至第二交易终端,以供第二交易终端生成交易部署信息并发送至第一智能合约,通过第一哈希值将支付的第一加密货币锁定在第一智能合约;其中,第一哈希值为第一随机数的哈希值;
S205:在第二区块链上部署支付第二加密货币的第二智能合约,并通过第一哈希值锁定第二加密货币;
S207:根据支付第二加密货币的交易信息和第二智能合约的地址信息生成链外交易信息并发送至第一智能合约,以供第一智能合约根据链外交易信息获取第二区块链的数据以校验链外交易信息:若校验成功,则触发进入解锁状态;
S209:向第一智能合约发送第一随机数,以供第一智能合约解锁并发放第一加密货币,以及,将第一随机数发送至第二交易终端,以供第二交易终端通过第一随机数在第二区块链上解锁并提取第二加密货币。
具体地,图4所示方法的跨链交易原理可参照图2所示的方法,此处不再赘述。
图5为图4所示方法的一种优选实施方式的流程图。如图5所示,在一优选实施例中,第二智能合约配置有第二加密货币的第二冻结期,上述方法还包括:
S208:监测第一智能合约在第二冻结期内是否进入解锁状态:否,则向第二智能合约发送交易取消请求信息。
具体地,同样以图1所示场景为例,当用户乙因各种原因而没有在ETH链上锁定支付给用户甲的55个以太坊,导致第一智能合约在冻结期内未触发进入解锁状态时,用户甲可以在度过第二冻结期后,通过第一交易终端100向BTC链上的第二智能合约发送交易取消请求信息,从而取回锁定在BTC链上的4个比特币。
在一优选实施例中,交易部署信息还包括用于约定第一加密货币的第一冻结期的失效时间信息,第一冻结期和第二冻结期的到期时间相同。该优选实施例提供的方案可参照图3所示的优选方法,此处不再赘述。
图6为本发明一实施例提供的又一种跨链交易方法的流程图。图6所示的方法可配合图2、图4所示的方法执行。如图6所示,在本实施例中,本发明还提供一种适用于上述第二交易终端200的跨链交易方法,包括:
S301:向第一区块链的节点发送第二交易请求信息;其中,第二交易请求信息与第一交易终端发送的第一交易请求信息在第一区块链上触发第一智能合约进入校验状态;
S303:接收第一交易终端发送的第一哈希值,根据第一哈希值生成交易部署信息并发送至第一智能合约,通过第一哈希值将支付的第一加密货币锁定在第一智能合约;其中,第一哈希值为第一交易终端生成的第一随机数的哈希值;
S305:接收第一智能合约对第一加密货币解锁成功后发送的第一随机数,通过第一随机数在第二区块链上解锁并提取第二加密货币。其中,第一交易终端在第二区块链上部署支付第二加密货币的第二智能合约,并通过第一哈希值锁定第二加密货币,根据支付第二加密货币的交易信息和第二智能合约的地址信息生成链外交易信息并发送至第一智能合约,第一智能合约根据链外交易信息获取第二区块链的数据以校验链外交易信息:若校验成功,则触发进入解锁状态,并在解锁状态下根据第一交易终端发送的第一随机数对第一加密货币进行解锁。
具体地,图6所示方法的跨链交易原理可参照图2所示的方法,此处不再赘述。
图7为图6所示方法的一种优选实施方式的流程图。如图7所示,在一优选实施例中,交易部署信息还包括用于约定第一加密货币的第一冻结期的失效时间信息,步骤S305之前还包括:
S304:监测在第一冻结期内是否接收到第一随机数:否,则向第一智能合约发送撤回请求信息。
图7所示方法的跨链交易原理可参照图3所示的方法,此处不再赘述。
图8为本发明一实施例提供的一种设备的结构示意图。
如图8所示,作为另一方面,本申请还提供了一种设备800,包括一个或多个中央处理单元(CPU)801,其可以根据存储在只读存储器(ROM)802中的程序或者从存储部分808加载到随机访问存储器(RAM)803中的程序而执行各种适当的动作和处理。在RAM803中,还存储有设备800操作所需的各种程序和数据。CPU801、ROM802以及RAM803通过总线804彼此相连。输入/输出(I/O)接口805也连接至总线804。
以下部件连接至I/O接口805:包括键盘、鼠标等的输入部分806;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分807;包括硬盘等的存储部分808;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分809。通信部分809经由诸如因特网的网络执行通信处理。驱动器810也根据需要连接至I/O接口805。可拆卸介质811,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器810上,以便于从其上读出的计算机程序根据需要被安装入存储部分808。
特别地,根据本公开的实施例,上述任一实施例描述的跨链交易方法可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括有形地包含在机器可读介质上的计算机程序,所述计算机程序包含用于执行跨链交易方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分809从网络上被下载和安装,和/或从可拆卸介质811被安装。
作为又一方面,本申请还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例的装置中所包含的计算机可读存储介质;也可以是单独存在,未装配入设备中的计算机可读存储介质。计算机可读存储介质存储有一个或者一个以上程序,该程序被一个或者一个以上的处理器用来执行描述于本申请的跨链交易方法。
附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这根据所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以通过执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以通过专用硬件与计算机指令的组合来实现。
描述于本申请实施例中所涉及到的单元或模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元或模块也可以设置在处理器中,例如,各所述单元可以是设置在计算机或移动智能设备中的软件程序,也可以是单独配置的硬件装置。其中,这些单元或模块的名称在某种情况下并不构成对该单元或模块本身的限定。
以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离本申请构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本申请中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。