CN111209343B - 节点数据同步方法、装置、设备以及存储介质 - Google Patents

节点数据同步方法、装置、设备以及存储介质 Download PDF

Info

Publication number
CN111209343B
CN111209343B CN202010074098.0A CN202010074098A CN111209343B CN 111209343 B CN111209343 B CN 111209343B CN 202010074098 A CN202010074098 A CN 202010074098A CN 111209343 B CN111209343 B CN 111209343B
Authority
CN
China
Prior art keywords
data
block
node
snapshot
target
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
Application number
CN202010074098.0A
Other languages
English (en)
Other versions
CN111209343A (zh
Inventor
杨常青
王宗友
周开班
朱耿良
时一防
刘区城
蓝虎
刘攀
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN202010074098.0A priority Critical patent/CN111209343B/zh
Publication of CN111209343A publication Critical patent/CN111209343A/zh
Application granted granted Critical
Publication of CN111209343B publication Critical patent/CN111209343B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1448Management of the data involved in backup or backup restore
    • G06F11/1451Management of the data involved in backup or backup restore by selection of backup contents
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • G06F11/1469Backup restoration techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1471Saving, restoring, recovering or retrying involving logging of persistent data for recovery
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2365Ensuring data consistency and integrity

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Quality & Reliability (AREA)
  • Data Mining & Analysis (AREA)
  • Computer Security & Cryptography (AREA)
  • Computing Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请实施例公开了一种节点数据同步方法、装置、设备以及存储介质,该方法包括:从第一数据节点获取第一数据快照;从第二数据节点获取第二数据快照;若第一数据快照和第二数据快照不一致,则从区块链中获取目标区块的数据状态日志,根据数据状态日志对第一数据快照进行数据恢复得到第三数据快照;将第三数据快照对应的所有区块的第一区块数据存储至目标节点;从第一数据节点获取除第三数据快照对应的所有区块外的其他区块的第二区块数据,将第二区块数据同步至目标节点。采用本申请实施例,可减少节点数据同步时间,提升节点工作效率。

Description

节点数据同步方法、装置、设备以及存储介质
技术领域
本申请涉及计算机技术领域,尤其涉及一种节点数据同步方法、装置、设备以及存储介质。
背景技术
随着区块链技术的不断发展,在区块链平台上,为了保证数据存储的安全性,任意一个节点的数据更新后,都要同步存储到其它节点,但是,随着存储的区块数据越来越多,节点之间需要同步的区块数据就越多,导致每次同步的耗时更长。对于任意一个节点来说,每同步一个区块的取款数据需要重新执行一遍区块完成区块数据同步,然而随着区块链中的区块越来越多,一旦有新节点加入区块链,新节点完成全部区块数据的同步将会耗费大量时间,降低新节点的工作效率。
因此如何提升节点数据同步效率成为亟需解决的问题。
发明内容
本申请实施例提供一种节点数据同步方法、装置、设备以及存储介质,可减少节点数据同步时间,提升节点工作效率。
第一方面,本申请实施例提供一种节点数据同步方法,该方法包括:
从第一数据节点获取第一数据快照,其中,每个数据节点在区块链每增加预设数量的区块时对上述区块链所有区块的区块数据进行一次备份得到数据快照,上述第一数据快照为上述第一数据节点距离当前时刻最后一次进行备份时所产生的数据快照;
从第二数据节点获取第二数据快照,上述第二数据快照为上述第二数据节点距离上述当前时刻最后一次进行备份时所产生的数据快照;
将上述第一数据快照和上述第二数据快照进行匹配,若上述第一数据快照和上述第二数据快照不一致,则从上述区块链中获取目标区块的数据状态日志,根据上述数据状态日志对上述第一数据快照进行数据恢复得到第三数据快照,上述目标区块为上述第一数据快照所对应的所有区块中区块高度最高的区块;
将上述第三数据快照对应的所有区块的第一区块数据存储至目标节点;
从上述第一数据节点获取除上述第三数据快照对应的所有区块外的其他区块的第二区块数据,将上述第二区块数据同步至上述目标节点。
结合第一方面,在一种可能的实施方式中,上述根据上述数据状态日志对上述第一数据快照进行数据恢复得到第三数据快照包括:
根据上述数据状态日志确定出上述目标区块的交易数据、合约数据以及账户数据;
根据上述交易数据、上述合约数据以及上述账户数据对上述目标区块的区块数据进行更新,得到第三数据快照。
结合第一方面,在一种可能的实施方式中,上述方法还包括:
从上述区块链的目标区块中获取上述目标区块的第二交易数据、第二合约数据以及第二账户数据;
将上述第一交易数据、上述第一合约数据以及上述第二账户数据分别与上述第二交易数据、上述第二合约数据以及上述第二账户数据进行匹配;
若上述第一交易数据与上述第二交易数据一致、上述第一合约数据与上述第二合约数据一致且上述第一账户数据与上述第二账户数据一致,则执行上述对上述目标区块的区块数据进行更新的步骤。
结合第一方面,在一种可能的实施方式中,上述方法还包括:
根据上述第一区块数据获取上述第三数据快照对应的所有区块的第一默克尔树根;
从上述区块链中获取上述第三数据快照对应的所有区块的第二默克尔树根;
将上述第一默克尔树根与上述第二默克尔树根进行匹配,若每个第一默克尔树根与相对应的第二默克尔树根均一致,则执行将上述第三数据快照对应的所有区块的第一区块数据存储至目标节点的步骤。
结合第一方面,在一种可能的实施方式中,上述方法还包括:
若上述第一数据快照和上述第二数据快照不一致,则获取上述第一数据快照对应的所有区块中除上述目标区块外的其他区块的第三区块数据;
从上述区块链的目标区块中获取上述目标区块的第四区块数据;
将上述第三区块数据和上述第四区块数据存储至上述目标节点。
结合第一方面,在一种可能的实施方式中,上述将上述第二区块数据同步至上述目标节点包括:
将上述第二区块数据发送至共识节点以使上述共识节点根据除上述第一数据节点外的其他数据节点的区块数据对上述第二区块数据进行验证;
获取每个共识节点的验证结果,当所有验证结果满足预设共识策略时将上述第二区块数据存储至上述目标节点。
结合第一方面,在一种可能的实施方式中,上述方法还包括:
确定上述区块链中是否存在第三数据节点,上述第三数据节点对应的最高区块高度高于上述目标节点对应的最高区块高度;
若上述区块链中存在上述第三数据节点,则从上述第三数据节点获取目标区块高度区间对应的区块的第五区块数据,并将上述第五区块数据同步至上述目标节点,上述目标区块高度区间为上述目标节点对应的最高区块高度至上述第三数据节点对应的最高区块高度的区块高度区间。
第二方面,本申请实施例提供了一种节点数据同步装置,该装置包括:
第一获取模块,用于从第一数据节点获取第一数据快照,其中,每个数据节点在区块链每增加预设数量的区块时对上述区块链所有区块的区块数据进行一次备份得到数据快照,上述第一数据快照为上述第一数据节点距离当前时刻最后一次进行备份时所产生的数据快照;
第二获取模块,用于从第二数据节点获取第二数据快照,上述第二数据快照为上述第二数据节点距离上述当前时刻最后一次进行备份时所产生的数据快照;
第一处理模块,用于将上述第一数据快照和上述第二数据快照进行匹配,若上述第一数据快照和上述第二数据快照不一致,则从上述区块链中获取目标区块的数据状态日志,根据上述数据状态日志对上述第一数据快照进行数据恢复得到第三数据快照,上述目标区块为上述第一数据快照所对应的所有区块中区块高度最高的区块;
第一同步模块,用于将上述第三数据快照对应的所有区块的第一区块数据存储至目标节点;
第二同步模块,用于从上述第一数据节点获取除上述第三数据快照对应的所有区块外的其他区块的第二区块数据,将上述第二区块数据同步至上述目标节点。
结合第二方面,在一种可能的实施方式中,上述第一处理模块包括:
确定单元,用于根据上述数据状态日志确定出上述目标区块的交易数据、合约数据以及账户数据;
第一更新单元,用于根据上述交易数据、上述合约数据以及上述账户数据对上述目标区块的区块数据进行更新,得到第三数据快照。
结合第二方面,在一种可能的实施方式中,上述第一处理模块还包括:
获取单元,还用于从上述区块链的目标区块中获取上述目标区块的第二交易数据、第二合约数据以及第二账户数据;
匹配单元,还用于将上述第一交易数据、上述第一合约数据以及上述第二账户数据分别与上述第二交易数据、上述第二合约数据以及上述第二账户数据进行匹配;
第二更新单元,还用于若上述第一交易数据与上述第二交易数据一致、上述第一合约数据与上述第二合约数据一致且上述第一账户数据与上述第二账户数据一致,则执行上述对上述目标区块的区块数据进行更新的步骤。
结合第二方面,在一种可能的实施方式中,上述装置还包括:
第三获取模块,还用于根据上述第一区块数据获取上述第三数据快照对应的所有区块的第一默克尔树根;
第四获取模块,还用于从上述区块链中获取上述第三数据快照对应的所有区块的第二默克尔树根;
第二处理模块,还用于将上述第一默克尔树根与上述第二默克尔树根进行匹配,若每个第一默克尔树根与相对应的第二默克尔树根均一致,则执行将上述第三数据快照对应的所有区块的第一区块数据存储至目标节点的步骤。
结合第二方面,在一种可能的实施方式中,上述装置还包括:
第五获取模块,还用于若上述第一数据快照和上述第二数据快照不一致,则获取上述第一数据快照对应的所有区块中除上述目标区块外的其他区块的第三区块数据;
第六获取模块,还用于从上述区块链的目标区块中获取上述目标区块的第四区块数据;
第三同步模块,还用于将上述第三区块数据和上述第四区块数据存储至上述目标节点。
结合第二方面,在一种可能的实施方式中,上述第二同步模块包括:
发送单元,用于将上述第二区块数据发送至共识节点以使上述共识节点根据除上述第一数据节点外的其他数据节点的区块数据对上述第二区块数据进行验证;
同步单元,用于获取每个共识节点的验证结果,当所有验证结果满足预设共识策略时将上述第二区块数据存储至上述目标节点。
结合第二方面,在一种可能的实施方式中,上述装置还包括:
确定模块,还用于确定上述区块链中是否存在第三数据节点,上述第三数据节点对应的最高区块高度高于上述目标节点对应的最高区块高度;
第三处理模块,还用于若上述区块链中存在上述第三数据节点,则从上述第三数据节点获取目标区块高度区间对应的区块的第五区块数据,并将上述第五区块数据同步至上述目标节点,上述目标区块高度区间为上述目标节点对应的最高区块高度至上述第三数据节点对应的最高区块高度的区块高度区间。
第三方面,本申请实施例提供了一种设备,该设备包括处理器和存储器,该处理器和存储器相互连接。该存储器用于存储支持该终端设备执行上述第一方面和/或第一方面任一种可能的实现方式提供的方法的计算机程序,该计算机程序包括程序指令,该处理器被配置用于调用上述程序指令,执行上述第一方面和/或第一方面任一种可能的实施方式所提供的方法。
第四方面,本申请实施例提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序被处理器执行以实现上述第一方面和/或第一方面任一种可能的实施方式所提供的方法。
在本申请实施例中,通过数据节点对区块数据进行备份产生的数据快照直接用于目标节点的数据同步,极大减少了目标节点数据同步所需要的时间。另一方面,通过从不同数据节点获取相同区块高度的数据快照对已获取的数据快照进行数据恢复,可确保用于目标节点数据同步的数据快照所对应区块数据完整无误。与此同时,目标仅需要除数据快照所对应的全部区块外的其他区块高度的区块数据进行同步,可快速完成节点数据同步,适用性高。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的节点数据同步方法的原理示意图;
图2是本申请实施例提供的节点数据同步方法的一流程示意图;
图3是本申请实施例提供的区块结构示意图;
图4是本申请实施例提供的节点数据同步的场景示意图;
图5是本申请实施例提供的节点数据同步方法的另一流程示意图;
图6是本申请实施例提供的节点数据同步方法的又一流程示意图;
图7是本申请实施例提供的节点数据同步装置的结构示意图;
图8是本申请实施例提供的设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
请参见图1,图1是本申请实施例提供的节点数据同步方法的原理示意图。在图1中,节点10b和节点10c是区块链中的数据节点,其中,节点10b和节点10c在区块链每增加预设数量的区块时对区块链所有区块的区块数据进行一次数据备份得到数据快照。当节点10a为新加入区块链的节点,或者节点10a为区块链中的故障节点,此时如若将节点10a加入区块链或者对故障节点10a进行恢复,需要将节点10a的区块数据与数据节点10b以及节点10c进行同步以使节点10a加入区块链或者对节点10a进行恢复之后节点10a可正常工作。其中,在对节点10a进行数据同步时,可从节点10a获取节点10a最新的数据快照30,从而根据数据快照30对应的区块高度(如高度100以内)的区块数据存储至节点10a。另一方面,可从节点10c获取数据快照30对应的区块高度外(高度101)的所有区块的区块数据40,并将区块数据40存储至节点10a以完成将当前区块链所有区块数据同步至节点10a。其中,节点10b和节点10c也可以为同一节点,具体可根据实际应用场景确定,在此不做限制。
参见图2,图2是本申请实施例提供的节点数据同步方法的一流程示意图。如图2所示,本申请实施例提供的节点数据同步方法可包括如下步骤S201至S205。
S201、从第一数据节点获取第一数据快照。
在一些可行的实施方式中,区块链中的数据节点可实时检测区块链中的区块数量变化,每当区块链中增加预设数量的区块时数据节点可对在该时刻区块链中所有区块的区块数据进行一次备份得到一份数据快照。例如当原区块链中存在高度1至高度100的区块,当区块链中的区块高度增加至高度200时,数据节点可进行一次备份。其中,上述数据节点可为具有数据备份功能的共识节点,也可为其他对区块链中区块数据进行备份的节点,具体可根据实际应用场景确定,在此不做限制。其中,上述预设数量可以为100也可以为其他数量,具体也可根据实际应用场景确定,在此也不做任何限制。
具体的,在当前时刻有目标节点加入区块链时,由于区块链为分布式存储,因此为了使目标节点加入区块链之后可正常工作,此时需要将目标节点对应区块数据与区块链中其他数据节点的区块数据保持一致。其中,目标节点可以为新加入区块链中的节点,也可以等待进行数据恢复的其他节点,如故障节点。进一步地,在当前时刻可从第一数据节点获取第一数据快照,其中第一数据快照为距离当前时刻第一数据节点最后一次进行备份时所产生的数据快照,第一数据快照中包含第一数据节点在最后一次进行备份时区块链中所有区块的区块数据。如第一数据节点在某时刻进行区块数据备份时,加入区块链对应的区块高度为100,此时第一数据节点进行数据备份得到的数据快照包含该时刻区块链中全部100个区块的区块数据。
S202、从第二数据节点获取第二数据快照
在一些可行的实施方式中,由于上述第一数据快照仅从第一数据节点获取,一旦上述第一数据快照中存在错误数据将对目标节点的数据同步造成影响。因此可从第二数据节点获取第二数据快照以验证第一数据快照中是否包含错误数据。其中,第二数据快照为距离当前时刻第二数据节点最后一次进行备份时所产生的数据快照,第二数据快照中同样包含第二数据节点在最后一次进行备份时区块链中所有区块的区块数据。如当第一数据快照包含时刻区块链中全部100个区块的区块数据,此时第二数据快照中同样包含上述100个区块的区块数据。其中,上述第二数据节点为除上述第一数据节点外的其他任意一个或者多个数据节点,具体根据第二数据快照对第一数据快照的验证方法可参见下述步骤S203所示的实现方式,在此不做说明。
S203、将第一数据快照和第二数据快照进行匹配,若第一数据快照和第二数据快照不一致,则从区块链中获取目标区块的数据状态日志,根据数据状态日志对第一数据快照进行数据恢复得到第三数据快照。
在一些可行的实施方式中,在从第二数据节点获取第二数据快照之后,可将第一数据快照和第二数据快照进行匹配。如果第一数据快照和第二数据快照不一致,则说明第一数据快照中存在错误数据,如果第一数据快照与第二数据开着一致,则说明第一数据快照中不存在错误数据。可选的,当从多个第二数据节点获取多个第二数据快照之后,若第一数据快照与每个第二数据快照均一致,或者与超过第一预设比例的第二数据快照一致,则可说明第一数据快照中不存在错误数据。其中,上述第一预设比例可根据第二数据快照的数量以及实际应用场景确定,在此不做限制。若第一数据快照与每个第二数据快照均不一致,或者与小于第二预设比例的第二数据快照不一致,则可确定第一数据快照存在错误数据,其中,上述第二预设比例也可根据第二数据快照的数量以及实际应用场景确定,在此不做限制。
进一步地,在确定第一数据快照中存在错误数据时,需要从区块链的各个区块中确定出目标区块,即第一数据快照所涵盖的所有区块中区块高度最高的区块。换句话说,第一数据快照所包含的所有区块数据对应的最后一个区块即为目标区块。在确定出目标区块之后,可从目标区块获取目标区块的数据状态日志。其中,区块链在每次打包一个区块时均会为该区块写入数据状态日志,如二进制的wal log,具体可根据实际应用场景确定,在此不做限制。另一方面,由于在区块链中最后一个区块中包含在其之前的所有区块的区块信息,同时在数据节点对所有区块的区块数据进行备份时,被备份的最后一个区块之前的所有区块的区块数据已经稳定存在,因此当第一数据快照存在错误数据时,只需要获取目标区块(第一数据快照对应的最后一个区块)的数据状态日志以对第一数据快照中目标区块的区块数据进行恢复。其中,上述数据状态日志可以描述对应区块的数据写入过程信息,可包含对应区块的数据处理过程、合约数据以及账户数据等等,因此根据数据状态日志即可恢复对应区块的区块数据。
在一些可行的实施方式中,在根据数据状态日志对第一数据快照进行数据恢复时,可根据数据状态日志确定出目标区块的交易数据、合约数据、区块数据以及账户数据等。具体的,可根据数据状态日志重新执行目标区块以得到目标区块的交易数据、合约数据以及账户数据等,并对交易数据、合约数据以及账户数据等进行核验。当交易数据、合约数据以及账户数据等数据准确无误时,将交易数据、合约数据以及账户数据等对第一数据快照中目标区块对应的区块数据进行更新的得到更新后的第一数据快照(为方便描述,以下简称第三数据快照)以完成对第一数据快照的数据恢复。其中,对交易数据、合约数据壹基金账户数据进行校验时,可从区块链的目标区块中获取目标区块的交易数据、合约数据以及账户数据等数据,并进一步将重新执行目标区块得到的交易数据、合约数据以及账户数据与从目标区块中直接获取的交易数据、合约数据以及账户数据分别进行匹配,若均准确无误,则可根据执行目标区块得到的交易数据、合约数据以及账户数据更新第一数据快照中对应的数据得到第三数据快照。
S204、将第三数据快照对应的所有区块的第一区块数据存储至目标节点。
在一些可行的实施方式中,在对第一数据快照进行数据恢复得到第三数据快照之后,可将第三数据快照对应的区块数据存储至目标节点。其中,目标节点可根据第三数据快照对应的区块数据对第三数据快照对应的每个区块的区块数据进行恢复,此时目标节点存储有第三数据快照对应的所有区块的区块数据。
S205、从第一数据节点获取除第三数据快照对应的所有区块外的其他区块的第二区块数据,将第二区块数据同步至目标节点。
在一些可行的实施方式中,由于数据节点每次对区块链进行数据备份时存在时间间隔,因此在目标节点加入区块链的时刻与第一数据节点最后一次进行备份之间存在时间间隔,因此在将第三数据快照对应的区块数据存储至目标节点之后,还需要将第一数据节点未备份区块的区块数据同步至目标节点。具体的,可从第一数据节点获取除第三数据快照对应的所有区块外的其他区块的区块数据,并将该区块数据同步至目标节点。可选的,还可以从除第一数据节点外的其他任意一个数据节点获取除第三数据快照对应的所有区块外的其他区块的区块数据(为方便描述,以下简称第二区块数据),具体可根据实际应用场景确定,在此不做限制。
可选的,在获取到第二区块数据之后,可对第二区块数据进行验证以确定第二区块数据准确无误后将其同步至目标节点。具体的,可将第二区块数据发送至共识节点以使共识节点根据除第一数据节点外的其他数据节点的区块数据对第二区块数据进行验证。其中,其他数据节点的区块数据的区块数据对应区块高度与第二区块数据对应的区块高度一致。共识节点可将第二区块数据与其他数据节点的区块数据进行比较,每个共识节点在确定第二区块数据与其他数据节点的区块数据一致时生成确认一致结果,不一致或者不完全一致时生成确认不一致结果,当所有共识节点的确认一致结果数量高于所有共识节点的数量的一半时,可确定第二区块数据准确无误。可选的,共识节点还可确定第二区块数据对应的区块高度,并从区块链中从该区块高度对应的区块中获取区块数据,并根据从该区块高度对应的区块中获取区块数据对第二区块数据进行验证,并在验证结果通过预设共识策略时确认第二区块数据准确无误。其中,上述预设共识策略可根据实际应用场景确定,在此不做限制。
可选的,还可根据第二区块数据获取第二区块数据对应的区块的第一默克尔树根,同时从区块链的第二区块数据对应区块的区块体中获取该区块的第二默克尔树根。此时可将第一默克尔树根和第二默克尔树根进行比较,若第一默克尔树根与第二默克尔树根一致,则说明获取的第二区块数据准确无误,可进一步根据第二区块数据同步至目标节点。参见图3,图3是本申请实施例提供的区块结构示意图。如图3所示,区块链中包含多个区块组成,每一区块中包括区块头和区块主体,区块头中存储有默克尔树根、版本号、时间戳和难度值等信息,区块主体中存储有输入信息;每一区块以上一区块为父区块,下一区块中同样包括区块头和区块主体,区块头中存储有当前区块的默克尔树根、父区块的区块头特征值、版本号、时间戳和难度值,并以此类推,使得区块链中每个区块中存储的区块数据均与父区块中存储的区块数据存在关联,保证了区块中输入信息的安全性。在生成新区块时,可基于各个业务数据得到新区块的默克尔树根的哈希值;之后,将更新时间戳更新为接收到输入信息的时间,并尝试不同的随机数,多次进行特征值计算,使得计算得到的特征值可以满足下述公式:
SHA256(SHA256(version+prev_hash+merkle_root+ntime+nbits+x))<TARGET
其中,version(版本号)为区块链中相关区块协议的版本信息;prev_hash为新区块的父区块的区块头特征值;merkle root为默克尔树根;ntime为更新时间戳的更新时间;nbits为当前难度,在一段时间内为定值,并在超出固定时间段后再次进行确定;x为随机数;TARGET为特征值阈值,该特征值阈值可以根据nbits确定得到。这样,当计算得到满足上述公式的随机数时,便可将信息对应存储,生成区块头和区块主体,得到新区块。
其中,业务数据1、业务数据2、业务数据3和业务数据4可以通过默克尔树的形式组织在一起。以业务数据1和业务数据2为例,通过哈希计算可以计算得到业务数据1对应的哈希值1;同样,通过哈希计算可以计算得到业务数据2对应的哈希值2。进一步的,将哈希值1和哈希值2串联起来,继续做散列变换,可以得到图3所示的哈希值12。以此类推,对于业务数据3和业务数据4而言,通过这样一层一层地递归计算,可以得到图3所示的哈希值34,从而可以进一步将哈希值12和哈希值34串联起来进行散列变换,直到最后剩下一个根(即图3所示的哈希值1234)。此时,可以将该最后得到的所有业务数据的哈希值作为新区块的默克尔树根。因此,通过从区块链中获取第二区块数据对应的区块的默克尔树根可验证从数据节点获取的第二区块数据是否准确。
在一些可行的实施方式中,由于区块链中的区块在不间断增长,因此在将第三数据快照对应的区块数据和上述第二区块数据同步至目标节点后,还需要确定区块链中是否存在高于第二区块数据对应的最高区块高度的区块。具体的,由于不同数据节点的区块同步时间不完全一致,因此可遍历所有数据节点以从中确定出第三数据节点,该第三数据节点对应的最高区块高度高于目标节点此时对应的最高区块高度。如果区块链中存在上述所述的第三数据节点,则可从第三数据节点获取目标节点此时对应的最高区块高度至第三数据节点对应的最高区块高度的区块高度区间所对应区块的区块数据,并将该区块高度区间所对应区块的区块数据同步至目标节点。
参见图4,图4是本申请实施例提供的节点数据同步的场景示意图。在图4中,从任一数据节点获取的第三数据快照对应的区块高度为100,即第三数据快照对应区块链中前100个区块的区块数据。另一方面,确定该数据节点未被备份的区块为高度101至高度102的区块,并从该节点获取上述两个区块的区块数据。将前100个区块的区块数据和高度101至高度102的区块的区块数据同步至目标节点之后,假设区块链中还存在数据节点2和数据节点3,此时数据节点2存储有最高区块高度为102的区块数据(即前102个区块的区块数据),数据节点3存储有最高区块高度为103的区块数据(即前103个区块的区块数据)。此时由于只有数据节点3存储有区块高度为103的区块数据,因此可从数据节点3获取取款高度为103的区块数据并将其同步至目标节点,以保证目标节点对应的区块数据与区块链中当前所有区块的区块数据始终一致。
参见图5,图5是本申请实施例提供的节点数据同步方法的另一流程示意图。如图5所示,本申请实施例提供的节点数据同步方法包括如下步骤S301至S307。
S301、从第一数据节点获取第一数据快照。
S302、从第二数据节点获取第二数据快照。
S303、将第一数据快照和第二数据快照进行匹配,若第一数据快照和第二数据快照不一致,则从区块链中获取目标区块的数据状态日志,根据数据状态日志对第一数据快照进行数据恢复得到第三数据快照。
在一些可行的实施方式中,上述步骤S301至S303的具体实施方式可参见图2中步骤S201至S203所示的实现方式,在此不再赘述。
S304、根据第一区块数据获取第三数据快照对应的所有区块的第一默克尔树根。
在一些可行实施方式中,在对第一数据快照进行数据恢复得到第三数据快照之后,为了对第一数据快照进行数据恢复得到的第三数据快照中不存在错误数据,因此可对第三数据快照进行验证。其中,在对第三数据快照进行验证时,可先根据第三数据快照确定出第三数据快照对应的所有区块的业务数据,并根据每一区块的业务数据得到每一区块的默克尔树根。基于上述实现方式,可得到第三数据快照对应的所有区块的默克尔树根(为方便描述,以下简称第一默克尔树根)。
S305、从区块链中获取第三数据快照对应的所有区块的第二默克尔树根。
在一些可行的实施方式中,可确定第三数据快照对应的所有区块的区块高度,并从区块链中确定出具有相同区块高度的区块。进一步地,从相同区块高度的区块的区块体中获取每一区块的默克尔树根(为方便描述,以下简称第二默克尔树根)。
S306、将第一默克尔树根与第二默克尔树根进行匹配,若每个第一默克尔树根与相对应的第二默克尔树根均一致,将第三数据快照对应的所有区块的第一区块数据存储至目标节点。
在一些可行的实施方式中,在根据第三数据快照确定出第三数据快照对应的所有区块的第一默克尔树根以及从区块链中相同区块高度的区块中获取第二默克尔树根之后,可将第一默克尔树根和相对应的第二默克尔树根进行匹配。若每一区块的第一默克尔树根和第二默克尔树根均一致,说明根据从第一数据节点获取的第一数据快照得到的第三数据快照对应的每一区块的区块数据与区块中相对应的区块的区块数据一致,此时可确认第三数据快照所包含的所有区块的区块数据中不存在错误数据。
S307、从第一数据节点获取除第三数据快照对应的所有区块外的其他区块的第二区块数据,将第二区块数据同步至目标节点。
在一些可行的实施方式中,步骤S307的具体实施方式可参见图2中步骤S205所示的实现方式,在此不再赘述。
参见图6,图6是本申请实施例提供的节点数据同步方法的又一流程示意图。如图6所示,本申请实施例提供的节点数据同步方法可包括如下步骤S401至S406。
S401、从第一数据节点获取第一数据快照。
S402、从第二数据节点获取第二数据快照。
在一些可行的实施方式中,上述步骤S401至S402的具体实施方式可参见图2中步骤S201至S202所示的实现方式,在此不再赘述。
S403、将第一数据快照和第二数据快照进行匹配,若第一数据快照和第二数据快照不一致,则获取第一数据快照对应的所有区块中除目标区块外的其他区块的第三区块数据。
在一些可行的实施方式中,当第一数据快照和第二数据快照不一致时,说明第一数据快照中存在错误数据,且基于图2中步骤S203所述的相同理由,错误数据存在于第一数据快照对应的最后一个区块(为方便描述,以下简称目标区块),即第一数据快照中目标区块的区块数据中存在错误数据。此时可从第一数据快照中获取除目标区块外的其他区块的区块数据(为方便描述,以下简称第三区块数据),以确保从第一数据快照中获取的部分区块数据为准确数据。
S404、从区块链的目标区块中获取目标区块的第四区块数据。
在一些可行的实施方式中,由于第一数据快照中目标区块的区块数据中存在错误数据,如果此时从其他数据节点的数据快照汇中获取目标区块的区块数据,可能在获取到的目标区块的区块数据中仍然存在错误数据,因此需要从区块链的目标区块中直接获取目标区块的区块数据(为方便描述,以下简称第四区块数据)。
S405、将第三区块数据和第四区块数据存储至目标节点。
在一些可行的实施方式中,上述第三区块数据和第四区块数据对应的区块高度范围与第一数据快照对应的区块高度范围一致,因此可直接将第三区块数据和第四区块数据存储至目标节点,以完成对目标节点的部分区块数据同步。
S406、从第一数据节点获取除第三数据快照对应的所有区块外的其他区块的第二区块数据,将第二区块数据同步至目标节点。
在一些可行的实施方式中,步骤S406的具体实施方式可参见图2中步骤S205所示的实现方式,在此不再赘述。
在本申请实施例中,通过数据节点对区块数据进行备份产生的数据快照直接用于目标节点的数据同步,极大减少了目标节点数据同步所需要的时间。另一方面,通过从不同数据节点获取相同区块高度的数据快照对已获取的数据快照进行数据恢复,可确保用于目标节点数据同步的数据快照所对应区块数据完整无误。与此同时,目标仅需要除数据快照所对应的全部区块外的其他区块高度的区块数据进行同步,可快速完成节点数据同步,适用性高。
参见图7,图7是本申请实施例提供的节点数据同步装置的结构示意图。本申请实施例提供的装置1包括:
第一获取模块11,用于从第一数据节点获取第一数据快照,其中,每个数据节点在区块链每增加预设数量的区块时对上述区块链所有区块的区块数据进行一次备份得到数据快照,上述第一数据快照为上述第一数据节点距离当前时刻最后一次进行备份时所产生的数据快照;
第二获取模块12,用于从第二数据节点获取第二数据快照,上述第二数据快照为上述第二数据节点距离上述当前时刻最后一次进行备份时所产生的数据快照;
第一处理模块13,用于将上述第一数据快照和上述第二数据快照进行匹配,若上述第一数据快照和上述第二数据快照不一致,则从上述区块链中获取目标区块的数据状态日志,根据上述数据状态日志对上述第一数据快照进行数据恢复得到第三数据快照,上述目标区块为上述第一数据快照所对应的所有区块中区块高度最高的区块;
第一同步模块14,用于将上述第三数据快照对应的所有区块的第一区块数据存储至目标节点;
第二同步模块15,用于从上述第一数据节点获取除上述第三数据快照对应的所有区块外的其他区块的第二区块数据,将上述第二区块数据同步至上述目标节点。
在一些可行的实施方式中,上述第一处理模块13包括:
确定单元131,用于根据上述数据状态日志确定出上述目标区块的交易数据、合约数据以及账户数据;
第一更新单元132,用于根据上述交易数据、上述合约数据以及上述账户数据对上述目标区块的区块数据进行更新,得到第三数据快照。
在一些可行的实施方式中,上述第一处理模块13还包括:
获取单元133,还用于从上述区块链的目标区块中获取上述目标区块的第二交易数据、第二合约数据以及第二账户数据;
匹配单元134,还用于将上述第一交易数据、上述第一合约数据以及上述第二账户数据分别与上述第二交易数据、上述第二合约数据以及上述第二账户数据进行匹配;
第二更新单元135,还用于若上述第一交易数据与上述第二交易数据一致、上述第一合约数据与上述第二合约数据一致且上述第一账户数据与上述第二账户数据一致,则执行上述对上述目标区块的区块数据进行更新的步骤。
在一些可行的实施方式中,上述装置1还包括:
第三获取模块16,还用于根据上述第一区块数据获取上述第三数据快照对应的所有区块的第一默克尔树根;
第四获取模块17,还用于从上述区块链中获取上述第三数据快照对应的所有区块的第二默克尔树根;
第二处理模块18,还用于将上述第一默克尔树根与上述第二默克尔树根进行匹配,若每个第一默克尔树根与相对应的第二默克尔树根均一致,则执行将上述第三数据快照对应的所有区块的第一区块数据存储至目标节点的步骤。
在一些可行的实施方式中,上述装置1还包括:
第五获取模块19,还用于若上述第一数据快照和上述第二数据快照不一致,则获取上述第一数据快照对应的所有区块中除上述目标区块外的其他区块的第三区块数据;
第六获取模块20,还用于从上述区块链的目标区块中获取上述目标区块的第四区块数据;
第三同步模块21,还用于将上述第三区块数据和上述第四区块数据存储至上述目标节点。
在一些可行的实施方式中,上述第二同步模块15包括:
发送单元151,用于将上述第二区块数据发送至共识节点以使上述共识节点根据除上述第一数据节点外的其他数据节点的区块数据对上述第二区块数据进行验证;
同步单元152,用于获取每个共识节点的验证结果,当所有验证结果满足预设共识策略时将上述第二区块数据存储至上述目标节点。
在一些可行的实施方式中,上述装置1还包括:
确定模块22,还用于确定上述区块链中是否存在第三数据节点,上述第三数据节点对应的最高区块高度高于上述目标节点对应的最高区块高度;
第三处理模块23,还用于若上述区块链中存在上述第三数据节点,则从上述第三数据节点获取目标区块高度区间对应的区块的第五区块数据,并将上述第五区块数据同步至上述目标节点,上述目标区块高度区间为上述目标节点对应的最高区块高度至上述第三数据节点对应的最高区块高度的区块高度区间。
具体实现中,上述装置1可通过其内置的各个功能模块执行如上述图2、图5以及图6中各个步骤所提供的实现方式,具体可参见上述各个步骤所提供的实现方式,在此不再赘述。
在本申请实施例中,通过数据节点对区块数据进行备份产生的数据快照直接用于目标节点的数据同步,极大减少了目标节点数据同步所需要的时间。另一方面,通过从不同数据节点获取相同区块高度的数据快照对已获取的数据快照进行数据恢复,可确保用于目标节点数据同步的数据快照所对应区块数据完整无误。与此同时,目标仅需要除数据快照所对应的全部区块外的其他区块高度的区块数据进行同步,可快速完成节点数据同步,适用性高。
参见图8,图8是本申请实施例提供的设备的结构示意图。如图8所示,本实施例中的设备1000可以包括:处理器1001,网络接口1004和存储器1005,此外,上述设备1000还可以包括:用户接口1003,和至少一个通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。其中,用户接口1003可以包括显示屏(Display)、键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1004可以是高速RAM存储器,也可以是非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。存储器1005可选的还可以是至少一个位于远离前述处理器1001的存储装置。如图8所示,作为一种计算机可读存储介质的存储器1005中可以包括操作***、网络通信模块、用户接口模块以及设备控制应用程序。
在图8所示的设备1000中,网络接口1004可提供网络通讯功能;而用户接口1003主要用于为用户提供输入的接口;而处理器1001可以用于调用存储器1005中存储的设备控制应用程序,以实现:
从第一数据节点获取第一数据快照,其中,每个数据节点在区块链每增加预设数量的区块时对上述区块链所有区块的区块数据进行一次备份得到数据快照,上述第一数据快照为上述第一数据节点距离当前时刻最后一次进行备份时所产生的数据快照;
从第二数据节点获取第二数据快照,上述第二数据快照为上述第二数据节点距离上述当前时刻最后一次进行备份时所产生的数据快照;
将上述第一数据快照和上述第二数据快照进行匹配,若上述第一数据快照和上述第二数据快照不一致,则从上述区块链中获取目标区块的数据状态日志,根据上述数据状态日志对上述第一数据快照进行数据恢复得到第三数据快照,上述目标区块为上述第一数据快照所对应的所有区块中区块高度最高的区块;
将上述第三数据快照对应的所有区块的第一区块数据存储至目标节点;
从上述第一数据节点获取除上述第三数据快照对应的所有区块外的其他区块的第二区块数据,将上述第二区块数据同步至上述目标节点。
在一些可行的实施方式中,上述处理器1001用于:
根据上述数据状态日志确定出上述目标区块的交易数据、合约数据以及账户数据;
根据上述交易数据、上述合约数据以及上述账户数据对上述目标区块的区块数据进行更新,得到第三数据快照。
在一些可行的实施方式中,上述处理器1001还用于:
从上述区块链的目标区块中获取上述目标区块的第二交易数据、第二合约数据以及第二账户数据;
将上述第一交易数据、上述第一合约数据以及上述第二账户数据分别与上述第二交易数据、上述第二合约数据以及上述第二账户数据进行匹配;
若上述第一交易数据与上述第二交易数据一致、上述第一合约数据与上述第二合约数据一致且上述第一账户数据与上述第二账户数据一致,则执行上述对上述目标区块的区块数据进行更新的步骤。
在一些可行的实施方式中,上述处理器1001还用于:
根据上述第一区块数据获取上述第三数据快照对应的所有区块的第一默克尔树根;
从上述区块链中获取上述第三数据快照对应的所有区块的第二默克尔树根;
将上述第一默克尔树根与上述第二默克尔树根进行匹配,若每个第一默克尔树根与相对应的第二默克尔树根均一致,则执行将上述第三数据快照对应的所有区块的第一区块数据存储至目标节点的步骤。
在一些可行的实施方式中,上述处理器1001还用于:
若上述第一数据快照和上述第二数据快照不一致,则获取上述第一数据快照对应的所有区块中除上述目标区块外的其他区块的第三区块数据;
从上述区块链的目标区块中获取上述目标区块的第四区块数据;
将上述第三区块数据和上述第四区块数据存储至上述目标节点。
在一些可行的实施方式中,上述处理器1001用于:
将上述第二区块数据发送至共识节点以使上述共识节点根据除上述第一数据节点外的其他数据节点的区块数据对上述第二区块数据进行验证;
获取每个共识节点的验证结果,当所有验证结果满足预设共识策略时将上述第二区块数据存储至上述目标节点。
在一些可行的实施方式中,上述处理器1001还用于:
确定上述区块链中是否存在第三数据节点,上述第三数据节点对应的最高区块高度高于上述目标节点对应的最高区块高度;
若上述区块链中存在上述第三数据节点,则从上述第三数据节点获取目标区块高度区间对应的区块的第五区块数据,并将上述第五区块数据同步至上述目标节点,上述目标区块高度区间为上述目标节点对应的最高区块高度至上述第三数据节点对应的最高区块高度的区块高度区间。
应当理解,在一些可行的实施方式中,上述处理器1001可以是中央处理单元(central processing unit,CPU),该处理器还可以是其他通用处理器、数字信号处理器(digital signal processor,DSP)、专用集成电路(application specific integratedcircuit,ASIC)、现成可编程门阵列(field-programmable gate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。该存储器可以包括只读存储器和随机存取存储器,并向处理器提供指令和数据。存储器的一部分还可以包括非易失性随机存取存储器。例如,存储器还可以存储设备类型的信息。
具体实现中,上述设备1000可通过其内置的各个功能模块执行如上述图2、图5以及图6中各个步骤所提供的实现方式,具体可参见上述各个步骤所提供的实现方式,在此不再赘述。
在本申请实施例中,通过数据节点对区块数据进行备份产生的数据快照直接用于目标节点的数据同步,极大减少了目标节点数据同步所需要的时间。另一方面,通过从不同数据节点获取相同区块高度的数据快照对已获取的数据快照进行数据恢复,可确保用于目标节点数据同步的数据快照所对应区块数据完整无误。与此同时,目标仅需要除数据快照所对应的全部区块外的其他区块高度的区块数据进行同步,可快速完成节点数据同步,适用性高。
本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,被处理器执行以实现上述图2、图5以及图6中各个步骤所提供的方法,具体可参见上述各个步骤所提供的实现方式,在此不再赘述。
上述计算机可读存储介质可以是前述任一实施例提供的任务处理装置的内部存储单元,例如电子设备的硬盘或内存。该计算机可读存储介质也可以是该电子设备的外部存储设备,例如该电子设备上配备的插接式硬盘,智能存储卡(smart media card,SMC),安全数字(secure digital,SD)卡,闪存卡(flash card)等。上述计算机可读存储介质还可以包括磁碟、光盘、只读存储记忆体(read-only memory,ROM)或随机存储记忆体(randomaccess memory,RAM)等。进一步地,该计算机可读存储介质还可以既包括该电子设备的内部存储单元也包括外部存储设备。该计算机可读存储介质用于存储该计算机程序以及该电子设备所需的其他程序和数据。该计算机可读存储介质还可以用于暂时地存储已经输出或者将要输出的数据。
本申请的权利要求书和说明书及附图中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、***、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置展示该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。在本申请说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
以上所揭露的仅为本申请较佳实施例而已,当然不能以此来限定本申请之权利范围,因此依本申请权利要求所作的等同变化,仍属本申请所涵盖的范围。

Claims (10)

1.一种节点数据同步方法,其特征在于,所述方法包括:
从第一数据节点获取第一数据快照,其中,每个数据节点在区块链每增加预设数量的区块时对所述区块链所有区块的区块数据进行一次备份得到数据快照,所述第一数据快照为所述第一数据节点距离当前时刻最后一次进行备份时所产生的数据快照;
从第二数据节点获取第二数据快照,所述第二数据快照为所述第二数据节点距离所述当前时刻最后一次进行备份时所产生的数据快照;
将所述第一数据快照和所述第二数据快照进行匹配,若所述第一数据快照和所述第二数据快照不一致,则从所述区块链中获取目标区块的数据状态日志,根据所述数据状态日志对所述第一数据快照进行数据恢复得到第三数据快照,所述目标区块为所述第一数据快照所对应的所有区块中区块高度最高的区块;
将所述第三数据快照对应的所有区块的第一区块数据存储至目标节点;
从所述第一数据节点获取除所述第三数据快照对应的所有区块外的其他区块的第二区块数据,将所述第二区块数据同步至所述目标节点。
2.根据权利要求1所述的方法,其特征在于,所述根据所述数据状态日志对所述第一数据快照进行数据恢复得到第三数据快照包括:
根据所述数据状态日志确定出所述目标区块的交易数据、合约数据以及账户数据;
根据所述交易数据、所述合约数据以及所述账户数据对所述目标区块的区块数据进行更新,得到第三数据快照。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
从所述区块链的目标区块中获取所述目标区块的第二交易数据、第二合约数据以及第二账户数据;
将所述交易数据、所述合约数据以及所述第二账户数据分别与所述第二交易数据、所述第二合约数据以及所述第二账户数据进行匹配;
若所述交易数据与所述第二交易数据一致、所述合约数据与所述第二合约数据一致且所述第一账户数据与所述第二账户数据一致,则执行所述对所述目标区块的区块数据进行更新的步骤。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
根据所述第一区块数据获取所述第三数据快照对应的所有区块的第一默克尔树根;
从所述区块链中获取所述第三数据快照对应的所有区块的第二默克尔树根;
将所述第一默克尔树根与所述第二默克尔树根进行匹配,若每个第一默克尔树根与相对应的第二默克尔树根均一致,则执行将所述第三数据快照对应的所有区块的第一区块数据存储至目标节点的步骤。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若所述第一数据快照和所述第二数据快照不一致,则获取所述第一数据快照对应的所有区块中除所述目标区块外的其他区块的第三区块数据;
从所述区块链的目标区块中获取所述目标区块的第四区块数据;
将所述第三区块数据和所述第四区块数据存储至所述目标节点。
6.根据权利要求1所述的方法,其特征在于,所述将所述第二区块数据同步至所述目标节点包括:
将所述第二区块数据发送至共识节点以使所述共识节点根据除所述第一数据节点外的其他数据节点的区块数据对所述第二区块数据进行验证;
获取每个共识节点的验证结果,当所有验证结果满足预设共识策略时将所述第二区块数据存储至所述目标节点。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:
确定所述区块链中是否存在第三数据节点,所述第三数据节点对应的最高区块高度高于所述目标节点对应的最高区块高度;
若所述区块链中存在所述第三数据节点,则从所述第三数据节点获取目标区块高度区间对应的区块的第五区块数据,并将所述第五区块数据同步至所述目标节点,所述目标区块高度区间为所述目标节点对应的最高区块高度至所述第三数据节点对应的最高区块高度的区块高度区间。
8.一种节点数据同步装置,其特征在于,所述装置包括:
第一获取模块,用于从第一数据节点获取第一数据快照,其中,每个数据节点在区块链每增加预设数量的区块时对所述区块链所有区块的区块数据进行一次备份得到数据快照,所述第一数据快照为所述第一数据节点距离当前时刻最后一次进行备份时所产生的数据快照;
第二获取模块,用于从第二数据节点获取第二数据快照,所述第二数据快照为所述第二数据节点距离所述当前时刻最后一次进行备份时所产生的数据快照;
第一处理模块,用于将所述第一数据快照和所述第二数据快照进行匹配,若所述第一数据快照和所述第二数据快照不一致,则从所述区块链中获取目标区块的数据状态日志,根据所述数据状态日志对所述第一数据快照进行数据恢复得到第三数据快照,所述目标区块为所述第一数据快照所对应的所有区块中区块高度最高的区块;
第一同步模块,用于将所述第三数据快照对应的所有区块的第一区块数据存储至目标节点;
第二同步模块,用于从所述第一数据节点获取除所述第三数据快照对应的所有区块外的其他区块的第二区块数据,将所述第二区块数据同步至所述目标节点。
9.一种节点数据同步设备,其特征在于,包括处理器和存储器,所述处理器和存储器相互连接;
所述存储器用于存储计算机程序,所述计算机程序包括程序指令,所述处理器被配置用于调用所述程序指令,执行如权利要求1至7任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行以实现权利要求1至7任一项所述的方法。
CN202010074098.0A 2020-01-22 2020-01-22 节点数据同步方法、装置、设备以及存储介质 Active CN111209343B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010074098.0A CN111209343B (zh) 2020-01-22 2020-01-22 节点数据同步方法、装置、设备以及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010074098.0A CN111209343B (zh) 2020-01-22 2020-01-22 节点数据同步方法、装置、设备以及存储介质

Publications (2)

Publication Number Publication Date
CN111209343A CN111209343A (zh) 2020-05-29
CN111209343B true CN111209343B (zh) 2022-02-22

Family

ID=70787639

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010074098.0A Active CN111209343B (zh) 2020-01-22 2020-01-22 节点数据同步方法、装置、设备以及存储介质

Country Status (1)

Country Link
CN (1) CN111209343B (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109636388B (zh) * 2018-12-07 2024-02-23 深圳市智税链科技有限公司 区块链网络中的数据处理方法、装置、介质及电子设备
CN112749969B (zh) * 2020-11-16 2022-08-09 腾讯科技(深圳)有限公司 一种数据处理方法、装置、计算机设备及存储介质
CN113326332B (zh) * 2021-06-18 2024-07-05 深圳前海微众银行股份有限公司 一种区块链的快照同步方法及装置
CN113378144B (zh) * 2021-07-14 2022-09-02 湖北央中巨石信息技术有限公司 基于区块链的图像文件共识方法及***及装置及介质
CN115292419B (zh) * 2022-10-09 2023-03-31 深圳市明源云科技有限公司 基于poH共识的数据处理方法、装置、设备及存储介质
CN115794947A (zh) * 2022-11-29 2023-03-14 蚂蚁财富(上海)金融信息服务有限公司 数据同步方法、装置、存储介质及电子设备

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8516210B2 (en) * 2011-12-21 2013-08-20 Microsoft Corporation Application consistent snapshots of a shared volume
US9524328B2 (en) * 2014-12-28 2016-12-20 Strato Scale Ltd. Recovery synchronization in a distributed storage system
CN106815091B (zh) * 2015-11-27 2020-02-14 成都华为技术有限公司 同步续传方法、从端设备及***
CN109145163B (zh) * 2018-08-22 2021-08-24 深圳前海微众银行股份有限公司 区块链数据缩容方法、装置及存储介质
CN109636388B (zh) * 2018-12-07 2024-02-23 深圳市智税链科技有限公司 区块链网络中的数据处理方法、装置、介质及电子设备

Also Published As

Publication number Publication date
CN111209343A (zh) 2020-05-29

Similar Documents

Publication Publication Date Title
CN111209343B (zh) 节点数据同步方法、装置、设备以及存储介质
US11611445B2 (en) Changing smart contracts recorded in block chains
CN110690974B (zh) 基于区块链的数据验证方法、装置、设备及可读存储介质
WO2020151323A1 (zh) 一种基于数据分片的数据存储方法、设备及介质
CN109522363B (zh) 基于区块链的云平台同步方法、***、设备及存储介质
US20210049715A1 (en) Blockchain-based data procesing method, apparatus, and electronic device
CN105138347A (zh) 一种差分升级包生成方法、软件升级方法及相应装置
CN112035472B (zh) 数据处理方法、装置、计算机设备和存储介质
CN108491301B (zh) 电子装置、基于redis的异常预警方法及存储介质
CN110442473B (zh) 一种非易失性数据存储方法、装置、电子设备及介质
CN110570196A (zh) 交易数据处理方法、装置、终端设备以及存储介质
CN110704428A (zh) 区块链的数据索引方法、装置、计算机设备和存储介质
CN107861832B (zh) 数据验证方法、装置及可读存储介质
CN111209339B (zh) 区块同步方法、装置、计算机以及存储介质
EP3474143B1 (en) Method and apparatus for incremental recovery of data
CN110543516A (zh) 智能合约处理方法、装置、计算机设备及存储介质
CN109586949B (zh) 区块生成方法及计算机存储介质
CN111680104B (zh) 数据同步方法、装置、计算机设备及可读存储介质
KR100922584B1 (ko) 객체 기반 분산 공유 시스템 및 그의 방법
CN105550071A (zh) ***文件升级及检测方法、通信设备
CN108196975B (zh) 基于多校验和的数据验证方法、装置及存储介质
CN112559059A (zh) 一种bios选项配置方法及相关装置
CN115883533A (zh) 文件同步方法、装置、计算机设备及存储介质
CN111722946A (zh) 分布式事务处理方法、装置、计算机设备及可读存储介质
CN111507840B (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
GR01 Patent grant
GR01 Patent grant