CN113179272B - 基于智能合约的区块链跨链交互方法、装置和计算机可读存储介质 - Google Patents
基于智能合约的区块链跨链交互方法、装置和计算机可读存储介质 Download PDFInfo
- Publication number
- CN113179272B CN113179272B CN202110466007.2A CN202110466007A CN113179272B CN 113179272 B CN113179272 B CN 113179272B CN 202110466007 A CN202110466007 A CN 202110466007A CN 113179272 B CN113179272 B CN 113179272B
- Authority
- CN
- China
- Prior art keywords
- chain
- source block
- header
- head
- verification
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/08—Network architectures or network communication protocols for network security for authentication of entities
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/08—Network architectures or network communication protocols for network security for authentication of entities
- H04L63/083—Network architectures or network communication protocols for network security for authentication of entities using passwords
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3236—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3236—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
- H04L9/3239—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/50—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
Abstract
本申请公开了一种基于区块链的跨链交易方法、装置和计算机可读存储介质,该方法包括:链外客户端从源区块链获取交互数据包,中继服务端从链外客户端获取交互数据包并将源区块头存入引用链,并对源区块头进行有效性验证,交互数据包还包括交易数据及其默克尔成员证明,中继服务端对目标区块头进行主链成员验证,当目标区块头验证成功时,对交易数据进行默克尔成员验证,当交易数据验证成功时,执行与交易数据相关联的交易业务。由此可见,本申请可以基于链外客户端节点来实现两条不同的区块链之间的数据交互,并且该跨链交互方式是去中心化的,目标区块链无需依靠第三方即可独立的验证交易数据的有效性,保证了交互的可靠性。
Description
技术领域
本申请涉及数据处理的技术领域,尤其涉及一种基于智能合约的区块链跨链交互方法、装置和计算机可读存储介质。
背景技术
区块链技术是分布式数据存储、点对点传输、分布式共识算法、加密算法等计算机技术的集成应用,具有数据不可篡改和不可伪造的特性。随着人们对区块链技术研究的逐步深入,越来越多的区块链项目开始落地实施,尤其在金融、流程管理、数据追溯、供应链管理及医疗保险等领域,区块链技术可以产生颠覆性的影响,然而,由于数据存储的封闭性,这些区块链项目之间的交互能力极其有限,不可避免地造成了区块链的价值孤岛。因此,亟需探究一种可靠的、高效的、廉价的跨链交互方式来打破这种价值隔离。
发明内容
本发明的目的是针对现有技术的不足,提供一种基于智能合约的区块链跨链交互方法、装置和计算机可读存储介质,可实现区块链之间可靠的、高效的、廉价的跨链交互。
本申请一方面提供了一种基于智能合约的区块链跨链交互方法,该方法由中继服务端执行,该方法包括:
获取链外客户端发送的交互数据包;所述交互数据包是由所述链外客户端从源区块链获取的;所述交互数据包包括所述源区块链中的源区块头;
对所述源区块头进行重复性验证;当对所述源区块头验证成功时,将所述源区块头存入引用链,并将所述源区块头对应的区块状态设置为锁定状态;所述引用链为用于存放所述源区块头的集合;
对所述源区块头进行有效性验证;当对所述源区块头验证成功时,将所述源区块头对应的区块状态设置为有效状态;当对所述源区块头验证失败时,删除所述源区块头;
所述交互数据包还包括交易数据及所述交易数据相关的默克尔成员证明;获取所述交易数据所属的目标区块头;对所述目标区块头进行主链成员验证;当所述目标区块头验证成功时,根据所述交易数据、所述默克尔成员证明和所述目标区块头对所述交易数据进行默克尔成员验证;当所述交易数据验证成功时,执行与所述交易数据相关联的交易业务。
优选地,所述对所述源区块头进行重复性验证,包括:遍历所述引用链与所述源区块头进行对比;
当所述源区块头不存在于所述引用链且所述源区块头的父块头存在于所述引用链时,确定对所述源区块头重复性验证成功。
优选地,所述将所述源区块头存入引用链,包括:向所述源区块头中存入分支标识和区段标识;所述分支标识用于标识所述引用链的分支;所述分支标识的增量为大于零的数;所述区段标识用于标识所述引用链的区段;所述分支标识存储哈希值;
当所述引用链未出现分叉时,所述源区块头中存入的所述分支标识和所述区段标识的值与所述父区块的所述分枝标识和所述区段标识的的值相同;
当所述引用链出现分叉时,所述源区块头中存入的所述分支标识的值为所述分支标识的下一个值;所述源区块头中存入的所述区段标识为所述父区块的哈希值;同时更新所述源区块头的兄弟区块的所述区段标识为所述父区块的哈希值。
优选地,对所述源区块头进行有效性验证,包括:在预设的阈值时间内,等待获取争议请求,所述争议请求由所述链外客户端发起,期间所述源区块头对应的区块状态为锁定状态;
当在所述阈值时间内,未获取到所述争议请求时,确定所述源区块头有效性验证成功;
在所述阈值时间内,获取到所述争议请求时,对所述源区块头进行全面验证;
当全面验证通过时,确定所述争议请求失败并确定所述源区块头有效性验证成功,否则确定所述争议请求成功并确定所述源区块头有效性验证失败。
优选地,所述链外客户端中至少包括第一链外客户端和第二链外客户端;所述交互数据包还包括第一保证金;所述第一保证金由所述第一链外客户端发送所述交易数据包时创建;所述争议请求由所述第二链外客户端发起,所述争议请求中包括第二保证金;所述方法还包括:
当所述第二链外客户端执行争议成功时,所述第二链外客户端获得所述第一链外客户端提交的所述第一保证金;
当所述第二链外客户端执行争议失败时,所述第一链外客户端获得所述第二链外客户端提交的所述第二保证金。
优选地,所述对所述目标区块头进行主链成员验证,包括:
获取所述引用链的主链分支头;
当所述目标区块头的所述分支标识大于所述主链分支头的所述分支标识时,确认所述目标区块头主链成员验证失败;
当所述目标区块头的所述分支标识等于所述主链分支头的所述分支标识时,确认所述目标区块头主链成员验证成功;
当所述目标区块头的所述分支标识小于所述主链分支头的所述分支标识时,
获取所述引用链的目标区段头;所述目标区段头是根据所述主链分支头中的所述区段标识遍历所述引用链中的区段头获得的;所述目标区段头的所述分支标识小于等于所述目标区块头的所述分支标识;
当所述目标区段头的所述分支标识小于所述目标区块头的所述分支标识时,确认所述目标区块头主链成员验证失败;
当所述目标区段头的所述分支标识等于所述主链分支头的所述分支标识时,获取所述目标区段头和所述目标区块头的区块高度;
当所述目标区块头的所述区块高度大于所述目标区段头的所述区块高度时,确认所述目标区块头主链成员验证失败;
当所述目标区块头的所述区块高度小于等于所述目标区段头的所述区块高度时,确认所述目标区块头主链成员验证成功。
优选地,对所述交易数据进行默克尔成员验证,包括:
获取默克尔树根哈希;所述默克尔树根哈希是根据所述交易数据和所述默克尔成员证明计算获得的;
将所述默克尔树根哈希与所述目标区块头中存储的所述默克尔树根哈希进行比较;
当所述默克尔树根哈希的值相同时,确认所述交易数据默克尔成员验证成功;
当所述默克尔树根哈希的值不同时,确认所述交易数据默克尔成员验证失败。
本申请一方面提供了一种基于智能合约的区块链跨链交互方法,该方法包括:
链外客户端从源区块链获取交互数据包;所述交互数据包包括所述源区块链中的源区块头;
中继服务端从所述链外客户端获取所述交互数据包;
所述中继服务端对所述源区块头进行重复性验证;当对所述源区块头验证成功时,将所述源区块头存入引用链,并将所述源区块头对应的区块状态设置为锁定状态;所述引用链为用于存放所述源区块头的集合;
所述中继服务端对所述源区块头进行有效性验证;当对所述源区块头验证成功时,将所述源区块头对应的区块状态设置为有效状态;当对所述源区块头验证失败时,删除所述源区块头;
所述交互数据包还包括交易数据及其默克尔成员证明;
所述中继服务端获取交易数据所属的目标区块头;对所述目标区块头进行主链成员验证;当所述目标区块头验证成功时,根据所述交易数据、所述默克尔成员证明和所述目标区块头对所述交易数据进行默克尔成员验证;当所述交易数据验证成功时,执行与所述交易数据相关联的交易业务。
本申请一方面提供了一种基于区块链的跨链交易装置,该装置应用于中继服务端,该装置包括:获取模块11、第一验证模块12、第二验证模块13和执行模块14;
获取模块11,用于获取链外客户端发送的交互数据包;所述交互数据包是由所述链外客户端从源区块链获取的;所述交互数据包包括所述源区块链中的源区块头;
第一验证模块12,用于对所述源区块头进行重复性验证;当对所述源区块头验证成功时,将所述源区块头存入引用链,并将所述源区块头对应的区块状态设置为锁定状态;所述引用链为用于存放所述源区块头的集合;
第二验证模块13,用于对所述源区块头进行有效性验证;当对所述源区块头验证成功时,将所述源区块头对应的区块状态设置为有效状态;当对所述源区块头验证失败时,删除所述源区块头;
执行模块14,用于所述交互数据包还包括交易数据及所述交易数据相关的默克尔成员证明;获取所述交易数据所属的目标区块头;对所述目标区块头进行主链成员验证;当所述目标区块头验证成功时,根据所述交易数据、所述默克尔成员证明和所述目标区块头对所述交易数据进行默克尔成员验证;当所述交易数据验证成功时,执行与所述交易数据相关联的交易业务。
本申请一方面提供了一种计算机设备,包括存储器和处理器,存储器存储有计算机程序,计算机程序被处理器执行时,使得处理器执行本申请中一方面中的方法
本申请一方面提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序包括程序指令,该程序指令被处理器执行时使该处理器执行上述一方面中的方法。
根据本申请的一个方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述一方面等各种可选方式中提供的方法。
本申请中链外客户端从源区块链获取交互数据包,交互数据包包括源区块链中的源区块头,中继服务端从链外客户端获取交互数据包,中继服务端对源区块头进行重复性验证,当对源区块头验证成功时,将源区块头存入引用链,并将源区块头对应的区块状态设置为锁定状态,引用链为用于存放源区块头的集合,中继服务端对源区块头进行有效性验证,当对源区块头验证成功时,将源区块头对应的区块状态设置为有效状态,当对源区块头验证失败时,删除源区块头,交互数据包还包括交易数据及其默克尔成员证明,中继服务端获取交易数据所属的目标区块头,对目标区块头进行主链成员验证,当目标区块头验证成功时,根据交易数据、默克尔成员证明和目标区块头对交易数据进行默克尔成员验证,当交易数据验证成功时,执行与交易数据相关联的交易业务。由此可见,本申请可以基于链外客户端节点来实现两条不同的区块链之间的数据交互,并且该跨链交互方式是去中心化的,目标区块链无需依靠第三方即可独立的验证交易数据的有效性,保证了交互的可靠性。
附图说明
为了更清楚地说明本发明实施例或现有的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种网络架构的结构示意图;
图2是本申请提供的一种跨链交互的场景示意图;
图3是本申请提供的一种基于智能合约的区块链跨链交互方法的流程示意图;
图4是本申请提供的一种源区块头的数据结构示意图;
图5是本申请提供的一种引用链的数据结构使用场景示意图;
图6是本申请提供的一种数据有效性验证执行的场景示意图;
图7是本申请提供的一种数据主链成员验证执行的场景示意图;
图8是本申请提供的一种基于智能合约的区块链跨链交互装置的结构示意图;
图9是本申请提供的一种计算机设备的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合具体实施例及相应的附图对本发明的技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本发明示例性实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书一个或多个实施例相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书一个或多个实施例的一些方面相一致的装置和方法的例子。
需要说明的是:在其他实施例中并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤。在一些其他实施例中,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其他实施例中可能被分解为多个步骤进行描述;而本说明书中所描述的多个步骤,在其他实施例中也可能被合并为单个步骤进行描述。
本申请涉及区块链跨链相关技术。其中,现有跨链技术主要包括公证人机制(Notary Scheme)、侧链/中继(Side Chain/Relay)和哈希锁定(Hash-locking)。跨链技术是一种价值的交换,既要保证信息流的精确性,更要保证双向价值流通的可靠性。在本申请实施例中实现跨链交互主要采用了侧链/中继模式,所谓中继模式本质上是一个源区块链的轻节点以智能合约的形式在目标区块链上运行,且智能合约能够通过SPV(SimplifiedPayment Verification简单支付证明)验证源区块链上的交易信息。
请参见图1,图1是本申请实施例提供的一种网络架构的结构示意图。
如图1所示,该网络架构可以包括第一区块链101、链外客户端102、第二区块链103。其中,第一区块链101中可以包括多个区块链节点,该多个区块链节点之间可以相互进行数据交互,该多个区块链节点可以包括节点a1、节点a2、……和节点an等n个节点。链外客户端102可以包括多个链外客户端节点,该多个链外客户端节点之间可以相互进行数据交互,该多个链外客户端节点可以包括节点b1、节点b2、……和节点bn等n个节点。第二区块链103中可以包括多个区块链节点,该多个区块链节点之间可以相互进行数据交互,该多个区块链节点可以包括节点c1、节点c2、……和节点cn等n个节点。
更多的,第一区块链101中的一个区块链节点、第二区块链103中的一个区块链节点、或者链外客户端102中的一个节点,可以由服务器构成,也可以由终端设备构成。其中,用于构成区块链节点或者链外客户端节点的服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。用于构成区块链节点或者链外客户端节点的终端设备可以是:智能手机、平板电脑、笔记本电脑、桌上型电脑、智能电视等智能终端。
下面以第一区块链101中的节点a1、链外客户端102中的节点b1以及第二区块链中的节点c1之间的数据交互为例,进行本申请实施例的具体描述。
本申请主要描述了两条不同的区块链中的节点之间可以进行跨链交互,因此下面就以第一业务区块链101中的节点a1与第二区块链103中的节点c1之间所实现的跨链交互过程为例进行说明。
请一并参见图2,图2是本申请提供的一种跨链交互的场景示意图。
如图2所示,节点a1可以为发起跨链交互的节点,节点c1可以为接受跨链交互的节点。节点a1所在的第一区块链101可以为发起跨链交易的源区块链,节点c1所在的第二区块链103可以为跨链交易的目标区块链,节点c1所在的目标区块链内部署有中继服务端,中继服务端可以由智能合约实现。
链外客户端节点b1可以访问节点a1所在的第一区块链101中存储的区块。若节点b1监听到节点a1所在的第一区块链有区块还未转发或者存储了新的区块,例如节点a1中存储了新的区块,该区块包含区块头hi和区块体bi,则节点b1可以向节点a1请求拉取区块头hi作为交互数据包进行转发。
链外客户端节点b1可以将拉取到的交互数据包发送给节点c1所在的目标区块链内的中继服务端。节点c1中的中继服务端可以对交互数据包中的区块头hi进行验证,当对区块头hi可用性相关的验证成功后,区块头hi会被存储到引用链中,引用链可以是由源区块链即第一区块链101中所有区块的区块头构成的一条克隆链。通过链外客户端节点可以将源区块链中的区块头源源不断的克隆到中继服务端中进行存储。
链外客户端节点b1还可以向节点a1请求拉取区块体bi中的交易数据和默克尔成员证明作为交互数据包进行转发。
链外客户端节点b1可以将拉取到的交互数据包发送给节点c1中的中继服务端,节点c1中的中继服务端可以根据引用链中存储的区块头hi和交互数据包中的交易数据及默克尔成员证明对交易数据进行SPV(Simplified Payment Verification简单支付证明)验证,验证通过后节点c1就可以执行与交易数据相关联的交易业务。该交易数据可以指节点a1和节点c1之间进行交互的任意数据。其中,节点c1中继服务端中验证的具体过程,可以参见下述图3对应的实施例中的描述。
至此即实现了第一区块链101(源区块链)中的节点a1与第二区块链103(目标区块链)中的节点c1之间的跨链数据交互。
采用本申请所提供的方法,可以基于链外客户端节点来实现两条不同的区块链之间的数据交互,并且该跨链交互方式是去中心化的,目标区块链无需依靠共识签名即可独立的验证交易数据的有效性,保证了交易的可靠性。
请参见图3,图3是本申请提供的一种基于智能合约的区块链跨链交互方法的流程示意图。如图3所示,该方法可以包括:
步骤S101,获取链外客户端发送的交互数据包;交互数据包是由链外客户端从源区块链获取的;交互数据包包括源区块链中的源区块头。
中继服务端可以获取到链外客户端所发送的交互数据包。链外客户端向中继服务端发送的交互数据包是由源区块链发送给链外客户端的。
具体地,可以是由源区块链中的某个节点将交互数据包发送给链外客户端的。
其中,链外客户端节点可以是任意设备或者计算机程序。链外客户端可以不属于源区块链,也可以不属于目标区块链。可以在链外客户端节点和源区块链节点之间配置rbc(无线承载控制)接口,即可实现链外客户端节点与源区块链节点之间的相互访问。可以在链外客户端节点和目标区块链节点之间也配置rbc(无线承载控制)接口,即可实现链外客户端节点与目标区块链节点之间的相互访问,即实现了与中继服务端之间的数据访问,链外客户端节点的数量可以是多个(至少两个)。
具体的,本申请实施例的执行主体可以是中继服务端,该中继服务端可以是目标区块链中部署的智能合约,该智能合约可以在任意一个目标区块链的节点中运行。一个区块链节点可以由一个或者多个计算机设备构成,该计算机设备可以是终端设备,也可以是服务器,因此中继服务端可以是由一个或者多个计算机设备所构成。
其中,源区块链想要与目标区块链发生跨链交互时,链外客户端节点可以从源区块链中获取交互数据包,该交互数据包中可以包括源区块链中任意区块的源区块头,源区块头即为源自源区块链的区块头,源区块头中具体包括版本号、本区块的区块哈希、区块高度、父区块哈希、默克尔树根哈希、时间戳、随机数等。
当需要证明某条交易是否被写入区块链时,便需要用到区块头中的默克尔树根哈希,中继服务端可以根据交易数据和默克尔成员证明推导出该交易数据的默克尔树根哈希,此时可以将两个默克尔树根哈希的值进行比较,当两个值相同时,则证明该交易数据被写入了区块中。
上述过程即为,链外客户端可以向源区块链获取到包含区块头的交互数据包。链外客户端可以将获取到的交互数据包发送给目标区块链中的中继服务端,中继服务端就获取到了交互数据包。
步骤S102:对源区块头进行重复性验证;当对源区块头验证成功时,将源区块头存入引用链,并将源区块头对应的区块状态设置为锁定状态,引用链为用于存放源区块头的集合。
具体的,中继服务端获取到交互数据包之后,就可以对交互数据包中的源区块头进行验证,请参见下述内容描述。
具体地,中继服务端将链外客户端传送的交互数据包中的源区块头数据存入某个数据集合中,该数据集合称为引用链,引用链实现了对源区块链的克隆,本质上与源区块链的轻节点存储的内容相类似。这样就为目标区块链独立验证源区块链上的交易提供了可能性。
其中,中继服务端对源区块头进行重复性验证的过程可以为:
遍历所述引用链与当前源区块头进行对比;中继服务端可以根据当前源区块头的区块哈希和父区块哈希对引用链进行遍历查询,可以理解的是,只有当前源区块头不存在于引用链中时,才有必要将当前源区块头存入引用链。此外,由于引用链是源区块链的克隆,本质上也是一条区块链,因此,除了创世区块以外,存入引用链的源区块头都必须在引用链中存在其父区块头,不能脱离引用关系而单独存在。因此,当所述源区块头不存在于所述引用链中且所述源区块头的父块头存在于所述引用链中时,确定对所述源区块头重复性验证成功。作为优选,引用链的数据类型可以采用Hashmap,使得遍历查询更加高效。
上述过程即为重复性验证过程,中继服务端可以防止重复的、无引用关系的源区块头进入引用链导致数据混乱。
当对所述源区块头验证成功时,将所述源区块头存入引用链,并将所述源区块头对应的区块状态设置为锁定状态,所述引用链为用于存放所述源区块头的集合;可以理解的是,源区块头存入引用链后,由于该源区块头只进行了重复性验证,其数据的真实有效性仍有待验证,因此,中继服务端可以将该源区块头设置为锁定状态,在锁定状态下该源区块头不能用于实际业务中,如交易数据的SPV验证。
可选的,当源区块头验证成功时,将源区块头存入引用链还可以包括:
请一并参见图4,图4是本申请提供的一种源区块头的数据结构示意图。
存入引用链中的源区块头中均维护分支标识和区段标识字段,也即当前源区块头的父块头内维护有分支标识和区段标识字段;
父块头保存当前源区块头的哈希值;使得引用链成为双向链,即可以通过父区块找到子区块,使得中继服务端可以实时维护区段标识字段。
具体地,分支标识和区段标识的维护方法如下:
当源区块头存入所述引用链后,引用链未出现分叉时,所述源区块头中存入的所述分支标识和所述区段标识的值与所述父区块的所述分枝标识和所述区段标识的的值相同;所谓分叉即同一父区块下有至少两个子区块的现象;
可以理解的是,当引用链未出现分叉时,说明当前源区块头与其父区块属于同一分支且属于同一区段,因此,可以将当前源区块头的分支标识和区段标识设置为与其父区块相同。
当所述引用链出现分叉时,分支标识的增量可以设置为大于零的数,优选地可以设置增量为一。所述源区块头中存入的所述分支标识为现有所述分支标识最大值加一,所述源区块头中存入的所述区段标识为所述父区块的哈希值,同时维护所述源区块头的兄弟区块的所述区段标识为所述父区块的哈希值。
可以理解的是,当引用链出现分叉时,说明当前源区块头与其父区块不属于同一分支且不属于同一区段,因此,中继服务端可以取一个唯一值作为当前区当块头的分支标识,其中,最常规的方式可以将当前分支标识的最大值加一作为当前源区块头的分支标识,此外,虽然当前源区块头与其父区块不属于同一区段,但当前源区块头和其兄弟区块属于同一区段,中继服务端可以将父区块的哈希作为当前源区块头和其兄弟区块的区段标识。
请一并参见图5,图5是本申请提供的一种引用链的数据结构使用场景示意图。
如图5所示,引用链中可以包括源区块头0xa1、源区块头0xa2、源区块头0xa3、源区块头0xa4、源区块头0xa5。
其中,当源区块头0xa2存入引用链时,引用链未出现分叉,源区块头0xa2的分支标识和区段标识与其父区块源区块头0xa1相同,即分支标识为1区段标识为0xa0。
当源区块头0xa4存入引用链时,源区块头0xa2产生了两个子区块即出现了分叉现在,此时,源区块头0xa4的分支标识设置为分支标识的下一个值,即分支标识为2。源区块头0xa4的区段标识设置为父区块源区块头0xa2的哈希值,即区段标识为0xa2。同时还要更新源区块头0xa4的兄弟区块源区块头0xa3的区段标识为0xa2。
上述过程即为将源区块头存入引用链的过程,分支标识和区段标识可以让中继服务端快速确认某源区块头是否在主链上,提高SPV验证的效率,降低计算成本。
步骤S103:对源区块头进行有效性验证;当对源区块头验证成功时,将源区块头对应的区块状态设置为有效状态;当对源区块头验证失败时,删除源区块头;
具体的,中继服务端将交互数据包中的源区块头存入引用链之后,就可以对交互数据包中的源区块头进行有效性验证,请参见下述内容描述。
其中,中继服务端对源区块头的有效性进行验证最直接的方式就是进行全面验证,全面验证通常涉及源区块链的一致性共识算法,例如,源区块链为比特币,目标区块链为以太坊,此时,在以太坊上直接验证比特币源区块头是经济的、可行的,因为,比特币的一致性共识算法只需要运行SHA-256就可以进行验证。但是,当需要在基于以太坊的区块链之间进行全面验证时,由于基于以太坊的区块链采用特殊的一致性算法Ethash,该算法在以太坊智能合约上运行时需要大量的gas费用,gas费用可以理解为手续费,因此,在基于以太坊的区块链之间,对每个提交的源区块头进行全面验证的成本十分高昂。
本发明采用一种按需验证的模式对源区块头进行有效性验证,大幅降低操作成本,请参见下述内容描述。
具体地,中继服务端对源区块头进行有效性验证的过程可以为:
中继服务端可以预先设置一个阈值时间,在这个预设的阈值时间内,中继服务端会等待获取争议请求,所述争议请求由所述链外客户端发起,期间所述源区块头对应的区块状态为锁定状态。当在所述阈值时间内,中继服务端未获取到任何由链外客户端发起的争议请求时,中继服务端确定所述源区块头有效性验证成功。在所述阈值时间内,中继服务端获取到由链外客户端发送的争议请求时,中继服务端对源区块头进行全面验证;全面验证主要涉及源区块链的一致性共识算法。当全面验证通过时,中继服务端确定所述争议请求失败并确定所述源区块头有效性验证成功,否则确定所述争议请求成功并确定所述源区块头有效性验证失败。
上述过程即为有效性验证过程,中继服务端可以通过诚信的链外客户端防止无效的源区块头进入引用链导致数据污染。
可以理解的是,如果仅仅依靠链外客户端自主的诚信行为而没有一个激励机制来激励链外客户端提交源区块头和发起争议请求,中继服务端的有效性验证将会变得低效。可选的,链外客户端可以由多个链外客户端节点组成,至少包括第一链外客户端和第二链外客户端;所述交互数据包还包括第一保证金;所述第一保证金由所述第一链外客户端向中继服务端发送所述交互数据包时创建;在源区块头锁定期间,争议请求可以由第二链外客户端发起,同时,第二链外客户端需要在争议请求时提交第二保证金;当所述第二链外客户端执行争议成功时,所述第二链外客户端获得所述第一链外客户端提交的所述第一保证金。当所述第二链外客户端执行争议失败时,所述第一链外客户端获得所述第二链外客户端提交的所述第二保证金。
可以理解的是,在源区块头锁定期间,第一保证金也将被锁定,第一保证金将不能被撤回,也不能用于提交其他源区块头,在锁定期结束后中继服务端还没收到争议请求,第一链外客户端将重新获得第一保证金。但是,如果在锁定期间第二链外客户端对该源区块头发起争议请求,且争议成功,第二链外客户端将获得第一保证金,争议失败第一链外客户端将获得第二链外客户端提交的第二保证金。
此外,为了更进一步鼓励链外客户端提交源区块头,其他用户每次使用该源区块头进行SPV验证时都需要向提交该源区块头的第一链外客户端提交验证费。
上述过程即为争议激励过程,可以鼓励链外客户端提交源区块头和发起争议,同时也可以抑制链外客户端提交无效源区块头,使得链外客户端中的跨链交互过程更加可靠。
请参见图6,图6是本申请提供的一种数据有效性验证执行的场景示意图。
如图6所示,链外客户端至少包括链外客户端201和链外客户端202,其中,链外客户端201可以是向中继服务端203发送提交交互数据包的一端,交互数据包中可以包括源区块链中的区块头及保证金。链外客户端202可以是向中继服务端203发送争议请求的一端,争议请求中可以包括保证金及争议对象的哈希等。
在该场景中,链外客户端201向中继服务端203发送提交交互数据包,交互数据包中包括源区块头hi和保证金gi,中继服务端203接收该交互数据包,中继服务端203在预设的阈值时间内等待其他链外客户端发送争议请求,阈值时间期满后未收到其他链外客户端发送的争议请求,则将源区块头hi设为有效状态并将保证金gi返回链外客户端201。当源区块头hi被设为有效后,便可以用于交易数据的简单支付验证。可选的,每次客户端请求使用源区块头进行简单支付验证时都需要向提交者链外客户端201支付一定的验证费。
在该场景中,链外客户端201还可以向中继服务端203发送提交交互数据包,交互数据包中包括源区块头hj和保证金gj,中继服务端203接收该交互数据包,中继服务端203在预设的阈值时间内等待其他链外客户端发送争议请求,阈值时间期间,链外客户端202创建争议请求并向中继服务端203发送争议请求,争议请求中包含保证金dj及争议对象源区块头hj的哈希等,中继服务端203收到链外客户端202发送的争议请求,中继服务端203对源区块头hj进行全面验证,当全面验证通过时,中继服务端203将源区块头hj的区块状态设为有效状态,并将保证金gj及保证金dj返回给链外客户端201;当全面验证未通过时,中继服务端203将源区块头hj从引用链中删除,并将保证金gj及保证金dj返回给链外客户端202。可以理解的是,如果被删除的源区块头hj在引用链中还有子区块头,那么子区块头也将被一并删除,并且,子区块头上的保证金也将被一并返回链外客户端202。此外,由于全面验证是根据一致性共识算法进行计算的,不同的共识算法可能导致需要支付一定的手续费,因此,优选地,保证金的最小值可以大于等于手续费。
至此即实现了对源区块头的有效性验证过程。采用本申请所提供的方法,可以激励链外客户端提交有效的源区块头,抑制链外客户端提交无效源区块头,也激励链外客户端对源区块头进行高效的争议,抑制链外客户端采用数量战术提交过多无效争议。该方法保证了链外客户端的积极性的同时,强化了数据的可靠性。
步骤S104,交互数据包还包括交易数据及交易数据相关的默克尔成员证明;获取交易数据所属的目标区块头;对目标区块头进行主链成员验证;当目标区块头验证成功时,根据交易数据、默克尔成员证明和目标区块头对交易数据进行默克尔成员验证;当交易数据验证成功时,执行与交易数据相关联的交易业务。
具体的,源区块链想要与目标区块链发生跨链交易时,链外客户端节点可以从源区块链中获取交互数据包,该交互数据包中可以包括交易相关的交易数据和该交易数据的默克尔成员证明。
链外客户端可以向目标区块链发送交互数据包,当目标区块链需要独立确认交易数据是否被写入源区块链时,首先需要确认目标区块头位于引用链的主链上,再对交易数据进行默克尔成员验证来确认交易数据的可靠性。目标区块头是交易数据所属的区块头,目标区块头属于引用链。
其中,确认目标区块头位于引用链的主链上的过程可以为:
获取所述引用链的主链分支头;
随着时间的推移,源区块头被不断的存入到引用链中,引用链的主链也可能随之发生变化,中继服务端可以计算每个分支头所属的分支的最大难度,其中难度最大的分支头即为主链分支头,通过该分支头中继服务端可以追踪引用链主链上的每个源区块头。其中,分支头是每个引用链分支的最新添加的源区块头。
其中,确认主链之后,中继服务端需要确认目标区块头是否在主链上,由于每个源区块头中都存储了父区块头的哈希,中继服务端可以通过主链分支头开始逐一遍历源区块头直到找到目标区块头或创世块。但是这种遍历方式效率低且计算成本高。
中继服务端在存入源区块头时维护了分支标识和区段标识字段,此时,中继服务端可以根据分支标识和区段标识字段快速确认目标区块头。可以理解的是,由于分支标识的增量为大于零的数,因此,任意一源区块头的分支标识的必定大于等于其所有子代的源区块头。判断方法请参见下述内容描述。
A:如果目标区块头的分支标识大于主链分支头的分支标识,那么不需要遍历就可以确认目标区块头不在主链上。
B:如果目标区块头的分支标识等于主链分支头的分支标识,那么不需要遍历就可以确认目标区块头在主链上。
C:如果目标区块头的分支标识小于主链分支头的分支标识,那么就需要进一步分析:
中继服务端需要获取引用链的目标区段头,目标区段头是根据主链分支头中的区段标识遍历引用链中的区段头获得的,目标区段头的分支标识小于等于目标区块头的分支标识;其中,区段头具体是指区段标识字段存储的哈希值所指向区块头,中继服务端可以通过区块头中存储的区段标识,直接找到区段头。
C1:中继服务端从主链分支头开始遍历区段头,直到找到某个区段头的分支标识小于等于目标区块头的分支标识,即为目标区段头。当目标区段头的分支标识小于目标区块头的分支标识时,那么可以确认目标区块头不在主链上;
C2:当目标区段头的分支标识等于目标区块头的分支标识时,那么比较目标区块头与区段头的区块高度。
C21:当目标区块头的区块高度大于目标区段头的高度时,确认目标区块头不在主链上。
C22:当目标区块头的区块高度小于等于目标区段头的所述区块高度时,确认目标区块头在主链上。
上述过程即为,中继服务端确认目标区块头位于引用链主链上的过程。中继服务端可以不用从主链分支头开始遍历每个源区块头,而是从主链分支头开始通过区段标识遍历区段头,从而可以快速确认目标区块头是否位于引用链主链上,遍历速度快,节约计算成本。
请参见图7,图7是本申请提供的一种数据主链成员验证执行的场景示意图。
如图7所示,引用链中可以包括源区块头0xa1、源区块头0xa2、源区块头0xa3、源区块头0xa4、源区块头0xa5、源区块头0xa6、源区块头0xa7、源区块头0xa8、源区块头0xa9、源区块头0xaa、源区块头0xab。源区块头中至少包括区块哈希、区块高度、分支标识、区段标识等数据。其中,源区块头0xa1、源区块头0xa2、源区块头0xa3、源区块头0xa5、源区块头0xa6、源区块头0xa8、源区块头0xaa组成的区块链为当前引用链的主链,其中,源区块头0xaa为主链分支头,源区块头0xab、源区块头0xa9、源区块头0xa4为分支头,源区块头0xa2、源区块头0xa5为区段头。可以理解的是,实际运行过程中,交易数据所属的区块头可能是引用链上的任一区块头,即目标区块头是引用链上的任一区块头。
其中,当交易数据所属的区块头为源区块头0xa4时,即目标区块头为0xa4。
对应前述情形A:可见目标区块头0xa4的分支标识为4大于主链分支头即源区块头0xaa的分支标识3,那么不需要遍历就可以确认目标区块头0xa4不在主链上,确认目标区块头0xa4主链成员验证失败。
其中,当交易数据所属的区块头为源区块头0xa6时,即目标区块头为0xa6。
对应前述情形B:可见目标区块头0xa6的分支标识为3等于主链分支头即源区块头0xaa的分支标识3,那么不需要遍历就可以确认目标区块头0xa6在主链上,确认目标区块头0xa6主链成员验证成功。
其中,当交易数据所属的区块头为源区块头0xab、源区块头0xa7、源区块头0xa5、源区块头0xa3之一时,对应前述情形C:
中继服务端可以根据主链分支头0xaa中的区段标识0xa5找到区段头0xa5,其中区段头0xa5的分支标识为1小于等于源区块头0xab、源区块头0xa7、源区块头0xa5、源区块头0xa3中任一区块头的分支标识,满足目标区段头的条件,即目标区段头为0xa5。
其中,当交易数据所属的区块头为源区块头0xab时,即目标区块头为0xab。
对应前述情形C1:可见目标区段头0xa5的分支标识为1小于目标区块头0xab的分支标识2,那么可以确认目标区块头0xab不在主链上,确认目标区块头0xab主链成员验证失败。
其中,当交易数据所属的区块头为源区块头0xa7、源区块头0xa5、源区块头0xa3之一时,对应前述情形C2:可见目标区段头0xa5的分支标识为1等于源区块头0xa7、源区块头0xa5、源区块头0xa3中任一区块头的分支标识1,那么比较目标区块头与区段头的区块高度。
其中,当交易数据所属的区块头为源区块头0xa7时,即目标区块头为0xa7。
对应前述情形C21:可见目标区块头0xa7的区块高度为15大于目标区段头0xa5的区块高度14,确认目标区块头0xa7不在主链上,确认目标区块头0xa7主链成员验证失败。
其中,当交易数据所属的区块头为源区块头0xa5或源区块头0xa3时,对应前述情形C22:可见目标区块头0xa5或0xa3的区块高度小于等于目标区段头0xa5的区块高度,确认目标区块头0xa5或0xa3在主链上,确认目标区块头0xa5或0xa3主链成员验证成功。
至此即实现了对目标区块头的主链成员验证过程。
其中,对交易数据进行默克尔成员验证的过程具体如下:
中继服务端根据交易数据和默克尔成员证明计算得出该交易数据的第一默克尔根哈希,中继服务端可以将第一默克尔根哈希与引用链主链上目标区块头中存储的第二默克尔根哈希进行比较;当第一默克尔根哈希与第二默克尔根哈希值相同时,确认交易数据验证成功。当交易数据验证成功时,执行与交易数据相关联的交易业务。
采用本申请所提供的方法,可以实现中继服务端独立验证跨链交互,无需信任第三方,且成本低。
请参见图8,图8是本申请提供的一种基于智能合约的区块链跨链交互装置的结构示意图。
该跨链交互装置1可以应用于中继服务端,该跨链交互装置1可以用于执行上述图3对应的实施例中所描述的各个步骤,该跨链交互装置1可以包括:获取模块11、第一验证模块12、第二验证模块13和执行模块14;
获取模块11,用于获取链外客户端发送的交互数据包;所述交互数据包是由所述链外客户端从源区块链获取的;所述交互数据包包括所述源区块链中的源区块头;
第一验证模块12,用于对所述源区块头进行重复性验证;当对所述源区块头验证成功时,将所述源区块头存入引用链,并将所述源区块头对应的区块状态设置为锁定状态;所述引用链为用于存放所述源区块头的集合;
第二验证模块13,用于对所述源区块头进行有效性验证;当对所述源区块头验证成功时,将所述源区块头对应的区块状态设置为有效状态;当对所述源区块头验证失败时,删除所述源区块头;
执行模块14,用于所述交互数据包还包括交易数据及所述交易数据相关的默克尔成员证明;获取所述交易数据所属的目标区块头;对所述目标区块头进行主链成员验证;当所述目标区块头验证成功时,根据所述交易数据、所述默克尔成员证明和所述目标区块头对所述交易数据进行默克尔成员验证;当所述交易数据验证成功时,执行与所述交易数据相关联的交易业务。
其中,获取模块11、第一验证模块12、第二验证模块13和执行模块14的具体功能实现方式请参见图3对应的实施例中的步骤S101-步骤S104,这里不再进行赘述。
请参见图9,图9是本申请提供的一种计算机设备的结构示意图。
如图9所示,计算机设备1000可以包括:处理器1001,网络接口1004和存储器1005,此外,计算机设备1000还可以包括:用户接口1003,和至少一个通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。其中,用户接口1003可以包括显示屏(Display)、键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1005可以是高速RAM存储器,也可以是非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。存储器1005可选的还可以是至少一个位于远离前述处理器1001的存储装置。如图9所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及设备控制应用程序。
在图9所示的计算机设备1000中,网络接口1004可提供网络通讯功能;而用户接口1003主要用于为用户提供输入的接口;而处理器1001可以用于调用存储器1005中存储的设备控制应用程序,以实现前文图3中任一个所对应实施例中对基于智能合约的区块链跨链交互方法的描述。应当理解,本申请中所描述的计算机设备1000,也可执行前文其余实施例中对跨链交互装置1的描述,在此不再赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。
此外,这里需要指出的是:本申请还提供了一种计算机可读存储介质,且计算机可读存储介质中存储有前文提及的跨链交互装置1所执行的计算机程序,且计算机程序包括程序指令,当处理器执行程序指令时,能够执行前文图3中任一个所对应实施例中对基于智能合约的区块链跨链交互方法的描述,因此,这里将不再进行赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。对于本申请所涉及的计算机存储介质实施例中未披露的技术细节,请参照本申请方法实施例的描述。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,上述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,上述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
在本说明书一个或多个实施例使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本说明书一个或多个实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
以上所述仅为本说明书一个或多个实施例的较佳实施例而已,并不用以限制本说明书一个或多个实施例,凡在本说明书一个或多个实施例的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书一个或多个实施例保护的范围之内。
Claims (9)
1.一种基于智能合约的区块链跨链交互方法,其特征在于,由中继服务端执行所述方法,所述方法包括:
获取链外客户端发送的交互数据包;所述交互数据包是由所述链外客户端从源区块链获取的;所述交互数据包包括所述源区块链中的源区块头;
对所述源区块头进行重复性验证,遍历所述引用链与所述源区块头进行对比,当所述源区块头不存在于所述引用链且所述源区块头的父块头存在于所述引用链时,确定对所述源区块头重复性验证成功;
当对所述源区块头验证成功时,将所述源区块头存入引用链,并将所述源区块头对应的区块状态设置为锁定状态;所述引用链为用于存放所述源区块头的集合;
对所述源区块头进行有效性验证;当对所述源区块头验证成功时,将所述源区块头对应的区块状态设置为有效状态;当对所述源区块头验证失败时,删除所述源区块头;
所述交互数据包还包括交易数据及所述交易数据相关的默克尔成员证明;获取所述交易数据所属的目标区块头;对所述目标区块头进行主链成员验证;当所述目标区块头验证成功时,根据所述交易数据、所述默克尔成员证明和所述目标区块头对所述交易数据进行默克尔成员验证;当所述交易数据验证成功时,执行与所述交易数据相关联的交易业务。
2.根据权利要求1 所述的方法,其特征在于,所述将所述源区块头存入引用链,包括:
向所述源区块头中存入分支标识和区段标识;所述分支标识用于标识所述引用链的分支;所述分支标识的增量为大于零的数;所述区段标识用于标识所述引用链的区段;所述分支标识存储哈希值;
当所述引用链未出现分叉时,所述源区块头中存入的所述分支标识和所述区段标识的值与所述父区块的所述分枝标识和所述区段标识的的值相同;
当所述引用链出现分叉时,所述源区块头中存入的所述分支标识的值为所述分支标识的下一个值;所述源区块头中存入的所述区段标识为所述父区块的哈希值;同时更新所述源区块头的兄弟区块的所述区段标识为所述父区块的哈希值。
3.根据权利要求1所述的方法,其特征在于,对所述源区块头进行有效性验证,包括:
在预设的阈值时间内,等待获取争议请求,所述争议请求由所述链外客户端发起,期间所述源区块头对应的区块状态为锁定状态;
当在所述阈值时间内,未获取到所述争议请求时,确定所述源区块头有效性验证成功;
在所述阈值时间内,获取到所述争议请求时,对所述源区块头进行全面验证;
当全面验证通过时,确定所述争议请求失败并确定所述源区块头有效性验证成功,否则确定所述争议请求成功并确定所述源区块头有效性验证失败。
4.根据权利要求3 所述的方法,其特征在于,所述链外客户端中至少包括第一链外客户端和第二链外客户端;所述交互数据包还包括第一保证金;所述第一保证金由所述第一链外客户端发送所述交易数据包时创建;所述争议请求由所述第二链外客户端发起,所述争议请求中包括第二保证金;所述方法还包括:
当所述第二链外客户端执行争议成功时,所述第二链外客户端获得所述第一链外客户端提交的所述第一保证金;
当所述第二链外客户端执行争议失败时,所述第一链外客户端获得所述第二链外客户端提交的所述第二保证金。
5.根据权利要求3所述的方法,其特征在于,所述对所述目标区块头进行主链成员验证,包括:
获取所述引用链的主链分支头;
当所述目标区块头的所述分支标识大于所述主链分支头的所述分支标识时,确认所述目标区块头主链成员验证失败;
当所述目标区块头的所述分支标识等于所述主链分支头的所述分支标识时,确认所述目标区块头主链成员验证成功;
当所述目标区块头的所述分支标识小于所述主链分支头的所述分支标识时,
获取所述引用链的目标区段头;所述目标区段头是根据所述主链分支头中的所述区段标识遍历所述引用链中的区段头获得的;所述目标区段头的所述分支标识小于等于所述目标区块头的所述分支标识;
当所述目标区段头的所述分支标识小于所述目标区块头的所述分支标识时,确认所述目标区块头主链成员验证失败;
当所述目标区段头的所述分支标识等于所述主链分支头的所述分支标识时,
获取所述目标区段头和所述目标区块头的区块高度;
当所述目标区块头的所述区块高度大于所述目标区段头的所述区块高度时,确认所述目标区块头主链成员验证失败;
当所述目标区块头的所述区块高度小于等于所述目标区段头的所述区块高度时,确认所述目标区块头主链成员验证成功。
6.根据权利要求1所述的方法,其特征在于,对所述交易数据进行默克尔成员验证,包括:
获取默克尔树根哈希;所述默克尔树根哈希是根据所述交易数据和所述默克尔成员证明计算获得的;
将所述默克尔树根哈希与所述目标区块头中存储的所述默克尔树根哈希进行比较;
当所述默克尔树根哈希的值相同时,确认所述交易数据默克尔成员验证成功;
当所述默克尔树根哈希的值不同时,确认所述交易数据默克尔成员验证失败。
7.一种基于智能合约的区块链跨链交互方法,其特征在于,包括:
链外客户端从源区块链获取交互数据包;所述交互数据包包括所述源区块链中的源区块头;
中继服务端从所述链外客户端获取所述交互数据包;
所述中继服务端对所述源区块头进行重复性验证,遍历所述引用链与所述源区块头进行对比,当所述源区块头不存在于所述引用链且所述源区块头的父块头存在于所述引用链时,确定对所述源区块头重复性验证成功;
当对所述源区块头验证成功时,将所述源区块头存入引用链,并将所述源区块头对应的区块状态设置为锁定状态;所述引用链为用于存放所述源区块头的集合;
所述中继服务端对所述源区块头进行有效性验证;当对所述源区块头验证成功时,将所述源区块头对应的区块状态设置为有效状态;当对所述源区块头验证失败时,删除所述源区块头;
所述交互数据包还包括交易数据及其默克尔成员证明;
所述中继服务端获取交易数据所属的目标区块头;对所述目标区块头进行主链成员验证;当所述目标区块头验证成功时,根据所述交易数据、所述默克尔成员证明和所述目标区块头对所述交易数据进行默克尔成员验证;当所述交易数据验证成功时,执行与所述交易数据相关联的交易业务。
8.一种计算机设备,其特征在于,包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行权利要求1-7 中任一项所述方法的步骤。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令被处理器执行时,执行权利要求1-7 任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110466007.2A CN113179272B (zh) | 2021-04-28 | 2021-04-28 | 基于智能合约的区块链跨链交互方法、装置和计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110466007.2A CN113179272B (zh) | 2021-04-28 | 2021-04-28 | 基于智能合约的区块链跨链交互方法、装置和计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113179272A CN113179272A (zh) | 2021-07-27 |
CN113179272B true CN113179272B (zh) | 2022-02-25 |
Family
ID=76926997
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110466007.2A Active CN113179272B (zh) | 2021-04-28 | 2021-04-28 | 基于智能合约的区块链跨链交互方法、装置和计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113179272B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113179273A (zh) * | 2021-04-29 | 2021-07-27 | 杭州丽冠科技有限公司 | 基于区块链侧链的区块头验证方法、装置和计算机可读存储介质 |
CN113743944B (zh) * | 2021-11-04 | 2022-03-29 | 中国信息通信研究院 | 跨链消息可靠传递方法、装置以及电子设备 |
CN114880320B (zh) * | 2021-12-30 | 2023-02-17 | 北京连琪科技有限公司 | 生成区块状态证明的方法 |
CN115190162B (zh) * | 2022-06-27 | 2023-11-28 | 杭州溪塔科技有限公司 | 区块链中的代理服务配置方法及代理服务系统 |
CN116827957B (zh) * | 2023-08-30 | 2023-11-07 | 腾讯科技(深圳)有限公司 | 基于多区块链的信息处理方法、装置、设备以及介质 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109087080B (zh) * | 2018-07-13 | 2020-11-06 | 杭州复杂美科技有限公司 | 跨链交易方法、设备和存储介质 |
CN109934592A (zh) * | 2019-03-22 | 2019-06-25 | 深圳市网心科技有限公司 | 一种区块链跨链通信方法、系统、电子设备及存储介质 |
CN111047319B (zh) * | 2019-09-03 | 2021-12-10 | 腾讯科技(深圳)有限公司 | 区块链网络的交易处理方法及区块链网络 |
CN110599178A (zh) * | 2019-09-25 | 2019-12-20 | 腾讯科技(深圳)有限公司 | 一种基于智能合约的数据处理方法、装置以及存储介质 |
CN111445236B (zh) * | 2019-11-14 | 2023-05-30 | 杭州复杂美科技有限公司 | 一种区块链交易验证方法、设备及存储介质 |
CN111784518B (zh) * | 2020-06-30 | 2024-04-05 | 京东科技信息技术有限公司 | 一种区块链跨链处理方法、装置、计算机设备及存储介质 |
CN111914021B (zh) * | 2020-07-02 | 2022-12-02 | 众连智能科技有限公司 | 一种跨区块链的交互方法、系统、计算机设备及存储介质 |
CN111815329A (zh) * | 2020-07-25 | 2020-10-23 | 成都星垂平野科技有限公司 | 一种基于跨链技术实现高性能区块链网络的方法 |
CN112200682B (zh) * | 2020-12-04 | 2021-03-09 | 腾讯科技(深圳)有限公司 | 基于区块链的跨链交易方法、装置和计算机可读存储介质 |
CN112685796B (zh) * | 2021-03-12 | 2021-06-18 | 腾讯科技(深圳)有限公司 | 一种基于区块链的区块共识方法以及相关设备 |
-
2021
- 2021-04-28 CN CN202110466007.2A patent/CN113179272B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN113179272A (zh) | 2021-07-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113179272B (zh) | 基于智能合约的区块链跨链交互方法、装置和计算机可读存储介质 | |
JP7362654B2 (ja) | 分割されたブロックチェーンネットワークにおけるブロックチェーンのブロックの維持管理 | |
Gangwal et al. | A survey of Layer-two blockchain protocols | |
Robinson et al. | Atomic crosschain transactions for ethereum private sidechains | |
CN110741373A (zh) | 用于管理区块链网络上的大区块的计算机实现的系统和方法 | |
US20240232223A1 (en) | Data synchronization method and system based on blockchain, and related device | |
KR102537774B1 (ko) | 기밀 지식의 특화된 증명을 제공하는 시스템들 및 방법들 | |
US20230090296A1 (en) | Transaction verification of a transaction based on a blockchain network | |
JP7157348B2 (ja) | ブロックチェーンシステム、承認端末、スマートコントラクト登録方法、および、スマートコントラクト登録プログラム | |
US20230052935A1 (en) | Asynchronous accounting method and apparatus for blockchain, medium and electronic device | |
Wang et al. | Performance benchmarking and optimization for blockchain systems: A survey | |
CN111931220B (zh) | 区块链网络的共识处理方法、装置、介质及电子设备 | |
TW202139127A (zh) | 用於與區塊鏈相關聯之服務平台之運算服務 | |
Ren et al. | Interoperability in blockchain: A survey | |
JP7181455B2 (ja) | ブロックチェーンシステム、承認端末、利用者端末、履歴管理方法、および、履歴管理プログラム | |
Liu et al. | The service architecture of Internet of things terminal connection based on blockchain technology | |
CN111476670A (zh) | 区块链回滚保险方法、设备和存储介质 | |
Daveas et al. | A gas-efficient superlight bitcoin client in solidity | |
CN115619395A (zh) | 基于区块链的数据处理方法及相关设备 | |
CN113157809B (zh) | 基于区块链侧链的遍历方法、装置和计算机可读存储介质 | |
CN113179273A (zh) | 基于区块链侧链的区块头验证方法、装置和计算机可读存储介质 | |
CN114785776B (zh) | 基于区块链的清算系统以及基于区块链的清算方法 | |
JP7421443B2 (ja) | データ移行方法、データ移行システム、およびノード | |
CN115099800A (zh) | 基于区块链的用于对不良资产数据进行转让的方法及装置 | |
CN111985928B (zh) | 一种验证方法、装置、电子设备和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
TA01 | Transfer of patent application right | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20220121 Address after: 200000 room 7-59, No. 500, Loushanguan Road, Changning District, Shanghai Applicant after: Aiyunbao (Shanghai) Technology Co.,Ltd. Address before: 310000 5-1 times building, Liangzhu street, Yuhang District, Hangzhou City, Zhejiang Province Applicant before: Hangzhou Liguan Technology Co.,Ltd. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |