会员体验
专利管家(专利管理)
工作空间(专利管理)
风险监控(情报监控)
数据分析(专利分析)
侵权分析(诉讼无效)
联系我们
交流群
官方交流:
QQ群: 891211   
微信请扫码    >>>
现在联系顾问~
首页 / 专利库 / 区块头 / 基于区块链侧链的遍历方法、装置和计算机可读存储介质

基于区块链侧链的遍历方法、装置和计算机可读存储介质

申请号 CN202110468692.2 申请日 2021-04-28 公开(公告)号 CN113157809B 公开(公告)日 2021-12-31
申请人 广东省机场集团物流有限公司; 发明人 汪泽消;
摘要 本申请公开了一种基于区块链侧链的遍历方法、装置和计算机可读存储介质,该方法包括:链外客户端从源区块链获取交互数据包,交互数据包包括源区块链中的源区块头,中继服务端从链外客户端获取交互数据包,中继服务端将源区块头存入引用链,向源区块头中存入分支标识和区段标识,分支标识用于标识引用链的分支,区段标识用于标识引用链的区段,引用链为用于存放源区块头的集合,中继服务端根据分支标识和区段标识确认目标区块头是否在引用链主链上,目标区块头为需要确认的源区块头。由此可见,本申请可以根据分支标识和区段标识遍历快速确认目标区块头是否在引用链主链上,不必对主链上的区块头进行逐一遍历,提高了确认效率,降低了计算成本。
权利要求

1.一种基于区块链侧链的遍历方法,其特征在于,由中继服务端执行所述方法,所述方法包括:

获取链外客户端发送的交互数据包;所述交互数据包是由所述链外客户端从源区块链获取的;所述交互数据包包括所述源区块链中的源区块头;

将所述源区块头存入引用链,向所述源区块头中存入分支标识和区段标识;所述分支标识用于标识所述引用链的分支;所述区段标识用于标识所述引用链的区段;所述引用链为用于存放所述源区块头的集合;

根据所述分支标识和所述区段标识确认目标区块头是否在所述引用链主链上;所述目标区块头为需要确认的所述源区块头。

2.根据权利要求1所述的方法,其特征在于,所述分支标识的增量为大于零的整数;所述分支标识存储哈希地址值;所述向所述源区块头中存入分支标识和区段标识,包括:当所述引用链未出现分叉时,所述源区块头中存入的所述分支标识和所述区段标识的值与所述源区块头的父区块的所述分支标识和所述区段标识的值相同;

当所述引用链出现分叉时,所述源区块头中存入的所述分支标识的值为所述分支标识的下一个值;所述源区块头中存入的所述区段标识为所述父区块的哈希值;同时更新所述源区块头的兄弟区块的所述区段标识为所述父区块的哈希值。

3.根据权利要求2所述的方法,其特征在于,所述根据所述分支标识和所述区段标识确认目标区块头是否在所述引用链主链上,包括:获取所述引用链主链的主链分支头;

当所述目标区块头的所述分支标识大于所述主链分支头的所述分支标识时,确认所述目标区块头不在所述引用链主链上;

当所述目标区块头的所述分支标识等于所述主链分支头的所述分支标识时,确认所述目标区块头在所述引用链主链上;

当所述目标区块头的所述分支标识小于所述主链分支头的所述分支标识时,根据所述区段标识确认目标区块头是否在所述引用链主链上。

4.根据权利要求3所述的方法,其特征在于,所述根据所述区段标识确认目标区块头是否在所述引用链主链上,包括:

获取所述引用链的目标区段头;所述目标区段头是根据所述主链分支头中的所述区段标识遍历所述引用链中的区段头获得的;所述目标区段头的所述分支标识小于等于所述目标区块头的所述分支标识;

当所述目标区段头的所述分支标识小于所述目标区块头的所述分支标识时,确认所述目标区块头不在所述引用链主链上;

当所述目标区段头的所述分支标识等于所述主链分支头的所述分支标识时,获取所述目标区段头和所述目标区块头的区块高度;

当所述目标区块头的所述区块高度大于所述目标区段头的所述区块高度时,确认所述目标区块头不在所述引用链主链上;

当所述目标区块头的所述区块高度小于等于所述目标区段头的所述区块高度时,确认所述目标区块头在所述引用链主链上。

5.一种基于区块链侧链的遍历方法,其特征在于,包括:链外客户端从源区块链获取交互数据包;所述交互数据包包括所述源区块链中的源区块头;

中继服务端从所述链外客户端获取所述交互数据包;

所述中继服务端将所述源区块头存入引用链,向所述源区块头中存入分支标识和区段标识;所述分支标识用于标识所述引用链的分支;所述区段标识用于标识所述引用链的区段;所述引用链为用于存放所述源区块头的集合;

所述中继服务端根据所述分支标识和所述区段标识确认目标区块头是否在所述引用链主链上;所述目标区块头为需要确认的所述源区块头。

6.一种计算机设备,其特征在于,包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行权利要求1‑5中任一项所述方法的步骤。

7.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令被处理器执行时,执行权利要求1‑5任一项所述的方法。

说明书全文

基于区块链侧链的遍历方法、装置和计算机可读存储介质

技术领域

[0001] 本申请涉及数据处理的技术领域,尤其涉及一种基于区块链侧链的遍历方法、装置和计算机可读存储介质。

背景技术

[0002] 区块链技术是分布式数据存储、点对点传输、分布式共识算法、加密算法等计算机技术的集成应用,具有数据不可篡改和不可伪造的特性。随着人们对区块链技术研究的逐
步深入,越来越多的区块链项目开始落地实施,尤其在金融、流程管理、数据追溯、供应链管
理及医疗保险等领域,区块链技术可以产生颠覆性的影响,然而,由于数据存储的封闭性,
这些区块链项目之间的交互能力极其有限,不可避免地造成了区块链的价值孤岛。
[0003] 目前,跨链技术主要包括:公证人机制(notary scheme)、侧链/中继(side chain/relay)和哈希锁定(Hash‑locking),其中中继技术因其不依赖可信任第三方背书而成为研
究的重点领域。但中继技术在独立验证交易数据的过程中需要确认目标区块头位于侧链主
链上,而这个过程往往需要对侧链进行逐一遍历,效率低下且计算成本高。
[0004] 因此,亟需探究一种快速、高效且计算成本低的侧链遍历方式。

发明内容

[0005] 本发明的目的是针对现有技术的不足,提供一种基于区块链侧链的遍历方法、装置和计算机可读存储介质,可快速确认目标区块头是否在主链上实现对侧链高效且计算成
本低的遍历。
[0006] 本申请一方面提供了一种基于区块链侧链的遍历方法,该方法由中继服务端执行,该方法包括:
[0007] 获取链外客户端发送的交互数据包;所述交互数据包是由所述链外客户端从源区块链获取的;所述交互数据包包括所述源区块链中的源区块头;
[0008] 将所述源区块头存入引用链,向所述源区块头中存入分支标识和区段标识;所述分支标识用于标识所述引用链的分支;所述区段标识用于标识所述引用链的区段;所述引
用链为用于存放所述源区块头的集合;
[0009] 根据所述分支标识和所述区段标识确认目标区块头是否在所述引用链主链上;所述目标区块头为需要确认的所述源区块头。
[0010] 优选地,所述分支标识的增量为大于零的整数;所述分支标识存储哈希地址值;所述向所述源区块头中存入分支标识和区段标识,包括:
[0011] 当所述引用链未出现分叉时,所述源区块头中存入的所述分支标识和所述区段标识的值与所述源区块头的父区块的所述分枝标识和所述区段标识的的值相同;
[0012] 当所述引用链出现分叉时,所述源区块头中存入的所述分支标识的值为所述分支标识的下一个值;所述源区块头中存入的所述区段标识为所述父区块的哈希值;同时更新
所述源区块头的兄弟区块的所述区段标识为所述父区块的哈希值。
[0013] 优选地,所述根据所述分支标识和所述区段标识确认目标区块头是否在所述引用链主链上,包括:
[0014] 获取所述引用链主链的主链分支头;
[0015] 当所述目标区块头的所述分支标识大于所述主链分支头的所述分支标识时,确认所述目标区块头不在所述引用链主链上;
[0016] 当所述目标区块头的所述分支标识等于所述主链分支头的所述分支标识时,确认所述目标区块头在所述引用链主链上;
[0017] 当所述目标区块头的所述分支标识小于所述主链分支头的所述分支标识时,根据所述区段标识确认目标区块头是否在所述引用链主链上。
[0018] 优选地,所述根据所述区段标识确认目标区块头是否在所述引用链主链上,包括:
[0019] 获取所述引用链的目标区段头;所述目标区段头是根据所述主链分支头中的所述区段标识遍历所述引用链中的区段头获得的;所述目标区段头的所述分支标识小于等于所
述目标区块头的所述分支标识;
[0020] 当所述目标区段头的所述分支标识小于所述目标区块头的所述分支标识时,确认所述目标区块头不在所述引用链主链上;
[0021] 当所述目标区段头的所述分支标识等于所述主链分支头的所述分支标识时,
[0022] 获取所述目标区段头和所述目标区块头的区块高度;
[0023] 当所述目标区块头的所述区块高度大于所述目标区段头的所述区块高度时,确认所述目标区块头不在所述引用链主链上;
[0024] 当所述目标区块头的所述区块高度小于等于所述目标区段头的所述区块高度时,确认所述目标区块头在所述引用链主链上。
[0025] 本申请一方面提供了一种基于区块链侧链的遍历方法,该方法包括:
[0026] 链外客户端从源区块链获取交互数据包;所述交互数据包包括所述源区块链中的源区块头;
[0027] 链外客户端从源区块链获取交互数据包;所述交互数据包包括所述源区块链中的源区块头;
[0028] 中继服务端从所述链外客户端获取所述交互数据包;
[0029] 所述中继服务端将所述源区块头存入引用链,向所述源区块头中存入分支标识和区段标识;所述分支标识用于标识所述引用链的分支;所述区段标识用于标识所述引用链
的区段;所述引用链为用于存放所述源区块头的集合;
[0030] 所述中继服务端根据所述分支标识和所述区段标识确认目标区块头是否在所述引用链主链上;所述目标区块头为需要确认的所述源区块头。
[0031] 本申请一方面提供了一种基于区块链的跨链交易装置,该装置应用于中继服务端,该装置包括:获取模块、存储模块和确认模块;
[0032] 获取模块,用于获取链外客户端发送的交互数据包;所述交互数据包是由所述链外客户端从源区块链获取的;所述交互数据包包括所述源区块链中的源区块头;
[0033] 存储模块,用于将所述源区块头存入引用链,向所述源区块头中存入分支标识和区段标识;所述分支标识用于标识所述引用链的分支;所述区段标识用于标识所述引用链
的区段;所述引用链为用于存放所述源区块头的集合;
[0034] 确认模块,用于根据所述分支标识和所述区段标识确认目标区块头是否在所述引用链主链上;所述目标区块头为需要确认的所述源区块头。
[0035] 本申请一方面提供了一种计算机设备,包括存储器和处理器,存储器存储有计算机程序,计算机程序被处理器执行时,使得处理器执行本申请中一方面中的方法
[0036] 本申请一方面提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序包括程序指令,该程序指令被处理器执行时使该处理器执行上述
一方面中的方法。
[0037] 根据本申请的一个方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算
机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使
得该计算机设备执行上述一方面等各种可选方式中提供的方法。
[0038] 本申请中链外客户端从源区块链获取交互数据包,交互数据包包括源区块链中的源区块头,中继服务端从链外客户端获取交互数据包,中继服务端将源区块头存入引用链,
向源区块头中存入分支标识和区段标识,分支标识用于标识引用链的分支,区段标识用于
标识引用链的区段,引用链为用于存放源区块头的集合,中继服务端根据分支标识和区段
标识确认目标区块头是否在引用链主链上,目标区块头为需要确认的源区块头。由此可见,
本申请可以根据分支标识和区段标识遍历快速确认目标区块头是否在引用链主链上,不必
对主链上的区块头进行逐一遍历,提高了确认效率,降低了计算成本。

附图说明

[0039] 为了更清楚地说明本发明实施例或现有的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明中
记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可
以根据这些附图获得其他的附图。
[0040] 图1是本申请实施例提供的一种网络架构的结构示意图;
[0041] 图2是本申请提供的一种跨链交互的场景示意图;
[0042] 图3是本申请提供的一种基于区块链侧链的遍历方法的流程示意图;
[0043] 图4是本申请提供的一种存入引入链的源区块头数据结构示意图;
[0044] 图5是本申请提供的一种引用链的数据结构使用场景示意图;
[0045] 图6是本申请提供的一种数据确认过程的场景示意图;
[0046] 图7是本申请提供的一种基于区块链侧链的遍历方法的流程示意图;
[0047] 图8是本申请提供的一种基于区块链侧链的遍历方法装置的结构示意图;
[0048] 图9是本申请提供的一种计算机设备的结构示意图。

具体实施方式

[0049] 为使本发明的目的、技术方案和优点更加清楚,下面将结合具体实施例及相应的附图对本发明的技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本发明示例性
实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创
造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0050] 这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例
中所描述的实施方式并不代表与本说明书一个或多个实施例相一致的所有实施方式。相
反,它们仅是与如所附权利要求书中所详述的、本说明书一个或多个实施例的一些方面相
一致的装置和方法的例子。
[0051] 需要说明的是:在其他实施例中并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤。在一些其他实施例中,其方法所包括的步骤可以比本说明书所描述的更
多或更少。此外,本说明书中所描述的单个步骤,在其他实施例中可能被分解为多个步骤进
行描述;而本说明书中所描述的多个步骤,在其他实施例中也可能被合并为单个步骤进行
描述。
[0052] 本申请涉及区块链跨链相关技术。其中,现有跨链技术主要包括公证人机制(Notary Scheme)、侧链/中继(Side Chain/Relay)和哈希锁定(Hash‑locking)。跨链技术
是一种价值的交换,既要保证信息流的精确性,更要保证双向价值流通的可靠性。在本申请
实施例中实现跨链交互主要采用了侧链/中继模式,所谓中继模式本质上是一个源区块链
的轻节点以智能合约的形式在目标区块链上运行,且智能合约能够通过SPV(Simplified 
Payment Verification简单支付证明)验证源区块链上的交易信息。
[0053] 请参见图1,图1是本申请实施例提供的一种网络架构的结构示意图。
[0054] 如图1所示,该网络架构可以包括第一区块链101、链外客户端102、第二区块链103。其中,第一区块链101中可以包括多个区块链节点,该多个区块链节点之间可以相互进
行数据交互,该多个区块链节点可以包括节点a1、节点a2、……和节点an等n个节点。链外客
户端102可以包括多个链外客户端节点,该多个链外客户端节点之间可以相互进行数据交
互,该多个链外客户端节点可以包括节点b1、节点b2、……和节点bn等n个节点。第二区块链
103中可以包括多个区块链节点,该多个区块链节点之间可以相互进行数据交互,该多个区
块链节点可以包括节点c1、节点c2、……和节点cn等n个节点。
[0055] 更多的,第一区块链101中的一个区块链节点、第二区块链103中的一个区块链节点、或者链外客户端102中的一个节点,可以由服务器构成,也可以由终端设备构成。其中,
用于构成区块链节点或者链外客户端节点的服务器可以是独立的物理服务器,也可以是多
个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计
算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据
和人工智能平台等基础云计算服务的云服务器。用于构成区块链节点或者链外客户端节点
的终端设备可以是:智能手机、平板电脑、笔记本电脑、桌上型电脑、智能电视等智能终端。
[0056] 下面以第一区块链101中的节点a1、链外客户端102中的节点b1以及第二区块链中的节点c1之间的数据交互为例,对本申请的应用场景进行具体描述。
[0057] 请一并参见图2,图2是本申请提供的一种跨链交互的场景示意图。
[0058] 如图2所示,节点a1可以为发起跨链交互的节点,节点c1可以为接受跨链交互的节点。节点a1所在的第一区块链101可以为发起跨链交易的源区块链,节点c1所在的第二区块
链103可以为跨链交易的目标区块链,节点c1所在的目标区块链内部署有中继服务端,中继
服务端可以由智能合约实现。
[0059] 链外客户端节点b1可以访问节点a1所在的第一区块链101中存储的区块。若节点b1监听到节点a1所在的第一区块链有区块还未转发或者存储了新的区块,例如节点a1中存
储了新的区块,该区块包含区块头hi和区块体bi,则节点b1可以向节点a1请求拉取区块头
hi作为交互数据包进行转发。
[0060] 链外客户端节点b1可以将拉取到的交互数据包发送给节点c1所在的目标区块链内的中继服务端。节点c1中的中继服务端可以对交互数据包中的区块头hi进行验证,当对
区块头hi可用性相关的验证成功后,区块头hi会被存储到引用链中,区块头hi中还会以一
定的规则存入分支标识字段和区段标识字段,引用链可以是由源区块链即第一区块链101
中所有区块的区块头构成的一条克隆链。通过链外客户端节点可以将源区块链中的区块头
源源不断的克隆到中继服务端中进行存储。
[0061] 链外客户端节点b1还可以向节点a1请求拉取区块体bi中的交易数据和默克尔成员证明作为交互数据包进行转发。
[0062] 链外客户端节点b1可以将拉取到的交互数据包发送给节点c1中的中继服务端,节点c1中的中继服务端可以根据引用链中存储的区块头hi和交互数据包中的交易数据及默
克尔成员证明对交易数据进行SPV(Simplified Payment Verification简单支付证明)验
证,验证通过后节点c1就可以执行与交易数据相关联的交易业务。该交易数据可以指节点
a1和节点c1之间进行交互的任意数据。其中,在进行SPV验证的过程中需要遍历引用链主链
来确认区块头hi是否在引用链主链上,节点c1中继服务端中可以根据分支标识和区段标识
遍历快速确认区块头hi是否在引用链主链上,具体过程,可以参见下述图3对应的实施例中
的描述。
[0063] 至此即实现了第一区块链101(源区块链)中的节点a1与第二区块链103(目标区块链)中的节点c1之间的跨链数据交互。
[0064] 采用本申请所提供的方法,中继服务端可以根据分支标识和区段标识遍历快速确认区块头hi是否在引用链主链上,不必对主链上的区块头进行逐一遍历,提高了确认效率,
降低了计算成本。
[0065] 请参见图3,图3是本申请提供的一种基于区块链侧链的遍历方法的流程示意图。如图3所示,该方法可以包括:
[0066] 步骤S101,获取链外客户端发送的交互数据包;所述交互数据包是由所述链外客户端从源区块链获取的;所述交互数据包包括所述源区块链中的源区块头。
[0067] 中继服务端可以获取到链外客户端所发送的交互数据包。链外客户端向中继服务端发送的交互数据包是由源区块链发送给链外客户端的。
[0068] 具体地,可以是由源区块链中的某个节点将交互数据包发送给链外客户端的。
[0069] 其中,链外客户端节点可以是任意设备或者计算机程序。链外客户端可以不属于源区块链,也可以不属于目标区块链。可以在链外客户端节点和源区块链节点之间配置rbc
(无线承载控制)接口,即可实现链外客户端节点与源区块链节点之间的相互访问。可以在
链外客户端节点和目标区块链节点之间也配置rbc(无线承载控制)接口,即可实现链外客
户端节点与目标区块链节点之间的相互访问,即实现了与中继服务端之间的数据访问,链
外客户端节点的数量可以是多个(至少两个)。
[0070] 具体的,本申请实施例的执行主体可以是中继服务端,该中继服务端可以是目标区块链中部署的智能合约,该智能合约可以在任意一个目标区块链的节点中运行。一个区
块链节点可以由一个或者多个计算机设备构成,该计算机设备可以是终端设备,也可以是
服务器,因此中继服务端可以是由一个或者多个计算机设备所构成。
[0071] 其中,源区块链想要与目标区块链发生跨链交互时,链外客户端节点可以从源区块链中获取交互数据包,该交互数据包中可以包括源区块链中任意区块的源区块头,源区
块头即为源自源区块链的区块头,源区块头中具体包括版本号、本区块的区块哈希、区块高
度、父区块哈希、默克尔树根哈希、时间戳、随机数等。
[0072] 上述过程即为,链外客户端可以向源区块链获取到包含区块头的交互数据包。链外客户端可以将获取到的交互数据包发送给目标区块链中的中继服务端,中继服务端就获
取到了交互数据包。
[0073] 步骤S102:将所述源区块头存入引用链,向所述源区块头中存入分支标识和区段标识;所述分支标识用于标识所述引用链的分支;所述区段标识用于标识所述引用链的区
段;所述引用链为用于存放所述源区块头的集合。
[0074] 具体的,中继服务端获取到交互数据包之后,就可以对交互数据包中的源区块头进行重复性验证,请参见下述内容描述。
[0075] 具体地,中继服务端将链外客户端传送的交互数据包中的源区块头数据存入某个数据集合中,该数据集合称为引用链,引用链实现了对源区块链的克隆,本质上与源区块链
的轻节点存储的内容相类似。这样就为目标区块链独立验证源区块链上的交易提供了可能
性。
[0076] 其中,中继服务端对源区块头进行重复性验证的过程可以为:
[0077] 遍历所述引用链与所述源区块头进行对比;
[0078] 当所述源区块头不存在于所述引用链且所述源区块头的父块头存在于所述引用链时,确定对所述源区块头重复性验证成功,当对所述源区块头验证成功时,将所述源区块
头存入引用链。
[0079] 具体地,遍历所述引用链与当前源区块头进行对比;中继服务端可以根据当前源区块头的区块哈希和父区块哈希对引用链进行遍历查询,可以理解的是,只有当前源区块
头不存在于引用链中时,才有必要将当前源区块头存入引用链。此外,由于引用链是源区块
链的克隆,本质上也是一条区块链,因此,除了创世区块以外,存入引用链的源区块头都必
须在引用链中存在其父区块头,不能脱离引用关系而单独存在。因此,当所述源区块头不存
在于所述引用链中且所述源区块头的父块头存在于所述引用链中时,确定对所述源区块头
重复性验证成功。作为优选,引用链的数据类型可以采用Hashmap,使得遍历查询更加高效。
[0080] 上述过程即为重复性验证过程,中继服务端可以防止重复的、无引用关系的源区块头进入引用链导致数据混乱。
[0081] 当对所述源区块头验证成功时,将所述源区块头存入引用链,所述引用链为用于存放所述源区块头的集合。
[0082] 请一并参见图4,图4是本申请提供的一种存入引入链的源区块头数据结构示意图。
[0083] 将源区块头存入引用链可以包括:
[0084] 存入引用链中的源区块头中均维护分支标识和区段标识字段,也即当前源区块头的父块头内维护有分支标识和区段标识字段;分支标识用于标识所述引用链的分支;区段
标识用于标识引用链的区段;引用链为用于存放所述源区块头的集合。
[0085] 其中,分支标识的增量为大于零的整数;分支标识存储哈希地址值。
[0086] 父块头保存当前源区块头的哈希值;使得引用链成为双向链,即可以通过父区块找到子区块,使得中继服务端可以实时维护区段标识字段。
[0087] 具体地,分支标识和区段标识的维护方法如下:
[0088] 当源区块头存入所述引用链后,引用链未出现分叉时,所述源区块头中存入的所述分支标识和所述区段标识的值与所述父区块的所述分枝标识和所述区段标识的的值相
同;所谓分叉即同一父区块下有至少两个子区块的现象;
[0089] 可以理解的是,当引用链未出现分叉时,说明当前源区块头与其父区块属于同一分支且属于同一区段,因此,可以将当前源区块头的分支标识和区段标识设置为与其父区
块相同。
[0090] 当所述引用链出现分叉时,分支标识的增量可以设置为大于零的数,优选地可以设置增量为一。所述源区块头中存入的所述分支标识为现有所述分支标识最大值加一,所
述源区块头中存入的所述区段标识为所述父区块的哈希值,同时维护所述源区块头的兄弟
区块的所述区段标识为所述父区块的哈希值,其中,由于父块头保存了子区块头的哈希值,
使得引用链成为双向链,便于中继服务端可以查找源区块头的兄弟区块并维护区段标识字
段。
[0091] 可以理解的是,当引用链出现分叉时,说明当前源区块头与其父区块不属于同一分支且不属于同一区段,因此,中继服务端可以取一个唯一值作为当前区当块头的分支标
识,其中,最常规的方式可以将当前分支标识的最大值加一作为当前源区块头的分支标识,
此外,虽然当前源区块头与其父区块不属于同一区段,但当前源区块头和其兄弟区块属于
同一区段,中继服务端可以将父区块的哈希作为当前源区块头和其兄弟区块的区段标识。
[0092] 请一并参见图5,图5是本申请提供的一种引用链的数据结构使用场景示意图。
[0093] 如图5所示,引用链中可以包括源区块头0xa1、源区块头0xa2、源区块头0xa3、源区块头0xa4、源区块头0xa5。
[0094] 其中,当源区块头0xa2存入引用链时,引用链未出现分叉,源区块头0xa2的分支标识和区段标识与其父区块源区块头0xa1相同,即分支标识为1区段标识为0xa0。
[0095] 当源区块头0xa4存入引用链时,源区块头0xa2产生了两个子区块即出现了分叉现在,此时,源区块头0xa4的分支标识设置为分支标识的下一个值,即分支标识为2。源区块头
0xa4的区段标识设置为父区块源区块头0xa2的哈希值,即区段标识为0xa2。同时还要更新
源区块头0xa4的兄弟区块源区块头0xa3的区段标识为0xa2。
[0096] 上述过程即为将源区块头存入引用链的过程,分支标识和区段标识可以让中继服务端快速确认某源区块头是否在主链上,提高验证的效率,降低计算成本。
[0097] 步骤S103,根据所述分支标识和所述区段标识确认目标区块头是否在所述引用链主链上;所述目标区块头为需要确认的所述源区块头。
[0098] 具体的,
[0099] 源区块链想要与目标区块链发生跨链交易时,链外客户端节点可以从源区块链中获取交互数据包,该交互数据包中可以包括交易相关的交易数据和该交易数据的默克尔成
员证明。
[0100] 链外客户端可以向目标区块链发送交互数据包,当目标区块链需要独立确认交易数据是否被写入源区块链时,首先需要确认目标区块头位于引用链的主链上,再对交易数
据进行默克尔成员验证来确认交易数据的可靠性。目标区块头为需要确认的所述源区块
头,目标区块头是交易数据所属的区块头,目标区块头属于引用链。
[0101] 其中,确认目标区块头位于引用链的主链上的过程可以为:
[0102] 获取所述引用链的主链分支头;
[0103] 随着时间的推移,源区块头被不断的存入到引用链中,引用链的主链也可能随之发生变化,中继服务端可以计算每个分支头所属的分支的最大难度,其中难度最大的分支
头即为主链分支头,通过该分支头中继服务端可以追踪引用链主链上的每个源区块头。其
中,分支头是每个引用链分支的最新添加的源区块头。
[0104] 其中,确认主链之后,中继服务端需要确认目标区块头是否在主链上,由于每个源区块头中都存储了父区块头的哈希,中继服务端可以通过主链分支头开始逐一遍历源区块
头直到找到目标区块头或创世块。但是这种遍历方式效率低且计算成本高。
[0105] 中继服务端在存入源区块头时维护了分支标识和区段标识字段,此时,中继服务端可以根据分支标识和区段标识字段快速确认目标区块头。可以理解的是,由于分支标识
的增量为大于零的整数,因此,任意一源区块头的分支标识的必定大于等于其所有子代的
源区块头。判断方法请参见下述内容描述。
[0106] A:如果目标区块头的分支标识大于主链分支头的分支标识,那么不需要遍历就可以确认目标区块头不在主链上。
[0107] B:如果目标区块头的分支标识等于主链分支头的分支标识,那么不需要遍历就可以确认目标区块头在主链上。
[0108] C:如果目标区块头的分支标识小于主链分支头的分支标识,那么就需要进一步分析:
[0109] 中继服务端需要获取引用链的目标区段头,目标区段头是根据主链分支头中的区段标识遍历引用链中的区段头获得的,目标区段头的分支标识小于等于目标区块头的分支
标识;其中,区段头具体是指区段标识字段存储的哈希值所指向区块头,中继服务端可以通
过区块头中存储的区段标识,直接找到区段头。
[0110] C1:中继服务端从主链分支头开始遍历区段头,直到找到某个区段头的分支标识小于等于目标区块头的分支标识,即为目标区段头。当目标区段头的分支标识小于目标区
块头的分支标识时,那么可以确认目标区块头不在主链上;
[0111] C2:当目标区段头的分支标识等于目标区块头的分支标识时,那么比较目标区块头与区段头的区块高度。
[0112] C21:当目标区块头的区块高度大于目标区段头的高度时,确认目标区块头不在主链上。
[0113] C22:当目标区块头的区块高度小于等于目标区段头的所述区块高度时,确认目标区块头在主链上。
[0114] 上述过程即为,中继服务端确认目标区块头位于引用链主链上的过程。中继服务端可以不用从主链分支头开始遍历每个源区块头,而是从主链分支头开始通过区段标识遍
历区段头,从而可以快速确认目标区块头是否位于引用链主链上,遍历速度快,节约计算成
本。
[0115] 请参见图6,图6是本申请提供的一种数据确认过程的场景示意图。
[0116] 如图6所示,引用链中可以包括源区块头0xa1、源区块头0xa2、源区块头0xa3、源区块头0xa4、源区块头0xa5、源区块头0xa6、源区块头0xa7、源区块头0xa8、源区块头0xa9、源
区块头0xaa、源区块头0xab。源区块头中至少包括区块哈希、区块高度、分支标识、区段标识
等数据。其中,源区块头0xa1、源区块头0xa2、源区块头0xa3、源区块头0xa5、源区块头0xa6、
源区块头0xa8、源区块头0xaa组成的区块链为当前引用链的主链,其中,源区块头0xaa为主
链分支头,源区块头0xab、源区块头0xa9、源区块头0xa4为分支头,源区块头0xa2、源区块头
0xa5为区段头。可以理解的是,实际运行过程中,交易数据所属的区块头可能是引用链上的
任一区块头,即目标区块头是引用链上的任一区块头。
[0117] 其中,当交易数据所属的区块头为源区块头0xa4时,即目标区块头为0xa4。
[0118] 对应前述情形A:可见目标区块头0xa4的分支标识为4大于主链分支头即源区块头0xaa的分支标识3,那么不需要遍历就可以确认目标区块头0xa4不在主链上,确认目标区块
头0xa4主链成员验证失败。
[0119] 其中,当交易数据所属的区块头为源区块头0xa6时,即目标区块头为0xa6。
[0120] 对应前述情形B:可见目标区块头0xa6的分支标识为3等于主链分支头即源区块头0xaa的分支标识3,那么不需要遍历就可以确认目标区块头0xa6在主链上,确认目标区块头
0xa6主链成员验证成功。
[0121] 其中,当交易数据所属的区块头为源区块头0xab、源区块头0xa7、源区块头0xa5、源区块头0xa3之一时,对应前述情形C:
[0122] 中继服务端可以根据主链分支头0xaa中的区段标识0xa5找到区段头0xa5,其中区段头0xa5的分支标识为1小于等于源区块头0xab、源区块头0xa7、源区块头0xa5、源区块头
0xa3中任一区块头的分支标识,满足目标区段头的条件,即目标区段头为0xa5。
[0123] 其中,当交易数据所属的区块头为源区块头0xab时,即目标区块头为0xab。
[0124] 对应前述情形C1:可见目标区段头0xa5的分支标识为1小于目标区块头0xab的分支标识2,那么可以确认目标区块头0xab不在主链上,确认目标区块头0xab主链成员验证失
败。
[0125] 其中,当交易数据所属的区块头为源区块头0xa7、源区块头0xa5、源区块头0xa3之一时,对应前述情形C2:可见目标区段头0xa5的分支标识为1等于源区块头0xa7、源区块头
0xa5、源区块头0xa3中任一区块头的分支标识1,那么比较目标区块头与区段头的区块高
度。
[0126] 其中,当交易数据所属的区块头为源区块头0xa7时,即目标区块头为0xa7。
[0127] 对应前述情形C21:可见目标区块头0xa7的区块高度为15大于目标区段头0xa5的区块高度14,确认目标区块头0xa7不在主链上,确认目标区块头0xa7主链成员验证失败。
[0128] 其中,当交易数据所属的区块头为源区块头0xa5或源区块头0xa3时,对应前述情形C22:可见目标区块头0xa5或0xa3的区块高度小于等于目标区段头0xa5的区块高度,确认
目标区块头0xa5或0xa3在主链上,确认目标区块头0xa5或0xa3主链成员验证成功。
[0129] 至此即实现了根据分支标识和区段标识判断目标区块头是否在引用链主链上的确认过程。
[0130] 请参见图7,图7是本申请提供的一种基于区块链侧链的遍历方法的流程示意图。如图7所示,该方法可以包括:
[0131] 步骤S201,链外客户端从源区块链获取交互数据包;交互数据包包括所述源区块链中的源区块头。
[0132] 步骤S202,中继服务端从链外客户端获取交互数据包。
[0133] 步骤S203,中继服务端将源区块头存入引用链,向源区块头中存入分支标识和区段标识;分支标识用于标识所述引用链的分支;区段标识用于标识引用链的区段;引用链为
用于存放源区块头的集合。
[0134] 步骤S204,中继服务端根据分支标识和区段标识确认目标区块头是否在引用链主链上;目标区块头为需要确认的源区块头。
[0135] 可以理解的是,上述图3对应的申请实施例中所提供的方法与图7对应的申请实施例中所提供的方法,实际上为同一方法,只是图7对应的申请实施例中是以源区块链、链外
客户端和中继服务端共同作为执行主体,因此,图3对应的申请实施例中所描述的内容可以
与图7对应的申请实施例中所描述的内容结合起来。
[0136] 通过本申请所提供的方法,可以实现快速确认目标区块头是否在侧链主链上。
[0137] 请参见图8,图8是本申请提供的一种基于区块链侧链的遍历方法装置的结构示意图。
[0138] 该侧链遍历装置1可以应用于中继服务端,该侧链遍历装置1可以用于执行上述图3对应的实施例中所描述的各个步骤,该侧链遍历装置1可以包括:获取模块11、存储模块12
和确认模块13;
[0139] 获取模块11,用于获取链外客户端发送的交互数据包;所述交互数据包是由所述链外客户端从源区块链获取的;所述交互数据包包括所述源区块链中的源区块头;
[0140] 存储模块12,用于将所述源区块头存入引用链,向所述源区块头中存入分支标识和区段标识;所述分支标识用于标识所述引用链的分支;所述区段标识用于标识所述引用
链的区段;所述引用链为用于存放所述源区块头的集合;
[0141] 确认模块13,用于根据所述分支标识和所述区段标识确认目标区块头是否在所述引用链主链上;所述目标区块头为需要确认的所述源区块头。
[0142] 其中,获取模块11、存储模块12和确认模块13的具体功能实现方式请参见图3对应的实施例中的步骤S101‑步骤S103,这里不再进行赘述。
[0143] 请参见图9,图9是本申请提供的一种计算机设备的结构示意图。
[0144] 如图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中可以包括操作系统、网络通信模块、用户接
口模块以及设备控制应用程序。
[0145] 在图9所示的计算机设备1000中,网络接口1004可提供网络通讯功能;而用户接口1003主要用于为用户提供输入的接口;而处理器1001可以用于调用存储器1005中存储的设
备控制应用程序,以实现前文图3中任一个所对应实施例中对基于区块链侧链的遍历方法
的描述。应当理解,本申请中所描述的计算机设备1000,也可执行前文其余实施例中对侧链
遍历装置1的描述,在此不再赘述。另外,对采用相同方法的有益效果描述,也不再进行赘
述。
[0146] 此外,这里需要指出的是:本申请还提供了一种计算机可读存储介质,且计算机可读存储介质中存储有前文提及的侧链遍历装置1所执行的计算机程序,且计算机程序包括
程序指令,当处理器执行程序指令时,能够执行前文图3中任一个所对应实施例中对基于区
块链侧链的遍历方法的描述,因此,这里将不再进行赘述。另外,对采用相同方法的有益效
果描述,也不再进行赘述。对于本申请所涉及的计算机存储介质实施例中未披露的技术细
节,请参照本申请方法实施例的描述。
[0147] 本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,上述的程序可存储于一计算机可读取存储介质
中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,上述的存储介质可为磁
碟、光盘、只读存储记忆体(Read‑Only Memory,ROM)或随机存储记忆体(Random Access 
Memory,RAM)等。
[0148] 还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包
括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要
素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要
素的过程、方法、商品或者设备中还存在另外的相同要素。
[0149] 上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来
执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺
序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可
以的或者可能是有利的。
[0150] 在本说明书一个或多个实施例使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书
中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表
示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出
项目的任何或所有可能组合。
[0151] 应当理解,尽管在本说明书一个或多个实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区
分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一信息也可以被称为第
二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如
果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
[0152] 以上所述仅为本说明书一个或多个实施例的较佳实施例而已,并不用以限制本说明书一个或多个实施例,凡在本说明书一个或多个实施例的精神和原则之内,所做的任何
修改、等同替换、改进等,均应包含在本说明书一个或多个实施例保护的范围之内。