首页 / 专利库 / 银行与财务事项 / 分布式账本技术 / 区块链 / 区块链账本 / 区块链节点的账本处理方法、装置、服务器及存储介质

节点的账本处理方法、装置、服务器及存储介质

阅读:736发布:2020-05-13

专利汇可以提供节点的账本处理方法、装置、服务器及存储介质专利检索,专利查询,专利分析的服务。并且本 发明 实施例 涉及一种 区 块 链 节点 的账本处理方法、装置、 服务器 及存储介质,包括:第一节点按照区块高度从多个第二节点中确定目标节点;根据账本数据类型从所述目标节点获取所述账本数据类型对应的缺失数据;将所述缺失数据按照所述账本数据类型存储于所述第一节点的 数据库 中以完成所述第一节点的账本更新,采用KV数据而非账本交易作为拉取数据,减少账本交易转换为KV数据的时间,以及根据目标节点反馈的第二KV数据的存储形式即可对缺失数据进行存储,不必再按照账本交易的序列重新执行存储,缩短了账本更新的时间,提高效率,使存在账本缺失的节点可快速加入共识网络中的共识流程。,下面是节点的账本处理方法、装置、服务器及存储介质专利的具体信息内容。

1.一种节点的账本处理方法,其特征在于,包括:
第一节点按照区块高度从多个第二节点中确定目标节点;
根据账本数据类型从所述目标节点获取所述账本数据类型对应的缺失数据;
将所述缺失数据按照所述账本数据类型存储于所述第一节点的数据库中以完成所述第一节点的账本更新。
2.根据权利要求1所述的方法,其特征在于,所述第一节点按照区块高度从多个第二节点中确定目标节点,包括:
所述共识网络的任一节点,采用广播的形式向所述共识网络中的其余节点发送广播消息,以使所述其余节点响应于所述广播消息向所述任一节点返回所述广播消息中账本数据类型标识对应的当前区块高度;
所述任一节点基于所述前区块高度与本地区块高度进行比对;
若所述本地区块高度小于所述前区块高度,则将所述任一节点作为第一节点;
若所述本地区块高度等于所述前区块高度,则所述任一节点与所述其余节点均为正常节点;
若所述本地区块高度大于所述前区块高度,则将所述其余节点作为第一节点;
其中,所述第一节点处于区块链的共识网络中状态为账本缺失。
3.根据权利要求1所述的方法,其特征在于,所述根据账本数据类型从所述目标节点获取所述账本数据类型对应的缺失数据,包括:
根据所述第一节点的本地区块高度与所述目标节点的当前区块高度,确定待拉取缺失数据的目标区块,所述第一节点中未缺失数据的区块存储有第一KV数据;
所述第一节点根据所述账本数据类型从目标区块中读取对应账本数据类型的根哈希值;
所述第一节点将所述根哈希值发送给所述第二节点,以使所述第二节点响应于所述根哈希值向所述第一节点返回所述根哈希值对应节点树中存储的第二KV数据;
将所述第二KV数据作为所述目标区块的缺失数据。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
在账本更新后,从所述第一节点中的节点树中获取第三KV数据;
判断所述第三KV数据与所述第二KV数据是否相同;
若所述第三KV数据与所述第二KV数据相同,则确定所述第一节点账本更新成功;
若所述第三KV数据与所述第二KV数据不相同,则确定所述第一节点账本更新失败。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
若所述第一节点账本更新失败,则基于所述第三KV数据与所述第二KV数据重新确定缺失数据,以基于所述缺失数据重新对所述第一节点执行所述账本更新的操作。
6.根据权利要求1-5任一所述的方法,其特征在于,所述方法还包括:
若所述第一节点账本更新成功,则将区块链的共识网络中所述第一节点的状态变更为正常,以使所述第一节点重新加入所述共识网络中的共识流程。
7.根据权利要求3或4所述的方法,其特征在于,所述节点树包括:默克尔树。
8.一种区块链节点的账本处理装置,其特征在于,包括:
确定模块,用于按照区块高度从多个第二节点中确定目标节点;
获取模块,用于根据账本数据类型从所述目标节点获取所述账本数据类型对应的缺失数据;
更新模块,用于将所述缺失数据按照所述账本数据类型存储于所述第一节点的数据库中以完成所述第一节点的账本更新。
9.一种服务器,其特征在于,包括:处理器和存储器,所述处理器用于执行所述存储器中存储的区块链节点的账本处理程序,以实现权利要求1~7中任一项所述的区块链节点的账本处理方法。
10.一种存储介质,其特征在于,所述存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现权利要求1~7中任一项所述的区块链节点的账本处理方法。

说明书全文

节点的账本处理方法、装置、服务器及存储介质

技术领域

[0001] 本发明实施例涉及区块链技术领域,尤其涉及一种区块链节点的账本处理方法、装置、服务器及存储介质。

背景技术

[0002] 分布式账本系统(Distributed ledger System,DLS),又称共识网络和/或区块链网络,每个节点都保存着一份完整的账本。由于网络或者其他原因经常会出现某些节点异常退出的情况,导致某时间段内退出节点的账本没法更新,当节点恢复时如果想重新参与共识首先需要与其他正常节点进行账本数据同步,以保证分布式节点的数据一致性。
[0003] 在区块链系统中,目前区块链节点实现账本数据同步采用的方式是状态机复制,需要进行账本数据同步的节点将缺失的账本区块数据按照顺序重新执行,将其转换为KV数据的格式存储于数据库
[0004] 然而,采用状态机复制对账本缺失节点进行数据更新时,每次都需要按照账本数据序列重新顺序执行,转换存储格式,当共识网络的存在较多账本缺失节点时,状态机复制的方式耗时长、效率低下。

发明内容

[0005] 鉴于此,为解决上述技术问题或部分技术问题,本发明实施例提供一种区块链节点的账本处理方法、装置、服务器及存储介质。
[0006] 第一方面,本发明实施例提供一种区块链节点的账本处理方法,包括:
[0007] 第一节点按照区块高度从多个第二节点中确定目标节点;
[0008] 根据账本数据类型从所述目标节点获取所述账本数据类型对应的缺失数据;
[0009] 将所述缺失数据按照所述账本数据类型存储于所述第一节点的数据库中以完成所述第一节点的账本更新。
[0010] 在一个可能的实施方式中,所述第一节点按照区块高度从多个第二节点中确定目标节点,包括:
[0011] 所述共识网络的任一节点,采用广播的形式向所述共识网络中的其余节点发送广播消息,以使所述其余节点响应于所述广播消息向所述任一节点返回所述广播消息中账本数据类型标识对应的当前区块高度;
[0012] 所述任一节点基于所述前区块高度与本地区块高度进行比对;
[0013] 若所述本地区块高度小于所述前区块高度,则将所述任一节点作为第一节点;
[0014] 若所述本地区块高度等于所述前区块高度,则所述任一节点与所述其余节点均为正常节点;
[0015] 若所述本地区块高度大于所述前区块高度,则将所述其余节点作为第一节点;
[0016] 其中,所述第一节点处于区块链的共识网络中状态为账本缺失。
[0017] 在一个可能的实施方式中,所述根据账本数据类型从所述目标节点获取所述账本数据类型对应的缺失数据,包括:
[0018] 根据所述第一节点的本地区块高度与所述目标节点的当前区块高度,确定待拉取缺失数据的目标区块;
[0019] 所述第一节点根据所述账本数据类型从目标区块中读取对应账本数据类型的根哈希值;
[0020] 所述第一节点将所述根哈希值发送给所述第二节点,以使所述第二节点响应于所述根哈希值向所述第一节点返回所述根哈希值对应节点树中存储的第二KV数据;
[0021] 将所述第二KV数据作为所述目标区块的缺失数据。
[0022] 在一个可能的实施方式中,所述方法还包括:
[0023] 在账本更新后,从所述第一节点中的节点树中获取第三KV数据;
[0024] 判断所述第三KV数据与所述第二KV数据是否相同;
[0025] 若所述第三KV数据与所述第二KV数据相同,则确定所述第一节点账本更新成功;
[0026] 若所述第三KV数据与所述第二KV数据不相同,则确定所述第一节点账本更新失败。
[0027] 在一个可能的实施方式中,所述方法还包括:
[0028] 若所述第一节点账本更新失败,则基于所述第三KV数据与所述第二KV数据重新确定所述缺失数据,以基于所述缺失数据重新对所述第一节点执行所述账本更新的操作。
[0029] 在一个可能的实施方式中,所述方法还包括:
[0030] 若所述第一节点账本更新成功,则将区块链的共识网络中所述第一节点的状态变更为正常,以使所述第一节点重新加入所述共识网络中的共识流程。
[0031] 在一个可能的实施方式中,所述节点树包括:默克尔树。
[0032] 第二方面,本发明实施例提供一种区块链节点的账本处理装置,包括:
[0033] 确定模块,用于按照区块高度从多个第二节点中确定目标节点;
[0034] 获取模块,用于根据账本数据类型从所述目标节点获取所述账本数据类型对应的缺失数据;
[0035] 更新模块,用于将所述缺失数据按照所述账本数据类型存储于所述第一节点的数据库中以完成所述第一节点的账本更新。
[0036] 第三方面,本发明实施例提供一种服务器,包括:处理器和存储器,所述处理器用于执行所述存储器中存储的区块链节点的账本处理程序,以实现上述第一方面中任一项所述的区块链节点的账本处理方法。
[0037] 第四方面,本发明实施例提供一种存储介质,所述存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现上述第一方面中任一项所述的区块链节点的账本处理方法。
[0038] 本发明实施例提供的区块链节点的账本处理方案,通过第一节点按照区块高度从多个第二节点中确定目标节点;根据账本数据类型从所述目标节点获取所述账本数据类型对应的缺失数据;将所述缺失数据按照所述账本数据类型存储于所述第一节点的数据库中以完成所述第一节点的账本更新,根据账本数据类型向账本正常的目标节点中该账本对应默克尔树中的所有KV数据,第一节点根据本地当前的KV数据与第二节点中的KV数据拉取缺失数据,并将该缺失数据按照第二节点中KV数据的存储顺序存储于本地的KV数据库中,采用KV数据而非账本交易数据作为拉取数据,减少账本交易数据转换为KV数据的时间,以及根据目标节点反馈的第二KV数据的存储形式即可对缺失数据进行存储,不必再按照账本交易的序列重新执行存储,缩短了账本更新的时间,提高效率,使存在账本缺失的节点可快速加入共识网络中的共识流程。附图说明
[0039] 图1为本发明实施例提供的一种区块链节点的账本处理方法的流程示意图;
[0040] 图2为本发明实施例涉及的第一节点按照区块高度从多个第二节点中确定目标节点的流程示意图;
[0041] 图3为本发明实施例涉及的根据账本数据类型从所述目标节点获取所述账本数据类型对应的缺失数据的流程示意图;
[0042] 图4为本发明实施例涉及的对更新后的账本数据进行验证的流程示意图;
[0043] 图5为本发明实施例提供一种区块链节点的账本处理装置的结构示意图;
[0044] 图6为本发明实施例提供的一种服务器的结构示意图。

具体实施方式

[0045] 为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0046] 为便于对本发明实施例的理解,下面将结合附图以具体实施例做进一步的解释说明,实施例并不构成对本发明实施例的限定。
[0047] 图1为本发明实施例提供的一种区块链节点的账本处理方法的流程示意图,如图1所示,该方法具体包括:
[0048] S11、第一节点按照区块高度从多个第二节点中确定目标节点。
[0049] 本发明实施例提供的区块链节点的账本处理方法应用于分布式账本系统中,账本缺失的节点(本实施例称为:第一节点)从正常的节点(本实施例中称为:目标节点)获取缺失数据,并基于该缺失数据对账本缺失的节点进行更新。
[0050] 在本实施例中,共识网络中的每个节点直接采用广播消息的形式向其它节点发送其节点的区块高度(区块高度可以表征该节点当前存储的账本数据的状态),以及接收其余节点广播的其余节点的区块高度了每个节点基于其余节点的区块高度与其的区块高度进行比对,若该节点的区块高度小于其余节点的区块高度,则确定该节点为账本缺失的节点,即第一节点,其余节点为第二节点。
[0051] 进一步地,从多个第二节点中选择一个目标节点,该目标节点为第二节点中账本存储正常的节点,选择的方式可以是:从多个第二节点选择区块高度占比最高的节点作为目标节点。
[0052] S12、根据账本数据类型从所述目标节点获取所述账本数据类型对应的缺失数据。
[0053] 在本实施例中,每个节点中按照账本的类型采用节点树的形式对账本数据进行存储,第一节点先确定缺失账本数据的账本数据类型,从目标节点获取该账本数据类型对应的缺失数据。
[0054] 进一步地,获取缺失数据的方式可以是:根据第一节点该账本数据类型的节点树中的哈希值与目标节点该账本数据类型的节点树中的哈希值进行比较,将第一节点中哈希值缺失的部分作为缺失数据,从第二节点中拉取缺失数据。
[0055] S13、将所述缺失数据按照所述账本数据类型存储于所述第一节点的数据库中以完成所述第一节点的账本更新。
[0056] 第一节点获取到缺失数据后,将根据账本数据类型确定数据库对应的节点树,根据哈希值将缺失数据存储于第一节点对应的数据库的节点树中,进而完成第一节点完成账本更新。
[0057] 图2为本发明实施例涉及的第一节点按照区块高度从多个第二节点中确定目标节点的流程示意图,具体包括如下子步骤:
[0058] S111、所述共识网络的任一节点,采用广播的形式向所述共识网络中的其余节点发送广播消息,以使所述其余节点响应于所述广播消息向所述任一节点返回所述广播消息中账本数据类型标识对应的当前区块高度。
[0059] 共识网络中包括多个节点,每个节点存储有账本数据,该账本数据可以是:操作数据、交易数据等,在共识网络中任一节点,采用广播的形式向所述共识网络中的其余节点发送广播消息,并约定其余节点在接收到该广播消息后向该节点返回响应消息。
[0060] 进一步地,广播消息可以是用于请求设定账本数据类型的区块高度的消息,并携带有该账本数据类型的标识,其余节点收到该广播消息时,根据该账本数据类型的标识查找对应区块,确定该区块的区块高度并向该节点返回携带有该区块高度的响应消息。
[0061] 例如,共识网络包括节点A1、A2、A3、A4和A5,A1采用广播的形式在共识网络内发送广播消息(查询账本数据类型ax的区块高度),以及接收A2返回的包含有账本数据类型ax的区块高度a2、接收A3返回的包含有账本数据类型ax的区块高度a3、A3返回的包含有账本数据类型ax的区块高度a3、A4返回的包含有账本数据类型ax的区块高度a4,以及A5返回的包含有账本数据类型ax的区块高度a5,依次类推,A2会接收到A1、A3、A4和A5返回的区块高度、A3会接收到A1、A2、A4和A5返回的区块高度、A4会接收到A1、A2、A3和A5返回的区块高度、A5会接收到A1、A2、A3和A4返回的区块高度。
[0062] S112、所述任一节点基于所述前区块高度与本地区块高度进行比对。
[0063] 节点A1将接收到的A2返回的区块高度a2、A3返回的区块高度a3、A4返回的区块高度a4,以及A5返回的区块高度a5与本地账本数据类型ax的区块高度a1进行比对。
[0064] S113、若所述本地区块高度小于所述前区块高度,则将所述任一节点作为第一节点。
[0065] S114、若所述本地区块高度等于所述前区块高度,则所述任一节点与所述其余节点均为正常节点。
[0066] S115、若所述本地区块高度大于所述前区块高度,则将所述其余节点作为第一节点。
[0067] 在本发明实施例的一可选方案中,采用区块高度占比最高的作为其余节点中的当前区块高度。
[0068] 例如:
[0069] A1本地节点账本数据类型ax的区块高度a1,A1接收A2返回的包含有账本数据类型ax的区块高度a2、接收A3返回的包含有账本数据类型ax的区块高度a3、A3返回的包含有账本数据类型ax的区块高度a3、A4返回的包含有账本数据类型ax的区块高度a4,以及A5返回的包含有账本数据类型ax的区块高度a5。
[0070] 若a1为5、a2为6、a3为6、a4为6、a5为7,则区块高度6在a2-a5中的占比最高,则其余节点的当前区块高度为6;本地区块高度a1(5)小于其余节点的当前区块高度6,则A1节点为第一节点其中,所述第一节点处于区块链的共识网络中状态为账本缺失。
[0071] 若a1为6、a2为6、a3为6、a4为6、a5为7,则区块高度6在a2-a5中的占比最高,则其余节点的当前区块高度为6;本地区块高度a1(6)等于其余节点的当前区块高度6,则A1-A2节点均为正常节点。
[0072] 若a1为8、a2为5、a3为5、a4为6、a5为8,则区块高度5在a2-a5中的占比最高,则其余节点的当前区块高度为5;本地区块高度a1(8)大于其余节点的当前区块高度5,则其余节点(A2-A5)为第一节点,A2-A5中的每个节点再通过与其它节点进行比较,确定A2和A3为第一节点。
[0073] 图3为本发明实施例涉及的根据账本数据类型从所述目标节点获取所述账本数据类型对应的缺失数据的流程示意图,具体包括如下子步骤:
[0074] S121、根据所述第一节点的本地区块高度与所述目标节点的当前区块高度,确定待拉取缺失数据的目标区块。
[0075] 在确定第一节点之后,继续通过比对第一节点的本地区块高度与第二节点的当前区块高度,确定待拉取缺失数据的目标区块,每个目标区块中存在一个或多个节点树,账本数据采用KV数据的形式在该节点树的子节点中存储,每个节点树中包含有一个根节点,该根节点可表征账本的类型,以及存储有根哈希值。在本发明实施例的一可选方案中,节点树可以为:默克尔树,各个节点中采用默克尔树作为底层数据结构将KV数据进行存储。
[0076] S122、所述第一节点根据所述账本数据类型从目标区块中读取对应账本数据类型的根哈希值。
[0077] 第一节点按照账本数据类型采用数据快照的形式从目标区块中默克尔树中确定根节点以及对应的根哈希值。
[0078] S123、所述第一节点将所述根哈希值发送给所述第二节点,以使所述第二节点响应于所述根哈希值向所述第一节点返回所述根哈希值对应节点树中存储的第二KV数据。
[0079] S124、将所述第二KV数据作为所述目标区块的缺失数据。
[0080] 第一节点将该根哈希值(该根哈希值为默克尔树中根节点的哈希值)发送给第二节点,以使第二节点根据该根哈希值确定对应的默克尔树,第二节点调取该默克尔树中所有子节点(除根节点之外的节点)中存储的全部第二KV数据,并将该全部第二KV数据返回给第一节点。
[0081] 将第二KV数据作为目标区块的缺失数据,第一节点中的目标区块根据跟哈希值将第二KV数据在本地KV数据库中对应的默克尔树中。
[0082] 在本发明实施例的一可选方案中,在第一节点完成账本更新后,对账本更新后的账本数据进行验证。
[0083] 图4为本发明实施例涉及的对更新后的账本数据进行验证的流程示意图,如图4所示,具体包括:
[0084] S14、在账本更新后,从所述第一节点中的节点树中获取第三KV数据。
[0085] 在第一节点账本更新后重新加入共识网络之前,第一节点对更新后的账本数据进行验证,从第一节点中的默克尔树中获取第三KV数据,具体可采用加载该默克尔树的形式获取该树中各个节点的KV数据,得到第三KV数据,验证的目的在于保证第一节中的账本数据与目标节点中的账本数据完全相同。
[0086] S15、判断所述第三KV数据与所述第二KV数据是否相同。
[0087] S16、若所述第三KV数据与所述第二KV数据相同,则确定所述第一节点账本更新成功。
[0088] 若第一节点账本更新成功,则执行S18。
[0089] S17、若所述第三KV数据与所述第二KV数据不相同,则确定所述第一节点账本更新失败。
[0090] 若第一节点账本更新失败,则执行S19。
[0091] S18、将区块链的共识网络中所述第一节点的状态变更为正常,以使所述第一节点重新加入所述共识网络中的共识流程。
[0092] S19、基于所述第三KV数据与所述第二KV数据重新确定缺失数据,以基于所述缺失数据重新对所述第一节点执行所述账本更新的操作。
[0093] 本发明实施例提供的区块链节点的账本处理方法,通过第一节点按照区块高度从多个第二节点中确定目标节点;根据账本数据类型从所述目标节点获取所述账本数据类型对应的缺失数据;将所述缺失数据按照所述账本数据类型存储于所述第一节点的数据库中以完成所述第一节点的账本更新,根据账本数据类型向账本正常的目标节点中该账本对应默克尔树中的所有KV数据,第一节点根据本地当前的KV数据与第二节点中的KV数据拉取缺失数据,并将该缺失数据按照第二节点中KV数据的存储顺序存储于本地的KV数据库中,采用KV数据而非账本交易数据作为拉取数据,减少账本交易数据转换为KV数据的时间,以及根据目标节点反馈的第二KV数据的存储形式即可对缺失数据进行存储,不必再按照账本交易的序列重新执行存储,缩短了账本更新的时间,提高效率,使存在账本缺失的节点可快速加入共识网络中的共识流程。
[0094] 图5为本发明实施例提供一种区块链节点的账本处理装置的结构示意图,如图5所示,具体包括:
[0095] 确定模块51,用于按照区块高度从多个第二节点中确定目标节点;
[0096] 获取模块52,用于根据账本数据类型从所述目标节点获取所述账本数据类型对应的缺失数据;
[0097] 更新模块53,用于将所述缺失数据按照所述账本数据类型存储于所述第一节点的数据库中以完成所述第一节点的账本更新。
[0098] 可选地,所述确定模块51,用于所述共识网络的任一节点,采用广播的形式向所述共识网络中的其余节点发送广播消息,以使所述其余节点响应于所述广播消息向所述任一节点返回所述广播消息中账本数据类型标识对应的当前区块高度;所述任一节点基于所述前区块高度与本地区块高度进行比对;若所述本地区块高度小于所述前区块高度,则将所述任一节点作为第一节点;若所述本地区块高度等于所述前区块高度,则所述任一节点与所述其余节点均为正常节点;若所述本地区块高度大于所述前区块高度,则将所述其余节点作为第一节点;
[0099] 其中,所述第一节点处于区块链的共识网络中状态为账本缺失。
[0100] 可选地,所述获取模块52,用于根据所述第一节点的本地区块高度与所述目标节点的当前区块高度,确定待拉取缺失数据的目标区块,所述第一节点中未缺失数据的区块存储有第一KV数据;所述第一节点根据所述账本数据类型从目标区块中读取对应账本数据类型的根哈希值;所述第一节点将所述根哈希值发送给所述第二节点,以使所述第二节点响应于所述根哈希值向所述第一节点返回所述根哈希值对应节点树中存储的第二KV数据;将所述第二KV数据作为所述目标区块的缺失数据。
[0101] 可选地,所述装置还包括:
[0102] 验证模块54,用于在账本更新后,从所述第一节点中的节点树中获取第三KV数据;判断所述第三KV数据与所述第二KV数据是否相同;若所述第三KV数据与所述第二KV数据相同,则确定所述第一节点账本更新成功;若所述第三KV数据与所述第二KV数据不相同,则确定所述第一节点账本更新失败。
[0103] 可选地,所述方获取模块52,还用于若所述第一节点账本更新失败,则基于所述第三KV数据与所述第二KV数据重新确定缺失数据;
[0104] 所述更新模块53,还用于基于所述缺失数据重新对所述第一节点执行所述账本更新的操作。
[0105] 可选地,所述节点树包括:默克尔树。
[0106] 本实施例提供的区块链节点的账本处理装置可以是如图5中所示的区块链节点的账本处理装置,可执行如图1-4中区块链节点的账本处理方法的所有步骤,进而实现图1-4所示区块链节点的账本处理方法的技术效果,具体请参照图1-4相关描述,为简洁描述,在此不作赘述。
[0107] 图6为本发明实施例提供的一种服务器的结构示意图,图6所示的服务器600包括:至少一个处理器601、存储器602、至少一个网络接口604和其他用户接口603。服务器600中的各个组件通过总线系统605耦合在一起。可理解,总线系统605用于实现这些组件之间的连接通信。总线系统605除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。
但是为了清楚说明起见,在图6中将各种总线都标为总线系统605。
[0108] 其中,用户接口603可以包括显示器、键盘或者点击设备(例如,鼠标轨迹球(trackball)、触感板或者触摸屏等。
[0109] 可以理解,本发明实施例中的存储器602可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(Read-OnlyMemory,ROM)、可编程只读存储器(ProgrammableROM,PROM)、可擦除可编程只读存储器(ErasablePROM,EPROM)、电可擦除可编程只读存储器(ElectricallyEPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(RandomAccessMemory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(StaticRAM,SRAM)、动态随机存取存储器(DynamicRAM,DRAM)、同步动态随机存取存储器(SynchronousDRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(DoubleDataRate SDRAM,DDRSDRAM)、增强型同步动态随机存取存储器(Enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(SynchlinkDRAM,SLDRAM)和直接内存总线随机存取存储器(DirectRambusRAM,DRRAM)。本文描述的存储器602旨在包括但不限于这些和任意其它适合类型的存储器。
[0110] 在一些实施方式中,存储器602存储了如下的元素,可执行单元或者数据结构,或者他们的子集,或者他们的扩展集:操作系统6021和应用程序6022。
[0111] 其中,操作系统6021,包含各种系统程序,例如框架层、核心库层、驱动层等,用于实现各种基础业务以及处理基于硬件的任务。应用程序6022,包含各种应用程序,例如媒体播放器(MediaPlayer)、浏览器(Browser)等,用于实现各种应用业务。实现本发明实施例方法的程序可以包含在应用程序6022中。
[0112] 在本发明实施例中,通过调用存储器602存储的程序或指令,具体的,可以是应用程序6022中存储的程序或指令,处理器601用于执行各方法实施例所提供的方法步骤,例如包括:
[0113] 按照区块高度从多个第二节点中确定目标节点;根据账本数据类型从所述目标节点获取所述账本数据类型对应的缺失数据;将所述缺失数据按照所述账本数据类型存储于所述第一节点的数据库中以完成所述第一节点的账本更新。
[0114] 可选地,所述共识网络的任一节点,采用广播的形式向所述共识网络中的其余节点发送广播消息,以使所述其余节点响应于所述广播消息向所述任一节点返回所述广播消息中账本数据类型标识对应的当前区块高度;所述任一节点基于所述前区块高度与本地区块高度进行比对;若所述本地区块高度小于所述前区块高度,则将所述任一节点作为第一节点;若所述本地区块高度等于所述前区块高度,则所述任一节点与所述其余节点均为正常节点;若所述本地区块高度大于所述前区块高度,则将所述其余节点作为第一节点;
[0115] 其中,所述第一节点处于区块链的共识网络中状态为账本缺失。
[0116] 可选地,根据所述第一节点的本地区块高度与所述目标节点的当前区块高度,确定待拉取缺失数据的目标区块,所述第一节点中未缺失数据的区块存储有第一KV数据;所述第一节点根据所述账本数据类型从目标区块中读取对应账本数据类型的根哈希值;所述第一节点将所述根哈希值发送给所述第二节点,以使所述第二节点响应于所述根哈希值向所述第一节点返回所述根哈希值对应节点树中存储的第二KV数据;将所述第二KV数据作为所述目标区块的缺失数据。
[0117] 可选地,在账本更新后,从所述第一节点中的节点树中获取第三KV数据;判断所述第三KV数据与所述第二KV数据是否相同;若所述第三KV数据与所述第二KV数据相同,则确定所述第一节点账本更新成功;若所述第三KV数据与所述第二KV数据不相同,则确定所述第一节点账本更新失败。
[0118] 可选地,若所述第一节点账本更新失败,则基于所述第三KV数据与所述第二KV数据重新确定所述缺失数据,以基于所述缺失数据重新对所述第一节点执行所述账本更新的操作。
[0119] 可选地,若所述第一节点账本更新成功,则将区块链的共识网络中所述第一节点的状态变更为正常,以使所述第一节点重新加入所述共识网络中的共识流程。
[0120] 可选地,所述节点树包括:默克尔树。
[0121] 上述本发明实施例揭示的方法可以应用于处理器601中,或者由处理器601实现。处理器601可能是一种集成电路芯片,具有信号的处理能。在实现过程中,上述方法的各步骤可以通过处理器601中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器601可以是通用处理器、数字信号处理器(DigitalSignalProcessor,DSP)、专用集成电路(ApplicationSpecific  IntegratedCircuit,ASIC)、现成可编程阵列
(FieldProgrammableGateArray,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件单元组合执行完成。软件单元可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器602,处理器601读取存储器602中的信息,结合其硬件完成上述方法的步骤。
[0122] 可以理解的是,本文描述的这些实施例可以用硬件、软件、固件中间件微码或其组合来实现。对于硬件实现,处理单元可以实现在一个或多个专用集成电路(ApplicationSpecificIntegratedCircuits,ASIC)、数字信号处理器(DigitalSignalProcessing,DSP)、数字信号处理设备(DSPDevice,DSPD)、可编程逻辑设备(ProgrammableLogicDevice,PLD)、现场可编程门阵列(Field-ProgrammableGateArray,FPGA)、通用处理器、控制器微控制器、微处理器、用于执行本申请所述功能的其它电子单元或其组合中。
[0123] 对于软件实现,可通过执行本文所述功能的单元来实现本文所述的技术。软件代码可存储在存储器中并通过处理器执行。存储器可以在处理器中或在处理器外部实现。
[0124] 本实施例提供的服务器可以是如图6中所示的服务器,可执行如图1-4中区块链节点的账本处理方法的所有步骤,进而实现图1-4所示区块链节点的账本处理方法的技术效果,具体请参照图1-4相关描述,为简洁描述,在此不作赘述。
[0125] 本发明实施例还提供了一种存储介质(计算机可读存储介质)。这里的存储介质存储有一个或者多个程序。其中,存储介质可以包括易失性存储器,例如随机存取存储器;存储器也可以包括非易失性存储器,例如只读存储器、快闪存储器、硬盘或固态硬盘;存储器还可以包括上述种类的存储器的组合。
[0126] 当存储介质中一个或者多个程序可被一个或者多个处理器执行,以实现上述在区块链节点的账本处理设备侧执行的区块链节点的账本处理方法。
[0127] 所述处理器用于执行存储器中存储的区块链节点的账本处理程序,以实现以下在区块链节点的账本处理设备侧执行的区块链节点的账本处理方法的步骤:
[0128] 按照区块高度从多个第二节点中确定目标节点;根据账本数据类型从所述目标节点获取所述账本数据类型对应的缺失数据;将所述缺失数据按照所述账本数据类型存储于所述第一节点的数据库中以完成所述第一节点的账本更新。
[0129] 可选地,所述共识网络的任一节点,采用广播的形式向所述共识网络中的其余节点发送广播消息,以使所述其余节点响应于所述广播消息向所述任一节点返回所述广播消息中账本数据类型标识对应的当前区块高度;所述任一节点基于所述前区块高度与本地区块高度进行比对;若所述本地区块高度小于所述前区块高度,则将所述任一节点作为第一节点;若所述本地区块高度等于所述前区块高度,则所述任一节点与所述其余节点均为正常节点;若所述本地区块高度大于所述前区块高度,则将所述其余节点作为第一节点;
[0130] 其中,所述第一节点处于区块链的共识网络中状态为账本缺失。
[0131] 可选地,根据所述第一节点的本地区块高度与所述第二节点的当前区块高度,确定存在数据缺失的目标区块;所述第一节点根据所述账本数据类型从所述目标区块中确定节点树中的根哈希值;所述第一节点将所述根哈希值发送给所述第二节点,以使所述第二节点响应于所述根哈希值向所述第一节点返回所述根哈希值对应节点树中存储的第二KV数据;所述第一节点根据所述节点树中存储的第一KV数据与所述第二KV数据确定所述缺失数据。
[0132] 可选地,在账本更新后,从所述第一节点中的节点树中获取第三KV数据;判断所述第三KV数据与所述第二KV数据是否相同;若所述第三KV数据与所述第二KV数据相同,则确定所述第一节点账本更新成功;若所述第三KV数据与所述第二KV数据不相同,则确定所述第一节点账本更新失败。
[0133] 可选地,若所述第一节点账本更新失败,则基于所述第三KV数据与所述第二KV数据重新确定所述缺失数据,以基于所述缺失数据重新对所述第一节点执行所述账本更新的操作。
[0134] 可选地,若所述第一节点账本更新成功,则将区块链的共识网络中所述第一节点的状态变更为正常,以使所述第一节点重新加入所述共识网络中的共识流程。
[0135] 可选地,所述节点树包括:默克尔树。
[0136] 专业人员应该还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。
专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
[0137] 结合本文中所公开的实施例描述的方法或算法的步骤可以用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
[0138] 以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈