一种区块链跨链处理方法、装置、计算机设备及存储介质
技术领域
本申请涉及区块链领域,尤其涉及一种区块链跨链处理方法、装置、计算机设备及存储介质。
背景技术
随着区块链技术的发展和广泛应用,越来越多的区块链系统应运而生。
对于一个应用系统而言,其目前有的业务存在于多个区块链系统中,例如比特币网络和以太坊网络,当需要将两条链的数据进行交互时就会用到跨链技术,目前的跨链技术主要是用作资产转移,例如将某账户下的比特币以一定的比例兑换为指定数量的以太坊。
现在的跨链技术多种多样,主要有中继链等技术,但是现有的中继链技术例如Cosmos跨链技术只能够支持资产的跨链,存在支持范围受限的缺点。
发明内容
为了解决上述技术问题或者至少部分地解决上述技术问题,本申请提供了一种区块链跨链处理方法、装置、计算机设备及存储介质。
第一方面,本申请提供了一种区块链跨链处理方法,应用于中继链,所述方法包括:
接收客户端发送的原链和目标链之间的跨链交易请求,所述跨链交易请求中包含所述原链对应的交易锁定信息和所述目标链对应的交易锁定信息,所述交易锁定信息中包括交易锁定方式、契约时间和交易操作信息;
检测所述原链对应的交易锁定信息中的契约时间和所述目标链对应的交易锁定信息中的契约时间是否符合预设要求;
若符合预设要求,则将所述原链对应的交易锁定信息发送至所述原链,以使所述原链根据接收到的交易锁定信息进行交易操作;
若接收到所述原链发送的操作成功信息,则将所述目标链对应的交易锁定信息发送至所述目标链,以使所述目标链根据接收到的交易锁定信息进行交易操作;
若接收到所述目标链发送的操作成功信息,则向所述原链和所述目标链发送交易状态更新请求,以使所述原链和所述目标链更新交易状态。
在一种可能的实现方式中,所述方法还包括:
若所述原链对应的交易锁定信息中的契约时间或所述目标链对应的交易锁定信息中的契约时间不符合预设要求,或接收到所述原链发送的操作失败信息,则向所述客户端发送操作失败信息,以使所述客户端对所述跨链交易请求进行调整。
在一种可能的实现方式中,所述方法还包括:
若接收到所述目标链发送的操作失败信息,则向所述原链发送操作还原请求,以使所述原链还原至根据接收的交易锁定信息进行交易操作之前的状态。
在一种可能的实现方式中,所述跨链交易请求中还包括所述客户端的签名信息、原链的身份信息、目标链的身份信息;
所述检测所述原链对应的交易锁定信息中的契约时间和所述目标链对应的交易锁定信息中的契约时间是否符合预设要求之前,所述方法还包括:
对所述跨链交易请求中包含的客户端的签名信息、原链的身份信息、目标链的身份信息进行验证;
若验证成功,则执行检测所述原链对应的交易锁定信息中的契约时间和所述目标链对应的交易锁定信息中的契约时间是否符合预设要求的步骤;
若验证失败,则向所述客户端发送验证失败信息,以使所述客户端对所述跨链交易请求进行调整。
在一种可能的实现方式中,所述预设要求包括:
所述原链对应的交易锁定信息中的契约时间和所述目标链对应的交易锁定信息中的契约时间均大于当前时间点,所述目标链对应的交易锁定信息中的契约时间不小于所述原链对应的交易锁定信息中的契约时间,并且所述原链对应的交易锁定信息中的契约时间和所述目标链对应的交易锁定信息中的契约时间均在预设时间范围内。
第二方面,本申请实施例还提供了一种区块链跨链处理方法,应用于区块链,所述区块链为原链或目标链,所述方法包括:
接收中继链发送的交易锁定信息,所述交易锁定信息包括交易锁定方式、契约时间和交易操作信息;
检测所述契约时间是否符合预设要求;
若所述契约时间符合预设要求,则检测所述交易锁定方式是否可用;
若所述交易锁定方式可用,则执行所述交易操作信息,并根据所述交易锁定方式和所述契约时间对当前交易进行交易锁定,并向所述中继链发送操作成功信息;
若接收到所述中继链发送的交易状态更新请求,则释放当前交易的交易锁定。
在一种可能的实现方式中,检测所述契约时间是否符合预设要求之前,所述方法还包括:
接收所述中继链发送的客户端的签名信息和所述区块链的身份信息;
对所述客户端的签名信息和所述区块链的身份信息进行验证;
若验证成功,则执行检测所述契约时间是否符合预设要求的步骤;
若验证失败,则向所述中继链发送操作失败信息。
在一种可能的实现方式中,检测所述交易锁定方式是否可用,包括:
检测当前是否有未释放的交易锁定;
若没有未释放的交易锁定,则确定所述交易锁定方式可用;
若有未释放的交易锁定,则检测当前时间是否大于所述未释放的交易锁定对应的契约时间;
若当前时间大于所述未释放的交易锁定对应的契约时间,则释放所述未释放的交易锁定,并确定所述交易锁定方式可用;
若当前时间不大于所述未释放的交易锁定对应的契约时间,则确定所述交易锁定方式不可用。
在一种可能的实现方式中,所述方法还包括:
若所述契约时间不符合预设要求或所述交易锁定方式不可用,则向所述中继链发送操作失败信息。
在一种可能的实现方式中,当所述区块链为原链时,所述方法还包括:
若接收到所述中继链发送的操作还原请求,则还原至执行所述交易操作信息之前的状态。
第三方面,本发明实施例还提供了一种区块链跨链处理装置,应用于中继链,所述装置包括:
接收模块,用于接收客户端发送的原链和目标链之间的跨链交易请求,所述跨链交易请求中包含所述原链对应的交易锁定信息和所述目标链对应的交易锁定信息,所述交易锁定信息中包括交易锁定方式、契约时间和交易操作信息;
契约时间检测模块,用于检测所述原链对应的交易锁定信息中的契约时间和所述目标链对应的交易锁定信息中的契约时间是否符合预设要求;
第一发送模块,用于若符合预设要求,则将所述原链对应的交易锁定信息发送至所述原链,以使所述原链根据接收到的交易锁定信息进行交易操作;
第二发送模块,用于若接收到所述原链发送的操作成功信息,则将所述目标链对应的交易锁定信息发送至所述目标链,以使所述目标链根据接收到的交易锁定信息进行交易操作;
更新请求发送模块,用于若接收到所述目标链发送的操作成功信息,则向所述原链和所述目标链发送交易状态更新请求,以使所述原链和所述目标链更新交易状态。
在一种可能的实现方式中,所述装置还包括:
操作失败信息发送模块,用于若所述原链对应的交易锁定信息中的契约时间或所述目标链对应的交易锁定信息中的契约时间不符合预设要求,或接收到所述原链发送的操作失败信息,则向所述客户端发送操作失败信息,以使所述客户端对所述跨链交易请求进行调整。
在一种可能的实现方式中,所述装置还包括:
还原请求发送模块,用于若接收到所述目标链发送的操作失败信息,则向所述原链发送操作还原请求,以使所述原链还原至根据接收的交易锁定信息进行交易操作之前的状态。
在一种可能的实现方式中,所述跨链交易请求中还包括所述客户端的签名信息、原链的身份信息、目标链的身份信息;
所述装置还包括验证模块,用于检测所述原链对应的交易锁定信息中的契约时间和所述目标链对应的交易锁定信息中的契约时间是否符合预设要求之前,对所述跨链交易请求中包含的客户端的签名信息、原链的身份信息、目标链的身份信息进行验证;
若验证成功,则执行检测所述原链对应的交易锁定信息中的契约时间和所述目标链对应的交易锁定信息中的契约时间是否符合预设要求的步骤;
若验证失败,则向所述客户端发送验证失败信息,以使所述客户端对所述跨链交易请求进行调整。
在一种可能的实现方式中,所述预设要求包括:
所述原链对应的交易锁定信息中的契约时间和所述目标链对应的交易锁定信息中的契约时间均大于当前时间点,所述目标链对应的交易锁定信息中的契约时间不小于所述原链对应的交易锁定信息中的契约时间,并且所述原链对应的交易锁定信息中的契约时间和所述目标链对应的交易锁定信息中的契约时间均在预设时间范围内。
第四方面,本发明实施例还提供了一种区块链跨链处理装置,应用于区块链,所述区块链为原链或目标链,所述装置包括:
接收模块,用于接收中继链发送的交易锁定信息,所述交易锁定信息包括交易锁定方式、契约时间和交易操作信息;
契约时间检测模块,用于检测所述契约时间是否符合预设要求;
锁定方式检测模块,用于若所述契约时间符合预设要求,则检测所述交易锁定方式是否可用;
交易操作执行模块,用于若所述交易锁定方式可用,则执行所述交易操作信息,并根据所述交易锁定方式和所述契约时间对当前交易进行交易锁定,并向所述中继链发送操作成功信息;
更新模块,用于若接收到所述中继链发送的交易状态更新请求,则释放当前交易的交易锁定。
在一种可能的实现方式中,所述装置还包括验证模块,用于检测所述契约时间是否符合预设要求之前,接收所述中继链发送的客户端的签名信息和所述区块链的身份信息,对所述客户端的签名信息和所述区块链的身份信息进行验证,若验证成功,则执行检测所述契约时间是否符合预设要求的步骤,若验证失败,则向所述中继链发送操作失败信息。
在一种可能的实现方式中,所述锁定方式检测模块具体用于:
检测当前是否有未释放的交易锁定;
若没有未释放的交易锁定,则确定所述交易锁定方式可用;
若有未释放的交易锁定,则检测当前时间是否大于所述未释放的交易锁定对应的契约时间;
若当前时间大于所述未释放的交易锁定对应的契约时间,则释放所述未释放的交易锁定,并确定所述交易锁定方式可用;
若当前时间不大于所述未释放的交易锁定对应的契约时间,则确定所述交易锁定方式不可用。
在一种可能的实现方式中,所述装置还包括:
操作失败信息发送模块,用于若所述契约时间不符合预设要求或所述交易锁定方式不可用,则向所述中继链发送操作失败信息。
在一种可能的实现方式中,当所述区块链为原链时,所述装置还包括:
还原模块,用于若接收到所述中继链发送的操作还原请求,则还原至执行所述交易操作信息之前的状态。
第五方面,本发明实施例还提供一种计算机设备,包括:处理器和存储器,所述处理器用于执行所述存储器中存储的数据处理程序,以实现第一方面所述的区块链跨链处理方法。
第六方面,本发明实施例还提供一种存储介质,所述存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现第一方面所述的区块链跨链处理方法。
本申请实施例提供的上述技术方案与现有技术相比具有如下优点:
本申请实施例提供的一种区块链跨链处理方法,中继链接收客户端发送的原链和目标链之间的跨链交易请求,跨链交易请求中包括原链和目标链各自对应的交易锁定信息,交易锁定信息中包含交易锁定方式、契约时间和交易操作信息,对跨链交易请求中的契约时间进行验证,当契约时间符合预设要求时,将原链对应的交易锁定信息发送至原链,以使原链进行交易操作,当原链操作成功时再将目标链对应的交易锁定信息发送至目标链,以使目标链进行交易操作,当原链和目标链均操作成功时,向原链和目标链发送交易状态更新请求,使原链和目标链进行交易状态更新。本方案中的跨链交易请求由客户端提出,中继链仅按照跨链交易中指定的方式进行执行,通过该方式将具体的跨链交易请求放宽给用户通过客户端设定,因此理论上可以支持各种区块链操作,从而跨越支持范围的限制,使得跨链处理不再仅仅局限于资金转移,扩大了适用范围。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种区块链跨链处理示意图;
图2为本申请实施例提供的一种跨链交易请求的结构示意图;
图3为本申请实施例提供的一种区块链跨链处理方法的流程图;
图4为本申请实施例提供的一种区块链跨链处理方法的流程图;
图5为本申请实施例提供的一种区块链跨链处理装置的框图;
图6为本申请实施例提供的一种区块链跨链处理装置的框图;
图7为本申请实施例提供的一种计算机设备的示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
随着区块链技术的发展和广泛应用,越来越多的区块链系统应运而生。
对于一个应用系统而言,其目前有的业务存在于多个区块链系统中,例如比特币网络和以太坊,当需要将两条链数据进行交互时就会用到跨链技术。
目前业内的跨链技术主要是用作资产转移,例如将某账户下的比特币以一定的比例兑换为指定数量的以太坊,现在业内涉及到的跨链技术多种多样,主要有公证人、中继链、哈希锁定和分布式私钥控制等技术,其中最常用的是中继链技术。
目前业内通常使用中继链和哈希锁定技术进行跨链交易,但是上述两种方式主要会存在以下几个问题:
1、目前中继链技术主要用于资产的跨链,支持范围受限,拓展困难;
2、哈希锁定技术对于交易的回滚支持困难,当出现事务无法正常执行完成时会造成整个系统异常,因此其一般只支持“微交易”,即可以承受损失的交易。
本申请提供了一种区块链跨链处理方法,将哈希锁定技术和中继链技术结合在一起,并利用Lease机制,从而可以有效的解决上述提到的中继链和哈希锁定技术存在的问题,形成一种更安全、稳定的跨链技术。
下面结合附图对本申请实施例提供的区块链跨链处理方法进行描述。
如图1所示,跨链交易系统中包括客户端、中继链(M链)、原链(A链)和目标链(B链),其中,客户端用于发起跨链交易请求,M链部署有跨链智能合约,会自动执行客户端提交的跨链交易请求,原链为跨链处理中的一方,目标链为跨链处理中的另一方。
如图1所示,A链和B链间的跨链处理流程主要包括:
1)客户端首先根据业务需求构建需要操作A链和B链的跨链交易请求,图2为跨链交易请求的一种结构示意图,如图2所示,客户端生成的跨链交易请求主要包括A链交易锁定信息和B链交易锁定信息,其中交易锁定信息中主要包括交易锁定方式(即TxLock)、契约时间(即Lease Time)还有交易操作信息。
因为本申请不限定跨链交易请求的操作方式,因此客户端可以直接采用交易序列化的方式,这样一方面可提高其性能,另一方面可以提高其安全性。
在构建跨链交易请求时,可以先根据业务需求设定A链和B链的交易锁定方式和交易操作信息(交易操作信息根据具体的业务设定),设定好交易锁定方式和交易操作信息后,根据业务特点及A链和B链的情况设置一个合理的契约时间(即Lease Time),从而由A链和B链各自对应的交易锁定方式、交易操作信息和契约时间组成跨链交易请求。
契约时间是一个时间点,用于设置交易锁定的锁定时间,其含义为:到指定的时间点时若该交易未被设置为指定成功,则认为执行失败,在该时间点之前该交易处于锁定状态,无法被重复使用。其中A链的契约时间和B链的契约时间可以设置为相同,也可以是B链的契约时间大于A链的契约时间,即B链交易锁定到期时间比A链交易锁定到期的时间晚。
跨链交易请求中除了上述交易锁定信息之外,还可以携带有用于进行安全验证的验证信息,验证信息中包括客户端的签名信息、A链的身份信息和B链的身份信息,其中签名信息可以采用现有的加密方式生成,例如采用非对称密钥生成或采用哈希算法生成等等,A链的身份信息可以为A链上进行跨链交易的账户名等,B链的身份信息可以为B链上进行跨链交易的账户名等。
2)客户端构建完成跨链交易请求后,将构建的跨链交易请求发送至M链(即中继链)。
3)M链接收到客户端发送的跨链交易请求后,首先根据其中的验证信息对其进行安全验证,安全验证包括签名验证和身份验证,其中签名验证的方式采用与签名信息采用的加密方式对应的签名验证方式,例如:如果客户端的签名信息为采用非对称密钥加密方式生成的,则在验证时就采用与非对称加密方式对应的验证方式,如果客户端的签名信息为采用哈希算法加密生成的,则在验证时就采用与哈希算法对应的验证方式;身份验证的方式可以为将接收到的A链的身份信息与预先存储的A链的身份信息进行比对,确定是否匹配,若相匹配,则确定A链的身份信息验证通过,若不相匹配,则确定A链的身份信息验证失败;B链身份信息的验证方式可以为将接收到的B链的身份信息与预先存储的B链的身份信息进行比对,确定是否匹配,若相匹配,则确定B链的身份信息验证通过,若不相匹配,则确定B链的身份信息验证失败,本申请对安全验证方式不做具体限定,除了上述方式还可以采用其他任何安全验证方式进行安全验证。
4)安全验证通过后,需要核对接收到的跨链交易请求中设置的A链和B链各自对应的Lease Time进行Lease Time验证,以确定A链和B链各自对应的Lease Time是否符合预设要求,其预设要求包括但不限于:
(1)A链和B链的Lease Time均大于当前时间点;
(2)B链对应的Lease Time不小于A链对应的Lease Time;
(3)A链和B链Lease Time在预设时间范围内,以使Lease Time在一个较为合适的时间范围内,防止过大或过小,其中预设时间范围为根据具体需求设定的范围。
5)若A链和B链各自对应的Lease Time均合法,则M链将跨链交易请求中A链对应交易锁定信息和验证信息发送至A链。
6)A链首先根据验证信息进行安全验证,安全验证方式与上述中继链中的针对A链的安全验证方式可以相同,此处不再赘述,若安全验证通过则执行7),若安全验证不通过,则向中继链发送操作失败信息,以使中继链向客户端上报操作失败信息,从而使客户端重新构建跨链交易请求。
7)A链对接收的Lease Time进行验证,A链进行Lease Time验证的方式与中继链中进行Lease Time验证的方式相似,因为A链只接收到了自身对应的Lease Time,所以在进行Lease Time验证时无需验证B链对应的Lease Time是否小于A链对应的Lease Time,只需验证接收到的Lease Time是否大于当前时间,和验证接收到的Lease Time是否在预设的时间范围内,若Lease Time大于当前时间且在预设的时间范围内,则确定Lease Time验证通过,则执行8),若Lease Time不大于当前时间或不在预设的时间范围内,则确定Lease Time验证没有通过,则向中继链发送操作失败信息,以使中继链向客户端上报操作失败信息,从而使客户端对跨链交易请求进行调整。
8)A链对接收的交易锁定信息中的交易锁定方式进行判断,判断该交易锁定方式是否可用,若该交易锁定方式可用,则执行9),若该交易锁定方式不可用,则向中继链发送操作失败信息,以使中继链记录该操作失败信息并向客户端上报操作失败信息,从而使客户端对跨链交易请求进行调整。
9)执行接收到的交易锁定信息中包含的交易操作信息,以进行交易操作,并根据交易锁定方式为当前交易进行交易锁定,并根据LeaseTime为交易锁定设置锁定时间,然后向M链发送操作成功信息。
10)M链收到A链发送的操作成功信息后,记录该操作成功信息,并将跨链交易请求中B链对应的交易锁定信息和验证信息发送至B链,与A链类似,B链执行相应的操作。
11)若10)中B链由于安全验证没有通过、LeaseTime验证没有通过或交易锁定方式无法执行等原因,导致交易操作失败,则M链需要向A链发送操作还原请求,以使A链还原之前A链的相关操作。
还原操作即使不成功也无妨,因为后续可通过Lease Time自动释放掉A链之前的操作。
12)若10)中B链成功执行交易操作,即M链接收到B链发送的操作成功信息,则M链发送交易状态更新请求至A链和B链,以使A链和B链释放各自的TxLock,若A链或B链释放TxLock失败则一直重试至成功为止,此处也是为什么Lease Time设置需要有一个较为合适的时间范围的原因,以防止重试次数太少,没有成功即导致回滚的问题,如果M链释放A链和B链的TxLock失败,则A链或B链进行下一次交易时,判断是否有未释放的TxLock,若有未释放的TxLock,且未释放的TxLock对应的Lease Time已经过期(即小于当前时间),则自动释放掉该未释放的TxLock。
本申请提供的一种区块链跨链处理方法,主要有以下几个特点:
本申请提供的区块链跨链处理方法,利用中继链技术,并通过中继链中的智能合约,将系统的跨链交易在智能合约限定的事务范围内操作,一方面使得操作更加透明,另一方面将操作的方式放宽给用户,跨链交易信息由用户通过客户端设置,因此理论上可以支持各种区块链操作,中继链的智能合约仅执行跨链交易信息,通过该方式可有效屏蔽掉各种区块链系统之间的区别,使得跨链处理不再仅仅局限于资金转移,从而解决现有跨链技术存在的支持范围受限的问题。
本申请利用使用交易锁定方式即TxLock进行交易锁定,该交易锁定不规定交易锁定的方式,可以是交易Hash,也可以是交易ID,甚至于是账户(具体账户或UTXO),这样可以实现对任何元数据的锁定,不限于资金,并且利用分布式系统中的Lease机制设置交易锁定的锁定时间,保证在跨链处理出现超时亦或是中继链异常的情况下也可以释放交易锁定,不会因为长期占用该交易锁定而导致后续交易无法进行,有效解决了目前哈希锁定技术中因为交易无法回滚导致交易损失的问题。
下面分别以中继链和区块链(即原链或目标链)为执行主体,对本申请实施例提供的一种区块链跨链处理方法进行详细描述。
图3为本申请实施例提供的一种区块链跨链处理方法,该方法应用于中继链,中继链中部署有智能合约,如图3所示,该方法可以包括如下步骤:
S31.接收客户端发送的原链和目标链之间的跨链交易请求,所述跨链交易请求中包含所述原链对应的交易锁定信息和所述目标链对应的交易锁定信息,所述交易锁定信息中包括交易锁定方式、契约时间和交易操作信息。
其中原链和目标链为两个不同的区块链,交易锁定方式可以为交易Hash、交易ID,甚至于是账户(具体账户或UTXO)等等,
契约时间即为根据Lease机制设置的Lease Time,交易操作信息为与交易操作相关的一些信息,以资金交易为例可以为交易金额、资金增加操作、资金减少操作、交易账号等。
其中原链为进行跨链交易的一方,目标链为进行跨链交易的另一方。
中继链接收到客户端发送的跨链交易请求后,因为中继链中部署有智能合约,所以会自动执行客户端提交的跨链交易请求,使用中继链的智能合约,通过透明的程序处理,保证了中继链操作的公开性。
S32.检测所述原链对应的交易锁定信息中的契约时间和所述目标链对应的交易锁定信息中的契约时间是否符合预设要求。
其中预设要求为根据需求预先设定的要求。
S33.若符合预设要求,则将所述原链对应的交易锁定信息发送至所述原链,以使所述原链根据接收到的交易锁定信息进行交易操作。
S34.若接收到所述原链发送的操作成功信息,则将所述目标链对应的交易锁定信息发送至所述目标链,以使所述目标链根据接收到的交易锁定信息进行交易操作。
S35.若接收到所述目标链发送的操作成功信息,则向所述原链和所述目标链发送交易状态更新请求,以使所述原链和所述目标链更新交易状态。
本申请实施例提供的一种区块链跨链处理方法,中继链接收客户端发送的原链和目标链之间的跨链交易请求,跨链交易请求中包括原链和目标链各自对应的交易锁定信息,交易锁定信息中包含交易锁定方式、契约时间和交易操作信息,对跨链交易请求中的契约时间进行验证,当契约时间符合预设要求时,将原链对应的交易锁定信息发送至原链,以使原链进行交易操作,当原链操作成功时再将目标链对应的交易锁定信息发送至目标链,以使目标链进行交易操作,当原链和目标链均操作成功时,向原链和目标链发送交易状态更新请求,使原链和目标链进行交易状态更新。本方案中的跨链交易请求由客户端提出,中继链仅按照跨链交易中指定的方式进行执行,通过该方式将具体的跨链交易请求放宽给用户通过客户端设定,因此理论上可以支持各种区块链操作,从而跨越支持范围的限制,扩大了适用范围。
在上述实施例的基础上,本申请实施例提供的区块链跨链处理方法还可以包括:
若原链对应的交易锁定信息中的契约时间不符合预设要求或目标链对应的交易锁定信息中的契约时间不符合预设要求,或接收到原链发送的操作失败信息,则向所述客户端发送操作失败信息,以使所述客户端对所述跨链交易请求进行调整。
若原链对应的交易锁定信息中的契约时间或目标链对应的交易锁定信息中的契约时间不符合预设要求,则说明此时交易锁定信息中包含的信息不符合中继链的要求,使得中继链无法进行后续的跨链处理,若接收到原链发送的操作失败信息,则说明此时跨链交易请求中包含的信息不符合原链的要求,导致A链无法根据跨链请求进行交易操作,因此为了保证跨链处理可以正常进行通知客户端当前跨链交易请求中包含的信息不符合跨链处理要求,以使客户端对跨链交易请求进行调整,以便完成跨链处理。
在本实施例中,当跨链交易请求中包含的信息不符合要求时,反馈至客户端,以使客户端对跨链交易请求进行调整,便于完成跨链处理。
在上述实施例的基础上,区块链跨链处理方法还可以包括:
若接收到目标链发送的操作失败信息,则向原链发送操作还原请求,以使原链还原至根据接收的交易锁定信息进行交易操作之前的状态。
比如原链与目标链进行跨链资金转移,将原链中一定数量的比特币转换成等值的以太坊,在跨链处理过程中,原链先从交易账户转移出一定数量的比特币,然后目标链再在对应的账户中增加等值的以太坊,若目标链交易操作失败,没有成功的增加等值的以太坊,此时为了避免资金损失,将原链转移出的比特币再转移回原账户。
在本实施例中,因为交易应该是对等的,所以当目标链操作失败时,为了避免交易异常导致的损失,此时将原链的操作进行还原,避免出现损失。
在上述实施例的基础上,跨链交易请求中还包括验证信息,验证信息包括所述客户端的签名信息、原链的身份信息、目标链的身份信息;
在执行S32之前,该区域链跨链处理方法还可以包括:
对所述跨链交易请求中包含的客户端的签名信息、原链的身份信息、目标链的身份信息进行验证,若验证成功,即客户端的签名信息、原链的身份信息和目标链的身份信息均通过了验证,则执行S32;若验证失败,即客户端的签名信息、原链的身份信息和/或目标链的身份信息没有通过验证,则向所述客户端发送验证失败信息,以使所述客户端对所述跨链交易请求进行调整。
其中,签名信息的验证和身份信息的验证可以采用现有的验证方式,具体验证方式本实施例不做具体限定。
在上述实施例的基础上,S32中的预设要求可以包括但不限于下述内容:
所述原链对应的交易锁定信息中的契约时间和所述目标链对应的交易锁定信息中的契约时间均大于当前时间点,所述目标链对应的交易锁定信息中的契约时间不小于所述原链对应的交易锁定信息中的契约时间,并且所述原链对应的交易锁定信息中的契约时间和所述目标链对应的交易锁定信息中的契约时间均在预设时间范围内。
在本实施例中,通过上述预设要求可以将原链对应的契约时间和目标链对应的契约时间限定在合理的时间范围内。
图4为本申请实施例提供的一种区块链跨链处理方法的流程图,该方法应用于区块链,区块链为原链或目标链,如图4所示,该方法可以包括如下步骤:
S41.接收中继链发送的交易锁定信息,所述交易锁定信息包括交易锁定方式、契约时间和交易操作信息。
S42.检测所述契约时间是否符合预设要求。
预设要求为根据实际需求设定的针对契约时间的要求。
S43.若所述契约时间符合预设要求,则检测所述交易锁定方式是否可用。
S44.若所述交易锁定方式可用,则执行所述交易操作信息,并根据所述交易锁定方式和所述契约时间对当前交易进行交易锁定,并向所述中继链发送操作成功信息。
根据所述交易锁定方式和所述契约时间对当前交易进行交易锁定就是设置与交易锁定方式一致的交易锁定,并根据契约时间为该交易锁定设置锁定时间,契约时间是一个时间点,在该时间点之前当前交易处于锁定状态,无法被重复使用,当到达契约时间对应的时间点时,若当前交易的交易状态未被设置为交易成功,则认为交易操作失败,并且若到达契约时间对应的时间点时该交易锁定还没有释放(即仍处于锁定状态),则该区块链中的下一个交易可以释放该交易锁定,避免因为长期占用该锁定而导致后续交易无法进行。
S45.若接收到所述中继链发送的交易状态更新请求,则释放当前交易的交易锁定。
在一种可能的实现方式中,接收到中继链发送的交易状态更新请求后,区块链还将自身的交易状态更新为交易成功。
本实施例提供的区块链跨链处理方法,进行跨链交易的区块链接收中继链发送的交易锁定信息,对交易锁定信息中包含的契约时时间进行验证,确定交易锁定时间是否符合预设要求,当符合预设要求时再执行后续操作,保证了契约时间在一个合适的时间范围内,当契约时间符合预设要求时,检测交易锁定信息中包含的交易锁定方式是否可用,若可用则执行交易锁定信息中包含的交易操作信息,进行交易操作,并利用交易锁定方式对当前进行的交易进行交易锁定,保证交易的安全性,并且向中继链发送操作成功信息,以便中继链进行后续操作。本实施例提供的方案,采用交易锁定方式并利用Lease机制,保证在进行跨链处理时,若出现超时亦或是发起节点异常的情况下也可以释放交易锁定,不会因为长期占用该锁定而导致后续交易无法进行,可有效屏蔽哈希锁定技术中因为交易无法回滚导致交易损失的问题。
在上述实施例的基础上,在执行S42之前,该区块链跨链处理方法还可以包括:
接收所述中继链发送的客户端的签名信息和所述区块链的身份信息,对所述客户端的签名信息和所述区块链的身份信息进行验证,若验证成功,即客户端的签名信息和所述区块链的身份信息均通过验证,则执行检测所述契约时间是否符合预设要求的步骤,若验证失败,即客户端的签名信息或所述区块链的身份信息没有通过验证,则向所述中继链发送操作失败信息。
其中客户端的签名信息的验证和区块链的身份信息的验证均为现有成熟技术,本方案可以采用现有的验证方式进行客户端签名信息的验证和区块链身份信息的验证,具体验证方式本实施例不做限定。
在本实施例中,根据客户端的签名信息和区块链的身份信息进行验证,在验证通过时在进行后续操作,提高了跨链处理的安全性。
在上述实施例的基础上,S43检测所述交易锁定方式是否可用,可以采用下述方式:
检测当前是否有未释放的交易锁定,若没有未释放的交易锁定,则确定所述交易锁定方式可用,若有未释放的交易锁定,则检测当前时间是否大于所述未释放的交易锁定对应的契约时间,若当前时间大于所述未释放的交易锁定对应的契约时间,则释放所述未释放的交易锁定,并确定所述交易锁定方式可用,若当前时间不大于所述未释放的交易锁定对应的契约时间,则确定所述交易锁定方式不可用。
在本实施例中,因为本申请将交易锁定与Lease机制相结合,保证了在进行跨链处理出现超时亦或是中继链异常的情况下也可以释放交易锁定,不会因为长期占用该锁定而导致后续交易无法进行。
在上述实施例的基础上,该区块链跨链处理方法还可以包括:
若所述契约时间不符合预设要求或所述交易锁定方式不可用,则向所述中继链发送操作失败信息。
当交易锁定方式不可用时,区块链则无法进行后续跨链处理的相关操作,此时及时将操作失败信息发送至中继链,以使中继链根据操作失败信息进行相应的处理,比如,若区块链为原链时,中继链接收到原链发送的操作失败信息会将操作失败信息反馈至客户端以使客户端对跨链交易请求中的信息进行重新调整直至区块链操作成功,若区块链为目标链,中继链接收到目标链发送的操作失败信息后会向原链发送操作还原请求,避免跨链处理失败造成的损失。
在本实施例中,将操作失败信息发送至中继链,使中继链可以根据操作失败信息进行相应的操作,保证了跨链处理的有序进行,避免出现损失。
在上述实施例的基础上,当所述区块链为原链时,该区块链跨链处理方法还可以包括:
若接收到所述中继链发送的操作还原请求,则还原至执行所述交易操作信息之前的状态,也就是还原至执行S44之前的状态。
因为在进行跨链处理时,原链先进行交易操作,当原链操作成功后,目标链再进行相应的交易操作,当目标链交易操作成功时,整个跨链处理才算成功,但是在目标链进行交易操作时,可能会出现操作失败的情况,当目标链交易操作失败时,将原链的交易操作进行还原,可以有效避免跨链处理失败造成的损失。
在上述实施例的基础上,S42.检测所述契约时间是否符合预设要求,中的预设要求可以包括但不限于下述要求:
接收到的契约时间大于当前时间,且接收到的契约时间在预设的时间范围内。
其中预设的时间范围为根据实际情况设定的时间范围,该时间范围可以与S32中用到的预设时间范围相同,也可以不同,具体根据需求设定。
在本实施例中,通过上述预设要求对接收到的契约时间进行验证,保证了契约时间的有效性和合理性。
本发明实施例还提供了一种区块链跨链处理装置,应用于中继链,如图5所示,该装置可以包括:
接收模块501,用于接收客户端发送的原链和目标链之间的跨链交易请求,所述跨链交易请求中包含所述原链对应的交易锁定信息和所述目标链对应的交易锁定信息,所述交易锁定信息中包括交易锁定方式、契约时间和交易操作信息;
契约时间检测模块502,用于检测所述原链对应的交易锁定信息中的契约时间和所述目标链对应的交易锁定信息中的契约时间是否符合预设要求;
第一发送模块503,用于若符合预设要求,则将所述原链对应的交易锁定信息发送至所述原链,以使所述原链根据接收到的交易锁定信息进行交易操作;
第二发送模块504,用于若接收到所述原链发送的操作成功信息,则将所述目标链对应的交易锁定信息发送至所述目标链,以使所述目标链根据接收到的交易锁定信息进行交易操作;
更新请求发送模块505,用于若接收到所述目标链发送的操作成功信息,则向所述原链和所述目标链发送交易状态更新请求,以使所述原链和所述目标链更新交易状态。
在一种可能的实现方式中,该装置还可以包括:
操作失败信息发送模块,用于若所述原链对应的交易锁定信息中的契约时间或所述目标链对应的交易锁定信息中的契约时间不符合预设要求,或接收到所述原链发送的操作失败信息,则向所述客户端发送操作失败信息,以使所述客户端对所述跨链交易请求进行调整。
在一种可能的实现方式中,该装置还可以包括:
还原请求发送模块,用于若接收到所述目标链发送的操作失败信息,则向所述原链发送操作还原请求,以使所述原链还原至根据接收的交易锁定信息进行交易操作之前的状态。
在一种可能的实现方式中,所述跨链交易请求中还包括所述客户端的签名信息、原链的身份信息、目标链的身份信息;
该装置还可以包括验证模块,用于检测所述原链对应的交易锁定信息中的契约时间和所述目标链对应的交易锁定信息中的契约时间是否符合预设要求之前,对所述跨链交易请求中包含的客户端的签名信息、原链的身份信息、目标链的身份信息进行验证;
若验证成功,则执行检测所述原链对应的交易锁定信息中的契约时间和所述目标链对应的交易锁定信息中的契约时间是否符合预设要求的步骤;
若验证失败,则向所述客户端发送验证失败信息,以使所述客户端对所述跨链交易请求进行调整。
在一种可能的实现方式中,所述预设要求包括:
所述原链对应的交易锁定信息中的契约时间和所述目标链对应的交易锁定信息中的契约时间均大于当前时间点,所述目标链对应的交易锁定信息中的契约时间不小于所述原链对应的交易锁定信息中的契约时间,并且所述原链对应的交易锁定信息中的契约时间和所述目标链对应的交易锁定信息中的契约时间均在预设时间范围内。
本发明实施例还提供了一种区块链跨链处理装置,应用于区块链,所述区块链为原链或目标链,如图6所示,所述装置包括:
接收模块601,用于接收中继链发送的交易锁定信息,所述交易锁定信息包括交易锁定方式、契约时间和交易操作信息;
契约时间检测模块602,用于检测所述契约时间是否符合预设要求;
锁定方式检测模块603,用于若所述契约时间符合预设要求,则检测所述交易锁定方式是否可用;
交易操作执行模块604,用于若所述交易锁定方式可用,则执行所述交易操作信息,并根据所述交易锁定方式和所述契约时间对当前交易进行交易锁定,并向所述中继链发送操作成功信息;
更新模块605,用于若接收到所述中继链发送的交易状态更新请求,则释放当前交易的交易锁定。
在一种可能的实现方式中,该装置还可以包括验证模块,用于检测所述契约时间是否符合预设要求之前,接收所述中继链发送的客户端的签名信息和所述区块链的身份信息,对所述客户端的签名信息和所述区块链的身份信息进行验证,若验证成功,则执行检测所述契约时间是否符合预设要求的步骤,若验证失败,则向所述中继链发送操作失败信息。
在一种可能的实现方式中,所述锁定方式检测模块603具体用于:
检测当前是否有未释放的交易锁定;
若没有未释放的交易锁定,则确定所述交易锁定方式可用;
若有未释放的交易锁定,则检测当前时间是否大于所述未释放的交易锁定对应的契约时间;
若当前时间大于所述未释放的交易锁定对应的契约时间,则释放所述未释放的交易锁定,并确定所述交易锁定方式可用;
若当前时间不大于所述未释放的交易锁定对应的契约时间,则确定所述交易锁定方式不可用。
在一种可能的实现方式中,该装置还可以包括:
操作失败信息发送模块,用于若所述契约时间不符合预设要求或所述交易锁定方式不可用,则向所述中继链发送操作失败信息。
在一种可能的实现方式中,当所述区块链为原链时,该装置还可以包括:
还原模块,用于若接收到所述中继链发送的操作还原请求,则还原至执行所述交易操作信息之前的状态。
在本申请另一实施例中,还提供了一种计算机设备,如图7所示,包括处理器701、通信接口702、存储器703和通信总线704,其中,处理器701,通信接口702,存储器703通过通信总线704完成相互间的通信;
存储器703,用于存放计算机程序;
处理器701,用于执行存储器703上所存放的程序时,实现如下步骤:
接收客户端发送的原链和目标链之间的跨链交易请求,所述跨链交易请求中包含所述原链对应的交易锁定信息和所述目标链对应的交易锁定信息,所述交易锁定信息中包括交易锁定方式、契约时间和交易操作信息,检测所述原链对应的交易锁定信息中的契约时间和所述目标链对应的交易锁定信息中的契约时间是否符合预设要求,若符合预设要求,则将所述原链对应的交易锁定信息发送至所述原链,以使所述原链根据接收到的交易锁定信息进行交易操作,若接收到所述原链发送的操作成功信息,则将所述目标链对应的交易锁定信息发送至所述目标链,以使所述目标链根据接收到的交易锁定信息进行交易操作,若接收到所述目标链发送的操作成功信息,则向所述原链和所述目标链发送交易状态更新请求,以使所述原链和所述目标链更新交易状态。
或
接收中继链发送的交易锁定信息,所述交易锁定信息包括交易锁定方式、契约时间和交易操作信息,检测所述契约时间是否符合预设要求,若所述契约时间符合预设要求,则检测所述交易锁定方式是否可用,若所述交易锁定方式可用,则执行所述交易操作信息,并根据所述交易锁定方式和所述契约时间对当前交易进行交易锁定,并向所述中继链发送操作成功信息,若接收到所述中继链发送的交易状态更新请求,则释放当前交易的交易锁定。
上述计算机设备提到的通信总线704可以是外设部件互连标准(PeripheralComponent Interconnect,简称PCI)总线或扩展工业标准结构(Extended IndustryStandard Architecture,简称EISA)总线等。该通信总线704可以分为地址总线、数据总线、控制总线等。为便于表示,图7中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口702用于上述计算机设备与其他设备之间的通信。
存储器703可以包括随机存取存储器(Random Access Memory,简称RAM),也可以包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器701可以是通用处理器,包括中央处理器(Central ProcessingUnit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital Signal Processing,简称DSP)、专用集成电路(Application SpecificIntegrated Circuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
在本申请另一实施例中,还提供了一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有区块链跨链处理方法程序,所述区块链跨链处理方法程序被处理器执行时实现上述任一所述的区块链跨链处理方法的步骤。
本发明实施例在具体实现时,可以参阅上述各个实施例,具有相应的技术效果。
需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅是本发明的具体实施方式,使本领域技术人员能够理解或实现本发明。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所申请的原理和新颖特点相一致的最宽的范围。