CN112100282B - 联盟链的数据同步方法、装置、可读介质及电子设备 - Google Patents

联盟链的数据同步方法、装置、可读介质及电子设备 Download PDF

Info

Publication number
CN112100282B
CN112100282B CN202011284832.2A CN202011284832A CN112100282B CN 112100282 B CN112100282 B CN 112100282B CN 202011284832 A CN202011284832 A CN 202011284832A CN 112100282 B CN112100282 B CN 112100282B
Authority
CN
China
Prior art keywords
target
check point
data
block
block height
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
CN202011284832.2A
Other languages
English (en)
Other versions
CN112100282A (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 CN202011284832.2A priority Critical patent/CN112100282B/zh
Publication of CN112100282A publication Critical patent/CN112100282A/zh
Application granted granted Critical
Publication of CN112100282B publication Critical patent/CN112100282B/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

Landscapes

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

Abstract

本申请的实施例提供了一种联盟链的数据同步方法、装置、可读介质及电子设备。该方法包括:若需要同步联盟链中的区块数据,则从所述联盟链的检查点信息集中选择目标检查点,所述检查点信息集包含有多个检查点以及各个检查点对应的账本数据快照,所述各个检查点对应的账本数据快照包含有所述各个检查点所对应区块高度的账本数据全局状态;根据选择的所述目标检查点,获取所述目标检查点对应的目标账本数据快照,所述目标账本数据快照包含有所述目标检查点所对应目标区块高度的目标账本数据全局状态;存储所述目标账本数据全局状态,并对所述联盟链中处于所述目标区块高度之后的区块数据进行同步。本申请实施例的技术方案实现了区块数据的快速同步。

Description

联盟链的数据同步方法、装置、可读介质及电子设备
技术领域
本申请涉及区块链领域,具体而言,涉及一种联盟链的数据同步方法、装置、可读介质及电子设备。
背景技术
随着区块链技术的兴起,其应用场景也在不断丰富扩展,从交易转账,到产品溯源,基本已经形成了一种“万物皆可上链”的发展趋势。而随着链上数据的不断增长,如何进行快速高效的区块数据同步成为一个不可避免的问题。
区块链主要包含有联盟链、私有链和公有链,相比于公有链,在联盟链中节点设备进行区块数据同步需要花费大量时间,同步效率较低。
发明内容
本申请的实施例提供了一种联盟链的数据同步方法、装置、计算机可读介质及电子设备,进而至少在一定程度上实现了区块数据的快速同步,提高了联盟链中数据同步效率。
本申请的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本申请的实践而习得。
根据本申请实施例的一个方面,提供了一种联盟链的数据同步方法,包括:若需要同步联盟链中的区块数据,则从所述联盟链的检查点信息集中选择目标检查点,所述检查点信息集包含有多个检查点以及各个检查点对应的账本数据快照,所述各个检查点对应的账本数据快照包含有所述各个检查点所对应区块高度的账本数据全局状态;根据选择的所述目标检查点,获取所述目标检查点对应的目标账本数据快照,所述目标账本数据快照包含有所述目标检查点所对应目标区块高度的目标账本数据全局状态;存储所述目标账本数据全局状态,并对所述联盟链中处于所述目标区块高度之后的区块数据进行同步。
根据本申请实施例的一个方面,提供了一种联盟链的数据同步方法,包括:获取所述联盟链的当前区块高度;若所述当前区块高度达到目标检查点对应的区块高度,则获取所述当前区块高度的账本数据全局状态;根据所述账本数据全局状态,生成所述目标检查点对应的账本数据快照,所述账本数据快照包含有所述目标检查点所对应区块高度的账本数据全局状态;将所述目标检查点以及所述目标检查点对应的账本数据快照存储至所述联盟链的检查点信息集中,所述检查点信息集用于使需要同步所述联盟链中的区块数据的节点从中选取检查点,并基于选取的检查点同步区块数据。
根据本申请实施例的一个方面,提供了一种联盟链的数据同步装置,包括:选择单元,配置为若需要同步联盟链中的区块数据,则从所述联盟链的检查点信息集中选择目标检查点,所述检查点信息集包含有多个检查点以及各个检查点对应的账本数据快照,所述各个检查点对应的账本数据快照包含有所述各个检查点所对应区块高度的账本数据全局状态;第一获取单元,配置为根据选择的所述目标检查点,获取所述目标检查点对应的目标账本数据快照,所述目标账本数据快照包含有所述目标检查点所对应目标区块高度的目标账本数据全局状态;存储同步单元,配置为存储所述目标账本数据全局状态,并对所述联盟链中处于所述目标区块高度之后的区块数据进行同步。
在本申请的一些实施例中,基于前述方案,所述选择单元配置为:根据期望的数据同步时长,确定在所述数据同步时长内能够同步的第一区块高度;计算所述联盟链的指定区块高度与所述第一区块高度之差,得到第二区块高度,所述指定区块高度是需要同步到的区块高度;根据所述第二区块高度,以及检查点与区块高度之间的对应关系,选择所述目标检查点。
在本申请的一些实施例中,基于前述方案,所述选择单元配置为:从所述联盟链的检查点信息集中获取所述各个检查点对应的区块高度;将所述各个检查点对应的区块高度中最大区块高度对应的检查点作为所述目标检查点。
在本申请的一些实施例中,基于前述方案,所述账本数据快照是所述联盟链的已有参与方的共识节点对所述各个检查点所对应区块高度的账本数据全局状态进行共识后生成的;在所述装置设置在新加入所述联盟链的节点中的情况下,所述选择单元包括:第一选择子单元,配置为若新加入所述联盟链的节点为所述联盟链的已有参与方的新增节点,则在所述新增节点加入所述联盟链之后,直接从所述联盟链的检查点信息集中选择所述目标检查点;第二选择子单元,配置为若新加入所述联盟链的节点为所述联盟链的新增参与方的节点,则在所述新增参与方的节点加入所述联盟链之后,从所述联盟链的检查点信息集中选择至少两个检查点进行校验,在校验通过后,从所述检查点信息集中选择所述目标检查点。
在本申请的一些实施例中,基于前述方案,所述第二选择子单元配置为:根据从所述联盟链的检查点信息集中选择的至少两个检查点分别对应的账本数据快照,确定所述至少两个检查点分别对应的区块高度以及所对应的账本数据全局状态;根据所述至少两个检查点分别对应的账本数据全局状态,对所述至少两个检查点中相邻检查点所对应的区块高度之间的交易进行校验,得到校验结果。
在本申请的一些实施例中,基于前述方案,所述装置还包括:第一确定单元,配置为若对所述至少两个检查点中任意相邻检查点所对应的区块高度之间的交易均校验通过,则确定对所述至少两个检查点校验通过。
根据本申请实施例的一个方面,提供了一种联盟链的数据同步装置,包括:第二获取单元,配置为获取所述联盟链的当前区块高度;第三获取单元,配置为若所述当前区块高度达到目标检查点对应的区块高度,则获取所述当前区块高度的账本数据全局状态;生成单元,配置为根据所述账本数据全局状态,生成所述目标检查点对应的账本数据快照,所述账本数据快照包含有所述目标检查点所对应区块高度的账本数据全局状态;存储单元,配置为将所述目标检查点以及所述目标检查点对应的账本数据快照存储至所述联盟链的检查点信息集中,所述检查点信息集用于使需要同步所述联盟链中的区块数据的节点从中选取检查点,并基于选取的检查点同步区块数据。
在本申请的一些实施例中,基于前述方案,所述第三获取单元配置为:向所述联盟链的同一参与方对应的背书节点发送用于生成所述当前区块高度的账本数据全局状态的请求;接收所述同一参与方对应的背书节点返回的所述当前区块高度的账本数据全局状态。
在本申请的一些实施例中,基于前述方案,所述装置还包括:第四获取单元,配置为获取所述联盟链的检查点配置信息,以及所述目标检查点的上一检查点对应的区块高度,所述检查点配置信息包含有相邻两个检查点之间的间隔区块高度;第二确定单元,配置为若所述当前区块高度与所述上一检查点对应的区块高度之差等于所述间隔区块高度,则确定所述当前区块高度达到所述目标检查点对应的区块高度。
在本申请的一些实施例中,基于前述方案,所述生成单元配置为:在所述联盟链中对所述当前区块高度的账本数据全局状态进行共识;若超过预设数量的共识节点对所述当前区块高度的账本数据全局状态达成共识,则生成所述目标检查点对应的账本数据快照。
在本申请的一些实施例中,基于前述方案,所述当前区块高度的账本数据全局状态是向所述联盟链的同一参与方对应的背书节点发送请求所制定的,所述装置还包括:发送单元,配置为若在所述联盟链中对所述当前区块高度的账本数据全局状态共识失败,则向所述同一参与方的背书节点重新发送请求;第三确定单元,配置为若向所述联盟链的同一参与方的背书节点发送请求的次数超过预设次数,则确定所述当前区块高度的账本数据全局状态制定失败。
根据本申请实施例的一个方面,提供了一种计算机可读介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上述实施例中所述的联盟链的数据同步方法。
根据本申请实施例的一个方面,提供了一种电子设备,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如上述实施例中所述的联盟链的数据同步方法。
根据本申请实施例的一个方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述各种可选实施例中提供的联盟链的数据同步方法。
在本申请的一些实施例所提供的技术方案中,在需要同步联盟链中的区块数据的情况下,从联盟链的检查点信息集中选择目标检查点,然后根据选择的目标检查点,获取目标检查点对应的目标账本数据快照,目标账本数据全局状态,进而存储目标账本数据全局状态,并对联盟链中处于目标区块高度之后的区块数据进行同步。由于本申请实施例的技术方案中的检查点信息集包含有多个检查点以及各个检查点对应的账本数据快照,因此需要同步联盟链中的区块数据的节点可以灵活选择账本数据快照进行数据同步,实现了区块数据的快速同步,提高了联盟链中数据同步效率。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1A示出了一种联盟链网络的结构示意图。
图1B示出了一种联盟链的结构示意图。
图1C示出了一种联盟链中新区块生成的示意图。
图1D示出了可以应用本申请实施例的技术方案的应用场景示意图。
图2示出了根据本申请的一个实施例的联盟链的数据同步方法的流程图。
图3示出了根据本申请的一个实施例的联盟链的数据同步方法的流程图。
图4示出了根据本申请的一个实施例的联盟链的数据同步方法的流程图。
图5示出了根据本申请的一个实施例的联盟链的数据同步方法的流程图。
图6示出了根据本申请的一个实施例的联盟链的数据同步方法的流程图。
图7示出了根据本申请的一个实施例的联盟链的数据同步方法的流程图。
图8示出了根据本申请的一个实施例的生成账本数据快照的流程图。
图9示出了根据本申请的一个实施例的区块数据同步的示意图。
图10示出了根据本申请的一个实施例的检查点校验的示意图。
图11示出了根据本申请的一个实施例的联盟链的数据同步装置的框图。
图12示出了根据本申请的一个实施例的联盟链的数据同步装置的框图。
图13示出了适于用来实现本申请实施例的电子设备的计算机系统的结构示意图。
具体实施方式
现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本申请将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。
此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本申请的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本申请的技术方案而没有特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知方法、装置、实现或者操作以避免模糊本申请的各方面。
需要说明的是,本申请的说明书和权利要求书及上述附图中使用的术语仅用于描述实施例,并不旨在限制本申请的范围。应该理解的是,术语“包括”、“包含”、“具有”等在本文中使用时指定存在所陈述的特点、整体、步骤、操作、元件、组件和/或其群组,但并不排除存在或添加其他特点、整体、步骤、操作、元件、组件和/或其群组中的一个或多个。
将进一步理解的是,尽管术语“第一”、“第二”、“第三”等可以在本文中用于描述各种元件,但是这些元件不应受这些术语的限制。这些术语仅用于区分一个元件和另一个元件。例如,在不脱离本发明的范围的情况下,第一元件可以被称为第二元件。类似地,第二元件可以被称为第一元件。如本文所使用的,术语“和/或”包含关联的列出的项目中的一个或多个的任何和所有组合。
附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解,而有的操作/步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。
应当理解,在本申请中,“至少一个(项)”是指一个或者多个,“多个”是指两个或两个以上。
对本申请实施例进行进一步详细说明之前,对本申请实施例中涉及的名词和术语进行说明,本申请实施例中涉及的名词和术语适用于如下的解释。
(1)、区块链(Blockchain):区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链,本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层。
区块链一般被划分为三种类型:公有链(Public Blockchain),私有链(PrivateBlockchain)和联盟链(Consortium Blockchain)。
其中,去中心化程度最高的是公有链。常见的公有链有比特币、以太坊,加入公有链的节点/参与者都可以读取链上的数据、发布交易以及竞争新区块的记账权等;而且,各节点/参与者可自由加入以及退出公有链。私有链则相反,私有链的记账权限由某个组织或者机构控制,数据读取权限也受该组织或机构的控制,参与者少且不能随意加入到私有链,需经过组织或者机构的审核。
联盟链是也称为共同体区块链,是指其共识过程受到预选节点控制的区块链,是公有链和私有链的混合,可实现“部分去中心化”。链上各个节点通常有与之相对应的实体机构或者组织;参与者通过授权加入网络并组成利益相关联盟,共同维护区块链运行。通过联盟链,新来的参与者可以加入已形成的区块链并共享数据,而不必从头开始构建它。同时,通过共同解决常见问题,公司减少了开发成本和时间费用。
(2)、区块(Block),指用于记录交易数据的数据结构,每个区块均具有时间戳,每个区块中的交易数据均携带签名信息。
(3)、账本(Ledger),是区块链(也称为账本数据)、以及与区块链同步的状态数据库的统称。其中,区块链是以文件系统中的文件的形式来记录交易;状态数据库是以不同类型的键(Key)值(Value)对的形式来记录区块链中的交易,用于支持对区块链中交易的快速查询。
(4)、共识(Consensus),是区块链网络中的一个过程,用于在涉及的多个节点之间对区块中的交易达成一致,达成一致的区块将被追加到区块链的尾部。实现共识的机制包括工作量证明(PoW,Proof of Work)、权益证明(PoS,Proof of Stake)、股份授权证明(DPoS,Delegated Proof-of-Stake)、消逝时间量证明(PoET,Proof of Elapsed Time)等。
(5)、参与方,也称为业务主体,代表某个具体的实体身份(例如公司、企业和社会团体等),在区块链网络中有自己的根证书,区块链中的节点属于某个参与方,同一个参与方可以在同一个通道中拥有多个节点。
目前,区块链一般被划分为三种类型:公有链,私有链和联盟链。其中,公有链的节点可以通过全量同步和快速同步的方式实现数据同步,快速同步方式可以帮助节点快速参与到链上,而不需要等待漫长的时间来同步历史账本数据。私有链的节点也可以通过快速同步方式实现数据同步。然而,由于公有链和联盟链的组网形态的不同,联盟链具有严格的准入机制和权限管理,这意味着所有联盟链的参与成员信息都需要上到链上,每次有新的成员加入时,联盟链的参与成员信息都会更新上链。只有当新的成员节点同步到最新的联盟链成员信息所在的区块的时候,才能具备正常工作的能力。因此,公有链的快速同步方式并不适用于联盟链。而私有链的快速同步方式往往需要依赖第三方,而作为联盟链的成员是不能依赖第三方来保证区块数据的可靠性的,因此私有链的快速同步方式也不适用于联盟链。而公有链的全量同步方式更是需要花费大量时间进行数据同步。
对此,本申请实施例提供了一种联盟链的数据同步方法,可以提高联盟链的数据同步效率。具体的,首先,当联盟链中的节点需要同步联盟链中的区块数据时,可以从联盟链的检查点信息集中选择目标检查点,其中,检查点信息集包含有多个检查点以及各个检查点对应的账本数据快照,各个检查点对应的账本数据快照包含有各个检查点所对应区块高度的账本数据全局状态;然后,根据选择的目标检查点,获取目标检查点对应的目标账本数据快照,目标账本数据快照包含有目标检查点所对应目标区块高度的目标账本数据全局状态;进而,需要同步联盟链中的区块数据的节点可以存储目标账本数据全局状态,并对联盟链中处于目标区块高度之后的区块数据进行同步。通过在联盟链中维护有检查点信息集,检查点信息集包含有多个检查点以及各个检查点对应的账本数据快照,需要同步联盟链中的区块数据的节点可以灵活选择账本数据快照进行数据同步,实现了区块数据的快速同步,提高了联盟链中数据同步效率。
本申请提供的联盟链的数据同步方法,可以应用于联盟链网络。参见图1A所示的联盟链网络,联盟链网络100是指用于进行节点与节点之间数据共享的系统,该联盟链网络中可以包括多个节点101,多个节点101可以是指联盟链网络中各个客户端,本申请实施例中,可以包括共识节点、背书节点等。每个节点101在进行正常工作可以接收到输入信息,并基于接收到的输入信息维护该联盟链网络内的共享数据。为了保证联盟链网络内的信息互通,联盟链网络中的每个节点之间可以存在信息连接,节点之间可以通过上述信息连接进行信息传输。例如,当联盟链网络中的任意节点接收到输入信息时,联盟链网络中的其他节点便根据共识算法获取该输入信息,将该输入信息作为共享数据中的数据进行存储,使得联盟链网络中全部节点上存储的数据均一致。
对于联盟链网络中的每个节点,均具有与其对应的节点标识,而且联盟链网络中的每个节点均可以存储有联盟链网络中其他节点的节点标识,以便后续根据其他节点的节点标识,将生成的区块广播至联盟链网络中的其他节点。每个节点中可维护一个如下表所示的节点标识列表,将节点名称和节点标识对应存储至该节点标识列表中。其中,节点标识可为IP(Internet Protocol,网络之间互联的协议)地址以及其他任一种能够用于标识该节点的信息,表1中仅以IP地址为例进行说明。
Figure 659146DEST_PATH_IMAGE001
图1A中所示的联盟链网络100中的每个节点均存储一条相同的区块链。区块链由多个区块组成,参见图1B,区块链由多个区块组成,创始块中包括区块头和区块主体,区块头中存储有输入信息特征值、版本号、时间戳和难度值,区块主体中存储有输入信息;创始块的下一区块以创始块为父区块,下一区块中同样包括区块头和区块主体,区块头中存储有当前区块的输入信息特征值、父区块的区块头特征值、版本号、时间戳和难度值,并以此类推,使得区块链中每个区块中存储的区块数据均与父区块中存储的区块数据存在关联,保证了区块中输入信息的安全性。
在生成区块链中的各个区块时,参见图1C,区块链所在的节点在接收到输入信息时,对输入信息进行校验,完成校验后,将输入信息存储至内存池中,并更新其用于记录输入信息的哈希树;之后,将更新时间戳更新为接收到输入信息的时间,并尝试不同的随机数,多次进行特征值计算,使得计算得到的特征值可以满足下述公式:
Figure 45128DEST_PATH_IMAGE002
其中,SHA256为计算特征值所用的特征值算法;version(版本号)为区块链中相关区块协议的版本信息;prev_hash为当前区块的父区块的区块头特征值;merkle_root为输入信息的特征值;ntime为更新时间戳的更新时间;nbits为当前难度,在一段时间内为定值,并在超出固定时间段后再次进行确定;x为随机数;TARGET为特征值阈值,该特征值阈值可以根据nbits确定得到。
这样,当计算得到满足上述公式的随机数时,便可将信息对应存储,生成区块头和区块主体,得到当前区块。随后,区块链所在节点根据数据共享系统中其他节点的节点标识,将新生成的区块分别发送给其所在的数据共享系统中的其他节点,由其他节点对新生成的区块进行校验,并在完成校验后将新生成的区块添加至其存储的区块链中。
请参考图1D,示出了可以应用本申请实施例的技术方案的应用场景示意图。该应用场景可以包括联盟链网络100,在该联盟链网络100中包括多个参与方(参与方甲、参与方乙、参与方丙、参与方丁…),参与方,也称为业务主体,代表某个具体的实体身份(例如公司、企业和社会团体等),在区块链网络中有自己的根证书,区块链中的节点属于某个参与方,同一个参与方可以拥有多个节点101,节点101可以是一个独立的设备(如终端、服务器等),也可以是由多个设备所构成的集群设备。
在联盟链网络100中存储有检查点信息集,其中检查点信息集中包含有多个检查点(检查点A、检查点B、检查点C…)以及各个检查点对应的账本数据快照(账本数据快照A、账本数据快照B、账本数据快照C…),每个检查点具有对应的区块高度,且各个检查点对应的账本数据快照包含有各个检查点对应区块高度的账本全局状态。
在本申请的一个实施例中,如果联盟链网络100的参与方甲的节点101需要同步联盟链网络100中的区块数据,则可以从联盟链的检查点信息集中选择目标检查点,然后,根据选择的目标检查点获取目标检查点对应的目标账本数据快照,参与方甲的节点101获取到的目标账本数据快照包含有目标检查点所对应目标区块高度的目标账本数据全局状态,因此,参与方甲的节点101可以存储目标账本数据全局状态,并对联盟链网络100中处于目标区块高度之后的区块数据进行同步。具体地,参与方甲的节点101可以从其他参与方的节点101获取目标区块高度之后的区块数据,然后进行同步。
需要说明的是,本申请实施例的联盟链的数据同步方法不仅可以应用在联盟链网络100的已有参与方(比如参与方甲、参与方乙、参与方丙、参与方丁…)的节点101的数据同步,还可以应用在联盟链网络100的已有参与方的新增节点的数据同步,还可以应用到联盟链网络100的新增参与方的节点的数据同步。
以下对本申请实施例的技术方案的实现细节进行详细阐述:
图2示出了根据本申请的一个实施例的联盟链的数据同步方法的流程图,该方法可以应用于图1D所示实施环境中。如图2所示,联盟链的数据同步方法可以包括以下步骤:
步骤S210、若需要同步联盟链中的区块数据,则从所述联盟链的检查点信息集中选择目标检查点,所述检查点信息集包含有多个检查点以及各个检查点对应的账本数据快照,所述各个检查点对应的账本数据快照包含有所述各个检查点所对应区块高度的账本数据全局状态;
步骤S220、根据选择的所述目标检查点,获取所述目标检查点对应的目标账本数据快照,所述目标账本数据快照包含有所述目标检查点所对应目标区块高度的目标账本数据全局状态;
步骤S230、存储所述目标账本数据全局状态,并对所述联盟链中处于所述目标区块高度之后的区块数据进行同步。
下面对这些步骤进行详细描述。
在步骤S210中,若需要同步联盟链中的区块数据,则从所述联盟链的检查点信息集中选择目标检查点,所述检查点信息集包含有多个检查点以及各个检查点对应的账本数据快照,所述各个检查点对应的账本数据快照包含有所述各个检查点所对应区块高度的账本数据全局状态。
具体地,本实施例以需要同步联盟链中的区块数据的节点作为执行主体为例进行说明,该节点可以是联盟链网络的已有参与方的节点,也可以是新加入联盟链网络的节点。例如,新加入联盟链网络的节点可以是联盟链的已有参与方的新增节点,也可以是联盟链的新增参与方的节点。其中,该节点为一个计算机设备,该计算机设备可以是服务器或者终端设备等。换句话说,联盟链网络中的一个节点可以是服务器也可以是终端设备等,并且,一个节点对应的服务器的个数或者终端设备的个数根据实际应用场景决定,对此不做限制。
联盟链可以维护有检查点信息集,检查点信息集中包含有多个检查点以及各个检查点对应的账本数据快照,其中,检查点是依据区块高度进行设置的,检查点与区块高度之间具有对应关系。
在此,需要解释的是,区块高度是指区块链接在主链的个数,也就是连接在区块链上的块数。把联盟链想象成一本记账的笔记本的话,“区块”就是笔记本上的一页页纸,纸上面的内容就是记账的内容。区块的编号其实就是“区块高度”。比如在一本100页的账本中,第50页的 “区块高度”就是50。区块高度是区块的标示符,区块有两个标示符,一是区块头的哈希值,二是区块高度。区块高度并不是唯一的标识符。虽然一个单一的区块总是会有一个明确的、固定的区块高度,但反过来却并不成立,一个区块高度并不总是识别一个单一的区块。两个或两个以上的区块可能有相同的区块高度,在区块链里争夺同一位置。
在本实施例中,检查点与区块高度之间的对应关系,可以是每N个区块设置一个检查点,例如,每3个区块设置一个检查点,则可以得到如下表2所示的对应关系。
Figure 418340DEST_PATH_IMAGE003
进一步,对于各个检查点,均可以根据检查点所对应区块高度的账本数据全局状态生成检查点对应的账本数据快照。需要说明的是,账本数据状态会随着区块的增加一直处于变化之中,交易是造成变化的原因。而账本数据状态可以包括账本数据历史状态和账本数据全局状态,账本数据全局状态也就是账本数据最新状态,可以理解的是,一个区块包含有多个交易记录,每个交易记录都对应有账本数据历史状态,但一个区块只对应有一个账本数据全局状态。为了便于理解,举例说明,假设A和B互相转账,A收到B的1元后再将1元还给B,B收到后再转给A,A和B之间进行了500次互转后,当前区块高度为100,最终A账户中有1元,B账户中有0元,这就是区块高度100的账本数据全局状态,而比如说,A和B第一次转账成功后,A账户有1元,B账户中有0元;第二次转账后,A账户有0元,B账户有1元,这些都是账本数据历史状态。
在步骤S220中,根据选择的所述目标检查点,获取所述目标检查点对应的目标账本数据快照,所述目标账本数据快照包含有所述目标检查点所对应目标区块高度的目标账本数据全局状态。
具体而言,作为执行主体的节点在通过步骤S210从检查点信息集选择目标检查点之后,则可以进一步根据选择的目标检查点从检查点信息集中获取到目标检查点对应的目标账本数据快照,获取到的目标账本数据快照包含有目标检查点所对应目标区块高度的目标账本数据全局状态。
需要说明的是,目标检查点所对应的目标区块高度大于作为执行主体的节点的本地区块高度。例如,作为执行主体的节点的本地区块高度为100,而作为执行主体的节点选择的目标检查点所对应的目标区块高度可以是大于100的高度,例如500,1000。
在步骤S230中,存储所述目标账本数据全局状态,并对所述联盟链中处于所述目标区块高度之后的区块数据进行同步。
由于账本数据全局状态是每个节点必须存储的,因此,作为执行主体的节点在对区块数据进行同步之前,可以首先对目标账本数据快照中包含的目标账本数据全局状态进行存储。
接下来,作为执行主体的节点则可以从联盟链的其他节点处获取目标区块高度之后的区块数据进行同步。其中,作为执行主体的节点获取目标区块高度之后的区块数据可以是获取目标区块高度与联盟链中最新区块高度之间的区块数据,也可以是获取目标区块高度与联盟链中指定区块高度之间的区块数据。举例说明,假设联盟链最新区块高度为1000,而目标区块高度为800,则作为执行主体的节点可以获取区块高度800~1000之间的区块数据进行同步,当然,在其他实施例中,作为执行主体的节点也可以获取区块高度800~900之间的区块数据进行同步。
基于以上实施例的技术方案,在联盟链中维护有检查点信息集,检查点信息集包含有多个检查点以及各个检查点对应的账本数据快照,需要同步联盟链中的区块数据的节点可以灵活选择账本数据快照进行数据同步,实现了区块数据的快速同步,提高了联盟链中数据同步效率。
在本申请的一个实施例中,作为执行主体的节点可以根据期望的数据同步时长选择目标检查点,在该实施例中,如图3所示,步骤S210可以具体包括步骤S310-步骤S330,现详细说明如下:
步骤S310、根据期望的数据同步时长,确定在所述数据同步时长内能够同步的第一区块高度。
其中,期望的数据同步时长是指作为执行主体的节点期望从开始同步到结束同步所花费的时间。而同步一个区块数据所花费的时间是已知的,因此,作为执行主体的节点可以根据期望的数据同步时长,计算得到在数据同步时长内能够同步的第一区块高度。例如,期望的数据同步时长为1小时,同步一个区块数据所花费的时间为0.5小时,则在1小时内能够同步的第一区块高度为20。
步骤S320、计算所述联盟链的指定区块高度与所述第一区块高度之差,得到第二区块高度,所述指定区块高度是需要同步到的区块高度。
在本实施例中,作为执行主体的节点可以同步目标区块高度至指定区块高度之间的区块数据,其中,指定区块高度可以是联盟链中最新区块高度,也可以是目标区块高度与最新区块高度之间的任何区块高度。
在通过步骤S310确定出在数据同步时长内能够同步的第一区块高度之后,可以进一步计算联盟链的指定区块高度与第一区块高度之差,得到第二区块高度。由于指定区块高度是需要同步到的区块高度,也即结束同步的区块高度,第一区块高度是能够同步的区块高度,因此,计算得到的第二区块高度则是开始同步的区块高度。
步骤S330、根据所述第二区块高度,以及检查点与区块高度之间的对应关系,选择所述目标检查点。
由于作为执行主体的节点选择目标检查点后,需要对目标检查点所对应目标区块高度之后的区块数据进行同步,由此可见,目标检查点对应的区块高度是开始同步的区块高度。
正因为如此,本实施例中,在计算得到第二区块高度,也即计算得到开始同步的区块高度之后,则可以根据检查点与区块高度之间的对应关系,将第二区块高度对应的检查点作为目标检查点。
在本申请的一个实施例中,作为执行主体的节点还可以直接从检查点信息集中选择最新检查点作为目标检查点,在该实施例中,最新检查点可以结合区块高度进行判断,因此,作为执行主体的节点可以首先从联盟链的检查点信息集中获取各个检查点对应的区块高度,然后将各个检查点对应的区块高度中最大区块高度对应的检查点作为目标检查点。
在本申请的一个实施例中,各个检查点的账本数据快照是联盟链的已有参与方的共识节点对各个检查点所对应区块高度的账本数据全局状态进行共识后生成的,且作为执行主体的节点可以是新加入联盟链的节点,在该实施例中,如图4所示,步骤S210可以具体包括步骤S410-步骤S420,详细说明如下:
步骤S410、若新加入所述联盟链的节点为所述联盟链的已有参与方的新增节点,则在所述新增节点加入所述区块链之后,直接从所述联盟链的检查点信息集中选择所述目标检查点。
具体而言,如果新加入联盟链的节点为联盟链的已有参与方的新增节点,在此种情况下,由于各个检查点对应的账本数据快照都是已有参与方进行共识之后生成的,因此,已有参与方的新增节点可以完全信任各个检查点的账本数据快照,因而在新增节点加入区块链之后,新增节点可以直接从联盟链的检查点信息集选择目标检查点,然后基于选择的目标检查点进行区块数据的同步。
步骤S420、若新加入所述联盟链的节点为所述联盟链的新增参与方的节点,则在所述新增参与方的节点加入所述联盟链之后,从所述联盟链的检查点信息集中选择至少两个检查点进行校验,在校验通过后,从所述检查点信息集中选择所述目标检查点。
在另外一种情形中,新加入联盟链的节点不是已有参与方的新增节点,而是新增参与方的节点,此时,由于新增参与方并没有参与各个检查点对应的账本数据快照的共识过程,因此,新增参与方对账本数据快照存在一定的不信任。
在本实施例中,如果新加入联盟链的节点为联盟链的新增参与方的节点,则新增参与方的节点在加入联盟链之后,可以从联盟链的检查点信息集中选择至少两个检查点进行校验。在校验通过的情况下,可以从检查点信息集中选择目标检查点,然后基于选择的目标检查点进行区块数据的同步;相反,在校验不通过的情况,新增参与方的节点则进行全量同步,以确保数据的可靠性。
在本申请的一个实施例中,如图5所示,对选择的至少两个检查点进行校验的过程可以具体包括步骤S510-步骤S520,详细说明如下:
步骤S510、根据从所述联盟链的检查点信息集中选择的至少两个检查点分别对应的账本数据快照,确定所述至少两个检查点分别对应的区块高度以及所对应的账本数据全局状态。
为了实现对选择的至少两个检查点的校验,新增参与方的节点可以首先获取所选择的至少两个检查点分别对应的账本数据快照,根据账本数据快照确定出所选择的至少两个检查点分别对应的区块高度以及所对应的账本数据全局状态。
步骤S520、根据所述至少两个检查点分别对应的账本数据全局状态,对所述至少两个检查点中相邻检查点所对应的区块高度之间的交易进行校验,得到校验结果。
在确定出所选择的至少两个检查点分别对应的区块高度以及所对应的账本数据全局状态之后,新增参与方的节点可以根据至少两个检查点分别对应的账本数据全局状态,对至少两个检查点中相邻检查点所对应的区块高度之间的交易进行校验,得到校验结果。
举例说明,假设选择的检查点为{a,b,c,d},则新增参与方的节点可以基于检查点a对应的账本数据全局状态,对检查点a对应的区块高度以及检查点b对应的区块高度之间的交易进行校验,得到校验结果;基于检查点b对应的账本数据全局状态,对检查点b对应的区块高度以及检查点c对应的区块高度之间的交易进行校验,得到校验结果;基于检查点c对应的账本数据全局状态,对检查点c对应的区块高度以及检查点d对应的区块高度之间的交易进行校验,得到校验结果。
在本申请的一个实施例中,如果对至少两个检查点中任意相邻检查点所对应的区块高度之间的交易均校验通过,则确定对至少两个检查点校验通过。具体地,如果校验结果与相邻检查点中后一检查点对应的账本数据全局状态一致,则可以确定相邻检查点所对应的区块高度之间的交易校验通过。
继续上述步骤S520中的举例进行说明,对检查点a对应的区块高度以及检查点b对应的区块高度之间的交易进行校验,得到校验结果,如果该校验结果与检查点b对应的账本数据全局状态一致,则可以确定对检查点a和检查点b校验通过。同理,对检查点b对应的区块高度以及检查点c对应的区块高度之间的交易进行校验,得到校验结果,如果该校验结果与检查点c对应的账本数据全局状态一致,则可以确定对检查点b和检查点c校验通过;对检查点c对应的区块高度以及检查点d对应的区块高度之间的交易进行校验,得到校验结果,如果该校验结果与检查点d对应的账本数据全局状态一致,则可以确定对检查点c和检查点d校验通过。
以上实施例的技术方案,通过维护检查点信息集,检查点信息集中包含有多个检查点以及各个检查点对应的账本数据快照,由于账本数据快照是联盟链的已有参与方的共识节点进行共识后生成的,因此,在实现区块数据快速同步的同时,进一步保证了区块数据同步的准确性。此外,通过区分新加入联盟链的节点是联盟链的已有参与方的新增节点,还是联盟链的新增参与方的节点两种不同的快速同步模式,提供了更加细致和完善的同步方案。
图6示出了根据本申请的一个实施例的联盟链的数据同步方法的流程图,该方法可以应用于图1D所示实施环境中。如图6所示,联盟链的数据同步方法可以包括以下步骤:
步骤S610、获取所述联盟链的当前区块高度;
步骤S620、若所述当前区块高度达到目标检查点对应的区块高度,则获取所述当前区块高度的账本数据全局状态;
步骤S630、根据所述账本数据全局状态,生成所述目标检查点对应的账本数据快照,所述账本数据快照包含有所述目标检查点所对应区块高度的账本数据全局状态;
步骤S640、将所述目标检查点以及所述目标检查点对应的账本数据快照存储至所述联盟链的检查点信息集中,所述检查点信息集用于使需要同步所述联盟链中的区块数据的节点从中选取检查点,并基于选取的检查点同步区块数据。
下面对这些步骤进行详细描述。
步骤S610、获取所述联盟链的当前区块高度。
具体地,本实施例中以联盟链的节点作为执行主体。该节点可以是联盟链中的共识节点,也可以是其他节点,该节点可以生成账本数据快照。在生成账本数据快照之前,该节点可以首先获取联盟链的当前区块高度。
步骤S620、若所述当前区块高度达到目标检查点对应的区块高度,则获取所述当前区块高度的账本数据全局状态。
需要说明的是,联盟链维护有检查点信息集,检查点信息集中包含有多个检查点以及各个检查点对应的账本数据快照,其中,检查点是依据区块高度进行设置的,检查点与区块高度之间具有对应关系,也就是说,在相应的区块高度可以存在对应的检查点。因此,如果获取到的当前区块高度达到目标检查点对应的区块高度,也即当前区块高度与目标检查点具有对应关系,则可以获取当前区块高度的账本数据全局状态,获取的账本数据全局状态可以用于生成目标检查点对应的账本数据快照。
在本申请的一个实施例中,作为执行主体的节点获取当前区块高度的账本数据全局状态可以具体为:作为执行主体的节点可以向联盟链的同一参与方对应的背书节点发送用于生成当前区块高度的账本数据全局状态的请求,同一参与方对应的背书节点在接收到请求后,可以制定当前区块高度的账本数据全局状态,然后向作为执行主体的节点返回制定的当前区块高度的账本数据全局状态。
步骤S630、根据所述账本数据全局状态,生成所述目标检查点对应的账本数据快照,所述账本数据快照包含有所述目标检查点所对应区块高度的账本数据全局状态。
本实施例中,在获取到当前区块高度的账本数据全局状态之后,同时又由于当前区块高度与目标检查点具有对应关系,因此,则可以根据该账本数据全局状态生成目标检查点对应的账本数据快照,该账本数据快照中包含的当前区块高度的账本数据全局状态也即是目标检查点所对应区块高度的账本数据全局状态。
在本申请的一个实施例中,根据账本数据全局状态,生成目标检查点对应的账本数据快照可以具体包括:在联盟链中对当前区块高度的账本数据全局状态进行共识;若超过预设数量的共识节点对当前区块高度的账本数据全局状态达成共识,则可以生成目标检查点对应的账本数据快照。
在本申请的一个实施例中,当前区块高度的账本数据全局状态可以是向联盟链的同一参与方对应的背书节点发送请求所制定的,在这种情况下,如果在联盟链中对当前区块高度对应的账本数据全局状态共识失败,则可以向同一参与方的背书节点重新发送请求,其中,如果预设数量的共识节点对当前区块高度的账本数据全局状态进行共识未达成一致,则可以确定共识失败。
在向同一参与方的背书节点重新发送请求之后,同一参与方的背书节点可以制定当前区块高度的新的账本数据全局状态,如果超过预设数量的共识节点对新的账本数据全局状态达成共识,则可以生成目标检查点对应的账本数据快照。然而,如果在联盟链中对新的账本数据全局状态共识失败,则可以向同一参与方的背书节点再次重新发送请求,但是,为了避免资源的浪费,在一些实施方式中,如果向联盟链的同一参与方的背书节点发送请求的次数超过预设次数,则可以直接确定当前区块高度的账本数据全局状态制定失败,此时,由于当前区块高度的账本数据全局状态制定失败,因而也就无法生成目标检查点对应的账本数据快照。
步骤S640、将所述目标检查点以及所述目标检查点对应的账本数据快照存储至所述联盟链的检查点信息集中,所述检查点信息集用于使需要同步所述联盟链中的区块数据的节点从中选取检查点,并基于选取的检查点同步区块数据。
联盟链所维护的检查点信息集可以用于存储检查点以及检查点对应的账本数据快照,因此,在生成目标检查点对应的账本数据快照之后,则可以将目标检查点以及目标检查点对应的账本数据快照存储至联盟链的检查点信息集中。这样一来,需要同步联盟链中的区块数据的节点可以检查点信息集中选取检查点,并可以基于选取的检查点同步区块数据。
在本申请的一个实施例中,联盟链的当前区块高度是否达到目标检查点对应的区块高度可以结合目标检查点的上一检查点对应的区块高度进行判断,在该实施例中,如图7所示,具体可以包括步骤S710-步骤S720,详细说明如下:
步骤S710、获取所述联盟链的检查点配置信息,以及所述目标检查点的上一检查点对应的区块高度,所述检查点配置信息包含有相邻两个检查点之间的间隔区块高度。
具体地,由于检查点与区块高度之间的对应关系可以是每N个区块设置一个检查点,也即联盟链的检查点配置信息为每N个区块设置一个检查点,从而根据检查点配置信息可以获知相邻两个检查点之间的间隔区块高度为N。
同时,由于检查点是依据区块高度进行设置的,随着区块高度的递增,检查点也逐渐递增,存储至检查点信息集中的各个检查点可以具有先后顺序,因此可以获取到目标检查点的上一检查点。
步骤S720、若所述当前区块高度与所述上一检查点对应的区块高度之差等于所述间隔区块高度,则确定所述当前区块高度达到所述目标检查点对应的区块高度。
在相邻两个检查点之间的间隔区块高度、目标检查点的上一检查点对应的区块高度、联盟链的当前区块高度均为已知的情况下,则可以计算当前区块高度与上一检查点对应的区块高度之差,得到计算结果。
如果计算结果等于间隔区块高度,则可以确定当前区块高度达到目标检查点对应的区块高度。
图8示出了根据本申请的一个实施例的生成账本数据快照的流程图,如图8所示,联盟链包括3个参与方,分别为参与方A、参与方B和参与方C,每个参与方都包含有至少一个节点,下面以参与方A包含的节点为执行主体对生成目标检查点对应的账本数据快照为例进行说明,主要可以包括步骤S810-步骤S890:
步骤S810、获取联盟链的当前区块高度,并判断当前区块高度是否达到目标检查点对应的区块高度,若是,则执行步骤S820;若否,则等待新的区块产生。
步骤S820、获取当前区块高度的账本数据全局状态。
步骤S830、将账本数据全局状态发送至参与方B。
在一些实施方式中,参与方B包含有共识节点,执行主体可以将当前区块高度的账本数据全局状态发送至参与方B的共识节点,以使参与方B的共识节点对当前区块高度的账本数据全局状态进行共识。
步骤S840、将账本数据全局状态发送至参与方C。
在一些实施方式中,参与方C包含有共识节点,执行主体可以将当前区块高度的账本数据全局状态发送至参与方C的共识节点,以使参与方C的共识节点对当前区块高度的账本数据全局状态进行共识。
步骤S850、接收参与方B返回的共识结果。
其中,参与方B返回的共识结果可以是参与方B的共识节点进行共识后返回的共识一致的结果,也可以是参与方B的共识节点进行共识后返回共识不一致的结果。
步骤S860、接收参与方C返回的共识结果。
具体地,参与方C返回的共识结果可以是参与方C的共识节点进行共识后返回的共识一致的结果,也可以是参与方C的共识节点进行共识后返回共识不一致的结果。
步骤S870、生成目标检查点对应的账本数据快照。
具体而言,如果接收到参与方B的共识节点进行共识后返回的共识一致的结果以及参与方C的共识节点进行共识后返回的共识一致的结果,则参与方A的节点可以根据当前区块高度对应的账本数据全局状态,生成目标检查点对应的账本数据快照,账本数据快照包含有当前区块高度以及当前区块高度对应的账本数据全局状态,其中,当前区块高度也即是目标检查点对应的区块高度。
步骤S880、将目标检查点对应的账本数据快照发送至参与方B。
步骤S890、将目标检查点对应的账本数据快照发送至参与方C。
需要说明的是,步骤S830-步骤S840的顺序是本实施例中的描述顺序,步骤S880-步骤S890的顺序也是本实施例中的描述顺序,并不限制为本实施例的方法在执行过程中的顺序。在能够实现本方法的前提下,步骤S830-步骤S840可以同时进行,步骤S880-步骤S890也可以同时进行。同理,是本实施例中的描述顺序,并不限制为本实施例的方法在执行过程中的顺序。
还需要说明的是,上述步骤主要是以参与方A的共识节点为执行主体对生成目标检查点对应的账本数据快照的方法为例进行说明的,可以理解的是,参与方B的共识节点作为执行主体生成目标检查点对应的账本数据快照的方法以及参与方C的共识节点作为执行主体生成目标检查点对应的账本数据快照的方法与上述参与方A的共识节点作为执行主体生成目标检查点对应的账本数据快照的方法是相类似的,故在此不再赘述。
图9示出了根据本申请的一个实施例的区块数据同步的示意图,如图9所示,联盟链包括3个参与方,分别为参与方A、参与方B和参与方C,参与方C的节点在选择目标检查点A后,可以将目标检查点A所对应区块高度的账本数据全局状态进行存储,并对目标检查点A所对应区块高度之后的区块数据进行同步。
图10示出了根据本申请的一个实施例的检查点校验的示意图,联盟链包括3个参与方,其中参与方A为联盟链的新增参与方,参与方B和参与方C为联盟链的已有参与方,参与方A在加入联盟链之后,可以从联盟链的检查点信息集中选择至少两个检查点进行校验,例如选择的检查点为{a,b,c},校验过程主要可以包括步骤S1010-步骤S1040:
步骤S1010、参与方A的节点可以从已有参与方B或已有参与方C获取检查点a所对应的区块高度到检查点b所对应的区块高度之间的交易。
步骤S1020、基于检查点a对应的账本数据全局状态,对检查点a所对应的区块高度到检查点b所对应的区块高度之间的交易进行校验,得到校验结果,比较校验结果与检查点b对应的账本数据全局状态是否一致,若一致,则确定校验通过。
步骤S1030、参与方A的节点可以从已有参与方B或已有参与方C获取检查点b所对应的区块高度到检查点c所对应的区块高度之间的交易。
步骤S1040、基于检查点b对应的账本数据全局状态,对检查点b所对应的区块高度到检查点c所对应的区块高度之间的交易进行校验,得到校验结果,比较校验结果与检查点c对应的账本数据全局状态是否一致,若一致,则确定校验通过。
以下介绍本申请的装置实施例,可以用于执行本申请上述实施例中的联盟链的数据同步方法。对于本申请装置实施例中未披露的细节,请参照本申请上述的联盟链的数据同步方法的实施例。
图11示出了根据本申请的一个实施例的联盟链的数据同步装置的框图,参照图11所示,根据本申请的一个实施例的联盟链的数据同步装置1100,包括:选择单元1102、第一获取单元1104和存储同步单元1106。
其中,所述选择单元1102,配置为若需要同步联盟链中的区块数据,则从所述联盟链的检查点信息集中选择目标检查点,所述检查点信息集包含有多个检查点以及各个检查点对应的账本数据快照,所述各个检查点对应的账本数据快照包含有所述各个检查点所对应区块高度的账本数据全局状态;所述第一获取单元1104,配置为根据选择的所述目标检查点,获取所述目标检查点对应的目标账本数据快照,所述目标账本数据快照包含有所述目标检查点所对应目标区块高度的目标账本数据全局状态;所述存储同步单元1106,配置为存储所述目标账本数据全局状态,并对所述联盟链中处于所述目标区块高度之后的区块数据进行同步。
在本申请的一些实施例中,基于前述方案,所述选择单元1102配置为:根据期望的数据同步时长,确定在所述数据同步时长内能够同步的第一区块高度;计算所述联盟链的指定区块高度与所述第一区块高度之差,得到第二区块高度,所述指定区块高度是需要同步到的区块高度;根据所述第二区块高度,以及检查点与区块高度之间的对应关系,选择所述目标检查点。
在本申请的一些实施例中,所述选择单元1102配置为:从所述联盟链的检查点信息集中获取所述各个检查点对应的区块高度;将所述各个检查点对应的区块高度中最大区块高度对应的检查点作为所述目标检查点。
在本申请的一些实施例中,所述账本数据快照是所述联盟链的已有参与方的共识节点对所述各个检查点所对应区块高度的账本数据全局状态进行共识后生成的;在所述装置设置在新加入所述联盟链的节点中的情况下,所述选择单元1102包括:第一选择子单元,配置为若新加入所述联盟链的节点为所述联盟链的已有参与方的新增节点,则在所述新增节点加入所述联盟链之后,直接从所述联盟链的检查点信息集中选择所述目标检查点;第二选择子单元,配置为若新加入所述联盟链的节点为所述联盟链的新增参与方的节点,则在所述新增参与方的节点加入所述联盟链之后,从所述联盟链的检查点信息集中选择至少两个检查点进行校验,在校验通过后,从所述检查点信息集中选择所述目标检查点。
在本申请的一些实施例中,所述第二选择子单元配置为:根据从所述联盟链的检查点信息集中选择的至少两个检查点分别对应的账本数据快照,确定所述至少两个检查点分别对应的区块高度以及所对应的账本数据全局状态;根据所述至少两个检查点分别对应的账本数据全局状态,对所述至少两个检查点中相邻检查点所对应的区块高度之间的交易进行校验,得到校验结果。
在本申请的一些实施例中,所述装置还包括:第一确定单元,配置为若对所述至少两个检查点中任意相邻检查点所对应的区块高度之间的交易均校验通过,则确定对所述至少两个检查点校验通过。
图12示出了根据本申请的一个实施例的联盟链的数据同步装置的框图。
参见图12所示,根据本申请的一个实施例的联盟链的数据同步装置1200,包括:第二获取单元1202、第三获取单元1204、生成单元1206和存储单元1208。
其中,所述第二获取单元1202,配置为获取所述联盟链的当前区块高度;所述第三获取单元1204,配置为若所述当前区块高度达到目标检查点对应的区块高度,则获取所述当前区块高度的账本数据全局状态;所述生成单元1206,配置为根据所述账本数据全局状态,生成所述目标检查点对应的账本数据快照,所述账本数据快照包含有所述目标检查点所对应区块高度的账本数据全局状态;所述存储单元1208,配置为将所述目标检查点以及所述目标检查点对应的账本数据快照存储至所述联盟链的检查点信息集中,所述检查点信息集用于使需要同步所述联盟链中的区块数据的节点从中选取检查点,并基于选取的检查点同步区块数据。
在本申请的一些实施例中,所述第三获取单元1204配置为:向所述联盟链的同一参与方对应的背书节点发送用于生成所述当前区块高度的账本数据全局状态的请求;接收所述同一参与方对应的背书节点返回的所述当前区块高度的账本数据全局状态。
在本申请的一些实施例中,所述装置还包括:第四获取单元,配置为获取所述联盟链的检查点配置信息,以及所述目标检查点的上一检查点对应的区块高度,所述检查点配置信息包含有相邻两个检查点之间的间隔区块高度;第二确定单元,配置为若所述当前区块高度与所述上一检查点对应的区块高度之差等于所述间隔区块高度,则确定所述当前区块高度达到所述目标检查点对应的区块高度。
在本申请的一些实施例中,所述生成单元1206配置为:在所述联盟链中对所述当前区块高度的账本数据全局状态进行共识;若超过预设数量的共识节点对所述当前区块高度的账本数据全局状态达成共识,则生成所述目标检查点对应的账本数据快照。
在本申请的一些实施例中,所述当前区块高度的账本数据全局状态是向所述联盟链的同一参与方对应的背书节点发送请求所制定的,所述装置还包括:发送单元,配置为若在所述联盟链中对所述当前区块高度的账本数据全局状态共识失败,则向所述同一参与方的背书节点重新发送请求;第三确定单元,配置为若向所述联盟链的同一参与方的背书节点发送请求的次数超过预设次数,则确定所述当前区块高度的账本数据全局状态制定失败。
图13示出了适于用来实现本申请实施例的电子设备的计算机系统的结构示意图。
需要说明的是,图13示出的电子设备的计算机系统1300仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
如图13所示,计算机系统1300包括中央处理单元(Central Processing Unit,CPU)1301,其可以根据存储在只读存储器(Read-Only Memory,ROM)1302中的程序或者从存储部分1308加载到随机访问存储器(Random Access Memory,RAM)1303中的程序而执行各种适当的动作和处理,例如执行上述实施例中所述的方法。在RAM 1303中,还存储有系统操作所需的各种程序和数据。CPU 1301、ROM 1302以及RAM 1303通过总线1304彼此相连。输入/输出(Input /Output,I/O)接口1305也连接至总线1304。
以下部件连接至I/O接口1305:包括键盘、鼠标等的输入部分1306;包括诸如阴极射线管(Cathode Ray Tube,CRT)、液晶显示器(Liquid Crystal Display,LCD)等以及扬声器等的输出部分1307;包括硬盘等的存储部分1308;以及包括诸如LAN(Local AreaNetwork,局域网)卡、调制解调器等的网络接口卡的通信部分1309。通信部分1309经由诸如因特网的网络执行通信处理。驱动器1310也根据需要连接至I/O接口1305。可拆卸介质1311,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器1310上,以便于从其上读出的计算机程序根据需要被安装入存储部分1308。
特别地,根据本申请的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本申请的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的计算机程序。在这样的实施例中,该计算机程序可以通过通信部分1309从网络上被下载和安装,和/或从可拆卸介质1311被安装。在该计算机程序被中央处理单元(CPU)1301执行时,执行本申请的系统中限定的各种功能。
需要说明的是,本申请实施例所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(Erasable Programmable Read Only Memory,EPROM)、闪存、光纤、便携式紧凑磁盘只读存储器(Compact Disc Read-Only Memory,CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本申请中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的计算机程序。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的计算机程序可以用任何适当的介质传输,包括但不限于:无线、有线等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本申请各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。其中,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本申请实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现,所描述的单元也可以设置在处理器中。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定。
作为另一方面,本申请还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该电子设备执行时,使得该电子设备实现上述实施例中所述的方法。
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本申请的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本申请实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、触控终端、或者网络设备等)执行根据本申请实施方式的方法。
本领域技术人员在考虑说明书及实践这里公开的实施方式后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。
应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求来限制。

Claims (15)

1.一种联盟链的数据同步方法,其特征在于,所述方法包括:
若需要同步联盟链中的区块数据,则从所述联盟链的检查点信息集中选择目标检查点,所述检查点信息集包含有多个检查点以及各个检查点对应的账本数据快照,所述各个检查点对应的账本数据快照包含有所述各个检查点所对应区块高度的账本数据全局状态;
根据选择的所述目标检查点,获取所述目标检查点对应的目标账本数据快照,所述目标账本数据快照包含有所述目标检查点所对应目标区块高度的目标账本数据全局状态;
存储所述目标账本数据全局状态,并对所述联盟链中处于所述目标区块高度之后的区块数据进行同步。
2.根据权利要求1所述的方法,其特征在于,从所述联盟链的检查点信息集中选择目标检查点,包括:
根据期望的数据同步时长,确定在所述数据同步时长内能够同步的第一区块高度;
计算所述联盟链的指定区块高度与所述第一区块高度之差,得到第二区块高度,所述指定区块高度是需要同步到的区块高度;
根据所述第二区块高度,以及检查点与区块高度之间的对应关系,选择所述目标检查点。
3.根据权利要求1所述的方法,其特征在于,从所述联盟链的检查点信息集中选择目标检查点,包括:
从所述联盟链的检查点信息集中获取所述各个检查点对应的区块高度;
将所述各个检查点对应的区块高度中最大区块高度对应的检查点作为所述目标检查点。
4.根据权利要求1所述的方法,其特征在于,所述账本数据快照是所述联盟链的已有参与方的共识节点对所述各个检查点所对应区块高度的账本数据全局状态进行共识后生成的;
在所述方法由新加入所述联盟链的节点执行的情况下,从所述联盟链的检查点信息集中选择目标检查点,包括:
若新加入所述联盟链的节点为所述联盟链的已有参与方的新增节点,则在所述新增节点加入所述联盟链之后,直接从所述联盟链的检查点信息集中选择所述目标检查点;
若新加入所述联盟链的节点为所述联盟链的新增参与方的节点,则在所述新增参与方的节点加入所述联盟链之后,从所述联盟链的检查点信息集中选择至少两个检查点进行校验,在校验通过后,从所述检查点信息集中选择所述目标检查点。
5.根据权利要求4所述的方法,其特征在于,从所述联盟链的检查点信息集中选择至少两个检查点进行校验,包括:
根据从所述联盟链的检查点信息集中选择的至少两个检查点分别对应的账本数据快照,确定所述至少两个检查点分别对应的区块高度以及所对应的账本数据全局状态;
根据所述至少两个检查点分别对应的账本数据全局状态,对所述至少两个检查点中相邻检查点所对应的区块高度之间的交易进行校验,得到校验结果。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
若对所述至少两个检查点中任意相邻检查点所对应的区块高度之间的交易均校验通过,则确定对所述至少两个检查点校验通过。
7.一种联盟链的数据同步方法,其特征在于,所述方法包括:
获取所述联盟链的当前区块高度;
若所述当前区块高度达到目标检查点对应的区块高度,则获取所述当前区块高度的账本数据全局状态;
根据所述账本数据全局状态,生成所述目标检查点对应的账本数据快照,所述账本数据快照包含有所述目标检查点所对应区块高度的账本数据全局状态;
将所述目标检查点以及所述目标检查点对应的账本数据快照存储至所述联盟链的检查点信息集中,所述检查点信息集用于使需要同步所述联盟链中的区块数据的节点从中选取检查点,并基于选取的检查点同步区块数据。
8.根据权利要求7所述的方法,其特征在于,获取所述当前区块高度的账本数据全局状态,包括:
向所述联盟链的同一参与方对应的背书节点发送用于生成所述当前区块高度的账本数据全局状态的请求;
接收所述同一参与方对应的背书节点返回的所述当前区块高度的账本数据全局状态。
9.根据权利要求7所述的方法,其特征在于,所述方法还包括:
获取所述联盟链的检查点配置信息,以及所述目标检查点的上一检查点对应的区块高度,所述检查点配置信息包含有相邻两个检查点之间的间隔区块高度;
若所述当前区块高度与所述上一检查点对应的区块高度之差等于所述间隔区块高度,则确定所述当前区块高度达到所述目标检查点对应的区块高度。
10.根据权利要求7所述的方法,其特征在于,根据所述账本数据全局状态,生成所述目标检查点对应的账本数据快照,包括:
在所述联盟链中对所述当前区块高度的账本数据全局状态进行共识;
若超过预设数量的共识节点对所述当前区块高度的账本数据全局状态达成共识,则生成所述目标检查点对应的账本数据快照。
11.根据权利要求10所述的方法,其特征在于,所述当前区块高度的账本数据全局状态是向所述联盟链的同一参与方对应的背书节点发送请求所制定的,所述方法还包括:
若在所述联盟链中对所述当前区块高度的账本数据全局状态共识失败,则向所述同一参与方的背书节点重新发送请求;
若向所述联盟链的同一参与方的背书节点发送请求的次数超过预设次数,则确定所述当前区块高度的账本数据全局状态制定失败。
12.一种联盟链的数据同步装置,其特征在于,所述装置包括:
选择单元,配置为若需要同步联盟链中的区块数据,则从所述联盟链的检查点信息集中选择目标检查点,所述检查点信息集包含有多个检查点以及各个检查点对应的账本数据快照,所述各个检查点对应的账本数据快照包含有所述各个检查点所对应区块高度的账本数据全局状态;
第一获取单元,配置为根据选择的所述目标检查点,获取所述目标检查点对应的目标账本数据快照,所述目标账本数据快照包含有所述目标检查点所对应目标区块高度的目标账本数据全局状态;
存储同步单元,配置为存储所述目标账本数据全局状态,并对所述联盟链中处于所述目标区块高度之后的区块数据进行同步。
13.一种联盟链的数据同步装置,其特征在于,所述装置包括:
第二获取单元,配置为获取所述联盟链的当前区块高度;
第三获取单元,配置为若所述当前区块高度达到目标检查点对应的区块高度,则获取所述当前区块高度的账本数据全局状态;
生成单元,配置为根据所述账本数据全局状态,生成所述目标检查点对应的账本数据快照,所述账本数据快照包含有所述目标检查点所对应区块高度的账本数据全局状态;
存储单元,配置为将所述目标检查点以及所述目标检查点对应的账本数据快照存储至所述联盟链的检查点信息集中,所述检查点信息集用于使需要同步所述联盟链中的区块数据的节点从中选取检查点,并基于选取的检查点同步区块数据。
14.一种计算机可读介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至6中任一项所述的联盟链的数据同步方法,或实现如权利要求7至11中任一项所述的联盟链的数据同步方法。
15.一种电子设备,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如权利要求1至6中任一项所述的联盟链的数据同步方法,或实现如权利要求7至11中任一项所述的联盟链的数据同步方法。
CN202011284832.2A 2020-11-17 2020-11-17 联盟链的数据同步方法、装置、可读介质及电子设备 Active CN112100282B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011284832.2A CN112100282B (zh) 2020-11-17 2020-11-17 联盟链的数据同步方法、装置、可读介质及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011284832.2A CN112100282B (zh) 2020-11-17 2020-11-17 联盟链的数据同步方法、装置、可读介质及电子设备

Publications (2)

Publication Number Publication Date
CN112100282A CN112100282A (zh) 2020-12-18
CN112100282B true CN112100282B (zh) 2021-04-23

Family

ID=73784647

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011284832.2A Active CN112100282B (zh) 2020-11-17 2020-11-17 联盟链的数据同步方法、装置、可读介质及电子设备

Country Status (1)

Country Link
CN (1) CN112100282B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112988469B (zh) * 2021-04-27 2022-02-18 支付宝(杭州)信息技术有限公司 联盟链中的状态备份方法、装置和电子设备
CN113326165B (zh) * 2021-08-04 2021-11-16 腾讯科技(深圳)有限公司 基于区块链的数据处理方法、设备及计算机可读存储介质
CN115292419B (zh) * 2022-10-09 2023-03-31 深圳市明源云科技有限公司 基于poH共识的数据处理方法、装置、设备及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106878000A (zh) * 2017-03-06 2017-06-20 中钞信用卡产业发展有限公司北京智能卡技术研究院 一种联盟链共识方法及系统
CN111444204A (zh) * 2020-03-24 2020-07-24 腾讯科技(深圳)有限公司 一种同步处理方法、装置、设备及介质
CN111770149A (zh) * 2020-06-23 2020-10-13 江苏荣泽信息科技股份有限公司 基于分布式存储的新型联盟链

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107657463A (zh) * 2017-09-29 2018-02-02 北京京东尚科信息技术有限公司 物品溯源平台和方法及装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106878000A (zh) * 2017-03-06 2017-06-20 中钞信用卡产业发展有限公司北京智能卡技术研究院 一种联盟链共识方法及系统
CN111444204A (zh) * 2020-03-24 2020-07-24 腾讯科技(深圳)有限公司 一种同步处理方法、装置、设备及介质
CN111770149A (zh) * 2020-06-23 2020-10-13 江苏荣泽信息科技股份有限公司 基于分布式存储的新型联盟链

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
吴鑫涛 等.基于联盟链的债权类ABS服务平台研究.《创新与发展:中国证券业2018年论文集》.2019,第1382-1390页. *

Also Published As

Publication number Publication date
CN112100282A (zh) 2020-12-18

Similar Documents

Publication Publication Date Title
CN112100282B (zh) 联盟链的数据同步方法、装置、可读介质及电子设备
KR102652551B1 (ko) 분산 조정을 사용한 스마트 계약 실행
US11128522B2 (en) Changing a master node in a blockchain system
US20230316273A1 (en) Data processing method and apparatus, computer device, and storage medium
CN108876669B (zh) 应用于多平台教育资源共享的课程公证系统及方法
US20230037932A1 (en) Data processing method and apparatus based on blockchain network, and computer device
CN112733174A (zh) 区块链系统的认证管理方法、系统及电子设备
CN112612856B (zh) 基于区块链的数据处理方法和装置
CN114391241A (zh) 具有可调整法定数量的区块链分片
CN112287031A (zh) 区块链系统的数据同步方法、装置、可读介质及电子设备
JP2023515368A (ja) ブロックチェーンネットワークと共に使用される証明サービス
JP2021531689A (ja) アセット混合のための、コンピュータにより実施されるシステム及び方法
CN112187866A (zh) 一种基于共享存储的新型区块链共识方法
CN114913013B (zh) 一种基于区块链的租房交易系统及租房交易方法
CN115225639A (zh) 共识可信集群的变更方法、装置、计算机设备及介质
JP2020204898A (ja) 分散台帳システムの運用管理方法、分散台帳システムの運用管理システム、および分散台帳システムの運用管理プログラム
CN112231414B (zh) 区块链系统的数据同步方法、装置、可读介质及电子设备
JP2023547716A (ja) マークル証明エンティティ
CN113570365A (zh) 一种基于社区发现的dag网络拓扑构建方法及交易方法
KR102294569B1 (ko) 블록체인 네트워크를 구축할 수 있는 블록체인 관리시스템
Wang et al. A fast and secured peer-to-peer energy trading using blockchain consensus
CN117221337A (zh) 区块链共识方法、装置、介质及电子设备
CN116233139A (zh) 区块链系统的数据处理方法、装置、介质及电子设备
Masood et al. Distributed ledger technology for closed environment
Ozdayi et al. Instachain: Breaking the sharding limits via adjustable quorums

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