技术领域
[0001] 本
发明实施例涉及一种区块链跨链操作方法及装置,保证跨链信息交易事务
原子性。
背景技术
[0002] 区块链是分布式数据存储、点对点传输、共识机制、加密
算法等计算机技术的新型应用模式。
[0003] 从本质上来说,区块链就是一个“多点写入、多份冗余、一致性
数据库”,每一个数据块实际上是一次批处理提交的交易transaction,由于对事务是成批递交,所以事务处理性能比事务逐个递交有了很大提高,而所谓”定期出块”实际上是所有多份冗余的数据库之间进行一次同步,使得数据一致性得到保证。
[0004] 不同链之间存在跨链操作的需求。这个”不同链“,既可以是不同种类的链,比如
比特币链和以太币链,也可以是同一种链之间的不同层次,比如”主链和
侧链“比特币主链和闪
电网络”等。
[0005] 最典型的跨链操作有两种:跨链资产转移(单向转移)和跨链资产交换(双向互换)。不同链之间跨链操作的难点在于如何保证跨链操作的原子性:也就是整个跨链操作由好几个部分组成,他们要么全部完成,要么全部不完成。这也是传统数据库理论中的“transaction事务原子性”。
[0006] 在跨链资产转移中,第一个链的资产的扣除和第二个链上资产的增加必须是成对出现。
[0007] 在跨链资产交换中,第一个链上的资产由A账户转移到B账户,第二个链上的资产由B账户转移到A账户,这两个操作必须成对出现。
[0008] 现有的跨链操作技术
[0009] 公证人notary
[0010] 侧链sidechain
[0011] 中继reply
[0013] 上述几个解决方案很复杂,技术方案基本上是:
[0014] 1:需要第三方公证账户,跨链同时把资产打入第三方公正账户,交易完成之后由第三方公证账户分别交给交易双方。
[0015] 2:在链上同时冻结交易双方资产,同时需要双方约定一个交易超时时间段,在这个时间段之内双方采取行动,比如交换密钥、分别解锁对方的资产并接受,来完成交易。
[0016] 传统解决方案在发动跨链交易之后还需要多方面的参与,比如第三方公证人、交易双方要通讯交换信息等,业务流程非常繁琐。
[0017] 要保证跨链操作的原子性,还有一个难点:在第一区块链上只有第一区块链的账本信息,只能做第一区块链本地操作合法性校验,由于缺乏第二
区块链账本信息,无法做第二区块链链上操作的合法性校验;而在第二区块链上只有第二区块链的账本信息,只能做第二区块链本地操作合法性校验,由于缺乏第一区块链账本信息,无法做第一区块链链上操作的合法性校验。发明内容:
[0018] 本
申请涉及互联网和计算机技术,尤其涉及到两个或多个区块链的跨链操作,并保证跨链操作原子性的算法和装置。
[0019] 在跨链操作过程中,本发明不需要设定一个公证第三方,也不需要交易的双方约定交易超时时间段内采取行动(交换密钥等)来完成,不需要用户任何额外步骤和资源,由本操作协议和装置保证跨链操作一旦发起,就能自动全部完成或者失败全部回滚,保证交易的原子性。
[0020] 本发明把跨链操作存放在一个辅助区块中,如图一,图二。以辅组区块为跨链操作的基本单位,分步骤,依次先后在多个链中完成跨链操作,如果失败则全部回滚。
[0021] 对于第一区块链,其数据结构如图三所示。
[0022] 对于第二区块链,其数据结构如图四所示。
[0023] 本发明涉及的跨链,可以是不同链,也可以是同一种链内的主链或侧链。可以是两个链,或者更多链。跨链操作既可以是跨链资产转移(比如一笔转账交易),也可以是跨链资产的交换(比如两个用户在不同的两个链上交换彼此不同的资产),也可以是跨链
智能合约的执行,本发明对此不作限定。
[0024] 跨链操作本质上是在同一个事务transaction中,
修改多条链上的信息,事务的原子性,要求:多条链的信息必须“全部修改完成”或者”全部不修改“。本发明可以确保多操作的“原子性”。
[0025] 跨链操作可以是两条链之间,也可以是多于两条链之间的跨链,在本文中使用两条链来说明原理,多于两条链的情况原理完全相同。
[0026] 本发明需要参与跨链操作的所有链都支持本文描写的方法,否则无法进行跨链操作。
[0027] 技术方案:
[0028] 第一区块链和第二区块链上进行一个跨链操作。这个跨链操作涉及到第一区块链和第二区块链的信息,而且两个链的修改必须是原子性(同时成功或者同时失败回滚)。
[0029] 1:第一区块链生成一个数据块,这个数据块就是传统意义上的区块链的区块,它包含了第一区块链的链内操作信息。对第一区块链的修改操作信息都在这个块里面,我们称之为链内信息块。
[0030] 2:同时,第一区块链生成一个辅助区块(跨链信息块),这里面包含了对第二区块链所要进行的所有操作。
[0031] 3:第1步和第2的两个区块要么都生成,要么都不生成。如图一
[0032] 4:第1步的数据块和第2步的辅助区块两个块同时加入第一区块链的链条,这两个块一定是成对出现。
[0033] 5:第一区块链通过与第二区块链的P2P网络向第二区块链广播第一区块链辅助区块(跨链信息块)和第一区块链链内信息块的
区块头。
[0034] 6:第二区块链接受第一区块链广播的辅助区块(跨链信息块)和第一区块链链内信息块的区块头。
[0035] 7:第二区块链上:
[0036] 接受第一区块链最长链链内信息块的块头。
[0037] 第二区块链本地保存一个“第一区块链简化版本“,它只包含第一区块链的普通数据块块头和第一区块链的辅助区块(跨链信息块)全块。如图四.
[0038] 因为这个简化版本的第一区块链只保存普通数据块的块头,而且跨链操作相比第一区块链链内操作而言,是很少的,所以这个“第一区块链简化版本“数据量很小,但是区块长度和第一区块链完整链的长度是一样的。
[0039] 在第二区块链内处理第一区块链跨链信息块的操作信息,同时第二区块链生成自己的链数据块。
[0040] 这个数据块就是传统意义上的区块链的区块,它包含了第二区块链的链内操作信息,跨链操作需要修改第二区块链的操作信息都在这个块里面,我们称之为第二区块链的链内信息块。
[0041] 8:第二区块链完成修改之后,如果跨链操作不需要通知第一区块链做出相应处理,则跨链操作结束。
[0042] 9:第二区块链完成修改之后,如果跨链操作还需要通知第一区块链并作出相应处理,则B生成一个辅助区块(跨链信息块),这个辅助区块包含了需要回写到第一区块链的所有信息,如图二。
[0043] 10:第7步和第9步在同一个事务transaction,也就是说,上面的两个区块要么都生成,要么都不生成。
[0044] 11:第二区块链通过与第一区块链的P2P网络向第一区块链广播第二区块链辅助区块(跨链信息块)和第二区块链链内信息块的区块头到第一区块链。
[0045] 13:第一区块链接受第二区块链广播的跨链信息块和第二区块链链内信息块的区块头,如图三。
[0046] 14:第一区块链处理第二区块链广播的跨链信息块,在第一区块链内出相应的处理,同时生成第一区块链数据块。
[0047] 15:整个跨链原子操作结束。
[0048] 自此,一个完整的跨链原子操作全部完成。
[0049] 整个原子操作在所有步骤完成之后,数据一致性、事务一致性得到保证。
附图说明
图1是第一区块链主区块和辅助区块图
图2是第二区块链主区块和辅助区块图
图3是第一区块链主区块和辅助区块加上第二区块链主区块头和辅助区块的图图4是第二区块链主区块和辅助区块加上第一区块链主区块头和辅助区块的图图5是从第一区块链转资产到第二区块链示意图
图6是第一区块链和第二区块链进行资产交换示意图
具体实施方式
[0050] 为了使本发明的目的、技术方案、优点更清晰,下面结合两个具体实例和附图来对本发明进行说明。
[0051] 下面结合附图并通过具体实施方式来进一步说明本发明的技术方案。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对发明的限定。另外还需要说明的是,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0052] 除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中在本发明的
说明书中使用的术语只是为了描述具体的实施方式的目的,不是旨在于限制本发明。本文所使用的术语“和/或”包括一个或多个相关的所列项目的任意的和所有的组合。
[0053] 随着技术的发展,很多
硬件电路在方法流程上的更改已经可以通过纯硬件、纯
软件、或者软件硬件结合的方式来实现。
[0054]
可编程逻辑器件英文全称为:programmable logic device即PLD。PLD是做为一种通用集成电路产生的,他的逻辑功能按照用户对器件编程来确定。一般的PLD的集成度很高,足以满足设计一般的数字系统的需要。它采用可以编制程序的
存储器,用来在执行存储逻辑运算和顺序控制、定时、计数和算术运算等操作的指令,并通过数字或模拟的输入(I)和输出(O)
接口,来实现逻辑功能。现在的可编程逻辑器件,其逻辑功能可以由用户进行器件编程来实现,由可编程
控制器设计人员把一个数字系统“集成”在一个可编程逻辑器件上,而不必去请芯片制造厂商设计和制作专用的集成电路芯片。
[0055] 逻辑器件可分为两大类:固定逻辑器件和可编程逻辑器件。固定逻辑器件如其名,逻辑器件中的电路是永久性的,它们完成一种或一组功能,一旦制造完成,就无法改变。另一方面,可编程逻辑器件(CPLD)是能够为客户提供范围广泛的多种逻辑能
力、特性、速度和
电压特性的标准成品部件,而且此类器件可在任何时间改变,从而完成许多种不同的功能。目前,取代制作集成电路芯片,可逻辑编程使用“逻辑编译器”软件来实现,原理上和计算机软件是一样的。
[0056] 可编程逻辑器件提供了一些优于固定逻辑器件的重要优点,包括:PLD在设计过程中为客户提供了更大的灵活性,因为对于PLD来说,设计反复只需要简单地改变编程文件就可以了,而且设计改变的结果可立即在工作器件中看到。PLD甚至在设备付运到客户那儿以后还可以重新编程。事实上,由于有了可编程逻辑器件,一些设备制造商正在尝试为已经安装在现场的产品增加新功能或者进行升级。要实现这一点,只需要通过网络将新的编程文件上载到PLD就可以在系统中创建出新的硬件逻辑。
[0057] 本领域技术人员也清楚,只需要将方法流程使用PLD硬件描述语言做逻辑编程并编程到集成电路、可编程逻辑器件中,就能得到实现该方法逻辑的硬件电路。
[0058] 实现逻辑单元可以按照任何合适的方式来实现:既可以使用纯计算机可读程序代码实现控制器,也可以使用逻辑编程的方法来是的控制器以专用电路、可编程逻辑器件、可编程逻辑控制器、嵌入式
微控制器等的形式来实现功能。
[0059] 上述实施例说明的系统、装置,具体可以由计算
机芯片或者实体来实现,一种典型的实现设备就是计算机;
[0060] 或者是可编程逻辑器件,包含中央处理单元(CPU)、存储器、输入输出接口(I/O 模块)、
通信接口、存储介质,来实现。
[0061] 因此,本发明可釆用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。
[0062] 而且,本发明可釆用在包含有
计算机程序代码的计算机存储介质上实现的计算机程序产品的形式,这里的计算机存储介质包括但不限于
硬盘、光学存储器、共享存储器等。
[0063] 以上为本申请的实施例,而不是对本申请的任何限制。对于本领域技术人员来说,本申请有各种变化、不同形式的实施。凡在本申请的原理之内做的任何等同替换、修改等,均包含在本申请的
权利要求范围之内。
[0064] 案例一
[0065] 第一区块链和第二区块链是同类链条,第一区块链上往第二区块链上转账N个资产,这个原子交易包含两个小交易:第一交易是第一区块链上账户减少N个资产,第二交易是第二区块链上增加N个资产;第一交易和第二交易必须同时成功或者同时回滚。
[0066] 1:步骤S101第一区块链开始交易
[0067] 2:步骤S102第一区块链上先进行交易的合法性校验:比如账户余额是否足够,权限是否正确等。
[0068] 3:步骤S103如果交易合法性校验通过,则直接在第一区块链账户上扣除N个资产,交易内容“第一区块链转出账户扣除N个资产”写入第一区块链普通数据块,第一区块链普通数据块头包含一个可用作唯一标识符的哈希值,最典型的做法是把快内所有交易都应用哈希函数得到。第一区块链同时生成一个辅助区块(跨链信息块),把在第二区块链上的第二交易“接受账户余额加N个资产”的交易写入辅助区块(跨链信息块),辅助区块块头包含一个可用作唯一标识符的哈希值,最典型的做法是把快内所有交易都应用哈希函数得到。
[0069] 4:步骤S104第一区块链在第3步中得到的区块被加入第一区块链的最长链之后,第一区块链通过与第二区块链的P2P网络,向第二区块链广播普通数据块的块头和辅助区块(跨链信息块)全块。
[0070] 5:步骤S105第二区块链接收到读取第4步中广播的第一区块链普通数据块的块头和辅助区块(跨链信息块)全块,加入第二区块链所维护的简化版第一区块链。
[0071] 6:步骤S106第二区块链读取第5步中收到的辅助区块(跨链信息块)中的第二交易信息,直接处理该笔交易,接受账户余额加N个资产。
[0072] 7:步骤S107生成第二区块链数据块。
[0073] 整个过程完成,原子操作到现在全部完成。
[0074] 案例二
[0075] 第一区块链和第二区块链是不同类的链条。第一用户用N个第一区块链资产去交换第二用户的M个第二区块链资产,这个涉及到跨链资产交换。
[0076] 这个原子交易包含三个小交易:第一交易是在第一区块链上,第一用户账户冻结 N个第一区块链资产,第二交易是在第二区块链上第二用户给第一用户转入M个区块链资产;第三交易是第一区块链上第一用户冻结的资产被扣除,同时第一区块链上的第二用户账户增加N个资产。第一交易和第二交易、第三交易,所有三个交易必须同时成功或者回滚。
[0077] 1:步骤S201第一区块链开始交易
[0078] 2:步骤S202第一区块链上先进行交易的合法性校验:比如账户余额是否足够,权限是否正确等。如果合法性校验失败,则放弃所有交易,不做任何操作。
[0079] 3:步骤S203如果交易合法性校验通过,则把第一用户在第一区块链上N个资产进行锁定,无法被再次使用,第一交易内容“第一用户在第一区块链锁定N个资产”写入第一区块链普通数据块,第一区块链普通数据块头包含一个可用作唯一标识符的哈希值,最典型的做法是把快内所有交易都应用哈希函数得到。
[0080] 4:步骤S204第一区块链同时生成一个辅助区块(跨链信息块),把“第二用户第二区块链账户转移M个资产到第一用户账户”的交易写入第一区块链辅助区块 (跨链信息块),辅助区块(跨链信息块)块头包含一个可用作唯一标识符的哈希值,最典型的做法是把快内所有交易应用哈希函数得到。
[0081] 6:步骤S205第一区块链通过与第二区块链的P2P网络,传播第一区块链数据块的头和第一区块链辅助区块(跨链信息块)全块到第二区块链。
[0082] 7:步骤S206第二区块链接收到S205中广播的第一区块链普通数据块的块头和辅助区块(跨链信息块)全块。
[0083] 8:步骤S207第二区块链读取S205中收到的辅助区块(跨链信息块)中的第二交易“第二用户第二区块链账户扣除M个资产,第一用户在第二区块链上账户增加M个资产”,做本地校验,
[0084] 9:如果步骤S207合法性校验通过,则步骤S208完成交易第二交易并生成第二区块链数据块。
[0085] 10:步骤S209此交易还需要回写第一区块链信息。
[0086] 11:步骤S210生成第三交易信息“第一区块链上第一用户冻结的资产被扣除,同时第一区块链上的第二用户账户增加N个资产”并写入第二区块链辅助区块。
[0087] 12:步骤S211第二区块链通过与第一区块链的P2P网络,传播第二区块链数据块的头和第二区块链辅助区块(跨链信息块)全块到第一区块链。
[0088] 13:步骤S212第一区块链读取S211中收到的辅助区块中的第三交易执行操作并写入第一区块链数据块。
[0089] 14:如果步骤S207合法性校验没通过,则步骤S213生成第一交易回滚信息“第一用户在第一区块链上被锁定的N个资产释放”,并写入第二区块链辅助信息块。
[0090] 15:步骤S214第二区块链通过与第一区块链的P2P网络,传播第二区块链数据块的头和第二区块链辅助区块(跨链信息块)全块到第一区块链。
[0091] 16:步骤S215第一区块链回滚第一交易至此,整个原子交易完成。
[0092] 可以看到,这三个交易要么全部成功要么全部失败。
[0093] 很显然,所描述的实例只是本发明的一部分实例,而不是全部的实例。