一种区块链之间的跨链互操作方法与流程

文档序号:12740213阅读:598来源:国知局
一种区块链之间的跨链互操作方法与流程

本发明涉及区块链技术,尤其涉及区块链之间的互操作方法。



背景技术:

区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式,本质上是一个去中心化的体系结构。狭义来讲,区块链是一种按照时间顺序将数据区块以顺序相连的方式组合成的一种链式数据结构,并以密码学方式保证的不可篡改和不可伪造的分布式账本。广义来讲,区块链技术是利用块链式数据结构来验证与存储数据、利用分布式节点共识算法来生成和更新数据、利用密码学的方式保证数据传输和访问的安全、利用由自动化脚本代码组成的智能合约来编程和操作数据的一种全新的分布式基础架构与计算范式。

区块链技术具有去中心化、开放性、自治性、信息不可篡改、匿名性等几个特征。去中心化是由于使用分布式核算和存储,不存在中心化的硬件或管理机构,任意节点的权利和义务都是均等的,系统中的数据块由整个系统中具有维护功能的节点来共同维护。开放性是指系统是开放的,除了交易各方的私有信息被加密外,区块链的数据对所有人公开,任何人都可以通过公开的接口查询区块链数据和开发相关应用,因此整个系统信息高度透明。自治性是区块链采用基于协商一致的规范和协议(比如一套公开透明的算法)使得整个系统中的所有节点能够在去信任的环境自由安全的交换数据,使得对“人”的信任改成了对机器的信任,任何人为的干预不起作用。信息不可篡改是一旦信息经过验证并添加至区块链,就会永久的存储起来,除非能够同时控制住系统中超过51%的节点,否则单个节点上对数据库的修改是无效的,因此区块链的数据稳定性和可靠性极高。匿名性是指由于节点之间的交换遵循固定的算法,其数据交互是无需信任的(区块链中的程序规则会自行判断活动是否有效),因此交易对手无须通过公开身份的方式让对方自己产生信任,对信用的累积非常有帮助。

目前,区块链技术正处于百花齐放、百家争鸣的时代,各种不同区块链纷纷涌现出来,区块链之间的互操作成为了一个非常重要而又迫切的需求。企业用户可能需要在不同的链之间进行业务迁移;普通用户可能需要在不同的链之间进行资产交换;央行的数字法币可能会需要在各个区块链上流通等。

为了满足这些实际的市场需求,要设计一种跨链互操作协议,使得各不同的区块链之间能够互联互通。



技术实现要素:

以下给出一个或多个方面的简要概述以提供对这些方面的基本理解。此概述不是所有构想到的方面的详尽综览,并且既非旨在指认出所有方面的关键性或决定性要素亦非试图界定任何或所有方面的范围。其唯一的目的是要以简化形式给出一个或多个方面的一些概念以为稍后给出的更加详细的描述之序。

本发明的目的在于解决上述问题,提供了一种区块链之间的跨链互操作方法,使各种不同的区块链之间能够互联互通。

本发明的技术方案为:本发明揭示了一种区块链之间的跨链互操作方法,应用于跨链资产交换,在一场跨链交易中存在至少一个发送者S和至少一个接收者R,其中|S|>0,|R|>0,且|S∪R|≥2,方法包括:

每一个接收者Rx都生成自己的秘密随机数,并公开Nx=nx·G,其中G是椭圆曲线上的基点;

得到每一个Nx后,对其求和计算出:

为每一对发送者和接收者生成一个合约账户其中Si为发送者的公钥,Rj为接收者的公钥,t为超时时间;

每一个发送者Si都将自己的资产发送到对应的合约账户C(i,j)中;

当所有资产都发送完毕后,每一个接收者Rj都公开自己的秘密随机数nj

在所有秘密随机数都被公开之前,任何人都无法转移资产,当所有秘密随机数都公开后,每一个接收者都可以计算出并转移资产,如果在超时时间t到达后仍无法计算出则交易可以被撤销。

根据本发明的区块链之间的跨链互操作方法的一实施例,合约账户表示接收者可以用自己的签名和所有人的秘密随机数之和来提取账户中的资产,而发送者可以用自己的前面在超时时间t到达后提取账户中的资产。

根据本发明的区块链之间的跨链互操作方法的一实施例,对于最后一个公开秘密随机数的接收者,在转移资产的同时会自动公开秘密随机数,以使任何其他接收者也可以转移账户中的资产。

本发明还揭示了一种区块链之间的跨链互操作方法,应用于跨链资产交换,在一场跨链交易中存在至少一个发送者S和至少一个接收者R,其中|S|>0,|R|>0,且|S∪R|≥2,方法包括:

每一个接收者Rx都生成自己的秘密随机数,并公开Nx=nx·G,其中G是椭圆曲线上的基点;

得到每一个Nx后,对其求和计算出:

为每一对发送者和接收者生成一个合约账户其中Si为发送者的公钥,Rj为接收者的公钥,t为超时时间,0<m<|R|,m是可配置的参数;

每一个发送者Si都将自己的资产发送到对应的合约账户C(i,j)中;

当所有资产都发送完毕后,每一个接收者Rj都公开自己的秘密随机数nj

在所有秘密随机数都被公开之前,任何人都无法转移资产,当所有秘密随机数都公开后,每一个接收者都可以计算出并由超过m个参与者签名之后才能够转移资产,如果在超时时间t到达后仍无法计算出则交易可以被撤销。

根据本发明的区块链之间的跨链互操作方法的一实施例,合约账户表示接收者可以用自己的签名、所有人的秘密随机数之和以及至少m份不同接收者对秘密随机数之和的签名,来提取账户中的资产,而发送者可以用自己的签名在超时时间t到达后提取账户中的资产。

根据本发明的区块链之间的跨链互操作方法的一实施例,k<m≤|R|-k且k<|R|/2,表示攻击者数量k必须少于总人数的一半,在攻击者人数k可预估的情况下确定m值。

本发明还揭示了一种区块链之间的跨链互操作方法,应用于跨链分布式事务交换,分布式事务的多个步骤分散在不同的区块链上执行且保证整个事务的一致性,方法包括:

将分布式事务T的每一个步骤Fi部署在各个区块链上,其中T={F1,F2,…,Fn},步骤Fi∈T;

为每一个步骤Fi创建一个秘密随机数ni,并公开Ni=ni·G,其中G是椭圆曲线上的基点,为每一个步骤Fi创建一个密钥对{Ki,ki},并公开公钥Ki

得到每一个Ni后,对其求和计算出

执行每一个步骤的准备阶段Pi,得到其中把每一个步骤Fi拆分成三个阶段Fi={Pi,Ci,Ri},其中Pi为准备阶段,Ci为提交阶段,Ri为回滚阶段;

当所有的准备阶段Pi都执行成功后,每一个步骤Fi都公开自己的秘密随机数ni

当所有的秘密随机数都公开后,计算出每一个步骤Fi都用自己的私钥ki对秘密随机数之和进行签名,得到ei并公开;

当收集到预设数量的签名后,执行每一个步骤的提交阶段Ci,得到其中签名数量m是可配置的参数;

如果在超时时间t到达后,仍无法收集到足够签名,则进入回滚阶段将状态从S”还原为原始状态S:S=R(S”)。

根据本发明的区块链之间的跨链互操作方法的一实施例,和是相互匹配的状态锁和密钥,通过对应的来锁定的状态需要使用相应的来提交,基于区块链虚拟机提供的状态锁的功能,将状态S”锁定一段时间。

本发明对比现有技术有如下的有益效果:跨链互操作的本质就是在不同的区块链上进行一系列相关的操作,并保证这些操作的事务一致性。这些操作可以是任意的,本发明根据不同的应用场景,将跨链操作协议分为跨链资产交换协议和跨链分布式事务协议。前者适用于数字资产的交换,实现简单且无需对区块链进行改造即可使用;后者适用于智能合约的跨链执行,需要虚拟机提供状态锁的功能。

附图说明

图1示出了本发明的支持两个参与者进行资产交易的跨链互操作的方法的实施例的流程图。

图2示出了本发明的支持多个参与者进行资产交易的跨链互操作的方法的实施例的流程图。

图3示出了本发明的经过改进的支持多个参与者进行资产交易的跨链互操作的方法的实施例的流程图。

图4示出了本发明的支持多个参与者进行分布式事务的跨链互操作的方法的实施例的流程图。

具体实施方式

在结合以下附图阅读本公开的实施例的详细描述之后,能够更好地理解本发明的上述特征和优点。在附图中,各组件不一定是按比例绘制,并且具有类似的相关特性或特征的组件可能具有相同或相近的附图标记。

所有的跨链互操作都有一个大前提,即使用者必须同时信任所有参与跨链的区块链,这种信任包括相信区块链不会发生回滚、分叉、篡改等事故。因为一旦发生这些事故,跨链的事务一致性将被破坏。

跨链资产交换协议可以让多个参与者在不同的区块链上进行资产交换,并保证整个交易过程中的所有步骤全都成功或全都失败。为了实现这一功能,需要利用区块链的智能合约功能,为每一个参与者创建一个合约账户。智能合约是区块链最重要的特征,相当于赋予资产的一些代码,决定了网络中相关资产运作的地点和方式。在区块链中,只有合约双方才能动用资金,一旦合约确定了,其中的资金就由区块链按照合约条款来分配,并且只有合约到期才可以使用这笔资金。对智能合约的定义就是:一套以数字形式定义的承诺,包括合约参与方可以在上面执行这些承诺的协议。

本发明首先公开了一种支持两个参与者进行资产交易的方案,如图1所示,假设用户A和用户B进行跨链资产交换,方案的实施步骤如下。

步骤S11:用户A生成一个秘密随机数n,并公开它的散列值hash(n)。

步骤S12:得到散列值hash(n)后,双方可以生成各自的合约账户CA={KA,KB,hash(n),tA},CB={KB,KA,hash(n),tB},其中KA和KB为双方的公钥,t为超时时间,且tA>tB

合约的内容可以表述为:接收者可以用自己的签名和秘密随机数n来提取账户中的资产,而发送者可以用自己的签名在超时时间t到达后提取账户中的资产。

步骤S13:生成合约账户后,用户A首先将资产发送到账户CA中,随后用户B将资产发送到账户CB中。

步骤S14:用户A基于拥有的秘密随机数n,可以从账户CB中将资产转走。

步骤S15:用户A在转移资产的同时必须公开秘密随机数n,用户B也可以将账户CA中的资产转走。

步骤S16:如果用户A不公开秘密随机数n,则双方都将无法转移对方的资产,在超时时间到达后交易可以被撤销。

由于tA>tB,所以即使用户A在tB即将到达时才公开秘密随机数n,此时用户B依然有(tA-tB)的时间来处理自己的交易。所以只要让(tA-tB)的时间足够长,交易就是公平的。

本发明将交易参与者的数量扩展到更多的情况,假设在一场跨链交易中,存在至少一个发送者S和至少一个接收者R,其中|S|>0,|R|>0,且|S∪R|≥2。由于参与者的数量可能会超过2人,所以由其中一方事先生成秘密随机数的方案将变得不可行,因为无法保证所有人都同时发送各自的资产。在所有人发送完资产之前,任何人都不应该得知秘密随机数。

这一实施例请参见图2,下面是对该方法的实施步骤的详细描述。

步骤S21:每一个接收者Rx都生成自己的秘密随机数,并公开Nx=nx·G,其中G是椭圆曲线上的基点。

椭圆曲线是指椭圆曲线密码学(ECC)中的任意曲线,或者国家标准的SM2算法中的椭圆曲线。

步骤S22:得到每一个Nx后,对其求和计算出:

步骤S23:为每一对发送者和接收者生成一个合约账户其中Si为发送者的公钥,Rj为接收者的公钥,t为超时时间。

合约账户表示接收者可以用自己的签名和所有人的秘密随机数之和来提取账户中的资产,而发送者可以用自己的前面在超时时间t到达后提取账户中的资产。

步骤S24:每一个发送者Si都将自己的资产发送到对应的合约账户C(i,j)中。

步骤S25:当所有资产都发送完毕后,每一个接收者Rj都公开自己的秘密随机数nj

步骤S26:在所有秘密随机数都被公开之前,任何人都无法转移资产,当所有秘密随机数都公开后,每一个接收者都可以计算出并转移资产,如果在超时时间t到达后仍无法计算出则交易可以被撤销。

在所有秘密随机数都被公开之前,任何人都无法转移资产,除了最后一个公开的人之外,而对于最后一个公开秘密随机数的接收者,在转移资产的同时会自动公开秘密随机数,从而使任何其他接收者也可以转移账户中的资产。

上述方案可以很好解决多方资产交换的问题,而且没有发起人,完全去中心化。但是有一个缺陷,即最后一个公开秘密随机数的人可以在超时时间即将到达前将资产转移,同时抢先将自己发送资产的交易撤销。在双方交易的方案中,可以通过设置两个不同的超时时间来解决问题,但在本实施例的多方交易的方案中很难做到这一点。

为了解决这一问题,本发明对合约C(i,j)进行了改进。如图3所示,改进了合约C(i,j)的实施例的细化步骤如下。

在这一场跨链交易中存在至少一个发送者S和至少一个接收者R,其中|S|>0,|R|>0,且|S∪R|≥2,由于参与者的数量可能会超过2人,所以由其中一方事先生成秘密随机数的方案将变得不可行,因为无法保证所有人都同时发送各自的资产。在所有人发送完资产之前,任何人都不应该得知秘密随机数。

步骤S31:每一个接收者Rx都生成自己的秘密随机数,并公开Nx=nx·G,其中G是椭圆曲线上的基点。

椭圆曲线是指椭圆曲线密码学(ECC)中的任意曲线,或者国家标准的SM2算法中的椭圆曲线。

步骤S32:得到每一个Nx后,对其求和计算出:

步骤S33:为每一对发送者和接收者生成一个合约账户其中Si为发送者的公钥,Rj为接收者的公钥,t为超时时间,0<m<|R|,m是可配置的参数。

合约账户表示接收者可以用自己的签名、所有人的秘密随机数之和以及至少m份不同接收者对秘密随机数之和的签名,来提取账户中的资产,而发送者可以用自己的签名在超时时间t到达后提取账户中的资产。

假设在一次交易中,存在恶意攻击者的数量为k。当k≥m时,攻击者可以在最后一刻公开自己的秘密随机数和签名,从而实施“最后一人”攻击,因此系统安全的必要条件是k<m。在k<m的情况下,攻击者有两种选择:

选择一:攻击者不公开自己的秘密随机数,此时由于无法计算出没有人会公开自己的签名,攻击者自己也无法凑出m个签名,交易最终超时回滚,此时系统安全。

选择二:攻击者公开自己的秘密随机数,此时所有的非攻击者会公开自己的签名。如果非攻击者的数量|R|-k<m,那么必须等一部分攻击者放出签名,交易才能成功,此时攻击者仍可以实施“最后一人”攻击。因此系统安全的第二个必要条件是|R|-k≥m。

将以上两个必要条件连列计算得出:k<m≤|R|-k且k<|R|/2,表示攻击者数量k必须少于总人数的一半,在攻击者人数k可预估的情况下确定m值。

以|R|=3为例,此时k<3/2,取最大值kmax=1,带入上式可得m=2。所以,当交易人数为3人时,协议可以容忍最多一名攻击者,此时将参数设置为m=2即可保证系统安全。

以|R|=5为例,此时k<5/2,取最大值kmax=2,带入上式可得m=3。所以,当交易人数为5人时,协议可以容忍最多2名攻击者,此时将参数设置为m=3即可保证系统安全。如果已知k<kmax,则m可在更灵活的范围内配置,例如本例中,若k=1,则1<m≤4,此时m可取2、3、4。

步骤S34:每一个发送者Si都将自己的资产发送到对应的合约账户C(i,j)中。

步骤S35:当所有资产都发送完毕后,每一个接收者Rj都公开自己的秘密随机数nj

步骤S36:在所有秘密随机数都被公开之前,任何人都无法转移资产,当所有秘密随机数都公开后,每一个接收者都可以计算出并由超过m个参与者签名之后才能够转移资产,如果在超时时间t到达后仍无法计算出则交易可以被撤销。

跨链分布式事务是指事务的多个步骤分散在不同的区块链上执行,保证整个事务的一致性。这是对跨链资产交换的一种扩展,将资产交换的行为扩展成为任何行为。

考虑一个分布式事务T={F1,F2,…,Fn},其中F是事务T的多个步骤,每个步骤可以看做在区块链上执行的状态转换函数S’=F(S),S表示原始状态,S’表示经过F转换后的状态。

若要保证事务T的一致性,则需要保证所有的Fi∈T都执行成功或失败。把每一个状态转换函数Fi拆分成Fi={Pi,Ci,Ri},其中Pi为准备阶段,Ci为提交阶段,Ri为回滚阶段。定义它们的行为如下:S”=P(S,L,t),S’=C(S”,K),S=R(S”),其中L和K是相互匹配的状态锁和密钥,通过对应的L来锁定的状态需要使用相应的K来提交。t表示超时时间,只有在超时时间到达后才可以进入回滚阶段R来将状态从S”还原为原始状态S。

如图4所示,跨链分布式事务的跨链互操作方法的实施步骤如下。

步骤S41:将分布式事务T的每一个步骤Fi部署在各个区块链上,其中T={F1,F2,…,Fn},步骤Fi∈T。

步骤S42:为每一个步骤Fi创建一个秘密随机数ni,并公开Ni=ni·G,其中G是椭圆曲线上的基点,为每一个步骤Fi创建一个密钥对{Ki,ki},并公开公钥Ki

椭圆曲线是指椭圆曲线密码学(ECC)中的任意曲线,或者国家标准的SM2算法中的椭圆曲线。

步骤S43:得到每一个Ni后,对其求和计算出

步骤S44:执行每一个步骤的准备阶段Pi,得到其中把每一个步骤Fi拆分成三个阶段Fi={Pi,Ci,Ri},其中Pi为准备阶段,Ci为提交阶段,Ri为回滚阶段。

步骤S45:当所有的准备阶段Pi都执行成功后,每一个步骤Fi都公开自己的秘密随机数ni

步骤S46:当所有的秘密随机数都公开后,计算出每一个步骤Fi都用自己的私钥ki对秘密随机数之和进行签名,得到ei并公开。

步骤S47:当收集到预设数量的签名后,执行每一个步骤的提交阶段Ci,得到其中签名数量m是可配置的参数。

和是相互匹配的状态锁和密钥,通过对应的来锁定的状态需要使用相应的来提交,基于区块链虚拟机提供的状态锁的功能,将状态S”锁定一段时间。

步骤S48:如果在超时时间t到达后,仍无法收集到足够签名,则进入回滚阶段R将状态从S”还原为原始状态S:S=R(S”)。

尽管为使解释简单化将上述方法图示并描述为一系列动作,但是应理解并领会,这些方法不受动作的次序所限,因为根据一个或多个实施例,一些动作可按不同次序发生和/或与来自本文中图示和描述或本文中未图示和描述但本领域技术人员可以理解的其他动作并发地发生。

提供对本公开的先前描述是为使得本领域任何技术人员皆能够制作或使用本公开。对本公开的各种修改对本领域技术人员来说都将是显而易见的,且本文中所定义的普适原理可被应用到其他变体而不会脱离本公开的精神或范围。由此,本公开并非旨在被限定于本文中所描述的示例和设计,而是应被授予与本文中所公开的原理和新颖性特征相一致的最广范围。

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