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

数据同步方法、装置、存储介质及电子设备

申请号 CN201910239276.8 申请日 2019-03-27 公开(公告)号 CN110059089B 公开(公告)日 2021-01-22
申请人 深圳前海达闼云端智能科技有限公司; 发明人 陈敏; 张跃洋;
摘要 本公开涉及一种数据同步方法、装置、存储介质及电子设备,以使加入许可区块链系统的新节点可以从该许可区块链中的任一节点同步数据。该数据同步方法应用于区块链系统中待同步区块链数据的新节点,包括:所述新节点从所述区块链系统中的第一节点获取该第一节点本地存储的区块链的多个连续的区块头;根据所述区块头的标识,从第二节点获取该第二节点本地存储的区块链中具有相同标识的多个连续的区块头;将从所述第一节点获取的区块头与从所述第二节点获取的区块头进行比对;如果从所述第一节点获取的区块头与从所述第二节点获取的区块头比对一致,则从所述第一节点同步所述多个连续的区块头对应的区块数据到所述新节点。
权利要求

1.一种数据同步方法,其特征在于,所述方法应用于区块链系统中待同步区块链数据的新节点,所述方法包括:所述新节点从所述区块链系统中的第一节点获取该第一节点本地存储的区块链的多个连续的区块头,其中,所述第一节点是所述区块链系统中的对所述新节点没有接入权限的节点;

根据所述区块头的标识,从第二节点获取该第二节点本地存储的区块链中具有相同标识的多个连续的区块头,所述第二节点是所述区块链系统中的对所述新节点具有接入权限的节点;

将从所述第一节点获取的区块头与从所述第二节点获取的区块头进行比对;

如果从所述第一节点获取的区块头与从所述第二节点获取的区块头比对一致,则从所述第一节点同步所述多个连续的区块头对应的区块数据到所述新节点。

2.根据权利要求1所述的方法,其特征在于,所述将从所述第一节点获取的区块头与从所述第二节点获取的区块头进行比对,包括:将从所述第一节点获取的多个连续的区块头的哈希值与从所述第二节点获取的多个连续的区块头的哈希值进行比对;

所述如果从所述第一节点获取的区块头与从所述第二节点获取的区块头比对一致,则从所述第一节点同步所述多个连续的区块头对应的区块数据到所述新节点,包括:如果从所述第一节点获取的多个连续的区块头的哈希值与从所述第二节点获取的多个连续的区块头的哈希值相同,则从所述第一节点同步所述多个连续的区块头对应的区块数据到所述新节点。

3.根据权利要求2所述的方法,其特征在于,所述将从所述第一节点获取的多个连续的区块头的哈希值与从所述第二节点获取的多个连续的区块头的哈希值进行比对,包括:对从所述第一节点获取的多个连续的区块头中每个区块头的哈希值进行哈希计算,得到第一哈希值;

获取第二哈希值,所述第二哈希值是根据所述新节点从所述第二节点获取的多个连续的区块头中每个区块头的哈希值进行哈希计算得到的;

将所述第一哈希值与所述第二哈希值进行比对。

4.根据权利要求2所述的方法,其特征在于,所述将从所述第一节点获取的多个连续的区块头的哈希值与从所述第二节点获取的多个连续的区块头的哈希值进行比对,包括:确定从第一节点获取的多个连续的区块头中N+2个区块头分别对应的哈希值,其中,N+

2个区块头包括从第一节点获取的多个连续的区块头中的第一个区块头、最后一个区块头、以及第一个区块头和最后一个区块头之间的N个区块头,N为正整数;

确定从第二节点获取的多个连续的区块头中与所述N+2个区块头具有相同标识的N+2个区块头分别对应的哈希值;

将所述第一节点的N+2个区块头和所述第二节点的N+2个区块头对应的哈希值一一进行比对。

5.根据权利要求1-4任一所述的方法,其特征在于,所述新节点从所述区块链系统中的第一节点获取该第一节点本地存储的区块链的多个连续的区块头,包括:多批次从所述第一节点获取区块头,并对每一批次获取的区块头添加未比对标记,其中,每一批次获取多个连续的区块头;

所述根据所述区块头的标识,从第二节点获取该第二节点本地存储的区块链中具有相同标识的多个连续的区块头,包括:确定所述第二节点处于可连接状态;

判断从所述第一节点获取的多批次区块头中,是否存在具有所述未比对标记的批次;

若存在具有所述未比对标记的批次,则根据该批次的区块头的标识,从第二节点获取该第二节点本地存储的区块链中具有相同标识的多个连续的区块头;

所述将从所述第一节点获取的区块头与从所述第二节点获取的区块头进行比对包括:在将具有所述未比对标记的批次的区块头与从所述第二节点获取的对应的区块头进行比对后,删除该批次的区块头的未比对标记。

6.根据权利要求1-4任一所述的方法,其特征在于,所述方法还包括:验证从所述第一节点获取的多个连续的区块头的有效性;

所述根据所述区块头的标识,从第二节点获取该第二节点本地存储的区块链中具有相同标识的多个连续的区块头,包括:如果所述有效性验证成功,则根据所述区块头的标识,从所述第二节点获取该第二节点本地存储的区块链中具有相同标识的多个连续的区块头。

7.一种数据同步装置,其特征在于,所述装置应用于区块链系统中待同步区块链数据的新节点,所述装置包括:第一获取模块,用于所述新节点从所述区块链系统中的第一节点获取该第一节点本地存储的区块链的多个连续的区块头,其中,所述第一节点是所述区块链系统中的对所述新节点没有接入权限的节点;

第二获取模块,用于根据所述区块头的标识,从第二节点获取该第二节点本地存储的区块链中具有相同标识的多个连续的区块头,所述第二节点是所述区块链系统中的对所述新节点具有接入权限的节点;

比对模块,用于将从所述第一节点获取的区块头与从所述第二节点获取的区块头进行比对;

同步模块,用于当从所述第一节点获取的区块头与从所述第二节点获取的区块头比对一致时,从所述第一节点同步所述多个连续的区块头对应的区块数据到所述新节点。

8.根据权利要求7所述的装置,其特征在于,所述比对模块用于将从所述第一节点获取的多个区块头的哈希值与从所述第二节点获取的多个区块头的哈希值进行比对;

所述同步模块用于当从所述第一节点获取的多个区块头的哈希值与从所述第二节点获取的多个区块头的哈希值相同时,从所述第一节点同步所述多个连续的区块头对应的区块数据到所述新节点。

9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现权利要求1-6中任一项所述方法的步骤。

10.一种电子设备,其特征在于,包括:

存储器,其上存储有计算机程序;

处理器,用于执行所述存储器中的所述计算机程序,以实现权利要求1-6中任一项所述方法的步骤。

说明书全文

数据同步方法、装置、存储介质及电子设备

技术领域

[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] 以下结合附图对本公开的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本公开,并不用于限制本公开。
[0027] 首先说明本公开实施例涉及到的技术名词。
[0028] 许可区块链:对区块链系统中的账户或节点所能对区块链系统进行的操作做了权限控制的一种区块链系统。
[0029] 接入权限:区块链账户或节点是否有接入区块链系统并同步数据的权限。
[0030] 全节点:具有区块链系统中所有数据的节点。
[0031] 轻节点:具有区块链中部分数据的节点,通常会拥有区块链系统中所有的区块头信息,能做有限的数据验证。
[0032] 创始节点:创始账户运行的节点,通常是全节点。
[0033] 目标节点:已经接入某一许可区块链系统的全节点。
[0034] 新节点:准备接入某一许可区块链系统的节点,包括轻节点和全节点。
[0035] 合法节点:对新节点具有接入权限的节点。
[0036] 非法节点:对新节点不具有接入权限的节点。
[0037] 在相关技术中,对于加入许可区块链系统的新节点,由于只有创始节点具有接入权限,因此该新节点最初只能从创始节点处同步区块数据,只有当新节点同步到一定数据后,才会发现同样具有接入权限的其他目标节点,从而才能并发地从其他目标节点同步数据。但是,如果该新节点是轻节点,由于轻节点只记录区块头,并没有记录其他节点的权限信息,因此在整个数据同步过程中,该新节点都只能从创始节点同步数据,而不能从其他节点同步数据,这对创始节点的压力较大,并且也影响了新节点的数据同步效率。
[0038] 为了解决上述技术问题,本公开实施例提供一种数据同步方法,可以应用于区块链系统中待同步区块链数据的新节点。参照图1,该数据同步方法可以包括:
[0039] 步骤S101,新节点从区块链系统中的第一节点获取该第一节点本地存储的区块链的多个连续的区块头。
[0040] 其中,第一节点是区块链系统中对新节点没有接入权限的节点,但应当理解的是,在本公开实施例中新节点对第一节点具有接入权限。因此,新节点可以从第一节点获取该第一节点本地存储的区块链的多个连续的区块头。
[0041] 示例地,第一节点可以包括合法的目标节点,即第一节点为对新节点有接入权限的目标节点,但在数据同步时新节点区块数据还未包含对应相关的权限信息,此种情况下,该第一节点当前对于新节点是没有接入权限的节点。在另一种情况下,第一节点还可以包括非法的目标节点,即第一节点为对新节点没有接入权限的目标节点。步骤S102,根据区块头的标识,从第二节点获取该第二节点本地存储的区块链中具有相同标识的多个连续的区块头。
[0042] 其中,第二节点是区块链系统中的对新节点具有接入权限的节点,并且应当理解的是,本公开实施例中新节点对第二节点同样具有接入权限,也即是说,第二节点与新节点间具有双向接入权限。示例地,第二节点可以是区块链系统中的创始节点,也可以是区块链系统中对新节点具有接入权限的任一目标节点,等等,本公开实施例对此不作限定。
[0043] 在区块链中,每个区块按照顺序连接,每个区块头具有相应的顺序标识(比如,区块头的编号),因此在步骤S102中可以根据区块头的标识,从第二节点获取对应的多个连续区块头。例如,在步骤S101中从第一节点获取了编号为1-100的100个区块头,相应地,在步骤S102中可以根据获取到的该100个区块头的编号(标识),在第二节点获取编号为1-100的100个区块头。
[0044] 步骤S103,将从第一节点获取的区块头与从第二节点获取的区块头进行比对。
[0045] 步骤S104,如果从所述第一节点获取的区块头与从所述第二节点获取的区块头比对一致,则从第一节点同步多个连续的区块头对应的区块数据到新节点。
[0046] 如果从第一节点获取的区块头与从第二节点获取的区块头比对一致,则说明从第一节点获取的区块头对应的区块数据与从第二节点获取的区块头对应的区块数据一致(数据有效性验证通过),从而可以从第一节点同步多个连续的区块头对应的区块数据到新节点。在另一种情况下,如果从第一节点获取的区块头与从第二节点获取的区块头比对不一致,则说明从第一节点获取的区块头对应的区块数据与从第二节点获取的区块头对应的区块数据不一致(数据有效性验证未通过),那么考虑到数据安全性,则不从该第一节点同步多个连续的区块头对应的区块数据到新节点。
[0047] 通过上述的方式,加入许可区块链系统中的新节点可以从该许可区块链系统中对新节点没有接入权限的第一节点同步区块数据,相较于现有技术的方案,本公开的数据同步方法可以减轻创始节点的压力,加快数据同步效率。并且,在数据同步的过程中,可以通过该许可区块链系统中对新节点具有接入权限的第二节点验证第一节点的数据有效性,从而保证了数据同步过程中的数据安全性。
[0048] 为了使本领域技术人员更加理解本公开实施例提供的数据同步方法,下面对上述各步骤进行详细举例说明。
[0049] 在本公开实施例中,由于第一节点是新节点没有接入权限的节点,因此在步骤S101中,新节点与第一节点建立的是受限连接,即新节点与第一节点间仅进行建立连接所需的数据交互,而不进行除建立连接所需之外的任何其他数据交互,从而可以保证数据安全性。
[0050] 在与第一节点建立受限连接之后,可以从第一节点获取多个连续的区块头。示例地,从第一节点获取的区块头的数量可以是根据区块链系统的实际情况确定,等等,本公开实施例对此不作限定。应当理解的是,为了保证数据安全性,获取的区块头数量可以是动态随机变化的,比如第一次从第一节点获取100个连续的区块头,第二次从第一节点获取120个连续的区块头,第三次从第一节点获取110个连续的区块头,等等。
[0051] 在一种可能的方式中,从第一节点获取到多个连续的区块头之后,还可以验证从第一节点获取的多个连续的区块头的有效性,相应地,步骤S102可以是如果有效性验证成功,则根据区块头的标识,从第二节点获取该第二节点本地存储的区块链中具有相同标识的多个连续的区块头。
[0052] 也即是说,在执行步骤S102之前,可以先验证从第一节点获取的多个连续的区块头是否可以组成有效的区块链。示例地,验证的方式可以是哈希值检验或哈希链检验,等等,本公开实施例对此不作限定。如果有效性验证通过,即从第一节点获取到的多个连续的区块头可以组成有效的区块链,则可以根据区块头的标识,从第二节点获取该第二节点本地存储的区块链中具有相同标识的多个连续的区块头。
[0053] 在另一种可能的情况下,如果有效性验证没通过,那么可以丢弃获取到的第一节点的多个连续的区块头,并断开与该第一节点的连接,重新从其他第一节点获取对应的多个连续区块头进行数据同步过程。或者,在断开与该第一节点的连接之后,还可以将该第一节点加入黑名单中,避免在后续的数据同步过程中再从该第一节点获取区块头。通过这样的方式,既保证了数据同步的安全性,又提高了数据同步的效率。
[0054] 从第二节点获取到对应的多个连续的区块头之后,可以将从第一节点获取到的区块头与从第二节点获取到的区块头进行比对。在一种可能的方式中,可以将从第一节点获取的多个连续的区块头的哈希值与从第二节点获取的多个连续的区块头的哈希值进行比对,相应地,在步骤S104中,可以是如果从第一节点获取的多个连续的区块头的哈希值与从第二节点获取的多个连续的区块头的哈希值相同,则从第一节点同步多个连续的区块头对应的区块数据到所述新节点。
[0055] 也即是说,在本公开实施例中,可以先分别确定从第一节点获取的多个连续的区块头的哈希值、以及从第二节点获取的多个连续的区块头的哈希值,然后将上述得到的两个哈希值进行比对,如果比对一致,则从第一节点同步多个连续的区块头对应的区块数据到新节点。
[0056] 在一种可能的方式中,可以先对从第一节点获取的多个连续的区块头中每个区块头的哈希值进行哈希计算,得到第一哈希值,并获取第二哈希值,然后将第一哈希值与第二哈希值进行比对。其中,第二哈希值是根据新节点从第二节点获取的多个连续的区块头中每个区块头的哈希值进行哈希计算得到的。
[0057] 比如,第一哈希值可以是将该多个连续的区块头的哈希值按区块头的标识顺序排列后进行哈希计算而得到的。第二哈希值可以是第二节点在接收到新节点发送的获取多个连续区块头的数据请求后,先根据该数据请求确定多个连续区块头的范围,然后将该区块头范围内的多个连续的区块按照区块头的标识顺序排列后进行哈希计算得到并发送给新节点的。在此种情况下,新节点可以直接从第二节点获取第二哈希值。当然,在其他可能的方式中,第二哈希值也可以是新节点对从第二节点获取的多个连续的区块头中每个区块头的哈希值进行哈希计算而获取到的,等等,本公开实施例对此不作限定。
[0058] 通过上述方式,可以根据多个连续的区块头中每个区块头的哈希值确定一个整体哈希值,然后将第一节点和第二节点分别对应的整体哈希值进行比对。通过这样整体比对的方式,可以快速对第一节点进行验证,从而更加高效地实现第一节点与新节点间的数据同步过程。
[0059] 在另一种可能的方式中,还可以分别确定多个连续的区块头中每个区块头的哈希值,然后分别将第一节点和第二节点中每个对应的区块头的哈希值一一进行比对。具体地,可以是先确定从第一节点获取的多个连续的区块头中N+2个区块头分别对应的哈希值,再确定从第二节点获取的多个连续的区块头中与上述N+2个区块头具有相同标识的N+2个区块头分别对应的哈希值,然后将第一节点的N+2个区块头和第二节点的N+2个区块头对应的哈希值一一进行比对。
[0060] 其中,N+2个区块头可以包括从第一节点获取的多个连续的区块头中的第一个区块头、最后一个区块头、以及第一个区块头和最后一个区块头之间的N个区块头,N为正整数。
[0061] 示例地,N的取值可以根据区块链系统的实际情况确定,本公开实施例对此不作限定。比如,从第一节点获取了100个连续的区块头,那么N应当是小于等于98的正整数。另外,应当理解的是,N的取值越大,则比对结果越可信,即越能保证从第一节点获取的数据有效性,从而越能保证数据同步过程中的数据安全性。
[0062] 在数据同步过程中,第二节点可以由于网络环境、硬件故障等原因暂时不可连接,此种情况下,可以在步骤S101中多批次从第一节点获取区块头,并对每一批次获取的区块头添加未比对标记,其中,每一批次获取多个连续的区块头。相应地,步骤S102可以是先确定第二节点处于可连接状态,再判断从第一节点获取的多批次区块头中,是否存在具有未比对标记的批次,若存在具有未比对标记的批次,则根据该批次的区块头的标识,从第二节点获取该第二节点本地存储的区块链中具有相同标识的多个连续的区块头。相应地,步骤S103可以是在将具有未比对标记的批次的区块头与从第二节点获取的对应的区块头进行比对后,删除该批次的区块头的未比对标记。
[0063] 也即是说,当第二节点暂时不可连接时,新节点可以先多次执行步骤S101,多批次获取区块头,并对每批次区块头添加未比对标记,然后当第二节点恢复连接时,可以根据该比对标记,依次执行步骤S102-步骤S104,并在比对之后,删除相应批次区块头的未比对标记,以保证数据同步过程的正常进行。
[0064] 示例地,未比对标记可以是一个字符,比如一个数字或字母,也可以是多个字符,比如一串数字或字母,等等,本公开实施例对此不作限定。应当理解的是,本公开实施例中,对于同一批次获取到的区块头,可以统一添加相同的未比对标记,而对于不同批次获取到的区块头,可以分别添加不同的未比对标记进行区分。
[0065] 在另一种可能的情况下,当第二节点由于账户密钥丢失、损坏等原因永久不可连接时,可以指定新节点具有接入权限的其他目标节点作为第二节点。对于其他目标节点的选择可以根据区块链系统的实际情况而确定,比如对于一个表征联盟机构的区块链系统,其他目标节点可以是表征该联盟机构中盟友的一个目标节点。
[0066] 需要说明的是,当新节点同步到一定或者最新的区块数据后,可以取消为新节点指定的其他目标节点,使得新节点可以将区块链系统中任一具有接入权限的目标节点作为第二节点,从而恢复正常的数据同步过程。
[0067] 另外,应当理解的是,随着数据同步过程的进行,第一节点可能变成对新节点具有接入权限的节点,比如在第一节点为合法的目标节点的情况下,新节点在数据同步的过程中获取到该第一节点对应的权限信息后,该第一节点则变成了对于新节点具有接入权限的节点。此种情况下,新节点可以通过相关技术中的数据同步方法从该第一节点同步区块数据,比如,新节点可以通过Merkle tree(默克尔树),哈希值或哈希链检查验证该第一节点的数据有效性后,从该第一节点同步数据,具体过程这里不再赘述。
[0068] 下面以一个完整的例子,对本公开实施例的数据同步方法进行说明。
[0069] 参照图2,该许可区块链系统中包括两个创始节点A和B,三个已接入的目标节点C、D和E,以及准备接入该许可区块链系统的新节点G、F和H。并且,新节点G、F和H在接入权限配置后,分别同该许可区块链系统中的相关节点建立连接。
[0070] 由于创始节点A具有新节点G的接入权限,因此新节点G可以同创始节点A建立双向连接(图中以双箭头连接线示意),而目标节点D和E不具有新节点G的接入权限,因此按本公开实施例的数据同步方法,新节点G可以分别同目标节点D和E建立受限连接(图中以单箭头连接线示意)。
[0071] 在数据同步过程中,新节点G先通过创始节点A对目标节点D和E的数据进行验证,具体的验证过程已在上文进行说明,这里不再赘述。当验证通过后,新节点G从目标节点D和E同步数据。同样的方式,新节点F可以通过创始节点B对目标节点C和E的数据进行验证。当验证通过后,新节点F从目标节点C和E同步数据。
[0072] 对于新节点H,由于其未直接与创始节点A和B连接,因此可以先指定该许可区块链网络中的任一目标节点为第二节点进行数据同步过程。比如,可以指定目标节点D为第二节点,然后以目标节点C为第一节点,通过本公开实施例的数据同步方法从目标节点C同步数据到新节点。
[0073] 应当理解的是,为了进一步提高数据同步效率,本公开实施例的数据同步流程可以并发执行,即新节点可以同时向多个目标节点请求不同批次的数据进行数据同步过程。例如,参照图2,新节点G可以同时从目标节点D和E请求不同批次的数据进行数据同步过程,比如,新节点G可以从目标节点D请求编号为1-100的区块头进行上述数据同步过程,同时还可以从目标节点E请求编号为101-200的区块头进行上述数据同步过程。
[0074] 基于同一发明构思,本公开还提供一种数据同步装置,可以应用于区块链系统中待同步区块链数据的新节点。参照图3,该装置包括:
[0075] 第一获取模块301,用于所述新节点从所述区块链系统中的第一节点获取该第一节点本地存储的区块链的多个连续的区块头,其中,所述第一节点是所述区块链系统中的对所述新节点没有接入权限的节点;
[0076] 第二获取模块302,用于根据所述区块头的标识,从第二节点获取该第二节点本地存储的区块链中具有相同标识的多个连续的区块头,所述第二节点是所述区块链系统中的对所述新节点具有接入权限的节点;
[0077] 比对模块303,用于将从所述第一节点获取的区块头与从所述第二节点获取的区块头进行比对;
[0078] 同步模块304,用于当从所述第一节点获取的区块头与从所述第二节点获取的区块头比对一致时,从所述第一节点同步所述多个连续的区块头对应的区块数据到所述新节点。
[0079] 可选地,所述比对模块303用于将从所述第一节点获取的多个区块头的哈希值与从所述第二节点获取的多个区块头的哈希值进行比对;
[0080] 所述同步模块304用于当从所述第一节点获取的多个区块头的哈希值与从所述第二节点获取的多个区块头的哈希值相同时,从所述第一节点同步所述多个连续的区块头对应的区块数据到所述新节点。
[0081] 可选地,所述比对模块303用于:
[0082] 根据从所述第一节点获取的多个连续的区块头中每个区块头的哈希值,确定第一哈希值;
[0083] 获取第二哈希值,所述第二哈希值是根据所述新节点从该第二节点获取的多个连续的区块头中每个区块头的哈希值进行哈希计算得到的;
[0084] 将所述第一哈希值与所述第二哈希值进行比对。
[0085] 可选地,所述比对模块303用于:
[0086] 确定从所述第一节点获取的多个区块头中N+2个区块头分别对应的哈希值,其中,所述N+2个区块头包括所述多个区块头中的第一个区块头、最后一个区块头、以及所述第一个区块头和所述最后一个区块头之间的N个区块头,N为正整数;
[0087] 确定从所述第二节点获取的多个区块头中与所述N+2个区块头具有相同标识的N+2个区块头分别对应的哈希值;
[0088] 将所述第一节点的N+2个区块头和所述第二节点的N+2个区块头对应的哈希值一一进行比对。
[0089] 可选地,所述第一获取模块301用于多批次从所述第一节点获取区块头,并对每一批次获取的区块头添加未比对标记,其中,每一批次获取多个连续的区块头;
[0090] 所述根据第二获取模块302用于确定所述第二节点处于可连接状态,判断从所述第一节点获取的多批次区块头中,是否存在具有所述未比对标记的批次,并当存在具有所述未比对标记的批次时,根据该批次的区块头的标识,从第二节点获取该第二节点本地存储的区块链中具有相同标识的多个连续的区块头;
[0091] 所述比对模块303用于在将具有所述未比对标记的批次的区块头与从所述第二节点获取的对应的区块头进行比对后,删除该批次的区块头的未比对标记。
[0092] 可选地,所述装置300还包括:
[0093] 验证模块,用于验证从所述第一节点获取的多个连续的区块头的有效性;
[0094] 所述第二获取模块302用于当所述有效性验证成功时,根据所述区块头的标识,从所述第二节点获取该第二节点本地存储的区块链中具有相同标识的多个连续的区块头。
[0095] 关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
[0096] 通过上述任一数据同步装置,加入许可区块链系统中的新节点可以从该许可区块链系统中对新节点没有接入权限的第一节点同步区块数据,相较于现有技术的方案,本公开的数据同步方法可以减轻创始节点的压力,加快数据同步效率。并且,在数据同步的过程中,可以通过该许可区块链系统中对新节点具有接入权限的第二节点验证第一节点的数据有效性,从而保证了数据同步过程中的数据安全性。
[0097] 基于同一发明构思,本公开实施例还提供一种电子设备,包括:
[0098] 存储器,其上存储有计算机程序;
[0099] 处理器,用于执行所述存储器中的所述计算机程序,以实现上述任一项数据同步方法的步骤。
[0100] 在一种可能的方式中,该电子设备的框图可以如图4所示。参照图4,该电子设备400可以包括:处理器401,存储器402。该电子设备400还可以包括多媒体组件403,输入/输出(I/O)接口404,以及通信组件405中的一者或多者。
[0101] 其中,处理器401用于控制该电子设备400的整体操作,以完成上述的数据同步方法中的全部或部分步骤。存储器402用于存储各种类型的数据以支持在该电子设备400的操作,这些数据例如可以包括用于在该电子设备400上操作的任何应用程序或方法的指令,以及应用程序相关的数据,例如节点的权限信息,区块数据等等。该存储器402可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,例如静态随机存取存储器(Static Random Access Memory,简称SRAM),电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,简称EEPROM),可擦除可编程只读存储器(Erasable Programmable Read-Only Memory,简称EPROM),可编程只读存储器(Programmable Read-Only Memory,简称PROM),只读存储器(Read-Only Memory,简称ROM),磁存储器,快闪存储器,磁盘或光盘。
[0102] 多媒体组件403可以包括屏幕和音频组件。其中屏幕例如可以是触摸屏,音频组件用于输出和/或输入音频信号。例如,音频组件可以包括一个麦克风,麦克风用于接收外部音频信号。所接收的音频信号可以被进一步存储在存储器402或通过通信组件405发送。音频组件还包括至少一个扬声器,用于输出音频信号。
[0103] I/O接口404为处理器401和其他接口模块之间提供接口,上述其他接口模块可以是键盘,鼠标,按钮等。这些按钮可以是虚拟按钮或者实体按钮。通信组件405用于该电子设备400与其他设备之间进行有线或无线通信。无线通信,例如Wi-Fi,蓝牙,近场通信(Near Field Communication,简称NFC),2G、3G、4G、NB-IOT、eMTC、或其他5G等等,或它们中的一种或几种的组合,在此不做限定。因此相应的该通信组件407可以包括:Wi-Fi模块,蓝牙模块,NFC模块等等。
[0104] 在一示例性实施例中,电子设备400可以被一个或多个应用专用集成电路(Application Specific Integrated Circuit,简称ASIC)、数字信号处理器(Digital Signal Processor,简称DSP)、数字信号处理设备(Digital Signal Processing Device,简称DSPD)、可编程逻辑器件(Programmable Logic Device,简称PLD)、现场可编程门阵列(Field Programmable Gate Array,简称FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述的数据同步方法。
[0105] 在另一示例性实施例中,还提供了一种包括程序指令的计算机可读存储介质,该程序指令被处理器执行时实现上述的数据同步方法的步骤。例如,该计算机可读存储介质可以为上述包括程序指令的存储器402,上述程序指令可由电子设备400的处理器401执行以完成上述的数据同步方法。
[0106] 以上结合附图详细描述了本公开的优选实施方式,但是,本公开并不限于上述实施方式中的具体细节,在本公开的技术构思范围内,可以对本公开的技术方案进行多种简单变型,这些简单变型均属于本公开的保护范围。
[0107] 另外需要说明的是,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合,为了避免不必要的重复,本公开对各种可能的组合方式不再另行说明。
[0108] 此外,本公开的各种不同的实施方式之间也可以进行任意组合,只要其不违背本公开的思想,其同样应当视为本公开所公开的内容。