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

一种区块头同步方法、设备及计算机可读存储介质

申请号 CN201910898431.7 申请日 2019-09-20 公开(公告)号 CN110572473A 公开(公告)日 2019-12-13
申请人 腾讯科技(深圳)有限公司; 发明人 李茂材; 陈秋平; 时一防; 朱耿良; 刘攀; 周开班; 杨常青; 王宗友; 孔利; 张劲松;
摘要 本申请实施例公开了一种区块头同步方法、设备及计算机可读存储介质,其中方法包括:获取网络中的第二节点的区块头高度,若存在至少一个第一区块头同步区间,则确定第二节点的区块头高度是否大于至少一个第一区块头同步区间中最大的区间的最大区块头高度,第一区块头同步区间为已分配的,且未同步完成的区块头同步区间,若确定第二节点的区块头高度大于最大区块头高度,则向第二节点分配第二区块头同步区间,第二区块头同步区间的最小区块头高度大于最大区块头高度,接收第二节点发送的第二区块头同步区间对应的区块头,若区块头满足存储条件,则存储该区块头。通过本实施例可以提高网络中节点之间信息同步的效率。
权利要求

1.一种区块头同步方法,其特征在于,应用于网络中的第一节点,所述方法包括:获取所述网络中的第二节点的区块头高度;

若存在至少一个第一区块头同步区间,则确定所述第二节点的区块头高度是否大于所述至少一个第一区块头同步区间中最大的区间的最大区块头高度,所述第一区块头同步区间为已分配的,且未同步完成的区块头同步区间;

若确定所述第二节点的区块头高度大于所述最大区块头高度,则向所述第二节点分配第二区块头同步区间,所述第二区块头同步区间的最小区块头高度大于所述最大区块头高度;

接收所述第二节点发送的所述第二区块头同步区间对应的区块头;

若所述区块头满足存储条件,则存储所述区块头。

2.根据权利要求1所述的方法,其特征在于,所述获取第二节点的区块头高度之后,所述方法还包括:判断是否存在至少一个所述第一区块头同步区间;

若不存在所述第一区块头同步区间,则向所述第二节点分配第三区块头同步区间,所述第三区块头同步区间的最小区块头高度大于所述第一节点的区块头高度。

3.根据权利要求2所述的方法,其特征在于,在判定存在至少一个第一区块头同步区间之后,所述方法还包括:判断存储的区块头中是否存在不连续区间;

若存在所述不连续区间,则向所述第二节点分配所述不连续区间;

若不存在所述不连续区间,则执行所述确定所述第二节点的区块头高度是否大于所述至少一个第一区块头同步区间中最大的区间的最大区块头高度的步骤。

4.根据权利要求3所述的方法,其特征在于,在判定不存在所述不连续区间之后,所述方法还包括:判断所述第一区块头同步区间中是否存在存储超时的区块头同步区间;

若存在所述存储超时的区块头同步区间,则向所述第二节点分配所述存储超时的区块头同步区间;

若不存在所述存储超时的区块头同步区间,则执行所述确定所述第二节点的区块头高度是否大于所述至少一个第一区块头同步区间中最大的区间的最大区块头高度的步骤。

5.根据权利要求1所述的方法,其特征在于,在判定第二节点的区块头高度大于所述最大区块头高度之后,所述方法还包括:判断所述第一区块头同步区间的数量是否小于第一阈值;

若所述第一区块头同步区间的数量小于所述第一阈值,则执行所述向所述第二节点分配第二区块头同步区间的步骤。

6.根据权利要求1至5中任意一项所述的方法,其特征在于,所述存储所述区块头之前,所述方法还包括:判断所述区块头的数量是否大于第二阈值;

若所述区块头的数量不大于所述第二阈值,则确定所述区块头满足存储条件。

7.根据权利要求6所述的方法,其特征在于,在判定区块头的数量不大于所述第二阈值之后,所述方法还包括:判断所述区块头是否连续;

若所述区块头连续,则确定所述区块头满足存储条件。

8.根据权利要求7所述的方法,其特征在于,在判定区块头连续之后,所述方法还包括:判断所述区块头对应的区块头同步区间是否为所述第二区块头同步区间;

若所述区块头对应的区块头同步区间为所述第二区块头同步区间,则确定所述区块头满足存储条件。

9.一种区块头同步设备,其特征在于,包括:处理器、存储器和通信接口,所述处理器、所述存储器和所述通信接口相互连接,其中,所述存储器用于存储计算机程序,所述计算机程序包括程序指令,所述通信接口用于与除自身外的其他节点进行通信,所述处理器被配置用于调用所述程序指令,执行如权利要求1至8中任一项所述的区块头同步方法。

10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有一条或多条指令,所述一条或多条指令适于由处理器加载并执行如权利要求1至8任一项所述的区块头同步方法。

说明书全文

一种区块头同步方法、设备及计算机可读存储介质

技术领域

[0001] 本申请涉及计算机网络领域,尤其涉及一种区块头同步方法、一种区块头同步设备及一种计算机可读存储介质。

背景技术

[0002] 区块链自提出以来一直受到人们的广泛关注,它所具有的去中心化特点颠覆了以往以第三方权威机构为中心的交易方式,实现了点对点的直接交流,让交易变得简洁,避免了交易时出现第三方不可靠的情况。
[0003] 网络中节点之间需要互相通信来同步区块头。在节点之间进行同步时,多个节点可能会向同一个节点发送相同的区块头,这会造成网络中节点之间信息同步效率低。

发明内容

[0004] 本申请实施例公开了一种区块头同步方法、设备及计算机可读存储介质,能够提高网络中节点之间信息同步效率。
[0005] 第一方面,本申请实施例提供了一种区块头同步方法,该方法包括:
[0006] 获取所述网络中的第二节点的区块头高度;
[0007] 若存在至少一个第一区块头同步区间,则确定所述第二节点的区块头高度是否大于所述至少一个第一区块头同步区间中最大的区间的最大区块头高度,所述第一区块头同步区间为已分配的,且未同步完成的区块头同步区间;
[0008] 若确定所述第二节点的区块头高度大于所述最大区块头高度,则向所述第二节点分配第二区块头同步区间,所述第二区块头同步区间的最小区块头高度大于所述最大区块头高度;
[0009] 接收所述第二节点发送的所述第二区块头同步区间对应的区块头;
[0010] 若所述区块头满足存储条件,则存储所述区块头。
[0011] 第二方面,本申请实施例提供了一种区块头同步装置,所述区块头同步装置运行于节点中,所述区块头同步装置包括:
[0012] 获取单元,用于获取所述网络中的第二节点的区块头高度;
[0013] 处理单元,用于若存在至少一个第一区块头同步区间,则确定所述第二节点的区块头高度是否大于所述至少一个第一区块头同步区间中最大的区间的最大区块头高度,所述第一区块头同步区间为已分配的,且未同步完成的区块头同步区间;
[0014] 所述处理单元,还用于若确定所述第二节点的区块头高度大于所述最大区块头高度,则向所述第二节点分配第二区块头同步区间,所述第二区块头同步区间的最小区块头高度大于所述最大区块头高度;
[0015] 所述获取单元,还用于接收所述第二节点发送的所述第二区块头同步区间对应的区块头;
[0016] 所述处理单元,还用于判断所述区块头是否满足存储条件;
[0017] 存储单元,用于存储所述区块头。
[0018] 第三方面,本申请实施例提供了一种区块头同步设备,包括处理器、存储器和通信接口,所述处理器、所述存储器和所述通信接口相互连接,其中,所述存储器用于存储计算机程序,所述计算机程序包括程序指令,所述通信接口用于与除自身外的其他节点进行通信,所述处理器被配置用于调用所述程序指令,执行上述第一方面任一项所述的区块头同步方法。
[0019] 第四方面,本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储有一条或多条指令,所述一条或多条指令适于由处理器加载并执行上述第一方面所述的区块头同步方法。
[0020] 本申请实施例中,第一节点获取所述网络中的第二节点的区块头高度。若第一节点中存在至少一个第一区块头同步区间,则确定所述第二节点的区块头高度是否大于所述至少一个第一区块头同步区间中最大的区间的最大区块头高度,所述第一区块头同步区间为已分配的,且未同步完成的区块头同步区间。可见,通过这一步可以判断出第二节点是否包含第一节点没有,且还未同步的区块头。若确定所述第二节点的区块头高度大于所述最大区块头高度,则向所述第二节点分配第二区块头同步区间,所述第二区块头同步区间的最小区块头高度大于所述最大区块头高度。可见,通过这一步可以保证第一节点分配的区块头同步区间一直连续。接收所述第二节点发送的所述第二区块头同步区间对应的区块头,若所述区块头满足存储条件,则存储所述区块头。通过对对端节点的一系列检测,避免了第一节点向多个节点分配同一区块头信息和向未包含第一节点没有,且还未同步的区块头的节点分配同步区间的情况,从而提高了网络中节点之间信息同步的效率。

附图说明

[0021] 为了更清楚地说明本申请实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0022] 图1是本申请实施例提供的一种网络的架构图;
[0023] 图2是本申请实施例提供的一种区块头同步方法的流程示意图;
[0024] 图3是本申请实施例提供的一种区块头同步方法的应用场景图;
[0025] 图4是本申请实施例提供的又一种区块头同步方法的流程示意图;
[0026] 图5a是本申请实施例提供的又一种区块头同步方法的应用场景图;
[0027] 图5b是本申请实施例提供的又一种区块头同步方法的应用场景图;
[0028] 图6是本申请实施例提供的又一种区块头同步方法的流程示意图;
[0029] 图7是本申请实施例提供的一种区块头同步装置的结构示意图;
[0030] 图8是本申请实施例提供的一种区块头同步设备的结构示意图。

具体实施方式

[0031] 下面将结合附图对本申请实施例中的技术方案进行描述。
[0032] 本申请实施例提供了一种区块头同步方法及设备,能够避免多个节点向同一节点发送相同的区块头,从而提高网络中节点之间信息同步的效率。
[0033] 为了能够更好地理解本申请实施例,下面对本申请实施例可应用的网络架构进行说明。
[0034] 图1是本申请实施例提供的一种网络的架构图。如图1所示,该网络包括了网络节点1~网络节点3和代理节点。图1以网络中包括3个网络节点和1个代理节点为例。当然,网络中还可包括3个以上或3个以下的网络节点。网络中还可包括2个以上的代理节点,或者网络中可以不包括代理节点,本申请实施例不做限定。
[0035] 所谓区块链是一种分布式数据存储、点对点传输(P2P传输)、共识机制、加密算法等计算机技术的新型应用模式,其本质上是一个去中心化的数据库;区块链可由多个借由密码学串接并保护内容的串连交易记录(又称区块)构成,用区块链所串接的分布式账本能让多方有效纪录交易,且可永久查验此交易(不可篡改)。从技术角度来说,区块链是一个全体联网节点参与维护的分布式数据库,用高度的数据冗余实现低成本的信任建立。其中,网络节点1~网络节点3为需要同步区块头的除代理节点之外的网络节点。例如,可以为简单支付验证(SPV,simplified payment verification)节点。
[0036] SPV节点也可称为轻型节点。SPV节点是指只保存了区块链的一部分的节点。例如,SPV节点只存储了区块链中所有的区块头信息以及与自身信息相关的区块信息,并不存储完整的区块链。SPV节点是依靠全节点存在的节点,不用为区块链网络提供算力。因此,SPV节点多为移动终端,例如为智能手机、平板电脑或移动计算机等。
[0037] 其中,代理节点是网络的中转站。代理节点在检测到区块链中加入了新区块之后,会获取区块链中新增加的区块的区块头。代理节点存储了区块链中的所有区块头。其中,节点可从其他存储区块头的节点中同步区块头,以及可从代理节点同步区块头。例如,网络节点1可从网络节点2和网络节点3中同步区块头,还可从代理节点中同步区块头。网络节点2和网络节点3同理。
[0038] 本申请实施例的技术方案可以应用于各种现有网络或者其他未来的新型网络。
[0039] 在现有的实际应用中,网络中的多个节点有可能向同一个节点同步相同的区块头,这会造成网络中节点之间信息同步效率低。例如,网络节点2、网络节点3和代理节点均向网络节点1同步区块头高度为[100,200]的区块头。网络节点1会接收到3份区块头高度为[100,200]的区块头。实际上网络节点1只需接收一份区块头高度为[100,200]的区块。因此,现有的区块头同步方法对网络的传输资源造成了浪费。为了节省网络的传输资源,本申请实施例提供了一种区块头同步方法,下面进行详细地介绍。
[0040] 请参见图2,图2是本申请实施例提供的一种区块头同步方法的流程示意图,如图2所示,区块头同步方法包括但不限于如下步骤201~步骤205。步骤201~步骤205的执行主体为网络中的第一节点。其中:
[0041] 201、第一节点获取网络中第二节点的区块头高度。
[0042] 其中,第一节点为需要同步区块头的除代理节点之外的节点。例如,第一节点可以为图1中网络节点1~网络节点3中的任意一个节点。第二节点为网络中除第一节点之外的节点。例如,第一节点为图1中的网络节点1时,第二节点为代理节点、网络节点2、网络节点3中的任意一个。
[0043] 可选的,第一节点获取第二节点的区块头高度之后,还可判断第一节点当前的区块头高度是否小于第二节点当前的区块头高度。若第一节点当前的区块头高度小于第二节点当前的区块头高度,则执行步骤202。若第一节点的高度大于或等于第二节点的高度,则结束本次流程操作,继续对下一个获取到区块头高度的节点进行判断。
[0044] 202、若第一节点中存在至少一个第一区块头同步区间,则确定第二节点的区块头高度是否大于第一区块头同步区间中最大区间的最大区块头高度,其中,该第一区块头同步区间为已分配,且同步未完成的区块头同步区间。
[0045] 其中,第一节点在获取到第二节点的区块头高度后,首先确定自身是否存在已分配,且同步未完成的区块头同步区间。若存在已分配,且同步未完成的区块头同步区间,则找出已分配,且同步未完成的区块头同步区间中最大的区块头同步区间。然后将最大的区块头同步区间的最大区块头高度与获取的第二节点的高度进行比较。确定第二节点中是否含有第一节点中没有,且还未向除第一节点以外的其他节点分配同步区间的区块头。其中,第一节点每次分配的区块头同步区间可以任意是大于0的正整数。
[0046] 203、若确定第二节点的区块头高度大于第一区块头同步区间中最大区间的最大区块头高度,则第一节点向第二节点分配第二区块头同步区间,其中,第二区块头同步区间的最小区块头高度大于第一区块头同步区间中最大区间的最大区块头高度。
[0047] 其中,第一节点确定第二节点的区块头高度大于第一区块头同步区间中最大区间的最大区块头高度,则第一节点向第二节点分配第二区块头同步区间。其中,向第二节点分配第二区块头同步区间指的是确定第二区块头同步区间之后,第一节点向第二节点发送需要同步的第二区块头同步区间。同步区间的最大范围可以是预先设置的。例如,同步区间的最大范围可以是100、200、500等。
[0048] 下面以每次同步区间为100为例进行举例说明。如图3所示,第一节点为网络节点1,网络节点1自身高度为N-400,获取的代理节点的高度为N,网络节点1已向网络节点2分配区块头同步区间(N-300,N-200],已向网络节点3分配区块头同步区间(N-400,N-300],且这两个区块头同步区间还未同步完成。此时,已分配,且未完成的区块头同步区间中最大的区间为(N-300,N-200],区间(N-300,N-200]中的最大高度为N-200,因此,将N-200与获取的代理节点的高度N进行比较。通过比较结果,确定代理节点的高度大于网络节点1已分配,且同步未完成的区块头同步区间中最大的区块头同步区间的最大高度,即代理节点中包含网络节点1中没有,且还未向除网络节点1以外的其他节点分配同步区间的区块头(N-200,N]。网络节点1向代理节点分配与区块头同步区间(N-300,N-200]连续的区块头同步区间(N-200,N-100]。
[0049] 可选的,第一节点向第二节点分配第二区块头同步区间与第一区块头同步区间中最大的第一区块头同步区间连续。这样可以避免节点在同步时出现大量不连续的区块头区间。
[0050] 204、第一节点接收第二节点发送的第二区块头同步区间对应的区块头。
[0051] 其中,第一节点在向第二节点分配第二区块头同步区间后,接收第二节点返回的第二区块头同步区间对应的区块头。
[0052] 例如,如图3所示,网络节点1向网络节点2分配区块头同步区间(N-300,N-200]后,接收网络节点2传回的区间为(N-300,N-200]的区块头信息。
[0053] 205、若区块头满足存储条件,则第一节点存储该区块头。
[0054] 其中,第一节点在收到第二节点发送的第二区块头同步区间对应的区块头之后,验证收到的区块头是否满足预设的存储条件,若满足存储条件,则第一节点存储收到的区块头。
[0055] 可见,通过实施图2所描述的方法,第一节点获取网络中的第二节点的区块头高度,若第一节点中存在至少一个第一区块头同步区间,则确定第二节点的区块头高度是否大于至少一个第一区块头同步区间中最大的区间的最大区块头高度,第一区块头同步区间为已分配的,且未同步完成的区块头同步区间。若确定第二节点的区块头高度大于最大区块头高度,则向第二节点分配第二区块头同步区间,其中,第二区块头同步区间的最小区块头高度大于最大区块头高度。接收第二节点发送的第二区块头同步区间对应的区块头,若区块头满足存储条件,则存储区块头。第一节点通过对获取的第二节点高度的判断,不仅可以避免第一节点向不同节点分配同一区块头同步区间,还可以避免第一节点向高度比自身的节点分配区块头同步区间,从而提高网络中节点间区块头同步的效率。
[0056] 请参见图4,图4是本申请实施例提供的又一种区块头同步方法的流程示意图。如图4所示,区块头同步方法包括但不限于如下步骤401~步骤413。步骤401~步骤413的执行主体为网络中的第一节点。其中:
[0057] 401、第一节点获取网络中第二节点的区块头高度。
[0058] 步骤401的具体实现方式与图2中步骤201的具体实现方式相同,在此不再赘述。
[0059] 402、第一节点判断是否正在与第二节点同步区块头。
[0060] 具体的,第一节点获取网络中第二节点的区块头高度之后,第一节点判断是否正在与第二节点同步区块头。若第一节点正在与第二节点同步区块头,则结束本次流程操作,继续对下一个获取到区块头高度的节点进行判断。
[0061] 例如,如图5a所示,第一节点为网络节点2,网络节点2正在与代理节点同步区块头同步区间为(N-200,N-100]的区块头信息。此时,网络节点2不会再向代理节点分配区块头同步区间(N-100,N]。
[0062] 若第一节点当前未与第二节点同步区块头,则执行步骤403。
[0063] 403、第一节点判断是否存在至少一个第一区块头同步区间。
[0064] 具体的,第一节点判断自身是否存在已分配,且还未完成区块头同步的第一区块头同步区间,若第一节点不存在已分配,且还未完成区块头同步的第一区块头同步区间,则执行步骤404。若存在已分配,且还未完成区块头同步的第一区块头同步区间,则执行步骤405。
[0065] 可选的,在判定第一节点存在已分配,且还未完成区块头同步的第一区块头同步区间之后,也可以直接执行步骤409,即不执行步骤404~步骤408。
[0066] 404、第一节点向第二节点分配第三区块头同步区间。
[0067] 具体的,第一节点向第二节点分配第三区块头同步区间。其中,第三区块头同步区间的最小区块头高度大于第一节点自身高度。可选的,第三区块头同步区间与第一节点区块头连续。
[0068] 例如,如图5a所示,如果第一节点为网络节点3。网络节点3的高度为N-100,网络节点3获取了代理节点的高度为N。网络节点3当前未与代理节点同步区块头,且网络节点3中不存在已分配,且还未完成同步的第一区块头同步区间。网络节点3向代理节点分配区块头同步区间(N-100,N]。
[0069] 405、第一节点判断存储的区块头中是否存在不连续区间。
[0070] 具体的,第一节点查看自身存储的区块头是否连续,若第一节点中存在不连续区间,则执行步骤406。其中,不连续区间指的是,节点中存储的区块头不连续。例如,第一节点存储了区间(0,N-600]、区间(N-500,N-400]和区间(N-300,N-200]的区块头信息,却没有区间(N-600,N-500]和区间(N-400,N-300]的区块头信息。
[0071] 若第一节点中不存在不连续区间,则执行步骤407。
[0072] 可选的,在判定第一节点中不存在不连续区间之后,也可以直接执行步骤409,即不执行步骤406~步骤408。
[0073] 406、第一节点向第二节点分配不连续区间。
[0074] 具体的,第一节点中存在不连续区间,第一节点向第二节点分配不连续区间。
[0075] 可选的,若第一节点中存在多个不连续区间,优先分配不连续区间中高度最小的不连续区间。
[0076] 例如,如图5a所示,如果第一节点为网络节点1。网络节点1的高度为N-200,网络节点1获取了代理节点的高度为N。网络节点1中存在不连续区间(N-600,N-500]和不连续区间(N-400,N-300],由于不连续区间(N-600,N-500]的高度小于不连续区间(N-400,N-300],网络节点1向代理节点分配区块头同步区间(N-600,N-500]。
[0077] 407、第一节点判断是否存在存储超时的区块头同步区间。
[0078] 具体的,第一节点查看已分配,且未完成的同步的第一区块头同步区间中是否存在超过预设时间仍未完成同步的区块头同步区间,若第一节点中存在超过预设时间仍未完成同步的区块头同步区间,则执行步骤408。
[0079] 若第一节点中不存在超过预设时间仍未完成同步的区块头同步区间,则执行步骤409。
[0080] 408、第一节点向第二节点分配存储超时的区块头同步区间。
[0081] 具体的,第一节点存在存储超时的区块头同步区间,第一节点向第二节点分配存储超时的区块头同步区间。
[0082] 可选的,若第一节点中存在多个存储超时的区块头同步区间,优先分配存储超时的区块头同步区间中高度最小的区块头同步区间。
[0083] 例如,如图5b所示,网络节点1为第一节点,网络节点1高度为N-200,获取了代理节点的高度为N。网络节点1已向网络节点2分配同步区间(N-600,N-500],已向网络节点3分配同步区间(N-400,N-300],但这两个区间在区块头存储时超时。由于超时区间(N-600,N-500]的高度小于超时区间(N-400,N-300]的高度,网络节点1向代理节点分配区块头同步区间(N-600,N-500]。
[0084] 409、第一节点判断第二节点的区块头高度是否大于第一区块头同步区间中最大区间的最大区块头高度。
[0085] 具体的,第一节点找出已分配,且同步未完成的区块头同步区间中最大的区块头同步区间,然后将最大的区块头同步区间的最大区块头高度与获取的第二节点的高度进行比较,若第二节点的区块头高度大于最大区块头高度,则执行步骤410。可选的,在判断第二节点的区块头高度大于最大区块头高度之后,也可以直接执行步骤411。
[0086] 若第二节点的区块头高度小于或等于最大区块头高度,则结束本次流程操作,继续对下一个获取到区块头高度的节点进行判断。
[0087] 410、第一节点判断第一区块头同步区间数量是否小于第一阈值。
[0088] 具体的,第一节点判断已分配,且未完成同步的区块头同步区间的数量是否小于第一阈值,若已分配,且未完成同步的区块头同步区间的数量小于第一阈值则执行步骤411。其中,第一阈值的取值可以是任意大于零的正整数。以第一阈值取值为5为例,网络节点1正在与网络节点2和网络节点3同步区块头信息,此时第一区块头同步区间为2,小于第一阈值5,则网络节点1可以向代理节点分配区块头同步区间。
[0089] 若已分配,且未完成同步的区块头同步区间的数量大于或等于第一阈值,则结束本次流程操作,继续对下一个获取到区块头高度的节点进行判断。
[0090] 411、第一节点向第二节点分配第二区块头同步区间。
[0091] 412、第一节点接收第二节点发送的第二区块头同步区间对应的区块头。
[0092] 413、若区块头满足存储条件,则第一节点存储该区块头。
[0093] 步骤411~步骤413的具体实现方式与图2中步骤203~步骤205的具体实施方式相同,在此不再赘述。
[0094] 可见,实施图4所描述的方法,在实施图2的基础上加入对网络中节点中是否存在不连续的区块头区间的判断,从而优先保证节点中存储的区块头的连续性。还加入了对是否存在存储超时的区块头存储区间的判断,保证分配的区块头同步区间最终都能同步成功,从而保证节点中存储的区块头的连续性。还加入了对节点是否正在同步区块头的判断,从而避免了向同步中的节点多次分配区块头同步区间而出现冲突。还加入了对节点已分配,且未完成同步的区块头同步区间数量的限制,避免同时同步的区块头数量过多导致区块头存储失败。
[0095] 请参见图6,图6是本申请实施例提供的又一种区块头同步方法的流程示意图。如图6所示,区块头同步方法包括但不限于如下步骤601~步骤618。步骤601~步骤618的执行主体为网络中的第一节点。其中:
[0096] 601、第一节点获取网络中第二节点的区块头高度。
[0097] 602、第一节点判断是否正在与第二节点同步区块头。
[0098] 603、第一节点判断是否存在至少一个第一区块头同步区间。
[0099] 604、第一节点向第二节点分配第三区块头同步区间。
[0100] 605、第一节点判断存储的区块头中是否存在不连续区间。
[0101] 606、第一节点向第二节点分配不连续区间。
[0102] 607、第一节点判断是否存在存储超时的区块头同步区间。
[0103] 608、第一节点向第二节点分配存储超时的区块头同步区间。
[0104] 609、第一节点判断第二节点的区块头高度是否大于第一区块头同步区间中最大区间的最大区块头高度。
[0105] 610、第一节点判断第一区块头同步区间数量是否小于第一阈值。
[0106] 611、第一节点向第二节点分配第二区块头同步区间。
[0107] 612、第一节点接收第二节点发送的第二区块头同步区间对应的区块头。
[0108] 步骤601~步骤612的具体实现方式与图6中步骤601~步骤612的具体实施方式相同,在此不再赘述。
[0109] 613、第一节点判断区块头的数量是否大于第二阈值。
[0110] 具体地,第一节点在接收到第二节点发送的区块头后,判断接收的区块头数量是否大于第二阈值。其中,第二阈值的大小为第一节点分配给第二节点的区块头同步区间包含的区块头数量。
[0111] 若第一节点收到的区块头数量大于第二阈值,则结束本次流程操作,从头开始,继续对下一个获取到区块头高度的节点进行判断。
[0112] 若第一节点收到的区块头数量小于或等于第二阈值,则执行步骤614。
[0113] 可选的,在判定第一节点收到的区块头数量小于或等于第二阈值后,也可以直接执行步骤616,即不执行步骤614和步骤615。
[0114] 614、第一节点判断区块头是否连续。
[0115] 具体地,第一节点判断接收的区块头是否是连续的,若接收的区块头连续,则执行步骤615;若接收的区块头不连续,则结束本次流程操作,继续对下一个获取到区块头高度的节点进行判断。可选的,第一节点可通知第二节点回收未同步完成的区块头。
[0116] 可选的,在判定接收的区块头连续后,也可以直接执行步骤616,即不执行步骤615。
[0117] 615、第一节点判断区块头对应的区块头同步区间是否为第二区块头同步区间。
[0118] 具体地,第一节点判断接收的区块头对应的区块头同步区间是否与分配给第二节点的第二区块头同步区间相同。若接收的区块头对应的区块头同步区间与分配给第二节点的第二区块头同步区间不相同,则结束本次流程操作,从头开始,继续对下一个获取到区块头高度的节点进行判断。
[0119] 若接收的区块头对应的区块头同步区间与分配给第二节点的第二区块头同步区间相同,则执行步骤616。
[0120] 例如,第一节点为网络节点1,网络节点1向网络节点2分配了同步区间(N-600,N-500]。在接收网络节点2发送的区块头信息后,网络节点1首先判断区块头数量是否大于
100,若区块头数量大于100,则不存储收到的区块头。若区块头数量不大于100,则判断收到的区块头是否连续,若区块头不连续,则不存储收到的区块头。若区块头连续,则判断区块头对应的区块头同步区间是否为(N-600,N-500],若区块头对应的区块头同步区间不为(N-
600,N-500],则不存储收到的区块头。若区块头对应的区块头同步区间为(N-600,N-500],则执行步骤616。
[0121] 616、第一节点存储区块头。
[0122] 具体地,第一节点存储收到的第二节点发送的区块头。
[0123] 617、第一节点判断区块头是否存储超时。
[0124] 具体地,第一节点判断是否在预设时间内成功存储收到的区块头。若在预设时间内成功存储收到的区块头,则结束本次流程操作,继续对下一个获取到区块头高度的节点进行判断。
[0125] 若在预设时间内未成功存储收到的区块头,则判定区块头存储超时,执行步骤618。
[0126] 618、第一节点记录存储超时的区块头对应的区块头同步区间。
[0127] 具体地,第一节点记录存储超时的区块头对应的区块头同步区间,该区间用于执行步骤607。通过步骤617和步骤618可以优先保证节点中区块头的连续,避免节点在同步中出现大量区块头不连续的情况。
[0128] 例如,如图5b所示,网络节点1向网络节点2分配了区块头同步区间(N-600,N-500]。但是网络节点1在接收到网络节点2发送的区块头信息后,区块头存储超时。网络节点
1会记录超时的同步区间(N-600,N-500],当网络节点1在与代理节点通信时,根据步骤607和步骤608,网络节点4会把记录的超时同步区间(N-600,N-500]分配给代理节点。
[0129] 可见,实施图6所描述的方法,在实施图4的基础上加入节点对接收的区块头的具体判断方式,通过对接收的区块头节点进行判断,保证了节点最终存的区块头为自身需要同步的区块头,避免了节点存储恶意节点发送的区块头以及同步中不完整的区块头。从而进一步提高了区块头同步的效率。
[0130] 上述详细阐述了本申请实施例的方法,为了便于更好地实施本申请实施例的上述方案,相应地,下面提供了本申请实施例的装置。
[0131] 请参见图7,图7是本申请实施例提供的区块头同步装置的结构示意图,该区块头同步装置可以搭载在上述方法实施例中的第一节点上。图7所示的区块头同步装置可以用于执行上述图2至图4所描述的方法实施例中的部分或全部功能。其中,各个单元的详细描述如下:
[0132] 获取单元701,用于获取所述网络中的第二节点的区块头高度;
[0133] 处理单元702,用于若存在至少一个第一区块头同步区间,则确定所述第二节点的区块头高度是否大于所述至少一个第一区块头同步区间中最大的区间的最大区块头高度,所述第一区块头同步区间为已分配的,且未同步完成的区块头同步区间;
[0134] 所述处理单元702,还用于若确定所述第二节点的区块头高度大于所述最大区块头高度,则向所述第二节点分配第二区块头同步区间,所述第二区块头同步区间的最小区块头高度大于所述最大区块头高度;
[0135] 所述获取单元701,还用于接收所述第二节点发送的所述第二区块头同步区间对应的区块头;
[0136] 所述处理单元702,还用于判断所述区块头是否满足存储条件;
[0137] 存储单元703,用于存储所述区块头。
[0138] 在一实施方式中,在获取第二节点的区块头高度之后,所述处理单元702还用于:
[0139] 判断是否存在至少一个所述第一区块头同步区间;
[0140] 若不存在所述第一区块头同步区间,则向所述第二节点分配第三区块头同步区间,所述第三区块头同步区间的最小区块头高度大于所述第一节点的区块头高度。
[0141] 在一实施方式中,在判定存在至少一个第一区块头同步区间之后,所述处理单元702还用于:
[0142] 判断存储的区块头中是否存在不连续区间;
[0143] 若存在所述不连续区间,则向所述第二节点分配所述不连续区间;
[0144] 若不存在所述不连续区间,则执行所述确定所述第二节点的区块头高度是否大于所述至少一个第一区块头同步区间中最大的区间的最大区块头高度的步骤。
[0145] 在一实施方式中,在判定不存在所述不连续区间之后,所述处理单元702还用于:
[0146] 判断所述第一区块头同步区间中是否存在存储超时的区块头同步区间;
[0147] 若存在所述存储超时的区块头同步区间,则向所述第二节点分配所述存储超时的区块头同步区间;
[0148] 若不存在所述存储超时的区块头同步区间,则执行所述确定所述第二节点的区块头高度是否大于所述至少一个第一区块头同步区间中最大的区间的最大区块头高度的步骤。
[0149] 在一实施方式中,在判定第二节点的区块头高度大于所述最大区块头高度之后,所述处理单元702还用于:
[0150] 判断所述第一区块头同步区间的数量是否小于第一阈值;
[0151] 若所述第一区块头同步区间的数量小于所述第一阈值,则执行所述向所述第二节点分配第二区块头同步区间的步骤。
[0152] 在一实施方式中,在存储单元703存储所述区块头之前,所述处理单元702还用于:
[0153] 判断所述区块头的数量是否大于第二阈值;
[0154] 若所述区块头的数量不大于所述第二阈值,则确定所述区块头满足存储条件。
[0155] 在一实施方式中,在判定区块头的数量不大于所述第二阈值之后,所述处理单元702还用于:
[0156] 判断所述区块头是否连续;
[0157] 若所述区块头连续,则确定所述区块头满足存储条件。
[0158] 在一实施方式中,在判定区块头连续之后,所述处理单元702还用于:
[0159] 判断所述区块头对应的区块头同步区间是否为所述第二区块头同步区间;
[0160] 若所述区块头对应的区块头同步区间为所述第二区块头同步区间,则确定所述区块头满足存储条件。
[0161] 根据本申请的一个实施例,图2、图4和图6所示的区块头同步方法所涉及的部分步骤可由图7所示的区块头同步装置中的各个单元来执行。例如,图2中所示的步骤201和步骤204可由图7所示的获取单元701执行,步骤202和步骤203可由图7所示的处理单元702执行,步骤205可由图7所示的存储单元703执行;又如,图6中所示的步骤601和步骤612可由图7所示的获取单元701执行,步骤602~步骤611、步骤613~步骤615、步骤617和步骤618可由图7所示的处理单元702执行,步骤616可由图7所示的存储单元703执行。图7所示的区块头同步装置中的各个单元可以分别或全部合并为一个或若干个另外的单元来构成,或者其中的某个(些)单元还可以再拆分为功能上更小的多个单元来构成,这可以实现同样的操作,而不影响本申请的实施例的技术效果的实现。上述单元是基于逻辑功能划分的,在实际应用中,一个单元的功能也可以由多个单元来实现,或者多个单元的功能由一个单元实现。在本申请的其它实施例中,区块头同步装置也可以包括其它单元,在实际应用中,这些功能也可以由其它单元协助实现,并且可以由多个单元协作实现。
[0162] 根据本申请的另一个实施例,可以通过在包括中央处理单元(CPU)、随机存取存储介质(RAM)、只读存储介质(ROM)等处理元件和存储元件的例如计算机的通用计算装置上运行能够执行如图2、图4和图6中所示的相应方法所涉及的各步骤的计算机程序(包括程序代码),来构造如图7中所示的区块头同步装置,以及来实现本申请实施例的区块头同步方法。所述计算机程序可以记载于例如计算机可读记录介质上,并通过计算机可读记录介质装载于上述计算装置中,并在其中运行。
[0163] 基于同一发明构思,本申请实施例中提供的区块头同步装置解决问题的原理与有益效果与本申请方法实施例中第一节点解决问题的原理和有益效果相似,可以参见方法的实施的原理和有益效果,为简洁描述,在这里不再赘述。
[0164] 请参阅图8,图8为本申请实施例提供的一种区块头同步设备的结构示意图,所述区块头同步设备包括处理器801、通信接口802和存储器803。其中,处理器801、通信接口802和存储器803可通过总线或其他方式连接,本申请实施例以通过总线连接为例。其中,处理器801(或称中央处理器(Central Processing Unit,CPU))是终端的计算核心以及控制核心,其可以解析终端内的各类指令以及处理终端的各类数据,例如:CPU可以用于解析用户向终端所发送的开关机指令,并控制终端进行开关机操作;再如:CPU可以在终端内部结构之间传输各类交互数据,等等。通信接口802可选的可以包括标准的有线接口、无线接口(如WI-FI、移动通信接口等),受处理器801的控制可以用于收发数据;通信接口802还可以用于终端内部信令或者指令的传输以及交互。存储器803(Memory)是终端中的记忆设备,用于存放程序和数据。可以理解的是,此处的存储器803既可以包括终端的内置存储器,当然也可以包括终端所支持的扩展存储器。存储器803提供存储空间,该存储空间存储了终端的操作系统,可包括但不限于:Android系统、iOS系统、Windows Phone系统等等,本申请对此并不作限定。
[0165] 在本申请实施例中,处理器801通过运行存储器803中的可执行程序代码,执行如下操作:
[0166] 通过通信接口802获取所述网络中的第二节点的区块头高度;
[0167] 若存在至少一个第一区块头同步区间,则确定所述第二节点的区块头高度是否大于所述至少一个第一区块头同步区间中最大的区间的最大区块头高度,所述第一区块头同步区间为已分配的,且未同步完成的区块头同步区间;
[0168] 若确定所述第二节点的区块头高度大于所述最大区块头高度,则向所述第二节点分配第二区块头同步区间,所述第二区块头同步区间的最小区块头高度大于所述最大区块头高度;
[0169] 通过通信接口802接收所述第二节点发送的所述第二区块头同步区间对应的区块头;
[0170] 若所述区块头满足存储条件,则存储所述区块头。
[0171] 作为一种可选的实施方式,所述获取第二节点的区块头高度之后,处理器801通过运行存储器803中的可执行程序代码,还执行如下操作:
[0172] 判断是否存在至少一个所述第一区块头同步区间;
[0173] 若不存在所述第一区块头同步区间,则向所述第二节点分配第三区块头同步区间,所述第三区块头同步区间的最小区块头高度大于所述第一节点的区块头高度。
[0174] 作为一种可选的实施方式,在判定存在至少一个第一区块头同步区间之后,处理器801通过运行存储器803中的可执行程序代码,还执行如下操作:
[0175] 判断存储的区块头中是否存在不连续区间;
[0176] 若存在所述不连续区间,则向所述第二节点分配所述不连续区间;
[0177] 若不存在所述不连续区间,则执行所述确定所述第二节点的区块头高度是否大于所述至少一个第一区块头同步区间中最大的区间的最大区块头高度的步骤。
[0178] 作为一种可选的实施方式,在判定不存在所述不连续区间之后,处理器801通过运行存储器803中的可执行程序代码,还执行如下操作:
[0179] 判断所述第一区块头同步区间中是否存在存储超时的区块头同步区间;
[0180] 若存在所述存储超时的区块头同步区间,则向所述第二节点分配所述存储超时的区块头同步区间;
[0181] 若不存在所述存储超时的区块头同步区间,则执行所述确定所述第二节点的区块头高度是否大于所述至少一个第一区块头同步区间中最大的区间的最大区块头高度的步骤。
[0182] 作为一种可选的实施方式,在判定第二节点的区块头高度大于所述最大区块头高度之后,处理器801通过运行存储器803中的可执行程序代码,还执行如下操作:
[0183] 判断所述第一区块头同步区间的数量是否小于第一阈值;
[0184] 若所述第一区块头同步区间的数量小于所述第一阈值,则执行所述向所述第二节点分配第二区块头同步区间的步骤。
[0185] 作为一种可选的实施方式,所述存储所述区块头之前,处理器801通过运行存储器803中的可执行程序代码,还执行如下操作:
[0186] 判断所述区块头的数量是否大于第二阈值;
[0187] 若所述区块头的数量不大于所述第二阈值,则确定所述区块头满足存储条件。
[0188] 作为一种可选的实施方式,在判定区块头的数量不大于所述第二阈值之后,处理器801通过运行存储器803中的可执行程序代码,还执行如下操作:
[0189] 判断所述区块头是否连续;
[0190] 若所述区块头连续,则确定所述区块头满足存储条件。
[0191] 作为一种可选的实施方式,在判定区块头连续之后,处理器801通过运行存储器803中的可执行程序代码,还执行如下操作:
[0192] 判断所述区块头对应的区块头同步区间是否为所述第二区块头同步区间;
[0193] 若所述区块头对应的区块头同步区间为所述第二区块头同步区间,则确定所述区块头满足存储条件。
[0194] 基于同一发明构思,本申请实施例中提供的区块头同步设备解决问题的原理与有益效果与本申请方法实施例中第一节点解决问题的原理和有益效果相似,可以参见方法的实施的原理和有益效果,为简洁描述,在这里不再赘述。
[0195] 本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有一条或多条指令,所述一条或多条指令适于由处理器加载并执行上述方法实施例所述的区块头同步方法。
[0196] 本申请实施例还提供一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述方法实施例所述的区块头同步方法。
[0197] 需要说明的是,对于前述的各个方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某一些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
[0198] 本申请实施例方法中的步骤可以根据实际需要进行顺序调整、合并和删减。
[0199] 本申请实施例装置中的模块可以根据实际需要进行合并、划分和删减。
[0200] 本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,可读存储介质可以包括:闪存盘、只读存储器(Read-Only Memory,ROM)、随机存取器(Random Access Memory,RAM)、磁盘或光盘等。
[0201] 以上所揭露的仅为本申请一种较佳实施例而已,当然不能以此来限定本申请之权利范围,本领域普通技术人员可以理解实现上述实施例的全部或部分流程,并依本申请权利要求所作的等同变化,仍属于发明所涵盖的范围。