跨链调用方法、装置、系统与计算机可读存储介质制造方法及图纸

技术编号:28429611 阅读:24 留言:0更新日期:2021-05-11 18:39
本发明专利技术公开了一种跨链调用方法,包括:若检测到第一区块链的业务合约存在跨链调用需求,则基于第一区块链的桥接合约注册业务合约的跨链请求,并将跨链请求保存到桥接合约的任务队列;基于第一区块链的第一跨链路由,轮询获取任务队列中的跨链请求,并将跨链请求路由至跨链调用需求对应的第二区块链的第二跨链路由;基于第二跨链路由,调用第二区块链的入口合约,并基于第二区块链的入口合约,检测跨链请求是否为重复调用;基于检测结果,在第二区块链获取跨链请求对应的调用结果,并基于调用结果,完成回调。本发明专利技术还公开了一种跨链调用装置、系统和计算机可读存储介质。本发明专利技术通用性强,可保证业务正常进行。

【技术实现步骤摘要】
跨链调用方法、装置、系统与计算机可读存储介质
本专利技术涉及金融科技(Fintech)
,尤其涉及一种跨链调用方法、装置、系统与计算机可读存储介质。
技术介绍
近年来,随着金融科技(Fintech),尤其是互联网金融的不断发展,越来越多的技术(如分布式、区块链Blockchain、人工智能等)应用在金融领域,但金融业也对其提出了更高的要求,如金融业对跨链调用有更高的要求。其中,跨链调用指的是由智能合约发起的调用其他链资源(智能合约、区块链状态等)的一种跨系统远程调用方法,在现有技术中,为了实现跨链调用,一般采用基于事件机制来实现跨链调用请求的触发,具体的,各区块链有自己的交互装置,不同链的交互装置可以进行相互通讯,链上的智能合约以某种格式,如日志格式等,发起一个跨链调用事件,当交互装置监听到该事件时,进行相应的处理,并完成调用。然而,现有跨链技术由于不同的区块链事件机制千差万别,功能参差不齐,甚至有的区块链不支持事件机制,使得现有的跨链技术通用性不足。并且,区块链本身是不需要考虑多活的,因为区块链节点间互为主备,但是为了实现跨链调用,现有技术引入了新的交互装置,而为了保证交互装置可靠,需要做多活处理,而在基于事件机制的跨链系统中,链上的一个跨链调用事件,多活架构下所有的交互装置都会监听到,然后都做一样的动作,这就保证业务合约的实现必须是幂等的,否则重复调用会导致业务出错。可见,现有跨链技术通用性不足,跨链调用限制多。
技术实现思路
本专利技术的主要目的在于提出一种跨链调用方法、装置、系统与计算机可读存储介质,旨在实现便捷且通用的跨链调用。为实现上述目的,本专利技术提供一种跨链调用方法,所述跨链调用方法包括如下步骤:基于第一区块链的业务合约调用桥接合约,以注册跨链调用请求,并基于桥接合约将所述跨链请求保存到任务队列;基于第一区块链的第一跨链路由,轮询获取所述任务队列中的所述跨链请求,并将所述跨链请求路由至所述跨链调用需求对应的第二区块链的第二跨链路由;基于第二跨链路由,调用第二区块链的入口合约,并基于第二区块链的入口合约,检测所述跨链请求是否为重复调用;基于检测结果,在第二区块链获取所述跨链请求对应的调用结果,并基于所述调用结果,完成回调。优选地,所述基于第一区块链的业务合约调用桥接合约,以注册跨链调用请求的步骤包括:确定所述业务合约的跨链参数,并将所述跨链参数传入所述桥接合约;获取所述桥接合约的序列号,并基于所述序列号和所述跨链参数,注册所述业务合约的跨链请求。优选地,所述获取所述桥接合约的序列号,并基于所述序列号和所述跨链参数,注册所述业务合约的跨链请求的步骤包括:获取所述桥接合约当前的序列号,所述序列号为自增序列号;对所述跨链参数进行序列化处理,以得到序列化字符串,并将所述序列号和所述序列化字符串按照键值对的形式保存,以得到所述业务合约的跨链请求。优选地,所述基于第一区块链的第一跨链路由,轮询获取所述任务队列中的所述跨链请求,并将所述跨链请求路由至所述跨链调用需求对应的第二区块链的第二跨链路由的步骤包括:获取所述桥接合约的索引号,所述索引号用于记录所述任务队列中跨链请求的处理进度;基于第一区块链的第一跨链路由和所述索引号,在所述任务队列中轮询索引所述跨链请求;对所述跨链请求进行唯一化处理,并将处理后的所述跨链请求路由至所述跨链调用需求对应的第二区块链的第二跨链路由。优选地,所述对所述跨链请求进行唯一化处理的步骤包括:对所述跨链请求进行反序列化处理,以得到跨链参数,并基于所述跨链参数和所述索引号,计算跨链序列号;基于所述跨链序列号和所述跨链参数,重新生成跨链请求。优选地,所述基于检测结果,在第二区块链获取所述跨链请求对应的调用结果,并基于所述调用结果,完成回调的步骤包括:若所述检测结果为不重复,则基于所述入口合约和所述跨链请求,调用所述调用跨链需求对应的目标业务合约,以获得所述跨链请求对应的调用结果,并将所述调用结果返回第二跨链路由,以基于第二跨链路由将所述调用结果转发至第一跨链路由,其中,若第二区块链的入口合约不存在所述跨链序列号,则检测结果为不重复;基于第一跨链路由和所述调用结果,调用第一区块链的入口合约,以通过第一区块链的入口合约将所述调用结果返回至第一区块链的业务合约;基于第一跨链路由和所述调用结果,调用第一区块链的桥接合约,以更新所述索引号。优选地,所述基于检测结果,在第二区块链获取所述跨链请求对应的调用结果,并基于所述调用结果,完成回调的步骤包括:若所述检测结果为重复,则基于所述跨链序列号,查找上一次调用的调用结果,并将所述调用结果返回第二跨链路由,以基于第二跨链路由将所述调用结果转发至第一跨链路由,其中,若第二区块链的入口合约存在所述跨链序列号,则检测结果为重复;基于第一跨链路由和所述调用结果,调用第一区块链的入口合约,以通过第一区块链的入口合约将所述调用结果返回至第一区块链的业务合约;基于第一跨链路由和所述调用结果,调用第一区块链的桥接合约,以更新所述索引号。此外,为实现上述目的,本专利技术还提供一种跨链调用装置,所述跨链调用装置包括:注册保存模块,用于基于第一区块链的业务合约调用桥接合约,以注册跨链调用请求,并基于桥接合约将所述跨链请求保存到任务队列;轮询路由模块,用于基于第一区块链的第一跨链路由,轮询获取所述任务队列中的所述跨链请求,并将所述跨链请求路由至所述跨链调用需求对应的第二区块链的第二跨链路由;调用检测模块,用于基于第二跨链路由,调用第二区块链的入口合约,并基于第二区块链的入口合约,检测所述跨链请求是否为重复调用;获取回调模块,用于基于检测结果,在第二区块链获取所述跨链请求对应的调用结果,并基于所述调用结果,完成回调。优选地,所述检测注册模块还用于:确定所述业务合约的跨链参数,并将所述跨链参数传入所述桥接合约;获取所述桥接合约的序列号,并基于所述序列号和所述跨链参数,注册所述业务合约的跨链请求。优选地,所述检测注册模块还用于:获取所述桥接合约当前的序列号,所述序列号为自增序列号;对所述跨链参数进行序列化处理,以得到序列化字符串,并将所述序列号和所述序列化字符串按照键值对的形式保存,以得到所述业务合约的跨链请求。优选地,所述轮询路由模块还用于:获取所述桥接合约的索引号,所述索引号用于记录所述任务队列中跨链请求的处理进度;基于第一区块链的第一跨链路由和所述索引号,在所述任务队列中轮询索引所述跨链请求;对所述跨链请求进行唯一化处理,并将处理后的所述跨链请求路由至所述跨链调用需求对应的第二区块链的第二跨链路由。优选地,所述轮询路由模块还用于:对所述跨链请求进行反序列化处理,以得到跨链参数,并基于所述跨链参数和所述索引号,计算跨链序列号;基于所述跨链序列号和本文档来自技高网...

【技术保护点】
1.一种跨链调用方法,其特征在于,所述跨链调用方法包括如下步骤:/n基于第一区块链的业务合约调用桥接合约,以注册跨链调用请求,并基于桥接合约将所述跨链请求保存到任务队列;/n基于第一区块链的第一跨链路由,轮询获取所述任务队列中的所述跨链请求,并将所述跨链请求路由至所述跨链调用需求对应的第二区块链的第二跨链路由;/n基于第二跨链路由,调用第二区块链的入口合约,并基于第二区块链的入口合约,检测所述跨链请求是否为重复调用;/n基于检测结果,在第二区块链获取所述跨链请求对应的调用结果,并基于所述调用结果,完成回调。/n

【技术特征摘要】
1.一种跨链调用方法,其特征在于,所述跨链调用方法包括如下步骤:
基于第一区块链的业务合约调用桥接合约,以注册跨链调用请求,并基于桥接合约将所述跨链请求保存到任务队列;
基于第一区块链的第一跨链路由,轮询获取所述任务队列中的所述跨链请求,并将所述跨链请求路由至所述跨链调用需求对应的第二区块链的第二跨链路由;
基于第二跨链路由,调用第二区块链的入口合约,并基于第二区块链的入口合约,检测所述跨链请求是否为重复调用;
基于检测结果,在第二区块链获取所述跨链请求对应的调用结果,并基于所述调用结果,完成回调。


2.如权利要求1所述的跨链调用方法,其特征在于,所述基于第一区块链的业务合约调用桥接合约,以注册跨链调用请求的步骤包括:
确定所述业务合约的跨链参数,并将所述跨链参数传入所述桥接合约;
获取所述桥接合约的序列号,并基于所述序列号和所述跨链参数,注册所述业务合约的跨链请求。


3.如权利要求2所述的跨链调用方法,其特征在于,所述获取所述桥接合约的序列号,并基于所述序列号和所述跨链参数,注册所述业务合约的跨链请求的步骤包括:
获取所述桥接合约当前的序列号,所述序列号为自增序列号;
对所述跨链参数进行序列化处理,以得到序列化字符串,并将所述序列号和所述序列化字符串按照键值对的形式保存,以得到所述业务合约的跨链请求。


4.如权利要求1所述的跨链调用方法,其特征在于,所述基于第一区块链的第一跨链路由,轮询获取所述任务队列中的所述跨链请求,并将所述跨链请求路由至所述跨链调用需求对应的第二区块链的第二跨链路由的步骤包括:
获取所述桥接合约的索引号,所述索引号用于记录所述任务队列中跨链请求的处理进度;
基于第一区块链的第一跨链路由和所述索引号,在所述任务队列中轮询索引所述跨链请求;
对所述跨链请求进行唯一化处理,并将处理后的所述跨链请求路由至所述跨链调用需求对应的第二区块链的第二跨链路由。


5.如权利要求4所述的跨链调用方法,其特征在于,所述对所述跨链请求进行唯一化处理的步骤包括:
对所述跨链请求进行反序列化处理,以得到跨链参数,并基于所述跨链参数和所述索引号,计算跨链序列号;
基于所述跨链序列号和所述跨链参数,重新生成跨链请求。


6.如权利要求5所述的跨链调用方法,其特征在于,所述基于检测结果,在第二区块链获取所述跨链请求对应的调用结果,并基于所述调用结果,完成回调的步骤包括:
若所述检测结果为不重复,则基于所述入口合约和所述跨链请...

【专利技术属性】
技术研发人员:贺双洪莫楠石翔王章郭锐李辉忠张开翔范瑞彬
申请(专利权)人:深圳前海微众银行股份有限公司
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1