一种同步处理方法、装置、设备及介质与流程

文档序号:21593361发布日期:2020-07-24 16:41阅读:128来源:国知局
一种同步处理方法、装置、设备及介质与流程

本发明涉及区块链技术领域,具体涉及基于区块链的数据处理领域,尤其涉及一种同步处理方法、一种同步处理装置、一种同步处理设备及一种计算机存储介质。



背景技术:

现有技术中,当区块链网络中的某个节点设备在进行区块链的同步处理时,会从区块链网络中的其他节点设备(如共识节点设备或同步节点设备)处逐个逐个地获取所需的区块,再针对逐个获取的区块进行逐个校验,这样的校验太过繁琐,同步效率较低。



技术实现要素:

本申请实施例提供一种同步处理方法、装置、设备及介质,可有效提升同步处理效率和对区块的验证效率。

一方面,本申请实施例提供一种同步处理方法,该方法由区块链网络中的第一节点设备执行,区块链网络还包括第二节点设备,第一节点设备与第二节点设备相连接,该方法包括:

获取目标骨架,目标骨架包括n个数据单元,n个数据单元用于存储第一节点设备待同步的n个区块,n个区块与n个数据单元一一对应,n为正整数;

获取目标骨架对应的校验数据;

当接收到第二节点设备同步的n个区块时,采用校验数据对n个区块进行验证;

若验证成功,将n个区块填充至目标骨架的n个数据单元中。

一方面,本申请实施例提供一种同步处理装置,该同步处理装置设于区块链网络中的第一节点设备中,区块链网络还包括第二节点设备,第一节点设备与第二节点设备相连接,该同步处理装置包括:

获取单元,用于获取目标骨架,目标骨架包括n个数据单元,n个数据单元用于存储第一节点设备待同步的n个区块,n个区块与n个数据单元一一对应,n为正整数;以及用于获取目标骨架对应的校验数据;

处理单元,用于当接收到第二节点设备同步的n个区块时,采用校验数据对n个区块进行验证;若验证成功,将n个区块填充至目标骨架的n个数据单元中。

在一种实施方式中,该获取单元具体用于:

确定n个区块中的第一个区块在区块链网络中的参考区块链上所对应的参考区块,以及n个区块中的最后一个区块在参考区块链上所对应的关键区块;

获取参考区块的哈希值和关键区块的哈希值;

向第二节点设备发送查询请求,查询请求中包括参考区块的哈希值和关键区块的哈希值;查询请求用于请求第二节点设备根据参考区块的哈希值和关键区块的哈希值查询第二节点设备中是否存储有n个区块;

若接收到第二节点设备的查询成功响应,向第二节点设备发送目标同步任务,目标同步任务用于指示第二节点设备返回n个区块。

在一种实施方式中,校验数据是参考区块的哈希值;该处理单元具体用于:

获取第二节点设备所同步的n个区块中的第一个区块的待验哈希值;

若待验哈希值与参考区块的哈希值相同,则根据参考区块的哈希值检测n个区块是否连续;

若连续,则确认n个区块验证成功。

在一种实施方式中,校验数据是参考区块的父区块的哈希值;该处理单元具体用于:

获取第二节点设备所同步的n个区块中的第一个区块的待验哈希值;

根据待验哈希值与参考区块的父区块的哈希值验证第一个区块与参考区块的父区块是否具备父子关系;

若具备父子关系,则根据待验哈希值检测n个区块是否连续;

若连续,则确认n个区块验证成功。

在一种实施方式中,该获取单元具体用于:

获取区块链网络中的参考区块链的区块高度,以及获取第一节点设备本地存储的第一区块链的区块高度;

将参考区块链的区块高度与第一区块链的区块高度之间的n个区块确定为第一节点设备待同步的区块;

根据n个区块构建目标骨架。

在一种实施方式中,区块链网络中包括备选节点集,备选节点集中包含多个与第一节点设备相连接的备选节点设备,第二节点设备是从备选节点集中选择的任一个备选节点设备;该处理单元还用于:

若验证失败,重新从备选节点集中选择一个备选节点设备确定为第二节点设备。

在一种实施方式中,该获取单元还用于:

若对备选节点集中所有备选节点设备返回的区块均验证失败,则重新获取目标骨架对应的校验数据;或者重新获取新的目标骨架。

在一种实施方式中,该处理单元还用于:

从目标骨架中读取n个数据单元按序存储的n个区块,并将读取的n个区块添加至第一节点设备本地存储的第一区块链上。

一方面,本申请实施例提供一种同步处理设备,该同步处理设备是区块链网络中的第一节点设备,区块链网络还包括第二节点设备,第一节点设备与第二节点设备相连接,该同步处理设备包括输入设备和输出设备,还包括:

处理器,适于实现一条或多条指令;以及,

计算机存储介质,计算机存储介质存储有一条或多条指令,一条或多条适于由处理器加载并执行上述的同步处理方法。

一方面,本申请实施例提供一种计算机存储介质,计算机存储介质存储有一条或多条指令,一条或多条指令适于由处理器加载并执行上述的同步处理方法。

本申请实施例中,第一节点设备在进行同步处理时,获取目标骨架及目标骨架对应的校验数据,当接收到第二节点设备所同步的该目标骨架所需的n个区块,由第一节点设备采用目标骨架对应的校验数据对该n个区块进行验证,并在验证成功之后将该n个区块填充至目标骨架中从而完成该n个区块的同步。通过这种骨架填充的同步处理方式,基于一个骨架对应的一个同步任务,可以一次性同步多个区块,有效地提高了同步处理效率;并且,针对同步获得的区块,采用骨架对应的校验数据进行快速校验,提升了校验效率,进一步提升了同步处理的效率。

附图说明

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

图1示出了本申请一个示例性实施例提供的区块链的基础架构图;

图2示出了本申请一个示例性实施例提供的区块链的结构示意图;

图3示出了本申请一个示例性实施例提供的一种区块链网络的架构示意图;

图4示出了本申请一个示例性实施例提供的一种骨架的结构示意图;

图5示出了本申请一个示例性实施例提供的一种同步处理方法的流程图;

图6示出了本申请另一个示例性实施例提供的一种同步处理方法的流程图;

图7示出了本申请一个示例性实施例提供的一种同步处理装置的结构示意图;

图8示出了本申请一个示例性实施例提供的一种同步处理设备的结构示意图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本申请实施例涉及区块链技术。区块链是指一套去中心化、具备分布式存储特点的基础架构,具体是一种按照时间顺序将数据区块用类似链表的方式组成的数据结构,能够安全存储有先后关系的、能在系统内进行验证的数据,并以密码学方式保证数据不可篡改和不可伪造。

图1示出了本申请一个示例性实施例提供的区块链的基础架构图;如图1所示,区块链的基础架构按照由底至上的顺序主要包括101-105共5个层级结构。

其中:

(1)信息数据和默克尔(merkle)树位于底层101。此处的信息数据是指请求发布至区块链网络,但尚未形成区块的原始数据,例如可以是业务数据、交易数据等等。这些原始数据需要进一步加工(例如经过区块链网络中各节点的验证、进行散列运算等)才能被写入区块内。merkle树是区块链技术的重要组成部分,区块链不会直接保存明文的原始数据,原始数据需要被执行散列运算,以散列值的方式被存储。默克尔树就用于将多个原始数据经散列运算形成的散列值按照二叉树结构组织起来,保存在区块的块体中。

(2)区块位于层级102。区块即数据块,底层101的信息数据经过进一步加工之后被写入至层级102中的区块内。多个区块按序连接成链式结构,即形成区块链,链式结构中,前一区块与相邻的后一区块具备父子关系。图2示出了本申请一个示例性实施例提供的区块链的结构示意图;如图2所示,区块i-1(i为正整数)、区块i和区块i+1按序连接成链式结构。其中,区块i分为区块头和区块体两部分,区块头包含前一区块i-1的摘要值及本区块i的摘要值(即本区块的默克尔(merkle)根)。区块体包含本区块i的完整数据,并以merkle树的形式组织在一起。区块i-1与区块i具备父子关系,即区块i-1是区块i的父区块,区块i是区块i-1的子区块。同理,区块i是区块i+1的父区块,区块i+1是区块i的子区块。

(3)区块链所遵循的协议与机制位于层级103。这些协议可包括:p2p(peer-to-peer,对等式网络)协议;机制可包括但不限于:广播机制、共识机制(包括pow(proofofwork,工作量证明)机制、pos(proofofstake,权益证明)机制等核心机制)。

(4)区块链网络位于层级104。区块链网络由多个节点设备组成;节点设备可包括但不限于:pc(personalcomputer,个人计算机)、服务器、用于比特币挖矿设计的矿机、智能手机、平板电脑、移动计算机等等。区块链网络中的各个节点设备以p2p方式组网,节点设备与节点设备之间按照p2p协议相互通信;各个节点设备共同遵循广播机制、共识机制(包括pow机制、pos机制等核心机制),共同保证区块链上的数据的不可篡改、不可伪造性,同时实现区块链的去中心化、去信任化等特性。

(5)智能合约位于上层105。智能合约是一组情景——应对型的程序化规则和逻辑,是部署在区块链上的去中心化、可信息共享的程序代码。签署合约的各参与方就合约内容达成一致,以智能合约的形式部署在区块链中,即可不依赖任何中心机构自动化地代表各签署方执行合约。

区块链的类型可包括:公有链(publicblockchain)、私有链(privateblockchain)和联盟链(consortiumblockchain)。公有链对外公开,任何人可以加入并访问区块链;公有链上的区块可以被任何人查看,任何人也可以在公有链上发起交易,还可以随时参与公有链的共识过程。私有链仅在私有组织内部使用,区块链上的读写权限、参与记账权限按私有组织规则来制定;通常用于企业内部的数据管理、审计等。联盟链仅限于联盟成员参与,区块链上的读写权限、参与记账权限按联盟规则来制定;一般用于机构间的交易、结算或清算等场景。图1所示的区块链的基础架构是各种类型的区块链的发展基础,可以理解的是,不同类型的区块链对应的区块链网络的组网方式也会有一些差异。由于区块链具备去中心化、分布式存储、数据的不可篡改、不可伪造等特性,越来越多的业务活动(例如借贷活动、金融交易活动)基于区块链技术展开,以利用区块链的特性来保证业务活动的公平性和公开性。

图3示出了本申请一个示例性实施例提供的一种区块链网络的架构示意图;该区块链网络包括多个节点设备(图中以7个节点设备为例进行说明);如图4所示,节点设备1和节点设备2为共识节点设备,而节点设备3至节点设备7均为同步节点设备。其中,共识节点设备是指不仅能够执行区块同步过程,同时还能够参与区块共识过程的节点设备;同步节点设备是仅能够执行区块同步过程,并不能参与区块共识过程的节点设备。

区块链是一种分布式的应用模式,区块链网络中的每个节点设备各自存储有一条区块链;具体地:在图3所示的区块链网络中,节点设备1在该节点设备1的存储空间中存储区块链1,节点设备2在该节点设备2的存储空间中存储区块链2,节点设备3在该节点设备3的存储空间中存储区块链3,以此类推。由于网路连接性能差异、处理性能差异、加入区块链网络的时间差异等原因,区块链网络中的节点设备所存储的区块链之间会出现差异,区块链网络中的各个节点设备需要通过同步等手段来保持各个节点设备所存储的区块链之间的一致性。例如:区块链网络中已存在n(n为正整数)个节点设备,某个节点设备n+1新加入至区块链网络中,对于该节点设备n+1而言,其存储空间中尚未保存任何区块,该节点设备n+1的区块链n+1的区块高度为0,而对已存在于区块链网络中的节点设备n则可能已存储了10001个区块,该节点设备n的存储空间所存储的区块链n的区块高度可能为10000,那么,节点设备n+1落后于节点设备n,该节点设备n+1需要执行区块同步过程,获取区块高度0至区块高度10000之间的所有区块来更新自己的区块链n+1,以追赶上节点设备n。实际应用中,区块链网络中产生的新区块需要先由共识节点设备进行共识,共识成功之后由共识节点设备将该新区块添加至该共识节点设备本地存储的区块链上,区块链网络中的同步节点设备再从共识节点设备处获取该新区块并添加至该同步节点设备本地存储的区块链上,完成区块同步过程。基于此,通常认可共识节点设备中存储的区块链是区块链网络中最长(或最完整)的区块链,可以将共识节点设备存储的区块链作为同步处理过程中的参考区块链。

基于图3所示的区块链网络的架构,本申请实施例提出一种同步处理方案,该方案引入骨架(framework)的概念。图4示出了本申请一个示例性实施例提供的一种骨架的结构示意图;骨架是一种数据结构。一个骨架包含多个数据单元401,每个数据单元用于存储一个区块。参见图4所示的例子,设区块链网络中的任一节点设备(假设是图3所示的节点设备3)需要同步区块1至区块100这100个区块,那么该节点设备3的同步处理流程可包括如下步骤(1)-(4):

(1)根据待同步的区块构建骨架集合,该骨架集合中包含一个或多个骨架。

如图4所示,设骨架集合中共包括10个骨架,每个骨架均包括10个数据单元401,这些数据单元401被预留以在该节点设备3获取到同步区块之后,用来存储这些同步区块;以骨架1为例:骨架1包括10个数据单元401,这些数据单元按序排列,第一个数据单元用于存储区块1,第二个数据单元用来存储区块2,以此类推。骨架集合中,每个骨架包括的数据单元的数量可以相同,如图4所示每个骨架均可包括10个数据单元;当然,各个骨架包括的数据单元数量也可以不同,例如图4中骨架1可包括10个数据单元,骨架2可包括5个数据单元,骨架3可包括15个数据单元,等等。节点设备3可以根据实际情况来设置骨架的数量及骨架包括的数据单元的数量,此处的实际情况可包括但不限于:备选节点集中的节点设备的数量和处理能力、节点设备3的实际并发处理能力等等。

(2)为骨架集合创建同步任务集合,该同步任务集合中包含一个或多个同步任务;一个骨架对应一个同步任务。

如图4所示,骨架1对应同步任务1,骨架2对应同步任务2,骨架3对应同步任务3,以此类推。每个骨架对应的同步任务用于指示返回该骨架用于存储的多个区块,例如:骨架1对应的同步任务1用于指示向节点设备3返回骨架1用于存储的区块1-区块10;再如:骨架2对应的同步任务2用于指示向节点设备3返回骨架2用于存储的区块11-区块20。可以理解的是,同步任务中携带指示信息,该指示信息可以包括骨架中首尾两个数据单元对应的区块的索引,此处的索引可以是区块的哈希值,或者是区块的生成时间戳,或者是区块对应的区块高度。这样当其他节点设备接收到该同步任务之后,则根据指示信息中的两个区块的索引向该节点设备3返回该骨架中该两个区块及两个区块之间的所有区块。该指示信息也可以包括骨架用于存储的所有区块的索引,这样当其他节点设备接收到该同步任务之后,则根据所需的所有区块的索引向该节点设备3返回所需的所有区块。

(3)选择执行同步任务的备选节点设备。

首先确定备选节点集,备选节点集中包含的是与节点设备3直接相连接的备选节点设备。如图3所示,节点设备3的备选节点集中包括节点设备1、节点设备4-节点设备7。由于节点设备1是共识节点设备,还需执行共识任务,因此为了避免给节点设备1造成处理负担,同时为了提升同步效率,可以从备选节点集中选择节点设备4-节点设备7来作为执行同步任务的备选节点设备。其次再为每个同步任务匹配相应的备选节点设备,这里的匹配主要有如下策略:

策略一:按照存储情况匹配。将同步任务匹配给存储有相应区块的备选节点设备;例如:同步任务1要求同步区块1-区块10,那么选择存储有区块1-区块10的备选节点设备来执行同步任务1;再如:同步任务2要求同步区块81-区块90,那么选择存储有区块81-区块90的备选节点设备来执行同步任务2。

策略二:按照处理性能匹配。可按照处理性能来从备选节点集中选择一个备选节点设备执行某个同步任务。例如:节点设备4的处理性能优于节点设备5,可以选择节点设备4来执行同步任务1。处理性能包括但不限于cpu处理速度、并发处理量、网路带宽资源等等。处理性能越高,表示执行度越高,越能够快速执行同步任务。

策略三:按照信任度匹配。信任度是指用于描述节点设备可信任的程度的信息,信任度越高,表示该节点设备可信任的程度越高,通常,官方机构所使用的节点设备的信任度高于非官方机构所使用的节点设备的信任度。在一种实施方式中,信任度可以是采用分值来表示,例如信任度分值范围包括[0,10],信任度分值越高,则表示可信任程度越高。另一种实施方式中,信任度可以采用等级来表示,例如信任度等级包括高、中、低三个等级,该三个等级的可信任的程度依次降低。可按照信任度从备选节点集中选择一个备选节点设备来执行某个同步任务。例如:节点设备4的信任度高于节点设备5,可以选择节点设备4来执行同步任务1。

一个同步任务由一个节点设备来执行,一个节点设备可执行多个同步任务。可以理解的是,上述策略并非穷举,本申请实施例还可适用于其他的策略,例如:随机匹配策略,即可以从备选节点集中随机选取一个备选节点设备执行某个同步任务;再如:加权平均策略,即可以为多个影响因子(存储情况因子、信任度因子、处理性能因子)分别设置权重,按照加权平均的方式从备选节点集中选择一个备选节点设备来执行该同步任务。另外,上述策略二和策略三中,如果被选择用于执行某个同步任务的备选节点设备本身并未存储该同步任务所指示的待同步的区块,该备选节点设备可以从区块链网络中的其他节点设备(如共识节点设备)处获取该区块并返回给第一节点设备,例如:同步任务1要求同步区块1-区块10,通过策略二或策略三选择节点设备4来执行同步任务1,但是该节点设备4中并未存储该区块1-区块10,那么该节点设备4可以从共识节点设备处获得该区块1-区块10并返回给第一节点设备。

(4)并发多个同步任务,由选择同步的备选节点设备来执行这些同步任务。

以图4所示为例,设同步任务1和同步任务3由节点设备4执行,同步任务2、同步任务4和同步任务6由节点设备5来执行,同步任务5、同步任务6和同步任务9由节点设备6来执行,同步任务7、同步任务8和同步任务10由节点设备7来执行。那么,节点设备3可以一次性并发这10个同步任务,执行同步的这些备选节点设备(即节点设备4、节点设备5、节点设备6和节点设备7)可内部采用串行或并行方式来执行这些同步任务,将节点设备3所需的区块返回给节点设备3,从而使得节点设备3一次性同步处理过程就能获得所需同步的区块。

(5)对接收到的区块进行验证。

当接收到执行同步任务的备选节点设备返回的区块后,第一节点设备会对这些区块进行验证,验证的目的在于保证区块的准确性和安全性。在区块链网络中,第一节点设备对接收到的区块所执行的常规验证流程包括:当某个备选节点设备在向第一节点设备同步区块时,该备选节点设备会采用自己保存的私钥对该区块进行签名,第一节点设备接收到该区块后再采用该备选节点设备发布至区块链网络中的公钥对该区块进行验签,这即是对接收到的区块进行验签的过程。本申请实施例中对接收到的区块的验证过程是指非常规的验证过程,该非常规的验证过程可以在第一节点设备对接收到的区块验签成功之后被执行,该非常规的验证过程可以参见后续实施例的详细描述。

(6)验证成功的区块被填充至相应的骨架的数据单元中。

经过上述(1)-(6),第一节点设备就完成一次同步过程。需要说明的是,第一节点设备还设有异常处理机制,用于针对一些异常情况进行处理,该异常情况包括但不限于:某个同步任务未匹配到对应执行的节点设备的情况,例如备选节点集中没有节点设备完整存储了某个骨架所需的区块;那么有可能骨架构建得不够合理,因此针对此异常情况的处理机制可以是重新构建骨架,重新更新同步任务;当然,针对此异常情况的处理机制也可以兼容现有的同步方式,将未匹配到节点设备的同步任务对应的骨架所需的区块逐个逐个的进行同步。

本申请实施例提出的这种骨架填充的同步处理方案,基于一个骨架对应的一个同步任务,可以一次性同步多个区块,有效地提高了同步处理效率;进一步,在一次同步处理过程中还可以并发多个骨架对应的同步任务,这样基于多个骨架可以一次性同步更多的区块,进一步提升了同步处理的效率。并且,针对同步获得的区块,采用骨架对应的校验数据进行快速校验,提升了校验效率,进一步提升了同步处理的效率。

图5示出了本申请一个示例性实施例提供的一种同步处理方法的流程图;该方法由区块链网络中的第一节点设备执行,该第一节点设备可以是区块链网络中的任一个节点设备,本申请后续实施例以第一节点设备是图3所示的区块链网络中的节点设备3为例进行说明。区块链网络还包括第二节点设备,该第二节点设备是指区块链网络中除第一节点设备之外的任一个节点设备,并且第一节点设备与第二节点设备相连接。该方法包括以下步骤s501-s504:

s501,获取目标骨架,目标骨架包括n个数据单元,n个数据单元用于存储第一节点设备待同步的n个区块,n个区块与n个数据单元一一对应,n为正整数。

目标骨架中的n个数据单元按序排列,n个区块是区块链网络中的连续区块;n个数据单元中的第i个数据单元用于存储n个区块中的第i个区块;i为正整数且1≤i≤n。目标骨架可以是前述的骨架集合中的任一个,参见图4所示的示例,目标骨架可以是骨架1-骨架10中的任一个骨架,以目标骨架为骨架1为例,n为10,目标骨架的第一个数据单元用于存储区块1,目标骨架的第二个数据单元用于存储区块2,以此类推。

s502,获取目标骨架对应的校验数据。

目标骨架对应的校验数据用于对目标骨架待存储的n个区块进行验证,验证的目的在于保证目标骨架待存储的n个区块的准确性和安全性。

s503,当接收到第二节点设备同步的n个区块时,采用校验数据对n个区块进行验证。

s504,若验证成功,将n个区块填充至目标骨架的n个数据单元中。

步骤s503-s504中,第一节点设备可以根据目标骨架所需的n个区块向第二节点设备发送目标同步任务,由第二节点设备执行该目标同步任务,向第一节点设备返回同步的n个区块;第一节点设备采用目标骨架对应的校验数据来对这n个区块进行验证。如果验证成功,表示第二节点设备所同步的n个区块是未被篡改的、正确的区块,该n个区块可以被信任,那么,第一节点设备可以将这n个区块填充至目标骨架的n个数据单元中。相反,如果验证失败,表示第二节点设备所同步的n个区块已被篡改,是错误的、不可被信任的区块,那么第一节点设备就不能将该n个区块填充至目标骨架中,第一节点设备可以丢弃该n个不被信任的区块,重新基于目标骨架进行同步。

填充的过程是指将区块存储至对应的数据单元中的过程。以目标骨架为图4所示的骨架1为例,填充过程包括:在第二节点设备同步的区块1-区块10中,将区块1存储至目标骨架的第一个数据单元中,将区块2存储至目标骨架的第二个数据单元中,以此类推。

可以理解的是,本申请实施例中,目标骨架的数据单元按序排列仅为一种举例,目标骨架的数据单元也可以不按序排;当然,目标骨架中所存储的n个区块也可以不是连续区块;或者,目标骨架中的数据单元也可以不用按序来存储n个区块;在此情况下,目标同步任务中包含的指示信息则包含n个区块的索引即可。

本申请实施例中,第一节点设备在进行同步处理时,获取目标骨架及目标骨架对应的校验数据,当接收到第二节点设备所同步的该目标骨架所需的n个区块,由第一节点设备采用目标骨架对应的校验数据对该n个区块进行验证,并在验证成功之后将该n个区块填充至目标骨架中从而完成该n个区块的同步。通过这种骨架填充的同步处理方式,基于一个骨架对应的一个同步任务,可以一次性同步多个区块,有效地提高了同步处理效率;并且,针对同步获得的区块,采用骨架对应的校验数据进行快速校验,提升了校验效率,进一步提升了同步处理的效率。

图6示出了本申请另一个示例性实施例提供的一种同步处理方法的流程图;该方法由区块链网络中的第一节点设备执行,该第一节点设备可以是区块链网络中的任一个节点设备,本申请后续实施例以第一节点设备是图3所示的区块链网络中的节点设备3为例进行说明。区块链网络还包括第二节点设备,该第二节点设备是指区块链网络中除第一节点设备之外的任一个节点设备,并且第一节点设备与第二节点设备相连接。该方法包括以下步骤s601-s608:

s601,获取区块链网络中的参考区块链的区块高度,以及获取第一节点设备本地存储的第一区块链的区块高度。

参考区块链是指区块链网络中的各个节点设备存储的区块链中,最长(或最完整)的那条区块链,通常是指共识节点设备所存储的区块链。区块高度用于表示连接在区块链上的区块数量。区块高度是区块的标志符,可用来指示区块在区块链中的位置;区块链中创始区块的区块高度默认为0,创始区块之后的第一个区块的区块高度为1(该第一个区块简称为区块1),创始区块之后的第二个区块的区块高度为2(该第二个区块简称区块2),以此类推。举例来说,参考区块链的当前区块的区块高度为100(此当前区块可简称为区块100),这表示已经有100个区块被堆叠在创始区块之上了,即从创始区块到区块100之间形成的参考区块链上的区块数量为101个。

s602,将参考区块链的区块高度与第一区块链的区块高度之间的n个区块确定为第一节点设备待同步的区块。

s603,根据n个区块构建目标骨架。

步骤s602-s603中,假设参考区块链的区块高度为200,而第一区块链的区块高度为100,那么它们之间相差的100个区块包括区块101-区块200,这相差的100个区块则为第一节点设备待同步的区块,根据这些待同步的区块中的n个连续区块可构建目标骨架,该目标骨架可以是图4所示的任一骨架,该目标骨架的数据结构也可以参见图4所示,在此不赘述。

s604,获取目标骨架对应的校验数据。

目标骨架对应的校验数据用于对目标骨架待存储的n个区块进行验证,验证的目的在于保证目标骨架待存储的n个区块的准确性和安全性。

s605,确定n个区块中的第一个区块在区块链网络中的参考区块链上所对应的参考区块,以及n个区块中的最后一个区块在参考区块链上所对应的关键区块。

该n个区块中的第一个区块与参考区块的对应关系是指:该n个区块中的第一个区块在第二节点设备存储的第二区块链上的区块高度与参考区块在参考区块链上的区块高度一致;例如:该n个区块中的第一个区块是第二节点设备存储的第二区块链上的区块1,那么参考区块是指参考区块链上的区块1。同样,该n个区块中的最后一个区块与关键区块之间的对应关系是指:该n个区块中的最后一个区块在第二节点设备存储的第二区块链上的区块高度与关键区块在参考区块链上的区块高度一致;例如:该n个区块中的最后一个区块是第二节点设备存储的第二区块链上的区块100,那么关键区块是指参考区块链上的区块100;按此实例可知,第一节点设备待同步的区块为参考区块链上的区块1-区块100,那么就需要检测第二节点设备是否具备该区块1-区块100。

s606,获取参考区块的哈希值和关键区块的哈希值。

s607,向第二节点设备发送查询请求,查询请求中包括参考区块的哈希值和关键区块的哈希值;查询请求用于请求第二节点设备根据参考区块的哈希值和关键区块的哈希值查询第二节点设备中是否存储有n个区块。

在一种实施方式中,n个区块为区块链网络中的连续区块,那么步骤s606-s607中,可以将参考区块的哈希值和关键区块的哈希值携带于查询请求中发给第二节点设备,由第二节点设备自查自己是否已存储了参考区块至关键区块之间的n个区块。按上述实例,第一节点设备待同步的n个区块是区块1-区块100,则第一节点设备可以向第二节点设备发送查询请求,该查询请求中携带区块1的哈希值和区块100的哈希值,那么第二节点设备可以根据查询请求查询自己是否已存储了区块1-区块100;如果查询成功,即第二节点设备确认自己已完整存储了区块1-区块100,第二节点设备就向第一节点设备返回查询成功响应;如果查询失败,即第二节点设备确认自己未存储或未完整存储区块1-区块100(例如只存储了区块1-区块40,而缺少区块41-区块100),第二节点设备就向第一节点设备返回查询失败响应。

s608,若接收到第二节点设备的查询成功响应,向第二节点设备发送目标同步任务,目标同步任务用于指示第二节点设备返回n个区块。

s609,当接收到第二节点设备同步的n个区块时,采用校验数据对n个区块进行验证。

第一节点设备待同步的区块是指第一节点设备所缺失的但存在于参考区块链上的区块,按上述例子,设第一节点设备待同步的区块为区块1-区块100,而这些区块由第二节点设备同步给第一节点设备,那么第一节点设备需要检测第二节点设备所同步的这些区块是否就是参考区块链上的区块1-区块100,而验证过程就是为了达到上述检测的目的。

在一种实施方式中,校验数据是指参考区块的哈希值;该步骤s609的验证流程可包括以下步骤s11-s13:

s11,获取第二节点设备所同步的n个区块中的第一个区块的待验哈希值。

s12,若待验哈希值与参考区块的哈希值相同,则根据参考区块的哈希值检测n个区块是否连续。

s13,若连续,则确认n个区块验证成功。

步骤s11-s13中,通过比对第二节点设备所同步的n个区块中的第一个区块与参考区块之间的哈希值是否相同,来确认二者是否是同一区块。如果二者相同,表示第二节点设备所同步的n个区块中的第一个区块与参考区块是同一区块,表示第二节点设备中存储的n个区块中的第一个区块是正确的区块。进一步再根据连续区块的特点,即子区块存储了父区块的哈希值,以此特点来检测第二节点设备返回的n个区块是否是连续区块,如果是连续区块,就确认第二节点设备返回的n个区块验证成功,也就是说,如果验证成功,表示第二节点设备同步的n个区块是正确的、未被篡改的、可信任的区块。相反,如果待验哈希值与参考区块的哈希值不同,或者n个区块不连续,则验证失败,表示第二节点设备同步的n个区块不可信任。

在另一种实施方式中,校验数据是参考区块的父区块的哈希值;该步骤s609的验证流程可包括以下步骤s21-s24:

s21,获取第二节点设备所同步的n个区块中的第一个区块的待验哈希值。

s22,根据待验哈希值与参考区块的父区块的哈希值验证第一个区块与参考区块的父区块是否具备父子关系。

s23,若具备父子关系,则根据待验哈希值检测n个区块是否连续。

s24,若连续,则确认n个区块验证成功。

步骤s21-s24中,本实施方式中获取参考区块的父区块的哈希值,由于区块链中的子区块的哈希值与父区块的哈希值之间存在关联性,因此可以根据待验哈希值与参考区块的父区块的哈希值之间是否具备该关联性,来确认第二节点设备返回的n个区块中的第一个区块与该参考区块的父区块之间是否具备父子关系,如果具备父子关系,表示第二节点设备中存储的n个区块中的第一个区块正确的区块。进一步再根据连续区块的特点,即子区块存储了父区块的哈希值,以此特点来检测第二节点设备返回的n个区块是否是连续区块,如果是连续区块,就确认第二节点设备返回的n个区块验证成功,也就是说,如果验证成功,表示第二节点设备同步的n个区块是正确的、未被篡改的、可信任的区块。相反,如果待验哈希值与参考区块的哈希值不同,或者n个区块不连续,则验证失败,表示第二节点设备同步的n个区块不可信任。

s610,若验证成功,将n个区块填充至目标骨架的n个数据单元中。

s611,从目标骨架中读取n个数据单元按序存储的n个区块,并将读取的n个区块添加至第一节点设备本地存储的第一区块链上。

骨架是一种数据结构,目标骨架中存储了n个区块后,将这n个区块顺序读取并依次添加至第一节点设备本地存储的第一区块链上,这样第一区块链上就成功更新了n个区块。

s612,若验证失败,重新从备选节点集中选择一个备选节点设备确定为第二节点设备。

s613,若对备选节点集中所有备选节点设备返回的区块均验证失败,则重新获取目标骨架对应的校验数据;或者重新获取新的目标骨架。

步骤s612-s613体现了第一节点设备中的异常处理机制,该异常处理机制用于对异常情况进行处理;这里的异常情况包括两种情况,一是采用校验数据对第二节点设备所同步的n个区块进行验证但验证失败的情况。引起该异常情况是由于该第二节点设备所存储的n个区块不正确,或者该第二节点设备是恶意设备,那么针对此种异常情况的处理策略可以是:重新选择一个第二节点设备,即换一个节点设备来重新同步这n个区块。另一种异常情况是:如果备选节点集中所有备选节点设备返回的n个区块均验证失败,也就是说备选节点集中的所有备选节点设备都无法提供目标骨架所需的、正确的n个区块;引起该异常情况的原因可能目标骨架构建得不够合理,或者是从共识节点设备获得的校验数据有误,因此针对此种异常情况的处理策略可以是重新构建目标骨架,重新更新同步任务;或者,重新获取目标骨架对应的校验数据,例如换一个共识节点设备获取校验数据。当完成异常处理过程(即更换第二节点设备、重新构建目标骨架或重新获取校验数据)之后,重新再执行步骤s601-s613。

本申请实施例中,第一节点设备在进行同步处理时,获取目标骨架及目标骨架对应的校验数据,当接收到第二节点设备所同步的该目标骨架所需的n个区块,由第一节点设备采用目标骨架对应的校验数据对该n个区块进行验证,并在验证成功之后将该n个区块填充至目标骨架中从而完成该n个区块的同步。通过这种骨架填充的同步处理方式,基于一个骨架对应的一个同步任务,可以一次性同步多个区块,有效地提高了同步处理效率;并且,针对同步获得的区块,采用骨架对应的校验数据进行快速验证,提升了验证效率,进一步提升了同步处理的效率。另外,第一节点设备还设有异常处理机制,能够有效解决同步处理过程中所出现的异常情况。

图7示出了本申请一个示例性实施例提供的一种同步处理装置的结构示意图;该同步处理装置设于区块链网络中的第一节点设备中,具体的,该同步处理装置可以是运行于第一节点设备中的一个计算机程序(包括程序代码),例如该同步处理装置可以是第一节点设备中的一个应用软件;该同步处理装置可以用于执行图5-图6所示的方法中的相应步骤。该第一节点设备可以是区块链网络中的任一个节点设备,例如该第一节点设备是图3所示的区块链网络中的节点设备。区块链网络还包括第二节点设备,第一节点设备与第二节点设备相连接。如图7所示,该同步处理装置包括:

获取单元701,用于获取目标骨架,目标骨架包括n个数据单元,n个数据单元用于存储第一节点设备待同步的n个区块,n个区块与n个数据单元一一对应,n为正整数;以及用于获取目标骨架对应的校验数据;

处理单元702,用于当接收到第二节点设备同步的n个区块时,采用校验数据对n个区块进行验证;若验证成功,将n个区块填充至目标骨架的n个数据单元中。

在一种实施方式中,目标骨架中的n个数据单元按序排列,n个区块是区块链网络中的连续区块;n个数据单元中的第i个数据单元用于存储n个区块中的第i个区块;i为正整数且1≤i≤n。

在一种实施方式中,该获取单元701具体用于:

确定n个区块中的第一个区块在区块链网络中的参考区块链上所对应的参考区块,以及n个区块中的最后一个区块在参考区块链上所对应的关键区块;

获取参考区块的哈希值和关键区块的哈希值;

向第二节点设备发送查询请求,查询请求中包括参考区块的哈希值和关键区块的哈希值;查询请求用于请求第二节点设备根据参考区块的哈希值和关键区块的哈希值查询第二节点设备中是否存储有n个区块;

若接收到第二节点设备的查询成功响应,向第二节点设备发送目标同步任务,目标同步任务用于指示第二节点设备返回n个区块。

在一种实施方式中,校验数据是参考区块的哈希值;该处理单元702具体用于:

获取第二节点设备所同步的n个区块中的第一个区块的待验哈希值;

若待验哈希值与参考区块的哈希值相同,则根据参考区块的哈希值检测n个区块是否连续;

若连续,则确认n个区块验证成功。

在一种实施方式中,校验数据是参考区块的父区块的哈希值;该处理单元702具体用于:

获取第二节点设备所同步的n个区块中的第一个区块的待验哈希值;

根据待验哈希值与参考区块的父区块的哈希值验证第一个区块与参考区块的父区块是否具备父子关系;

若具备父子关系,则根据待验哈希值检测n个区块是否连续;

若连续,则确认n个区块验证成功。

在一种实施方式中,该获取单元701具体用于:

获取区块链网络中的参考区块链的区块高度,以及获取第一节点设备本地存储的第一区块链的区块高度;

将参考区块链的区块高度与第一区块链的区块高度之间的n个区块确定为第一节点设备待同步的区块;

根据n个区块构建目标骨架。

在一种实施方式中,区块链网络中包括备选节点集,备选节点集中包含多个与第一节点设备相连接的备选节点设备,第二节点设备是从备选节点集中选择的任一个备选节点设备;该处理单元702还用于:

若验证失败,重新从备选节点集中选择一个备选节点设备确定为第二节点设备。

在一种实施方式中,该获取单元701还用于:

若对备选节点集中所有备选节点设备返回的区块均验证失败,则重新获取目标骨架对应的校验数据;或者重新获取新的目标骨架。

在一种实施方式中,该处理单元702还用于:

从目标骨架中读取n个数据单元按序存储的n个区块,并将读取的n个区块添加至第一节点设备本地存储的第一区块链上。

根据本申请的一个实施例,图7所示的同步处理装置中的各个单元可以分别或全部合并为一个或若干个另外的单元来构成,或者其中的某个(些)单元还可以再拆分为功能上更小的多个单元来构成,这可以实现同样的操作,而不影响本申请的实施例的技术效果的实现。上述单元是基于逻辑功能划分的,在实际应用中,一个单元的功能也可以由多个单元来实现,或者多个单元的功能由一个单元实现。在本申请的其它实施例中,该同步处理装置也可以包括其它单元,在实际应用中,这些功能也可以由其它单元协助实现,并且可以由多个单元协作实现。根据本申请的另一个实施例,可以通过在包括中央处理单元(cpu)、随机存取存储介质(ram)、只读存储介质(rom)等处理元件和存储元件的例如计算机的通用计算设备上运行能够执行如图5-图6所示的相应方法所涉及的各步骤的计算机程序(包括程序代码),来构造如图7中所示的同步处理装置,以及来实现本申请实施例的同步处理方法。所述计算机程序可以记载于例如计算机可读记录介质上,并通过计算机可读记录介质装载于上述计算设备中,并在其中运行。

本申请实施例中,第一节点设备在进行同步处理时,获取目标骨架及目标骨架对应的校验数据,当接收到第二节点设备所同步的该目标骨架所需的n个区块,由第一节点设备采用目标骨架对应的校验数据对该n个区块进行验证,并在验证成功之后将该n个区块填充至目标骨架中从而完成该n个区块的同步。通过这种骨架填充的同步处理方式,基于一个骨架对应的一个同步任务,可以一次性同步多个区块,有效地提高了同步处理效率;并且,针对同步获得的区块,采用骨架对应的校验数据进行快速验证,提升了验证效率,进一步提升了同步处理的效率。另外,第一节点设备还设有异常处理机制,能够有效解决同步处理过程中所出现的异常情况。

图8示出了本申请一个示例性实施例提供的一种同步处理设备的结构示意图。该同步处理设备是区块链网络中的第一节点设备,该第一节点设备可以是区块链网络中的任一个节点设备,例如该第一节点设备是图3所示的区块链网络中的节点设备。区块链网络还包括第二节点设备,第一节点设备与第二节点设备相连接。如图8所示,该同步处理设备至少包括处理器801、输入设备802、输出设备803以及计算机存储介质804。其中,处理器801、输入设备802、输出设备803以及计算机存储介质804可通过总线或者其它方式连接。计算机存储介质804可以存储在同步处理设备的存储器中,计算机存储介质804用于存储计算机程序,计算机程序包括程序指令,处理器801用于执行计算机存储介质804存储的程序指令。处理器801(或称cpu(centralprocessingunit,中央处理器))是同步处理设备的计算核心以及控制核心,其适于实现一条或多条指令,具体适于加载并执行一条或多条指令从而实现相应方法流程或相应功能。

本申请实施例还提供了一种计算机存储介质(memory),计算机存储介质是同步处理设备中的记忆设备,用于存放程序和数据。可以理解的是,此处的计算机存储介质既可以包括同步处理设备中的内置存储介质,当然也可以包括同步处理设备所支持的扩展存储介质。计算机存储介质提供存储空间,该存储空间存储了同步处理设备的操作系统。并且,在该存储空间中还存放了适于被处理器801加载并执行的一条或多条的指令,这些指令可以是一个或多个的计算机程序(包括程序代码)。需要说明的是,此处的计算机存储介质可以是高速ram存储器,也可以是非不稳定的存储器(non-volatilememory),例如至少一个磁盘存储器;可选的还可以是至少一个位于远离前述处理器的计算机存储介质。

该计算机存储介质中存储有一条或多条指令;由处理器801加载并执行计算机存储介质中存放的一条或多条指令,以实现上述同步处理方法实施例中的相应步骤;具体实现中,计算机存储介质中的一条或多条指令由处理器801加载并执行如下步骤:

获取目标骨架,目标骨架包括n个数据单元,n个数据单元用于存储第一节点设备待同步的n个区块,n个区块与n个数据单元一一对应,n为正整数;

获取目标骨架对应的校验数据;

当接收到第二节点设备同步的n个区块时,采用校验数据对n个区块进行验证;

若验证成功,将n个区块填充至目标骨架的n个数据单元中。

在一种实施方式中,目标骨架中的n个数据单元按序排列,n个区块是区块链网络中的连续区块;

n个数据单元中的第i个数据单元用于存储n个区块中的第i个区块;i为正整数且1≤i≤n。

在一种实施方式中,计算机存储介质中的一条或多条指令由处理器801加载并且还执行如下步骤:

确定n个区块中的第一个区块在区块链网络中的参考区块链上所对应的参考区块,以及n个区块中的最后一个区块在参考区块链上所对应的关键区块;

获取参考区块的哈希值和关键区块的哈希值;

向第二节点设备发送查询请求,查询请求中包括参考区块的哈希值和关键区块的哈希值;查询请求用于请求第二节点设备根据参考区块的哈希值和关键区块的哈希值查询第二节点设备中是否存储有n个区块;

若接收到第二节点设备的查询成功响应,向第二节点设备发送目标同步任务,目标同步任务用于指示第二节点设备返回n个区块。

在一种实施方式中,校验数据是参考区块的哈希值;计算机存储介质中的一条或多条指令由处理器801加载并执行采用校验数据对n个区块进行验证的步骤时,具体执行如下步骤:

获取第二节点设备所同步的n个区块中的第一个区块的待验哈希值;

若待验哈希值与参考区块的哈希值是否相同,则根据参考区块的哈希值检测n个区块是否连续;

若连续,则确认n个区块验证成功。

在一种实施方式中,校验数据是参考区块的父区块的哈希值;计算机存储介质中的一条或多条指令由处理器801加载并执行采用校验数据对n个区块进行验证的步骤时,具体执行如下步骤:

获取第二节点设备所同步的n个区块中的第一个区块的待验哈希值;

根据待验哈希值与参考区块的父区块的哈希值验证第一个区块与参考区块的父区块是否具备父子关系;

若具备父子关系,则根据待验哈希值检测n个区块是否连续;

若连续,则确认n个区块验证成功。

在一种实施方式中,计算机存储介质中的一条或多条指令由处理器801加载并执行获取目标骨架的步骤时,具体执行如下步骤:

获取区块链网络中的参考区块链的区块高度,以及获取第一节点设备本地存储的第一区块链的区块高度;

将参考区块链的区块高度与第一区块链的区块高度之间的n个区块确定为第一节点设备待同步的区块;

根据n个区块构建目标骨架。

在一种实施方式中,区块链网络中包括备选节点集,备选节点集中包含多个与第一节点设备相连接的备选节点设备,第二节点设备是从备选节点集中选择的任一个备选节点设备;计算机存储介质中的一条或多条指令由处理器801加载并且还执行如下步骤:

若验证失败,重新从备选节点集中选择一个备选节点设备确定为第二节点设备。

在一种实施方式中,计算机存储介质中的一条或多条指令由处理器801加载并且还执行如下步骤:

若对备选节点集中所有备选节点设备返回的区块均验证失败,则重新获取目标骨架对应的校验数据;或者重新获取新的目标骨架。

在一种实施方式中,计算机存储介质中的一条或多条指令由处理器801加载并且还执行如下步骤:

从目标骨架中读取n个数据单元按序存储的n个区块,并将读取的n个区块添加至第一节点设备本地存储的第一区块链上。

本申请实施例中,第一节点设备在进行同步处理时,获取目标骨架及目标骨架对应的校验数据,当接收到第二节点设备所同步的该目标骨架所需的n个区块,由第一节点设备采用目标骨架对应的校验数据对该n个区块进行验证,并在验证成功之后将该n个区块填充至目标骨架中从而完成该n个区块的同步。通过这种骨架填充的同步处理方式,基于一个骨架对应的一个同步任务,可以一次性同步多个区块,有效地提高了同步处理效率;并且,针对同步获得的区块,采用骨架对应的校验数据进行快速验证,提升了验证效率,进一步提升了同步处理的效率。另外,第一节点设备还设有异常处理机制,能够有效解决同步处理过程中所出现的异常情况。

以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。

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