一种区块链的跨链合约解析方法、中继链及跨链系统与流程

    专利2022-07-08  101


    本申请涉及区块链领域,具体涉及一种区块链的跨链合约解析方法、中继链及跨链系统。



    背景技术:

    跨链技术使信息打破链和链之间的障碍进行直接通信,是实现区块链间互联互通、提升可扩展性的重要技术手段。跨链技术按照采用的底层平台技术,分为同构跨链和异构跨链:同构链中双方的共识算法、区块生成与验证规则、交易广播、安全机制等逻辑一致,跨链交互相对简单;异构链由于机制不同,跨链交互相对复杂。只有将同构或者异构的区块链网络连接起来,使信息自由顺畅地在链间流通,才能实现真正价值的区块链网络。

    目前,主流的区块链跨链技术按照原理和实现方式可以分为:公证人机制(notaryschemes)、侧链/中继(sidechains/relays)、哈希锁定(hash-locking)。

    (1)公证人机制:本质上是一种中心化模式,区块链a和b通过引入相互信任的第三方作为中介,验证和转发跨链消息。

    (2)侧链/中继:中继链可以读取并验证主链的信息,主链不知道侧链的存在,侧链主动感知主链信息并执行相应的动作,中继链可访问和验证可互操作链的关键信息,并传输两条链的跨链消息。即在链b上执行类似区块链轻客户端功能的智能合约,通过验证链a的加密哈希树以及区块头来验证链a的某项特定交易、事件或状态信息是否发生。

    (3)哈希锁定:主要支持跨链资产原子交易,原理是通过时差和影子哈希值实现资产的原子交换。哈希锁定只能交换,不能传输资产或信息,通过在两条链上运行特定的智能合约,实现跨链交易与信息交互。

    关于区块链的跨链技术,目前讨论最多的技术是侧链和中继,现阶段的主流项目主要使用的也是侧链/中继技术。大部分区块链跨链项目都是为了解决公链交易吞吐量和交易速度的问题,也就是可拓展性问题,目前主流的跨链项目有polkadot、cosmos、plasma:

    (1)polkadot:一种支持多种链结构的异构多链跨链平台,支持不同共识系统去中心化、去信任地进行交互操作、访问。polkadot通过解耦共识机制和状态转移机制两种组件来解决伸缩性问题,并将容纳的不同区块链定义为平行链。在跨链通信方面,polkadot采用中继链的方式转发各平行链的交易,同时,平行链的区块头也会被包含进中继链的区块中,以避免双花的发生。网络中的4类参与方包括:验证人(负责验证平行链的数据)、收集人(负责采集平行链的数据并提交给验证者)、提名人(为验证者提供押金和信用背书)和钓鱼人(负责举报和证明恶意行为)。

    (2)cosmos:基于建立区块链的互联网构想,cosmos网络设计为由枢纽和分区组成,其中,分区由tendermint经典拜占庭容错共识算法引擎支持运行,可接入不同区块链,并支持分区数量的扩展。分区载入区块链后,各分区之间通信必须经由枢纽,并且遵照链间通信技术规范(interblockchaincommunicationprotocol,简称ibc)。

    (3)plasma:是以太坊的一种二层协议扩容方案,因为扩展以太坊的交易tps(指1s内能处理的交易数)而被提出。是一种区块链树形框架,将主链作为树根、不同区块链作为主链的独立树形分支,并通过构建智能合约激励执行与强制执行框架,这样可以实现将主链上的交易转移到侧链(线下)执行,主链只记录一段时间侧链上执行的结果,大幅度提升了交易的执行效率,实现区块链的扩容计算。

    上述三种区块链的跨链技术均能够一定程度上兼容不同的应用链,随着区块链项目的逐步增多,每个区块链网络可能会提供不同种类的智能合约和虚拟机,有的区块链项目甚至可能不支持智能合约,对于不支持智能合约的区块链,则无法通过智能合约编程来完成对区块链的操作,而即使具有智能合约,但不同类别的智能合约无法在不同的区块链上运行,进而无法实现跨链交互。

    现有技术中为了实现与不同框架下的应用链实现交互,需要在应用链上额外开发部署另一种智能合约程序。因无统一标准和规范,造成如今区块链之间的跨链操作较为复杂,跨链的成本较高,且安全性无法保障。



    技术实现要素:

    本申请提供一种区块链的跨链合约解析方法、中继链及跨链系统,可以降低区块链之间的跨链成本。

    第一方面,本申请公开了一种区块链的跨链合约解析方法,应用于同构链或异构链之间跨链的跨链系统,所述方法包括:

    接收由源链发出的跨链请求,所述跨链请求携带有所述源链的属性参数,所述属性参数包括目的链id、调用的合约名称及合约参数的至少一种;

    根据所述跨链请求中的属性参数,解析获得目的链的合约调用参数;

    将所述合约调用参数发送给目的链;

    接收所述目的链返回的与所述合约调用参数匹配的合约数据,将所述合约数据发送给所述源链。

    在一实施例中,所述根据所述跨链请求中的属性参数,解析获得目的链的合约调用参数,包括:

    根据所述跨链请求中的属性参数,基于预设的跨链合约解析协议获得目的链的合约调用参数;

    所述合约调用参数包括合约调用索引、合约调用的时间戳、合约调用内容编码及协议版本号的至少一种或多种。

    在一实施例中,所述接收所述目的链返回的与所述合约调用参数匹配的合约数据,将所述合约数据发送给所述源链,包括:

    基于预设的跨链合约解析协议将所述合约数据进行适配,以使所述合约数据转译成与所述源链的合约语言匹配的合约数据。

    在一实施例中,所述跨链合约解析协议,至少包括本次跨链合约解析交易的以下部分:

    报头,至少包括本次跨链合约解析交易的源链及目的链的id信息,以及协议版本号;

    主体,至少包括本次跨链合约解析交易的调用内容,所述调用内容包括合约调用参数;

    状态信息,用于体现本次跨链合约解析交易在不同链中的存在状态。

    在一实施例中,所述合约调用内容编码,包括:

    合约地址;

    调用函数;

    调用参数;以及

    返回调用合约的内容;

    其中,所述返回调用合约的内容在调用时为空。

    在一实施例中,所述将所述合约调用参数发送到目的链,包括:

    通过合约验证引擎验证合约交易是否可信;

    若是,则将所述合约调用参数发送给所述目的链;

    若否,则将所述合约交易回滚。

    第二方面,本申请还公开了一种区块链的跨链系统,所述系统包括:

    源链,用于发送跨链请求,所述跨链请求携带有所述源链的属性参数,所述属性参数包括目的链id、调用的合约名称及合约参数的至少一种;

    中继链,接收由源链发出的跨链请求;根据所述跨链请求中的属性参数,解析获得目的链的合约调用参数;将所述合约调用参数发送给目的链;接收合约数据,将所述合约数据发送给所述源链;

    目的链,接收所述合约调用参数,根据所述合约调用参数向所述地址解析链发送与所述合约调用参数匹配的合约数据。

    在一实施例中,所述源链与所述中继链之间、所述目的链与所述中继链之间通过跨链网关进行连接;

    所述跨链网关包括适配组件,所述适配组件存储有多个匹配不同合约语言的适配插件;

    所述跨链网关,用于通过所述适配插件来适配不同合约语言的从链。

    在一实施例中,所述跨链网关,还用于跨链交易处理、状态恢复、获取源链/目的链的属性信息的至少一项。

    在一实施例中,所述中继链,包括:

    合约管理引擎,用于管理所述地址解析链的合约、跨链合约,以及源链或目的链中合约属性信息;

    从链管理合约,用于源链或目的链的注册、管理与注销,明确各方的权利与义务;

    合约验证引擎,用于管理中继链的合约、跨链合约的验证;以及

    合约执行引擎,用于根据预设的跨链合约解析协议解析或封装数据。

    在一实施例中,所述根据所述跨链请求中的属性参数,解析获得目的链的合约调用参数,包括:

    根据所述跨链请求中的属性参数,基于预设的跨链合约解析协议获得目的链的合约调用参数;

    所述合约调用参数包括合约调用索引、合约调用的时间戳、合约调用内容编码及协议版本号的至少一种或多种。

    在一实施例中,所述接收所述目的链返回的与所述合约调用参数匹配的合约数据,将所述合约数据发送给所述源链,包括:

    基于预设的跨链合约解析协议将所述合约数据进行适配,以使所述合约数据转译成与所述源链的合约语言匹配的合约数据。

    在一实施例中,所述跨链合约解析协议,至少包括本次跨链合约解析交易的以下部分:

    报头,至少包括本次跨链合约解析交易的源链及目的链的id信息,以及协议版本号;

    主体,至少包括本次跨链合约解析交易的调用内容,所述调用内容包括合约调用参数;

    状态信息,用于体现本次跨链合约解析交易在不同链中的存在状态。

    在一实施例中,所述合约调用内容编码,包括:

    合约地址;

    调用函数;

    调用参数;以及

    返回调用合约的内容;

    其中,所述返回调用合约的内容在调用时为空。

    第三方面,本申请还公开了一种区块链的中继链,所述中继链由多个管理节点组成,包括:

    网络传输模块,用于利用广播方式进行数据传输;

    共识模块,用于通过可插拔共识组件实现不同的共识机制管理与执行;

    智能合约模块,包括跨链合约虚拟机以及合约虚拟机,用于处理跨链交易;以及

    存储模块,用于存储与协议相关的数据;

    所述中继链通过上述模块的配合,以实现如上所述的区块链的跨链合约解析方法。

    第四方面,本申请还公开了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序;

    所述计算机程序被处理器运行时执行如上任一项所述的区块链的跨链合约解析方法。

    本申请中的一种区块链的跨链合约解析方法、中继链及跨链系统,针对源链的属性参数解析获得目的链的合约调用参数,并基于该合约调用参数调取目的链上的合约数据,能够通过中继链主动对合约进行解析与调用的方式,从而实现不同链之间的内容调用与传输,方便同构链或异构链之间实现跨链交易。本申请能够在确保安全性的前提下,降低不同智能合约框架下的区块链之间的跨链成本。

    附图说明

    图1为本申请实施例提供的区块链的跨链合约解析方法的实现流程图。

    图2为本申请实施例提供的跨链合约解析协议的跨链交易数据结构图。

    图3为本申请实施例提供的一种区块链的跨链系统的架构图。

    图4为本申请实施例提供的另一种区块链的跨链系统的架构图。

    图5为本申请实施例提供的区块链的跨链系统的交互图。

    图6为本申请实施例提供的区块链的跨链系统的另一交互图。

    图7为本申请实施例提供的区块链的中继链的功能模块图。

    具体实施方式

    下面结合附图和实施例对本申请的技术方案做进一步的说明。

    本申请实施例提供了一种区块链的跨链合约解析方法,该方法应用于同构链或异构链之间跨链的跨链系统。

    其中,同构链与异构链是通过是否具有相同共识机制的区块链进行区分。该跨链合约用于同构链或异构链之间的跨链交易、交互等。

    该跨链合约解析方法,可以应用于跨链系统的中继链或主链中,包括:

    101、接收由源链发出的跨链请求,跨链请求携带有源链的属性参数,属性参数包括目的链id、调用的合约名称及合约参数的至少一种。

    其中,该源链及目的链可以是所有参与接入跨链生态的同构链或异构链,可以是各种公链、联盟链、私联等。

    跨链请求是源链向中继链或主链发送的请求与目的链执行跨链交易的请求指令。该属性参数可以包括目的链id、调用的合约名称及合约参数的至少一种。在一些情况下,此处的合约参数可以理解为包括合约参数(args)、合约函数(func)等。

    在一实施例中,该属性参数还可以包括交易序号、加密版本等跨链交易所需的基本信息,例如源链id等,具体包含的参数类别可以根据实际跨链需要进行增加或删减。

    102、根据跨链请求中的属性参数,解析获得目的链的合约调用参数。

    其中,合约调用参数可以通过预设的跨链合约解析协议来进行获取。

    在一实施例中,合约调用参数包括合约调用索引、合约调用的时间戳、合约调用内容编码及协议版本号的至少一种或多种。

    具体的,该合约调用索引,可以是目的链上的合约地址,以确定本次调用的目的链合约。该合约调用内容编码,可以包括目的链的合约地址、调用函数、调用参数以及返回调用合约的内容,当在返回目的链的数据之前,该返回调用合约的内容可以为空。

    在一实施例中,该跨链合约解析协议可以根据跨链请求中的属性参数来确定目的链的合约地址以及所需调取的内容位置。例如,通过将目的链的名称、调用的合约名称输入到跨链合约解析协议中,可以获得目的链的合约地址及调用合约的内容位置。

    该目的链的合约地址以及调用合约的内容位置,可以在该目的链在与该中继链或主链建立连接时进行存储的数据中获得,该中继链或主链可以管理各个与之连接的应用链的数据信息,例如该链的名称、合约地址、合约名称等,以便于在执行跨链交易时进行调用。

    当然,具体采用应用链的何种信息来对合约地址、调用合约的内容位置进行调用,可以根据实际情况而定。

    在一实施例中,该跨链合约解析协议可以包括报头、主体以及状态信息。

    报头(header),至少包括本次跨链合约解析交易的源链及目的链的id信息,以及协议版本号。

    主体(body),至少包括本次跨链合约解析交易的调用内容,调用内容包括合约调用参数。

    状态信息(status),用于体现本次跨链合约解析交易在不同链中的存在状态。

    具体的,该跨链合约解析协议所采用的参数可以包括如表1的跨链合约解析协议参数表中的一个或多个参数。

    表1

    当然,上述跨链合约解析协议参数表中的参数名称或数据类型仅用于实例,其参数名称可以结合实际进行调整。

    103、将合约调用参数发送给目的链。

    在一实施例中,合约调用参数可以通过连接在中继链/主链与目的链的跨链网关进行转发。

    其中,该合约调用参数打包封装成符合跨链合约解析协议的数据包进行转发。

    104、接收目的链返回的与合约调用参数匹配的合约数据,将合约数据发送给源链。

    其中,目的链基于合约调用参数,对跨链合约的数据进行查询,以获得与该合约调用参数匹配的合约数据。当目的链获得查询得到的合约数据后,可以根据跨链合约解析协议的数据格式进行封装。

    如图2所示,图中示出了本申请实施例提供的跨链合约解析协议的跨链交易数据结构。

    该跨链交易数据结构中,包括协议版本号、请求链id、目的链id、合约调用交易索引、合约调用时间戳、合约调用数据编码、合约调用证明及其他附属信息。

    具体的,该合约调用数据编码包括合约地址、调用函数及返回调用合约的内容。而合约调用证明中可以包括合约调用交易内容哈希、merkle根哈希、spv路径哈希以及对跟哈希的签名等。

    中继链或主链将从目的链中所调用的与合约调用参数匹配的合约数据,基于跨链合约解析协议进行填充封装,以获得封装后的跨链数据,再将其发送给源链,实现区块链中同构链或异构链之间的跨链连接。

    在一实施例中,该合约数据在发送给源链之前,可以包括以下步骤:

    基于预设的跨链合约解析协议将合约数据进行适配,以使合约数据转译成与源链的合约语言匹配的合约数据。

    中继链或主链根据目的链的类别和应用链的合约语言种类、地址、内容等数据,对跨链合约内容进行解码、适配翻译,最终解析为源链使用的合约语言,从而避免因合约语言不同而造成的无法跨链的问题,实现异构链之间的跨链交互。

    在一实施例中,将合约调用参数发送到目的链,可以包括:

    通过合约验证引擎验证合约交易是否可信;若是,则将所述合约调用参数发送给所述目的链;若否,则将所述合约交易回滚。

    具体的,验证过程包括验证交易来源是否可信、验交易证明是否满足目的链对应的规则。上述验证动作可以在中继链发送给目的链之前执行,以提高跨链合约交易的安全性与可靠性。

    由上可知,针对源链的属性参数解析获得目的链的合约调用参数,并基于该合约调用参数调取目的链上的合约数据,能够通过中继链主动对合约进行解析与调用的方式,从而实现不同链之间的内容调用与传输,方便同构链或异构链之间实现跨链交易。该区块链的跨链合约解析方法能够在确保安全性的前提下,降低不同智能合约框架下的区块链之间的跨链成本。

    请参见图3,图中示出了本申请实施例提供的一种区块链的跨链系统。

    如图3所示,该跨链系统20包括源链21、中继链22与目的链23。

    其中,源链21,用于发送跨链请求,该跨链请求携带有源链21的属性参数,该属性参数包括目的链23id、调用的合约名称及合约参数的至少一种;

    中继链22,接收由源链21发出的跨链请求;根据跨链请求中的属性参数,解析获得目的链23的合约调用参数;将合约调用参数发送给目的链23;接收合约数据,将合约数据发送给源链21;

    目的链23,接收合约调用参数,根据合约调用参数向地址解析链发送与合约调用参数匹配的合约数据。

    该源链21及目的链23可以是所有参与接入跨链生态的同构链或异构链,可以是各种公链、联盟链、私联等。

    其中,跨链请求是源链21向中继链22或主链发送的请求与目的链23执行跨链交易的请求指令。该属性参数可以包括目的链23id、调用的合约名称及合约参数的至少一种。在一些情况下,此处的合约参数可以理解为包括合约参数(args)、合约函数(func)等。

    该合约调用参数可以通过预设的跨链合约解析协议来进行获取。

    在一实施例中,合约调用参数包括合约调用索引、合约调用的时间戳、合约调用内容编码及协议版本号的至少一种或多种。

    具体的,该合约调用索引,可以是目的链23上的合约地址,以确定本次调用的目的链23合约。该合约调用内容编码,可以包括目的链23的合约地址、调用函数、调用参数以及返回调用合约的内容,当在返回目的链23的数据之前,该返回调用合约的内容可以为空。

    在一实施例中,该跨链合约解析协议可以根据跨链请求中的属性参数来确定目的链23的合约地址以及所需调取的内容位置。例如,通过将目的链23的名称、调用的合约名称输入到跨链合约解析协议中,可以获得目的链23的合约地址及调用合约的内容位置。

    该目的链23的合约地址以及调用合约的内容位置,可以在该目的链23在与该中继链22或主链建立连接时进行存储的数据中获得,该中继链22或主链可以管理各个与之连接的应用链的数据信息,例如该链的名称、合约地址、合约名称等,以便于在执行跨链交易时进行调用。

    当然,具体采用应用链的何种信息来对合约地址、调用合约的内容位置进行调用,可以根据实际情况而定。

    在一实施例中,合约调用参数可以通过连接在中继链22/主链与目的链23的跨链网关进行转发。

    其中,该合约调用参数打包封装成符合跨链合约解析协议的数据包进行转发。目的链23基于合约调用参数,对跨链合约的数据进行查询,以获得与该合约调用参数匹配的合约数据。当目的链23获得查询得到的合约数据后,可以根据跨链合约解析协议的数据格式进行封装。

    该跨链系统能够通过中继链主动对合约进行解析与调用的方式,从而实现不同链之间的内容调用与传输,方便同构链或异构链之间实现跨链交易,能够在确保安全性的前提下,降低不同智能合约框架下的区块链之间的跨链成本。

    请参阅图4,图中示出了本申请实施例提供的另一种区块链的跨链系统。

    该跨链系统中,异构从链以及同构从链均可以作为源链或者目的链,具体的划分可以通过其在合约调用过程中的作用(调用与被调用)进行定义区分。中继链在本实施例中相对于从链则作为主链存在。

    该从链合约按照功能划分,可以包括跨链交互合约、跨链合约以及普通合约。

    ①跨链交互合约:处理跨链合约交易,根据跨链合约解析协议对跨链合约数据进行解析、封装打包。

    跨链交互合约包括对合约的注册、注销、审核、跨链调用、执行跨链交易。只有审核通过的合约从可以进行跨链操作,通过跨链调用接口完成跨链调用,执行跨链交易接口执行相关的跨链操作。

    ②跨链合约:允许进行跨链交互的公共合约。

    ③普通合约:为应用链的私有合约,不可与其它链共享。

    其中,从链支持个性化应用场景,并支持独立的共识、存储、智能合约机制。现有异构区块链根据主链接口规范开发接口接入主链。从链接入需要向主链递交申请,并通过设计边缘节点与主链对接;从链可使用整个链群的公共服务或资源,也可根据需求部署个性化应用或智能合约。

    边缘节点具有锚定主链、从链共识、从链监管、智能合约部署等功能,从链通过边缘节点与主链执行跨链交互过程。

    在图4中,在该跨链系统中,源链与中继链之间、目的链与中继链之间通过跨链网关进行连接。

    该跨链网关包括适配组件,该适配组件存储有多个匹配不同合约语言的适配插件,该跨链网关,用于通过所述适配插件来适配不同合约语言的从链。

    其中,跨链网关包括两部分,一是core组件,用于实现跨链交易捕获与解析。包括对跨链交易的监听、同步、执行;二是适配组件,通过动态加载插件的形式适配从链,对网关和从链零侵入。

    具体的,跨链网关是从链和主链的链接通道,负责将从链的区块头、跨链交易和spv(simplifiedpaymentverification,简单支付验证)信息等提交到主链中。

    网关节点通过向从链的跨链交互合约进行抵押注册,参与从链和主链/中继链的跨链操作,网关节点可以向任何从链进行申请作为主从链的桥梁。而从链的节点则与跨链网关的网关节点进行通信交互。

    在一实施例中,跨链网关,还用于跨链交易处理、状态恢复、获取源链/目的链的属性信息的至少一项。

    适配插件包括跨链交易处理、状态恢复、获取从链信息三大部分:

    跨链交易处理包括监听各个从链的跨链交互合约抛出的跨链事件,以及提交跨链事件到合约上执行。

    状态恢复包括获取单个已经抛出或执行的跨链请求,获取已经执行或发出的跨链请求的meta信息,获取已经执行的带回调的跨链请求的meta信息。

    获取从链信息包括获取从链的名称、类型、标识chaincode。

    通过上述三部分,可以确保跨链交易的正常运作,提高跨链交易的稳定性。

    从链中普通的业务合约由跨链交互合约统一进行管理,不直接和跨链网关交互,调用跨链交互合约的跨链调用接口,在参数中附带请求和回调信息,获取的数据由跨链网关调用回调函数进行记录。

    主链或中继链包括合约管理引擎、合约验证引擎、合约执行引擎以及从链管理合约。

    ①从链管理合约,该从链管理合约只可由管理节点调用,功能包括从链的注册、管理、注销,明确各方的权力和义务。

    ②合约管理引擎,用于管理所述地址解析链的合约、跨链合约,以及源链或目的链中合约属性信息。

    ③合约验证引擎,用于管理中继链的合约、跨链合约的验证,包括对主链合约、跨链合约的验证。包括对对调用者身份的验证、对合约代码的合法性校验。验证节点对该合约事件进行签名验证,以确保其有效性。

    ④合约执行引擎,用于根据预设的跨链合约解析协议解析或封装数据。大多数验证节点对该事件达成共识后,调用执行引擎执行合约代码,完成合约中的操作逻辑,并通知用户。成功执行的合约将移出区块。而未执行的合约则继续等待下一轮处理,直至成功执行。

    在一实施例中,根据所述跨链请求中的属性参数,解析获得目的链的合约调用参数,包括:根据所述跨链请求中的属性参数,基于预设的跨链合约解析协议获得目的链的合约调用参数;所述合约调用参数包括合约调用索引、合约调用的时间戳、合约调用内容编码及协议版本号的至少一种或多种。

    在一实施例中,所述接收所述目的链返回的与所述合约调用参数匹配的合约数据,将所述合约数据发送给所述源链,包括:基于预设的跨链合约解析协议将所述合约数据进行适配,以使所述合约数据转译成与所述源链的合约语言匹配的合约数据。

    在一实施例中,所述跨链合约解析协议,至少包括本次跨链合约解析交易的以下部分:报头,至少包括本次跨链合约解析交易的源链及目的链的id信息,以及协议版本号;主体,至少包括本次跨链合约解析交易的调用内容,所述调用内容包括合约调用参数;状态信息,用于体现本次跨链合约解析交易在不同链中的存在状态;

    在一实施例中,所述合约调用内容编码,包括:合约地址;调用函数;调用参数;以及返回调用合约的内容;其中,所述返回调用合约的内容在调用时为空。

    请参阅图5-6,图中示出了本申请实施例提供的区块链的跨链系统的交互图。

    如图5-6所示,为以从链a的某个节点alice调用从链b中bob的合约contract_b为例说明跨链合约调用过程。

    具体的内容如下:

    (1)alice节点发起跨链请求;

    (2)调用跨链交互合约处理请求;

    (3)验证跨链交易,验证通过,执行跨链操作,将请求数据打包成符合跨链协议的数据包,转发;否则,返回跨链请求失败信息;

    (4)跨链网关a监听到alice的跨链请求,处理请求信息,获取到meta、从链属性;

    (5)跨链网关a的core组件对跨链交易进行同步;

    (6)跨链网关a执行跨链交易,对交易按照跨链协议格式打包;

    (7)跨链网关a将数据包转发到中继链/主链;

    (8)中继链/主链监听到跨链请求,交易验证引擎对交易进行解析、规则匹配、规则执行;

    (9)验证跨链交易,验证通过,调用执行引擎,执行交易;否则,返回跨链请求失败信息;

    (10)执行引擎执行跨链操作,将请求数据打包成符合跨链协议标准的数据包,转发。

    (11)跨链网关b对监听到到的跨链数据包转发。

    (12)从链b的边缘节点监听到请求后对alice进行身份、权限验证,验证通过,调用执行引擎,执行交易;否则,返回失败信息;

    (13)从链b根据请求信息获取到contract_b;

    (14)从链b发起跨链交易,完成共识打包区块;

    (15)跨链交易执行:将合约内容和其它请求参数统一打包成跨链协议的数据格式转发数据包,沿原路返回;

    (16)中继链/主链收到数据包并解析后;

    (17)调用多智能合约虚拟机将合约contract_b翻译为从链a合约类型的;

    (18)中继链/主链发起跨链交易,完成共识打包区块

    (18)跨链交易执行,将翻译后合约contract_b_to_a和其它请求参数统一打包成跨链协议的数据格式转发;

    (19)从链a对收到的数据包进行解析,获取到适配本链合约类型的contract_b_to_a。

    该区块链的跨链系统,具有以下优势:

    (1)支持异构/同构链间合约的调用、执行、注册、查询、注销。

    (2)支持异构链间不同合约的转译,在主链的多智能合约组件中可以实现将不同类别合约的转译,解决的不同链系统之间相同功能合约的重复性开发,提高了合约复用性,增强了合约的平台兼容性。

    (3)安全可证的隐私防护组件可以保证全过程的合约交易的安全可信。

    (4)基于中继链模式的跨链技术既支持同构和异构区块链的灵活接入,发挥公有链的优势;又可通过从链管理组件实现从链管理可控,发挥联盟链的优势。保证了跨链交易高效安全。

    由上可知,本申请中的跨链系统,针对源链的属性参数解析获得目的链的合约调用参数,并基于该合约调用参数调取目的链上的合约数据,能够通过中继链主动对合约进行解析与调用的方式,从而实现不同链之间的内容调用与传输,方便同构链或异构链之间实现跨链交易。该跨链系统能够在确保安全性的前提下,降低不同智能合约框架下的区块链之间的跨链成本。

    请参见图6,图中示出了本申请实施例提供的一种区块链的中继链的功能模块。

    如图6所示,该中继链30由多个管理节点组成,包括网络传输模块31、共识模块32、智能合约模块33以及存储模块34。

    网络传输模块31,用于利用广播方式进行数据传输;其中,该广播方式可以采用p2p广播方式,支持跨链消息、交易消息的传输。

    共识模块32,用于通过可插拔共识组件实现不同的共识机制管理与执行;

    其中,该可插拔共识组件可以支持pos、dpos、pbft、hotstuff等共识机制。当然,除此之外还可以支持其他共识机制,以通过可插拔形式的共识组件实现共识机制的兼容。

    智能合约模块33,包括跨链合约虚拟机以及合约虚拟机,用于处理跨链交易;

    该智能合约可以采用现有的智能合约,或者未来可能出现的其他智能合约。

    存储模块34,用于存储与协议相关的数据;

    其中,该存储模块34可以采用分布式存储协议,支持链上链下相结合的存储方式。

    该中继链30可以执行如上任意一实施例所述的区块链的跨链合约解析方法,例如:接收由源链发出的跨链请求,所述跨链请求携带有所述源链的属性参数,所述属性参数包括目的链id、调用的合约名称及合约参数的至少一种;根据所述跨链请求中的属性参数,解析获得目的链的合约调用参数;将所述合约调用参数发送给目的链;接收所述目的链返回的与所述合约调用参数匹配的合约数据,将所述合约数据发送给所述源链。

    或者是如上任意一实施例中的跨链系统的实现方式。为了避免赘述,具体的说明可以参考上述实施例的解释。

    上述区块链的中继链30,能够在确保安全性的前提下,降低不同智能合约框架下的区块链之间的跨链成本。

    本申请实施例还提供一种计算机存储介质,其中,该计算机存储介质可存储有程序,该程序被处理器运行时可执行包括本申请提供的各实施例中的部分或全部步骤,例如:

    接收由源链发出的跨链请求,所述跨链请求携带有所述源链的属性参数,所述属性参数包括目的链id、调用的合约名称及合约参数的至少一种;根据所述跨链请求中的属性参数,解析获得目的链的合约调用参数;将所述合约调用参数发送给目的链;接收所述目的链返回的与所述合约调用参数匹配的合约数据,将所述合约数据发送给所述源链。

    所述的存储介质可为磁碟、光盘、只读存储记忆体(英文:read-onlymemory,简称:rom)或随机存储记忆体(英文:randomaccessmemory,简称:ram)等。

    在本申请实施例中,所述中继链或跨链系统与上文实施例中的区块链的跨链合约解析方法属于同一构思,在中继链或跨链系统上可以运行区块链的跨链合约解析方法实施例中提供的任一方法步骤,其具体实现过程详见区块链的跨链合约解析方法的实施例,并可以采用任意结合形成本申请的可选实施例,此处不再赘述。

    显然,本申请的上述实施例仅仅是为清楚地说明本申请所作的举例,而并非是对本申请的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实现方式予以穷举。凡在本申请的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本申请权利要求的保护范围之内。


    技术特征:

    1.一种区块链的跨链合约解析方法,其特征在于,应用于同构链或异构链之间跨链的跨链系统,所述方法包括:

    接收由源链发出的跨链请求,所述跨链请求携带有所述源链的属性参数,所述属性参数包括目的链id、调用的合约名称及合约参数的至少一种;

    根据所述跨链请求中的属性参数,解析获得目的链的合约调用参数;

    将所述合约调用参数发送给目的链;

    接收所述目的链返回的与所述合约调用参数匹配的合约数据,将所述合约数据发送给所述源链。

    2.如权利要求1所述的区块链的跨链合约解析方法,其特征在于,所述根据所述跨链请求中的属性参数,解析获得目的链的合约调用参数,包括:

    根据所述跨链请求中的属性参数,基于预设的跨链合约解析协议获得目的链的合约调用参数;

    所述合约调用参数包括合约调用索引、合约调用的时间戳、合约调用内容编码及协议版本号的至少一种或多种。

    3.如权利要求1所述的区块链的跨链合约解析方法,其特征在于,所述接收所述目的链返回的与所述合约调用参数匹配的合约数据,将所述合约数据发送给所述源链,包括:

    基于预设的跨链合约解析协议将所述合约数据进行适配,以使所述合约数据转译成与所述源链的合约语言匹配的合约数据。

    4.如权利要求2或3所述的区块链的跨链合约解析方法,其特征在于,所述跨链合约解析协议,至少包括本次跨链合约解析交易的以下部分:

    报头,至少包括本次跨链合约解析交易的源链及目的链的id信息,以及协议版本号;

    主体,至少包括本次跨链合约解析交易的调用内容,所述调用内容包括合约调用参数;

    状态信息,用于体现本次跨链合约解析交易在不同链中的存在状态。

    5.如权利要求4所述的区块链的跨链合约解析方法,其特征在于,所述合约调用内容编码,包括:

    合约地址;

    调用函数;

    调用参数;以及

    返回调用合约的内容;

    其中,所述返回调用合约的内容在调用时为空。

    6.如权利要求1所述的区块链的跨链合约解析方法,其特征在于,所述将所述合约调用参数发送到目的链,包括:

    通过合约验证引擎验证合约交易是否可信;

    若是,则将所述合约调用参数发送给所述目的链;

    若否,则将所述合约交易回滚。

    7.一种区块链的跨链系统,其特征在于,所述系统包括:

    源链,用于发送跨链请求,所述跨链请求携带有所述源链的属性参数,所述属性参数包括目的链id、调用的合约名称及合约参数的至少一种;

    中继链,接收由源链发出的跨链请求;根据所述跨链请求中的属性参数,解析获得目的链的合约调用参数;将所述合约调用参数发送给目的链;接收合约数据,将所述合约数据发送给所述源链;

    目的链,接收所述合约调用参数,根据所述合约调用参数向所述地址解析链发送与所述合约调用参数匹配的合约数据。

    8.如权利要求7所述的区块链的跨链系统,其特征在于:

    所述源链与所述中继链之间、所述目的链与所述中继链之间通过跨链网关进行连接;

    所述跨链网关包括适配组件,所述适配组件存储有多个匹配不同合约语言的适配插件;

    所述跨链网关,用于通过所述适配插件来适配不同合约语言的从链。

    9.如权利要求8所述的区块链的跨链系统,其特征在于:

    所述跨链网关,还用于跨链交易处理、状态恢复、获取源链/目的链的属性信息的至少一项。

    10.如权利要求7所述的区块链的跨链系统,其特征在于,所述中继链,包括:

    合约管理引擎,用于管理所述地址解析链的合约、跨链合约,以及源链或目的链中合约属性信息;

    从链管理合约,用于源链或目的链的注册、管理与注销,明确各方的权利与义务;

    合约验证引擎,用于管理中继链的合约、跨链合约的验证;以及

    合约执行引擎,用于根据预设的跨链合约解析协议解析或封装数据。

    11.如权利要求7所述的区块链的跨链系统,其特征在于,所述根据所述跨链请求中的属性参数,解析获得目的链的合约调用参数,包括:

    根据所述跨链请求中的属性参数,基于预设的跨链合约解析协议获得目的链的合约调用参数;

    所述合约调用参数包括合约调用索引、合约调用的时间戳、合约调用内容编码及协议版本号的至少一种或多种。

    12.如权利要求7所述的区块链的跨链系统,其特征在于,所述接收所述目的链返回的与所述合约调用参数匹配的合约数据,将所述合约数据发送给所述源链,包括:

    基于预设的跨链合约解析协议将所述合约数据进行适配,以使所述合约数据转译成与所述源链的合约语言匹配的合约数据。

    13.如权利要求11或12所述的区块链的跨链系统,其特征在于,所述跨链合约解析协议,至少包括本次跨链合约解析交易的以下部分:

    报头,至少包括本次跨链合约解析交易的源链及目的链的id信息,以及协议版本号;

    主体,至少包括本次跨链合约解析交易的调用内容,所述调用内容包括合约调用参数;

    状态信息,用于体现本次跨链合约解析交易在不同链中的存在状态。

    14.如权利要求13所述的区块链的跨链系统,其特征在于,所述合约调用内容编码,包括:

    合约地址;

    调用函数;

    调用参数;以及

    返回调用合约的内容;

    其中,所述返回调用合约的内容在调用时为空。

    15.一种区块链的中继链,其特征在于,所述中继链由多个管理节点组成,包括:

    网络传输模块,用于利用广播方式进行数据传输;

    共识模块,用于通过可插拔共识组件实现不同的共识机制管理与执行;

    智能合约模块,包括跨链合约虚拟机以及合约虚拟机,用于处理跨链交易;以及

    存储模块,用于存储与协议相关的数据;

    所述中继链通过上述模块的配合,以实现如权利要求1-6任意一项所述的区块链的跨链合约解析方法。

    16.一种计算机可读存储介质,其特征在于:

    所述计算机可读存储介质上存储有计算机程序;

    所述计算机程序被处理器运行时执行如权利要求1-6任一项所述的区块链的跨链合约解析方法。

    技术总结
    本申请公开了一种区块链的跨链合约解析方法、中继链及跨链系统,所述方法包括:接收由源链发出的跨链请求,所述跨链请求携带有源链的属性参数,所述属性参数包括目的链ID、调用的合约名称及合约参数的至少一种;根据跨链请求中的属性参数,解析获得目的链的合约调用参数;将合约调用参数发送给目的链;接收目的链返回的与合约调用参数匹配的合约数据,将所述合约数据发送给所述源链。本申请能够在确保安全性的前提下,降低不同智能合约框架下的区块链之间的跨链成本。

    技术研发人员:陈鹏
    受保护的技术使用者:陈鹏;抚州中科院数据研究院
    技术研发日:2020.12.03
    技术公布日:2021.03.12

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

    最新回复(0)