区块链的跨链互通方法及系统与流程

文档序号:22238830发布日期:2020-09-15 19:49阅读:673来源:国知局
区块链的跨链互通方法及系统与流程

本发明涉及通信技术领域,具体涉及一种区块链的跨链互联方法及系统。



背景技术:

从区块链发展历程来看,区块链系统之间的互联互通成为制约区块链技术发展的首要问题。由于头部区块链系统并未呈现一链统治所有、适用所有场景的能力,逐渐形成区块链多链封闭并存的格局。目前,区块链跨链技术方案按照其具体的实现方式不同,主要分为:公证人机制、侧链、中继、哈希锁定、分布式私钥控制、原子互换协议、桥接技术、链中链等类别。

但是,目前并没有普遍认可的跨链机制,区块链系统互联互通的技术难点包括跨链交易验证问题、跨链事务管理问题、锁定资产管理问题、多链协议适配问题以及跨链安全保障问题等。因此,制约着跨链互联。



技术实现要素:

基于现有技术中存在的问题,本发明提出一种区块链的跨链互通方法及系统。其中,区块链的跨链互联互通方法,可以方便、且安全可靠地实现区块链之间的跨链互通互联。

第一方面,本发明提供了一种区块链的跨链互通方法,包括:

根据区块链和区块链的跨链需求,确定区块链互联互通理论模型;

基于所述区块链互联互通理论模型,得到区块链互联互通的链间互操作协议;

根据预设规则创建跨链分布式应用;

通过所述跨链分布式应用在预设的两条区块链间进行跨链操作,以对所述区块链互联互通理论模型进行功能验证和协议评估,实现对所述区块链互联互通理论模型的优化。

第二方面,本发明提供了一种区块链的跨链互联系统,包括:

确定模块,用于根据区块链和区块链的跨链需求,确定区块链互联互通理论模型;

协议设计模块,用于基于所述区块链互联互通理论模型,得到区块链互联互通的链间互操作协议;

应用创建模块,用于根据预设规则创建跨链分布式应用;

优化模块,用于通过所述跨链分布式应用在预设的两条区块链间进行跨链操作,以对所述区块链互联互通理论模型进行功能验证和协议评估,实现对所述区块链互联互通理论模型的优化。

第三方面,本发明提供了一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现根据上述的第一方面所述的区块链的跨链互联方法。

本发明实施例中的上述一个或多个技术方案,至少具有如下技术效果之一:

根据本发明实施例,可以方便、且安全可靠地实现区块链之间的跨链互通互联,尤其对于异构的区块链之间进行互通互联时,能够有效降低对区块链的改造,从而降低跨链操作的成本。

本发明的附加方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些图获得其他的附图。

图1是本发明一实施例提供的区块链的跨链互联方法的流程图;

图2是本发明一实施例提供的区块链的跨链互联方法的技术实现框架示意图;

图3是本发明一实施例提供的区块链的跨链互联方法的分析内容框架示意图;

图4是本发明一实施例提供的区块链的跨链互联方法的区块链互联互通协议框架示意图;

图5是本发明一实施例提供的区块链的跨链互联系统的结构框图。

具体实施方式

下面结合附图,对本发明的具体实施方式作进一步描述。以下实施例仅用于更加清楚地说明本发明的技术方案,而不能以此来限制本发明的保护范围。

以下结合附图描述根据本发明实施例的区块链的跨链互联方法及系统。

在描述根据本发明实施例的去跨链的跨链互联方法之前,首先对目前的跨链问题进行阐述。

跨链技术是解决区块链系统互联互通问题的主要方式。跨链技术之于区块链系统互联互通,就像tcp/ip之于互联网。跨链技术就是能让价值跨过链和链之间的障碍,进行直接流通的一项技术。跨链交互根据所跨越的区块链底层技术平台的不同可以分为同构链跨链和异构链跨链。同构链之间安全机制、共识算法、网络脱坡、区块生成验证逻辑都一样,它们之间的跨链交互相对简单;而异构链的跨链交互相对复杂,其区块的组成形式和确定性保证机制均有很大不同,直接跨链交互机制不易设计。

目前的区块链跨链技术方案按照其具体的实现方式不同,主要分为:公证人机制、侧链、中继、哈希锁定、分布式私钥控制、原子互换协议、桥接技术、链中链等类别。

然而,目前并没有普遍认可的跨链机制,区块链系统(即:区块链)互联互通的技术难点包括如下五个方面:

跨链交易验证问题:

实现区块链之间的互联互通,首要设计区块链系统之间的信任机制,使得一个区块链可以接收并验证另一个区块链上的交易。交易的确认和验证包含了两方面的问题,一是确认交易已经发生并且写入区块链账本;二是验证交易已经获了系统中足够多节点的确认。目前常见的跨链交易验证机制有公证人机制和区块头+spv模式。公证人机制即通过外部公证人验证跨链消息的可靠性,公证人验证后需对跨链消息签名。区块头+spv模式即将公证人提供的外部区块链系统的区块头数据保存在自己的网络中,根据spv机制验证交易。

跨链事务管理问题:

一个完整的跨链交易可以拆分若干个子交易,每个子交易在各自所属的区块链系统中进行处理,这些子交易构成一个事务,需要跨链事务管理,以保证事务的一致性和原子性。跨链事务管理又分为两个子问题,即交易的最终确定性问题和交易的原子性问题。在跨链事务管理中,为保证交易的最终确定性,通常有三种方案:等待足够多的确认数、区块纠缠和使用dpos或者bft等共识算法。等待足够多的确认数是最简单粗暴的方法,其劣势就是事务处理的时间会变长。区块纠缠的原理是令两个链的区块有依赖关系,当一个链上的某个区块被撤销时,自动撤销其他链上的相关区块。相比于pow共识算法,dpos或者bft等共识算法更容易达成最终确定性,使用这类共识算法的区块链系统能高效地实现跨链交易。交易的原子性是实现跨链交易的基本要求,也是跨链交易必须要解决的难点。

锁定资产管理问题:

双向锚定是主链和侧链上的资产按照1:1兑换比例双向转移的过程。双向锚定设计方案中的关键问题是由谁来管理锁定账户并执行锁定和解锁等操作,如何保证锁定资产被安全地释放,而不会造成双花问题。另外,如何保证两条链的资产总量不变同样重要。关于资产锁定的管理,目前有单一托管人模式、联盟托管模式和智能合约模式。单一托管人模式是由一个单一托管人负责管理锁定的资产,执行并监管锁定资产的解锁操作。单一托管人模式虽然简单易行,但过于依赖中心化的托管人。较为去中心化的模式是联盟托管模式,当接到跨链的解锁请求时,联盟中的n个公证人都独立艷交易并投票,当投票数达到阈值m时,就能处置锁定的资产。智能合约模式则是为了更进一步地去中心化,该方案的前提条件是区块链系统能够支持智能合约,并且能够存储外部区块链的区块头来验证外部交易数据。

多链协议适配问题:

随着区块链技术的发展和应用的不断落地,未来区块链生态系统必然是多链并存、互联互通的生态系统。多链互联互通蕴含着两层含义,一是已经存在的区块链如何实现互联互通;二是对于要开发的区块链,如何为其互联互通做好铺垫和准备。因此,多链跨链方案可分为主动兼容型和被动兼容型方案。主动兼容型方案自上而下进行,主要针对已有的区块链系统,先有了上层不同的区块链应用系统,在进行底层的跨链机制研发。通常已有的区块链系统都是异构链,需要进行一一对接。被动兼容型方案自下而上进行设计,主要针对尚未开发的区块链系统,首先搭建好底层的跨链平台,然后基于跨链平台开发出新的区块链系统,或者把现有的区块链系统简单、便捷、安全地接入平台,共享跨链平台的系统便利。

跨链安全保障问题:

当两个系统发生交互时,难免会对彼此产生影响,若是链间安全无法隔离,那么如果一条链遭受攻击,将影响整个跨链网络。如何在跨链交易过程中保障自身系统和对方系统的安全性是值得思考的问题。总体来说,可以从以下三个方面来考虑:适度隔离、检测安全事件和保障跨链交易正确性。链之间应该保持各自的独立性,尽量通过第三方节点或者独立模块处理跨链事务,这样当跨链交易发生问题时,不会影响链本身交易的处理。如果第三方节点或者独立模块具有检测安全事件的能力和响应能力,则在系统架构隔离的基础上更进一步,使得跨链协议或系统具有类似防火墙的功能。

图1示出了本发明一实施例提供的区块链的跨链互联方法的流程图,如图1所示,本发明实施例提供的区块链的跨链互联方法,包括如下步骤:

s101:根据区块链和区块链的跨链需求,确定区块链互联互通理论模型。例如:对区块链和区块链的跨链需求进行分析,以抽象出区块链互联互通理论模型。

s102:基于区块链互联互通理论模型,得到区块链互联互通的链间互操作协议。

具体来说,以区块链互联互通理论模型为指导,得到区块链互联互通的链间互操作协议以及相关机制,其中,相关机制包括跨链交易验证机制、跨链安全治理机制、跨链智能合约的统一编程语言。其中,区块链互联互通理论模型的安全需满足uc安全框架的安全性。

在本发明的一个实施例中,区块链互联互通的链间互操作协议包括四个子协议和两个阶段,其中,所述四个子协议包括客户端实现的协议、交易执行系统实现的协议、网络状态系统实现的协议、交易保障智能合约实现的协议,所述两个阶段分别是程序执行阶段和保险追偿阶段,其中,在程序执行阶段,可执行程序中的交易需要提交到对应的区块链中。在保险追偿阶段,仲裁程序执行的正确性。

此外,还可以根据预设的密码协议,在客户端和交易执行系统之间进行加密。

s103:根据预设规则创建跨链分布式应用。例如:利用统一状态模型和统一编程语言开发所述跨链分布式应用。

s104:通过跨链分布式应用在预设的两条区块链间进行跨链操作,以对区块链互联互通理论模型进行功能验证和协议评估,实现对区块链互联互通理论模型的优化。从而,优化后的区块链互联互通理论模型可以为区块链的跨链互联互通的通用参考概念模型和关键技术原型的实现作为参考,进而,利用通用参考概念模型和关键技术原型能够简单方便地实现区块链的跨链互通互联。

通过上述的s101至s104,可以紧密地联系区块链技术发展实际状况,关切各类区块链的通用互联互通技术,考虑区块链系统互联互通中的跨链交易验证、跨链事务管理、跨链多协议适配、跨链安全保障等关键问题,从理论模型抽象和软件工程实现的角度入手,对区块链系统互联互通理论模型(即:区块链互联互通理论模型)以及区块链互联互通原型系统(即:跨链分布式应用)进行研究。并且通过在一个具体示例中,搭建一条以tendermint为引擎的区块链测试环境和一条联盟链hyperledgerfabric区块链的测试环境,围绕原型系统与上述两条链的跨链操作,开展区块链互联互通模型功能验证与协议评估,从而给出了解决区块链互联互通关键问题的通用参考概念模型和关键技术原型实现。

具体来说,通过区块链系统互联互通关键技术的分析,设计通用跨链互操作协议,同时满足异构区块链之间互操作性和可编程性,包括:

(1)提供编程框架和配套工具集,方便跨链分布式应用的开发。通过抽象,在不同的底层异构区块链之上提供一个虚拟层,来屏蔽底层区块链的异构性和复杂性,利用统一状态模型和编程语言来描述和开发跨链分布式应用。在此框架下,开发者能够很容易的开发出不需要实现密码安全协议的跨链分布式应用。

(2)设计链间互操作协议,链间互操作协议是一个通用的跨链协议,这个协议的使用范围不仅涵盖数字资产的交换,还可以支持一般化的数据交换。链间互操作协议能够实现涉及不同区块链网络上智能合约调用的复杂跨链操作,并保证复杂跨链调用的安全性。使用理想功能来表示链间互操作协议的安全属性,使用uc安全框架证明链间互操作协议实现了理想功能。

(3)研发系统原型,使用两种不同的跨链分布式应用对原型系统进行验证和评估。

在技术实现上,,区块链的互联互通问题极大地限制了区块链技术的应用空间。针对此问题,本发明展开区块链互联互通关键技术分析。如图2所示,包括:理论分析、跨链技术研究、原型研发、实验评估和场景应用用。

其中,理论分析中,根据状态机、语言编译、安全框架等基础理论,将区块链的互联互通问题抽象成一个通用的概念模型,运行形式化语言,进行形式化的规格描述、模型推理和验证等分析活动。区块链的互联互通问题可以抽象成互联网架构下的互联互通问题,使用连接器、路由器、桥接器来搭建了不同区块链网络的互联互通模型。已有的抽象的模型有基于支付通道和支付通道网络实现的跨链资产转移模型。还有基于状态机的通用模型,将区块链看成彼此独立的状态机网络,互联互通是通过分布式的状态机,提供智能合约的执行,在不同的区块链上实现状态的转移。从理论上分析,不管是原子交换协议,还是跨链链间协议,都遵从从一个区块链向另外一个区块链的前置交易,或者后置交易,或者双向交易,可以使用图模型来表示。

跨链技术研究中,对现有的区块链互联互通研究文献进行研读和梳理,总结这些研究文献所研究问题的共同属性,分析对比研究思路、研究方法和研究结果。选择解决区块链互联互通问题的典型工程项目,从软件工程的角度,分析总结其功能特性、系统设计、代码实现,归纳这些典型项目的关键技术及其优劣势。

原型研发中,通过对跨链概念的再认识,再定义,明确互联互通的具体内涵,,对这些概念的属性、关系、操作做出规定。在概念和通用模型的基础上,设计出每个协议和模块的具体细节,选择编程语言研发系统原型。

实验评估中,原型系统的源代码经过编译后变成可执行程序,将可执行程序在测试环境中部署,使用客户端或者钱包系统发送跨链交易,根据不同的场景和测试用例对原型系统进行功能测试、性能测试,评估检测系统跨链交易执行的正确性;统计系统性能测试指标,考察系统交易延迟、性能状况;模拟区块链恶意攻击,评估原型系统的安全性。

场景应用中,跨链的应用场景包括资产转移、资产交换、资产留置、跨链智能合约、跨链预言机。使用跨链智能合约与预言机的功能,结合金融交易的保证金、期权交易、金融衍生品创新等具体业务,展开场景应用探索。

在研究内容上,区块链之间的互联互通是实现信息、数据、价值在链和链间的流转。从理论上来说,包括一般性问题抽象,形式化语言描述与推理,形式化安全属性分析等内容。从工程实现上来说,涉及链间通信协议、跨链数据交换协议、跨链交易验证、跨链安全治理、跨链智能合约应用开发等方面。本项目旨在通过对区块链及其跨链需求的分析,抽象出通用的概念模型。基于通用概念模型的指导,设计跨链协议、跨链交易验证机制、跨链安全治理机制、跨链智能合约编程语言等模块,构建具有互操作性、可编程性的区块链网络原型,实现理论的检验和原型的评估。

为了解决区块链系统之间的互联互通问题,本发明从理论研究和软件工程的角度入手,采用具体到抽象再到具体的思维路径,研究区块链互联互通理论模型分析、区块链互联互通通用协议设计与实现、跨链分布式应用编译技术等三个方面。其逻辑关系示意如图3所示。

其中,区块链互联互通理论模型分析:区块链互联互通是不同区块链系统的组合,每个系统代表一个分布式数据账本,其中交易执行可能跨越多个区块链系统,其中记录在某个区块链中的数据可以通过语义兼容的方式,被另一个可能来自外部的交易所取得及验证。

区块链的互联互通在许多不同的场景都是需要的,从高阶应用的角度来看,互联互通的应用场景从金融扩展到了身份验证,众多的不同应用场景都能体现区块链互联互通的价值。从计算理论的立场看,不同类型的互联互通场景可以进行简单的分类,统一定义为因果效应图模型。具体来说,有三类模型:正向因果、逆向因果和依赖因果。这三种类型从本质上揭示了交易顺序和状态变化在不同的区块链之间的因果关系。这三种类型在实际应用场景中,不会同时发生。从逻辑关系上来看,互联互通实质上是事件引发的状态变化在不同区块链系统中的可靠、稳定的因果关联关系。

其中,正向因果可以描述链a可以触发链b上的事件发生,等同于说链b可以读取链a的数据。逆向因果是链b可以触发链a上的事件,事件按照相反的方面发生。依赖因果是指链c的状态变化同时触发链a和链b的事件发生,链a和链b同时对链c的状态数据产生依赖。

中继跨链机制提供了正向因果和逆向因果两种跨链交互类型,不同的中继链的实现可能具有不同的能力。公证人机制的跨链实现可以提供这三种的任何一种。哈希锁定跨链机制则是通过哈希值的出示作为共同的原因来提供依赖因果模型的执行。有了这三种因果效应模型之后,可以根据这三种因果效应模型的等价转换以及模型组合推导所能计算和解释的复杂情形。三种因果效应模型的等价转换是探索中继、公证人、哈希锁定三种机制之间的等价转化,为这些机制的优化设计提供理论依据。三种模型的组合是为了使用这三种基础模型来求解出使用场景的最大集合,探索降低复杂场景下跨链复杂度的方法,譬如采用高级跨链编程语言(有条件的事件发送和侦听机制)来表达互联互通问题不同方面的关切,为了跨链的工程实现提供理论指导。

从数理逻辑的角度来理解,正向因果模型可以等价于火车和旅馆问题。火车和旅馆问题是一类相同或等价问题的抽象,是一种跨系统预定协议。在此协议下,用户需要同时能够预定上车票和酒店,任何一方单项成功都不是用户所期望的结果,因此车票的预定和酒店的预定是一对原子操作。区块链系统经过简单属性抽象,可以看成带有密码协议的黑盒,与火车和旅馆预定系统没有大的差异,通过理论研究火车和旅店问题,形式化证明跨系统预定协议的原子性和活性,就可以将此协议作为附加功能引入到区块链网络中,解决区块链的互联互通问题。火车和旅馆问题的跨系统预定协议,在区块链的上下文中,转变成通用的跨链通信协议问题。在同时并发向不同的区块链系统发送交易时,交易上的依赖转换成区块链之间的依赖。交易t1在区块链a完成的凭证成为交易t2在区块链b上追加的条件。区块链b中交易的完成依赖区块链a中的交易的完成。

支持智能合约的区块链通常可以概念化成状态机。跨链智能合约抽象可以与区块链的抽象保持一致,将跨链智能合约抽象成跨越不同区块链系统的状态转移。因此,可以将跨链智能合约抽象成通用状态模型,通用状态模型通过实现一个虚拟层来统一处理在异构的区块链状态机。通用状态模型满足可扩展性和无关性。通用状态机里面的对象和状态是可以扩展的。通用状态模型与底层区块链的技术栈选择及其配置无关。跨链智能合约应用可以指定对通用状态机所包含实体的预期操作以及这些操作之间的相对顺序。使用形式化语言,通用状态模型可以表示成实体集合、操作集合、依赖集合三元组。实体是对区块链系统中对象的抽象,操作是这些实体可以支持的运算,依赖是操作之间在执行顺序上的约束关系。实体具有类型和属性,在具体应用中,可以刻画账户、合约、地址、资产等具体实例。通用状态机概念模型的前提条件是通用状态机预知各个单个区块链状态机的实体和状态。通用状态机下的操作是不同实体对象的计算步骤,一个操作最终会转换成一个或者多个在不同区块链系统的交易。不同区块链系统下,共识算法处理后的交易状态不一定会及时完成同步,这会引起数据不一致的问题,为此,需要在操作之间建立起约束依赖。为了保证数据的一致性,至少需要两种约束依赖:一是前置条件约束;二是超时条件约束。前置条件约束是带有前置条件约束的操作当且仅当其所有前置依赖交易完成后才能执行;超时条件约束是一个操作在它的依赖全部满足的情况下,必须在规定的时间间隔内完成,给出执行成功返回或者超时错误结果。

因果效应图模型和广义状态机模型通过对区块链系统互联互通问题的界定和定性分析,从形式化语言的角度给出了理论概念模型,在形式化语言的数理逻辑体系下,可以开展命题和定理的推理,对模型具体的能力可以进行形式化验。

区块链互联互通理论概念模型涉及不同的协议构成,每个协议都有它的安全属性。区块链互联互通理论概念模型的安全模型由所构成的协议簇的安全组合所决定,这里面牵涉到两个问题:一是协议的安全性问题;二是原来各自安全的协议在组合以后能否保证组合协议的安全性问题。uc安全(universallycomposablesecurity,通用可复合安全)是解决协议组合问题的重要工具。作为一种可证安全的方法,uc框架中定义了一整套安全性模型来证明复杂环境下组合协议的安全性。uc安全采用模块化的思想,在uc框架中,被证明是uc安全的协议,在复杂的网络环境中作为一个模块,与其他协议进行组合时,不破坏组合后协议的安全性,即几个分别在uc框架中被证明是uc安全的协议,组合以后仍然是安全的。结合uc安全框架,对区块链系统互联互概念模型的安全因素进行异常、错误、治理等机制性深入分析,设计并证明区块链系统互联互通概念安全模型满足uc安全性。

跨链分布式应用编译技术:智能合约使得区块链系统不在仅仅是一个数字货币的交易系统,区块链系统的能力边界扩张成为通用计算平台。区块链系统扮演着区块链世界中的操作系统的角色,允许在其底层协议之上创建区块链应用。现有的区块链互联互通技术实现上,都主要是解决了区块链系统之间的跨链等协议、交易一致性验证等问题,给出了区块链互通互联的开发接口。当需要接入到互联互通的区块链网络时,需要开发相应的链间协议的业务逻辑代码和具体智能合约应用的代码,这对于开发者来说,并不友好,开发流程比较繁琐,接入成本比较高。多数的区块链系统采用不同的智能合约编程模型和不同的编程语言,比如以太坊区块链使用solidity编程语言,hyperledgerfabric支持go、java、node等多种编程语言。智能合约跨链应用除了编程模型和编程语言的不同之外,智能合约跨链应用从数字资产专业领域的交换操作扩展到更具一般性的更大应用范围、支持通用的操作充满挑战。为此,研究智能合约中间表示语言,为不同的语言提供语言编译的前端实现,通过统一的编程模型,建立不同语言的类型映射系统和转换程序,从而开发者可以使用自己熟悉的语言来实现跨链的接入研发工作。可以使用llvm框架和antlr语言识别器技术,提供统一的编译后端处理程序和过程,为常用的智能合约语言提供前端编译服务,转换成中间语言。在中间语言的转换过程,可以行使静态分析和类型检查,避免跨链应用执行中的缺陷和错误。

区块链互联互通协议设计与实现:跨链互联互通系统主要有四个组件构成:客户端程序、交易执行系统、网络状态区块链系统、交易保障系统,其架构图可以示意如图4所示。

客户端程序是跨链互联互通系统的网关,承载分布式应用与跨链互联互通系统之间交互的作用。分布式应用客户端采用轻量级的设计,方便移动应用和网页应用与互联互通系统接入与交互。交易执行程序充当底层区块链的驱动器,将客户端提供的应用代码编译成程序,运行转换成区块链系统中可以执行的交易。客户端和交易执行系统都采用了链间互操作协议来保证交易在不同区块链系统中的安全执行。链间互操作协议则由两个部分组成:交易状态存储层和交易保障智能合约。交易状态存储层由网络状态区块链系统来承担,网络状态区块链是区块链中的区块链,为分布式应用的执行状态提供客观的统一视图。交易保障职能合约负责监控交易的执行状态与结构,为交易提供仲裁的服务。在发生异常的情况下,交易保障智能合约将撤销所有执行的交易,将交易的金额返还给原先参与方的账户来保证交易的原子性。

为了保证分布式应用的正确执行,分布式应用可执行程序中的所有交易需要提交到相应的区块链中去执行,交易的前置条件和限时条件也必须被满足。跨链分布式应用的执行过程虽然在模型上抽象的比较简单,但是在实际的执行过程中面临着巨大的挑战。因为在无信任环境中,没有可信的中心机构来协调不同区块链上的交易顺序执行,并且客户端和交易执行系统之间的信任也不能保证。为了确保跨链分布式应用的正确执行,在客户端和交易执行系统之间加入了密码协议,从而保障可执行程序在不同区块链上的执行。链间互操作协议由两个系统来完成密码协议所规定的任务。网络状态数据层由区块链系统来担当,负责对跨链分布式应用的执行结果进行记录,并提供真实客观的一致性查询视图。网络状态数据库将不同区块链系统的最终交易组织成默克尔树,为交易的状态的最终状态进行统一的描述,提供可验证的证据。与此同时,状态区块链系统也会为跨链交易执行中的客户端和交易执行各自执行的操作行为提供可验证记录,这个功能是通过行为共识算法来实现的。

交易保障智能合约是代码仲裁者,从网络状态区块链中提出交易状态可验证证明作为输入来判定分布式应用的最后执行结果,并且利用操作行为的记录来决定交易失败的责任归属。

本发明实施例的区块链的跨链互联方法,解决了以下技术问题:

区块链互联互通的通用性问题:区块链和区块链网络中执行的智能合约可以视为状态机模型。跨链分布式应用同样可以抽象成状态机,从而在概念模型上保持一致性。为了达到这个目的,引入统一状态模型。统一状态模型统一的定义和描述了跨链分布式应用,是一种与链无关、可扩展的模型,用于描述不同区块链系统之间的状态转移。统一状态模型使用一个虚拟层来统一解决底层区块链网络的异构性问题。这种异构性体现在两个方面:第一个方面是区块链系统本身内部结构的差异,譬如共识系统、数据结构等;第二个方面是智能合约执行环境和编程语言的差异性。为了克服这两种差异性,不同的区块链统一抽象成带有公有状态变量和函数的对象,跨链分布式应用抽象成对这些对象的期望的操作以及这些操作的相对执行顺序。

用形式化语言来说,统一状态模型可以定义成m={e,p,c},其中e是区块链上可操作实体的集合,p是可以对实体实施操作的集合,c是这些操作依赖约束的集合。实体是对区块链对象的抽象,可以用来描述区块链中定义的对象。实体具有类型,每个类型具有不同的属性,譬如账户实体和地址实体等。统一状态模型中的操作是对不同对实体执行的计算步骤,实体可以属于同一个区块链,也可以属于不同的区块链。每个操作最终会编译成不同区块链系统中的一个或者多个交易。考虑到区块链交易执行结构的异步性,统一状态模型为操作之间的依赖设立了两种类型:前置条件和超时条件。

为了满足异构多链之间的互联互通的通用性,基于通用状态模型设计链间互操作协议。链间互操作协议包括四个基础协议和两个阶段。四个基础协议分别是客户端实现的协议、交易执行系统实现的协议、网络状态系统实现的协议、交易保障智能合约实现的协议。两个阶段分别是程序执行阶段和保险追偿阶段。在程序执行阶段,可执行程序中的所有交易需要提交到对应的区块链系统中。在保险追偿阶段,程序执行的正确与错误会被仲裁。

客户端协议及运行时交易状态:在交易的执行过程中,交易的有效状态是一个状态集合,后一个状态值是前一个状态的高级状态,交易执行过程中,交易状态依次顺序而变化。对于每一个状态,链间互操作协议都会提供一个论据来证明。当执行阶段结束的时候,跨链分布式应用的最终执行状态由所有交易的状态所决定。

客户端程序与交易执行系统之间的交换协议通过链下状态通道来完成。为了厘清交易过程发生错误的责任认定,对每一方的执行步骤都会进行记录登记,允许客户端和可验证程序为它们的执行步骤质押。

网络状态区块链架构:网络状态存储层采用区块链系统来担当,主要目的是为跨链分布式应用的执行情况提供一个客观的视图。网络状态存储层选择区块链作为设计,而不是一般性的数据库,主要原因在于区块链系统具有的可追溯性、不可抵赖性和容错性等技术特征。网络状态区块链的区块中包含必要的字段,使用哈希字段将区块串联起来,使用默克尔树来保存交易和状态。为了支持网络状态区块链的其他功能,网络状态区块链的区块数据结构里面还包括了两个额外的默克尔树根:状态根和操作根。

状态根是区块链网络中交易状态的默克尔树根。网络状态区块链使用区块链的交易根和状态根来表示一个区块链的交易状态。一个区块链中的交易根和状态根分别代表交易的默克尔树根和存储状态的默克尔树根。网络状态区块链仅仅存储与跨链分布式应用有关的区块链状态,而不是整条链的所有状态,判断区块是否相关的依据是区块链中的区块是否打包了跨链分布式可执行程序中的交易。

操作根存储的是客户端和交易执行系统执行操作时提交的证书所构成的叶子节点的默克尔树根。每个证书代表了客户端程序或者交易执行系统在跨链分布式应用可执行程序执行过程中执行的操作步骤。出于验证操作行为的目的,交易参与方能够构造默克尔树来证明操作行为与证书的映射关系以及证书与网络状态区块链中的区块的关联关系。在交易发生错误或者异常的情况下,这些操作证明为交易执行保障程序判定交易失败责任方提供了依据。

交易执行系统执行协议:当跨链分布式应用依赖图生成之后,交易执行系统会初始化一个执行会话。初始化的主要任务是创建和部署一个交易执行保障智能合约来保护交易的执行。为了完成这个任务,交易执行系统首先向跨链交易保障系统发送请求,为交易依赖图创建一个交易执行保障智能合约,然后征得客户端同意之后,将交易执行保障智能合约部署到网络状态区块链中。在同意的过程以及次后的交易执行过程中,交易参与方使用自己的数字签名对操作的对象进行签名后生成证书,与交易一起保存到网络状态区块链中。

为了使得跨链交易保障系统能够在错误执行结果情形下回滚已经提交了的交易,客户端程序和交易执行程序需要向交易保障程序缴纳足够的资金。至于质押资金的多少,最简单的做法是交易的总金额,如果要计算出一个更加合理和更加公平的比例,需要设计一个比例的计算和计提的算法来优化这个步骤。

在跨链交易保障智能合约实例化之后,交易执行系统初始化会话守护进程,使用不同的处理函数推进交易的流程。交易执行系统的交易看护服务识别出交易的前置条件已经达成时,就会触发交易的调用。交易的执行过程中,客户端程序和交易执行系统需要依次对交易的执行状态进行共识,然后基于逻辑的交易数据构造出目标链上的交易,进而提交到相应的目标链。交易保障系统会不间断的检查,提交的交易在限定的时间内是否完成,进而对交易的状态做出裁定。

跨链交易的执行依赖于区块链网络的状态和交易状态区块链系统的状态。交易执行程序内部存在两个看护进程来读取这些区块链的状态。第一个看护进程监控目标链,通过读取目标链账本查询提交交易的状态。如果提交的交易在目标链上最终被确认,交易执行系统会通知客户端交易的完成。除了读取目标链上的交易状态外,交易执行程序还需要提取交易状态区块链中的默克尔证明来验证交易执行的最终性,这是第二个看护进程。

交易执行保障系统协议:交易执行保障系统根据交易依赖树产生交易执行仲裁代码,以智能合约的形式部署到交易状态区块链中。智能合约的内部逻辑会使用交易状态作为参数来跟踪交易依赖图中每个交易的状态。交易执行系统会按照一定的时间间隔不间断调用交易执行保障系统来执行这个合约。当交易执行发生错误或者出现交易超时的时候,智能合约会执行合约的条款,进行交易的回退和惩戒工作。

跨链分布式应用的可编程性问题:跨链分布式应用的可编程性问题可以通过编程框架来解决。编程框架的设计主要集中在编译器的功能上,编译器的工作分为前端功能和后端功能。前端功能包括从跨链应用程序中提取实体、操作和依赖以及从区块链网络中提取智能合约的公有变量和方法。设计统一的类型系统可以满足两个方面的需求:对不同编程语言编写的智能合约统一抽象成互操作实体;使用不同语言编程的跨链应用可以转换成统一编程语言。编译器会对所有的实体、操作和依赖执行语义检查确保分布式跨链程序的正确性和安全性,最后,将程序编译成可执行程序。可执行程序的组织结构是交易依赖图。

通用编译工具,构建统一类型系统。使用统一类型系统,开发者在编写跨链分布式应用的时候,就不用考虑底层区块链具体的数据结构和智能合约编程语言,这相当于为不同的底层区块链系统提供了一层虚拟层,在程序的动态执行过程中,再讲统一的类型转换成具体区块链所支持的类型。统一类型系统的设计达到了为不同的区块链不同语言类型和操作进行统一的描述和编写的目的。

编程语言的基本构件与统一状态模型保持一致,允许开发者在跨链分布式应用中直接指明操作的实体对象、要执行的操作、操作依赖条件。在一个跨链分布式应用需要对实体进行定义,对操作进行定义,对依赖条件进行定义。在编译器编译跨链分布式程序的过程中,会对跨链分布式应用的正确性和安全性进行语义检查,检查类型的匹配性和验证参数的有效性。除了检查,也对依赖进行验证,验证所有操作的依赖满足有向无环图数据模型,避免约束条件之间的冲突。

跨链分布式应用程序经过所有的验证之后,编译器会产生一个可执行程序。可执行程序的逻辑结构是一个交易依赖图,图的节点是交易,图的边描述的是交易之间的依赖。节点代表的交易包括在何种区块链上执行哪种交易的全部信息以及交易的元数据。

区块链互联互通安全性问题:区块链互联互通的安全性问题实质是链间互操作协议的正确性和安全性问题。链间互操作协议可以利用理想功能来表示其密码协议抽象。假设存在可信实体,理想功能说清楚了跨链互操作系统所希望实现的正确性和安全性属性。理想功能描述链间互操作协议的功能及其接口定义,包括交易会话、交易状态更新、回退合约执行等三个方面。在交易会话中,客户端和交易执行服务请求链间互操作协议安全地执行跨链分布式应用。链间互操作协议将跨链分布式应用以交易依赖图的形式给与描述,提供交易执行正确性的保障智能合约。作为可信实体,链间互操作协议为每个交易参与者分配私钥,使得它们可以对交易进行签名,计算证书。每个参与方都需要向链间互操作协议抵押足够的资金。链间互操作协议定义一系列的接口来接收外部系统的调用,从而完成交易状态的更新。每一个接口里面,链间互操作协议执行了必要的正确性检查确保交易状态的转移是合法的。在所有的接口中,链间互操作协议为相应交易状态计算了证明,将证明发送给了交易参与方,告知链间互操作协议采取和执行的动作。当出现超时的时候,交易的参与方都可以调用交易结束的接口触发交易保障智能合约代码的执行。基于每个交易的最终状态,交易仲裁智能合约依据交易状态决策树执行交易仲裁手续,进行交易失败的责任判定和划分,然后进行交易的回滚和惩罚。

在可信的假设下,不难推断出链间互操作协议提供如下的正确性和安全性。第一点,在超过规定的时限之后,交易的执行要么正确地结束,要么失败。正确地结束的时候前置条件和执行时限约束都满足。执行失败的时候,执行交易的逆操作进行原状恢复。第二点,链间互操作协议会对导致交易失败的责任方进行认定,给与必要的惩罚。

通过本发明的实施例,可以在以下应用场景中得到应用,其中,应用场景包括但不限于:

资产移植:资产转移可以允许用户把它的资产从一个区块链转移到另外一个区块链。区块链之间的转移是双向的,任何时候都可以将资产再从另外的区块链转移到当前区块链。

原子交换:原子交换允许双方在不同的区块链彼此交易、交换不同的数字资产。参与交易的双方需要在每一个不同的区块链上拥有账户或者地址。交易在所有的区块链同时发生。原子交换需要确保双方的资产转移要么同时发生,要么同时失败。原子交换也是去中心化交易常用的交易机制。

跨链预言机:预言机向区块链系统提供外部数据。跨链预言机提供的外部数据可以来自另外一条区块链。比如跨链预言机从外部的区块链中提取交易的有关信息,随后触发本地区块链系统上的智能合约的动作去执行相关操作。

资产留置:资产留置是将资产锁定在一个区块链上的能力。当在另外一条区块链上满足特定的条件的时候,再解锁锁定的资产。举例来说,资产留置功能可以用在缴纳证券保证金的业务上。

跨链智能合约:跨链智能合约可以无缝实现区块链对另外多条区块链的多种依赖,从而实现多种情形的依赖和协作。比如,一条区块链上的支付红利的智能合约在支付红利的时候需要检查当前的用户是否在另外一条链上是已注册的权益持有人。当然,跨链智能合约还有更多的使用场景。

根据本发明实施例的区块链的跨链互联方法,可以方便、且安全可靠地实现区块链之间的跨链互通互联,尤其对于异构的区块链之间进行互通互联时,能够有效降低对区块链的改造,从而降低跨链操作的成本。

进一步地,如图5所示,本发明的实施例公开了一种区块链的跨链互联系统,包括:确定模块510、协议设计模块520、应用创建模块530和优化模块540。

其中,确定模块510用于根据区块链和区块链的跨链需求,确定区块链互联互通理论模型。协议设计模块520用于基于所述区块链互联互通理论模型,得到区块链互联互通的链间互操作协议。应用创建模块530用于根据预设规则创建跨链分布式应用。优化模块540用于通过所述跨链分布式应用在预设的两条区块链间进行跨链操作,以对所述区块链互联互通理论模型进行功能验证和协议评估,实现对所述区块链互联互通理论模型的优化。

根据本发明实施例的区块链的跨链互联系统,可以方便、且安全可靠地实现区块链之间的跨链互通互联,尤其对于异构的区块链之间进行互通互联时,能够有效降低对区块链的改造,从而降低跨链操作的成本。

需要说明的是,本发明实施例的区块链的跨链互联系统的具体实现方式与本发明实施例的区块链的跨链互联方法的具体实现方式类似,具体请参见方法部分的描述,此处不做赘述。

基于相同的发明构思,本发明又一实施例提供了一种非暂态计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述区块链的跨链互联方法的全部步骤,例如,根据区块链和区块链的跨链需求,确定区块链互联互通理论模型;基于所述区块链互联互通理论模型,得到区块链互联互通的链间互操作协议;根据预设规则创建跨链分布式应用;通过所述跨链分布式应用在预设的两条区块链间进行跨链操作,以对所述区块链互联互通理论模型进行功能验证和协议评估,实现对所述区块链互联互通理论模型的优化。

以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本发明实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1