区块链状态的存储、验证方法及区块链节点技术

技术编号:37449209 阅读:12 留言:0更新日期:2023-05-06 09:21
一种区块链状态的存储、验证方法及区块链节点,待存储的目标状态数据为区块链中的第一参数的状态数据。该存储方法包括:从区块链中获取上一个区块对应的第一状态树和第一默克树,该第一默克树中包括第一参数的多个第一状态数据,该第一状态树中包括第一默克树的第一根哈希值。基于目标状态数据,更新第一默克树,得到第二默克树,该第二默克树包括第二根哈希值。基于第二根哈希值,更新第一状态树,得到第二状态树。与当前区块关联地存储第二状态树和第二默克树。第二默克树。第二默克树。

【技术实现步骤摘要】
区块链状态的存储、验证方法及区块链节点


[0001]本说明书实施例属于区块链
,尤其涉及一种区块链状态的存储、验证方法及区块链节点。

技术介绍

[0002]区块链(Blockchain)是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链系统中按照时间顺序将数据区块以顺序相连的方式组合成链式数据结构,并以密码学方式保证的不可篡改和不可伪造的分布式账本。由于区块链具有去中心化、信息不可篡改、自治性等特性,区块链也受到人们越来越多的重视和应用。在区块链系统中,一般通过全节点作为参与共识的最小设施,全节点需要包括全量数据,以支持共识功能。

技术实现思路

[0003]本专利技术的目的在于提供一种区块链状态的存储、验证方法及区块链节点,可以实现针对细粒度数据进行验证。
[0004]本说明书第一方面提供一种区块链状态的存储方法,由区块链节点执行,待存储的目标状态数据为所述区块链中的第一参数的状态数据;所述方法包括:
[0005]从区块链中获取上一个区块对应的第一状态树和第一默克树,所述第一默克树中包括第一参数的多个第一状态数据,所述第一状态树中包括所述第一默克树的第一根哈希值;
[0006]基于所述目标状态数据,更新所述第一默克树,得到第二默克树,所述第二默克树包括第二根哈希值;
[0007]基于所述第二根哈希值,更新所述第一状态树,得到第二状态树;
[0008]与当前区块关联地存储所述第二状态树和所述第二默克树。
[0009]本说明书第二方面提供一种区块链状态的验证方法,待验证的目标状态数据为第一区块对应的第一参数的状态数据,所述方法包括:
[0010]获取第一证明数据,所述第一证明数据基于所述状态树,以及所述第一区块对应的默克树的根哈希值的位置而确定;所述默克树中包括所述第一参数的多个状态数据;
[0011]获取第二证明数据,所述第二证明数据基于所述默克树,以及所述目标状态数据的位置而确定;
[0012]基于所述第一证明数据、所述第二证明数据,以及预先获取的所述第一区块的区块头,对所述目标状态数据进行存在性证明的验证。
[0013]本说明书第三方面提供一种区块链节点,用于存储目标状态数据,该目标状态数据为所述区块链中的第一参数的状态数据;所述区块链节点包括:
[0014]获取单元,用于从区块链中获取上一个区块对应的第一状态树和第一默克树,所述第一默克树中包括第一参数的多个第一状态数据,所述第一状态树中包括所述第一默克
树的第一根哈希值;
[0015]更新单元,用于基于所述目标状态数据,更新所述第一默克树,得到第二默克树,所述第二默克树包括第二根哈希值;
[0016]所述更新单元,还用于基于所述第二根哈希值,更新所述第一状态树,得到第二状态树;
[0017]存储单元,用于与当前区块关联地存储所述第二状态树和所述第二默克树。
[0018]本说明书第四方面提供一种区块链节点,用于验证目标状态数据,该目标状态数据为第一区块对应的第一参数的状态数据;所述区块链节点包括:
[0019]获取单元,用于获取第一证明数据,所述第一证明数据基于所述状态树,以及所述第一区块对应的默克树的根哈希值的位置而确定;所述默克树中包括所述第一参数的多个状态数据;
[0020]所述获取单元,还用于获取第二证明数据,所述第二证明数据基于所述默克树,以及所述目标状态数据的位置而确定;
[0021]验证单元,用于基于所述第一证明数据、所述第二证明数据,以及预先获取的所述第一区块的区块头,对所述目标状态数据进行存在性证明的验证。
[0022]本说明书第五方面提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行第一、第二方面所述的方法。
[0023]本说明书第六方面提供一种共识节点,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现第一、第二方面所述的方法。
[0024]在本说明书实施例的方案中,针对每个区块新建默克树,该默克树中包括区块链中某参数对应的多个编码前的状态数据(也称明文状态数据)。应理解,在传统的区块链存储方案中,通常只存储编码后的状态数据,其通常是通过对若干明文状态数据进行编码得到,因此,传统的方案只能针对粗粒度数据进行验证。而本方案通过针对编码前的状态数据创建默克树,可以实现针对细粒度数据进行验证。
附图说明
[0025]为了更清楚地说明本说明书实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0026]图1示出了一实施例中的区块链架构图;
[0027]图2为PBFT共识算法中的共识过程示意图;
[0028]图3是相关技术中的共识节点的区块链数据存储的结构示意图;
[0029]图4为MPT树的结构示意图;
[0030]图5示出针对应用层数据构建二叉默克树的方法流程图;
[0031]图6a为本说明书实施例中的k

叉树和二叉树示意图;
[0032]图6b为本说明书实施例中的二叉默克树示意图;
[0033]图7为本说明书一个实施例中的区块链状态的存储方法流程图;
[0034]图8为本说明书实施例中的第一状态树和第一默克树示意图;
[0035]图9为本说明书一个实施例中的区块链状态的验证方法流程图;
[0036]图10为本说明书一个实施例中的区块链节点结构图;
[0037]图11为本说明书另一个实施例中区块链节点结构图。
具体实施方式
[0038]为了使本
的人员更好地理解本说明书中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本说明书保护的范围。
[0039]图1示出了一实施例中的区块链架构图。在图1所示的区块链架构图中,区块链100中包括N个节点,图1中示意示出节点1

节点8。节点之间的连线示意性的表示P2P(Peer to Peer,点对点)连接,所述连接例如可以为TCP连接等,用于在节点之间传输数据。
[0040]区块链领域中的交易可以指在区块链中执行并记录在区块链中的任务单元。交易中通常包括发送字段(From)、接收字段(To)和数据字段(Data)。其中,在交易为转账交易的情况中,From字段表示发起该交易(即发起对另一个账户的转账任务)的账户地址,To字段表示接收该交易(即接收转账)的账户地址,Data本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种区块链状态的存储方法,由区块链节点执行,待存储的目标状态数据为所述区块链中的第一参数的状态数据;所述方法包括:从区块链中获取上一个区块对应的第一状态树和第一默克树,所述第一默克树中包括第一参数的多个第一状态数据,所述第一状态树中包括所述第一默克树的第一根哈希值;基于所述目标状态数据,更新所述第一默克树,得到第二默克树,所述第二默克树包括第二根哈希值;基于所述第二根哈希值,更新所述第一状态树,得到第二状态树;与当前区块关联地存储所述第二状态树和所述第二默克树。2.根据权利要求1所述的方法,其中,所述更新所述第一默克树,包括:基于所述目标状态数据,更新所述第一默克树中与所述目标状态数据对应的第一树节点的哈希值;自底向上更新从所述第一树节点到所述第一默克树的根节点的路径中其它各个树节点的哈希值。3.根据权利要求1所述的方法,其中,所述更新所述第一状态树,包括:基于所述第二根哈希值,更新所述第一状态树中与所述第一根哈希值对应的第二树节点的哈希值;自底向上更新从所述第二树节点到所述状态树的根节点的路径中其它各个树节点的哈希值。4.根据权利要求1所述的方法,其中,所述目标状态数据与资产或图片相对应。5.根据权利要求1所述的方法,其中,所述第一默克树为二叉默克树;所述二叉默克树通过以下步骤构建得到:获取针对所述多个第一状态数据预先构建的k

叉树;所述k

叉树中的每个树节点对应于一个第一状态数据;将所述k

叉树转换为二叉树;对于所述二叉树,按照从下到上的顺序,计算各层树节点的目标哈希值,直至到达根节点;如此得到所述二叉默克树。6.根据权利要求5所述的方法,其中,所述计算各层树节点的目标哈希值,包括:基于所述二叉树中各个树节点对应的各个第一状态数据,计算所述各个树节点对应的各个初始哈希值;对于所述各个树节点中的当前节点,若当前节点为叶子节点,则将对应的初始哈希值作为当前节点的目标哈希值;若当前节点为非叶子节点,则将左子节点的目标哈希值、右子节点的目标哈希值和当前节点的初始哈希值拼接后再哈希,得到当前节点的目标哈希值。7.根据权利要求6所述的方法,其中,所述第一根哈希值为所述二叉默克尔树的根节点的目标哈希值。8.根据权利要求5所述的方法,其中,所述将所述k

叉树转换为二叉树,包括:将所述k

叉树补全为完全k

叉树;按照从上到下的顺序,对所述完全k

叉树中的各层树节点进行编号;按照所述编号,将所述完全k

叉...

【专利技术属性】
技术研发人员:何家华刘谦蒋志勇
申请(专利权)人:蚂蚁区块链科技上海有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1