数据管理方法、装置、系统及存储介质制造方法及图纸

技术编号:33040355 阅读:17 留言:0更新日期:2022-04-15 09:20
本申请提供一种数据管理方法、装置、系统及存储介质,涉及区块链技术领域,用以解决采用MPT存储账户数据和合约数据影响区块链的整体性能的问题。该方案包括:创建目标事务;若目标事务包括对账户数据的存储指令,则将账户数据存储至单默克尔B+树的数据节点;若目标事务包括对一个合约账户的合约数据的存储指令,则将合约数据存储至与一个合约账户对应的默克尔B+树的数据节点,不同合约账户对应不同的默克尔B+树;默克尔B+树的最后一层为数据节点,默克尔B+树的其他层为索引节点;一个合约账户对应的默克尔B+树的树根存储在一个合约账户的账户数据的根字段里面。采用不同的默克尔B+树分别存储账户数据、合约数据,提升了区块链的整体性能。的整体性能。的整体性能。

【技术实现步骤摘要】
数据管理方法、装置、系统及存储介质


[0001]本申请涉及区块链
,尤其涉及一种数据管理方法、装置、系统及存储介质。

技术介绍

[0002]在以太坊(Ethereum)公共区块链平台中,通常使用默克尔帕特里夏树(Merkle Patricia Tree,MPT)来存储账户数据和合约数据。MPT的底层使用leveldb数据库存储数据,并且每个数据的键是节点的哈希值,这意味着以太坊存储全部数据,存在着读写性能和扩展性能差的问题,影响了区块链的整体性能。

技术实现思路

[0003]本申请提供一种数据管理方法、装置、系统及存储介质,解决了采用MPT存储账户数据和合约数据影响区块链的整体性能的问题。
[0004]为达到上述目的,本申请采用如下技术方案:
[0005]第一方面,本申请实施例提供一种数据管理方法。该方法包括:
[0006]创建目标事务;
[0007]若该目标事务包括对账户数据的存储指令,则将该账户数据存储至单默克尔B+树的数据节点;
[0008]若该目标事务包括对一个合约账户的合约数据的存储指令,则将该合约数据存储至与该一个合约账户对应的默克尔B+树的数据节点,不同合约账户对应不同的默克尔B+树;
[0009]其中,默克尔B+树的最后一层为数据节点,默克尔B+树的其他层为索引节点;一个合约账户对应的默克尔B+树的树根存储在该一个合约账户的账户数据的根字段里面。
[0010]在一些实施例中,该方法还包括:
[0011]接收目标键的证明请求;
[0012]基于该证明请求,对从该目标键所在的节点到默克尔B+树的根节点的路径上的所有节点进行拼接,生成该目标键的默克尔证明;
[0013]遍历该路径上的所有节点,对于每个节点均执行:
[0014]计算该每个节点的验证哈希值;
[0015]在该每个节点的验证哈希值与该每个节点存储的哈希值相等的情况下,在该每个节点查找该目标键;
[0016]在该目标键满足目标条件的情况下,该证明请求验证成功;
[0017]其中,该目标条件包括:该目标键命中该路径上的每个索引节点的子节点列表的一个键,且命中的键与每个索引节点的下一节点的子节点列表的最小键相等;该目标键命中该路径上的数据节点的子节点列表的一个键。
[0018]在一些实施例中,目标键值为一个合约账户对应的默克尔B+树中的键值;
[0019]证明请求验证成功之前,该方法还包括:
[0020]验证一个合约账户对应的默克尔B+树的树根与一个合约账户的账户数据的根字段相等。
[0021]在一些实施例中,该方法还包括:
[0022]在完成目标事务之后,以默克尔B+树的最后一层为起始层,以默克尔B+树的最上层为终止层,逐层判断每层的每个节点的键值对的数量是否大于或等于预设值;
[0023]在一个数据节点的键值对的数量大于或等于预设值的情况下,将一个数据节点分裂为键值对的数量小于预设值的多个数据节点。
[0024]在一些实施例中,该默克尔B+树的索引节点存储了子节点的最小键和哈希值;
[0025]该方法还包括:
[0026]在目标事务结束后,以默克尔B+树的最上层为起始层,以默克尔B+树的最后一层为终止层,逐层对每层的每个节点的所有子节点并行计算哈希值,并更新哈希值;
[0027]其中,每个节点的哈希值由它的子节点列表总和的哈希值确定。
[0028]在一些实施例中,默克尔B+树的每个节点包括一个ID;
[0029]该方法还包括:
[0030]在创建一个或更新一个新节点的情况下,若空闲ID列表存在满足条件的ID,则将该空闲ID列表中的一个ID分配给该一个新节点;或者,若空闲ID列表不存在满足条件的ID,则将最大页ID分配给该一个新节点,并递增该最大页ID作为新的最大页ID。
[0031]在一些实施例中,默克尔B+树的每个节点包括一个ID;
[0032]该方法还包括:
[0033]在一个节点分裂为多个节点的情况下,或者在一个节点成为空闲节点的情况下,将一个节点的ID添加至空闲ID列表。
[0034]第二方面,本申请实施例提供一种数据管理装置,该装置包括:
[0035]处理模块,用于创建目标事务;
[0036]存储模块,用于若该目标事务包括对账户数据的存储指令,则将该账户数据存储至单默克尔B+树的数据节点;若该目标事务包括对一个合约账户的合约数据的存储指令,则将该合约数据存储至与该一个合约账户对应的默克尔B+树的数据节点,不同合约账户对应不同的默克尔B+树;
[0037]其中,默克尔B+树的最后一层为数据节点,默克尔B+树的其他层为索引节点;一个合约账户对应的默克尔B+树的树根存储在该一个合约账户的账户数据的根字段里面。
[0038]第三方面,本申请实施例提供一种区块链系统,包括处理器,存储器,存储在存储器上并可在处理器上运行的计算机程序,该计算机程序被处理器执行时实现如第一方面提供的数据管理方法。
[0039]第四方面,本申请实施例提供一种存储介质,该介质上存储有计算机程序,该计算机程序被处理器进行加载,以执行如第一方面提供的数据管理方法。
[0040]本申请实施例中,在创建目标事务之后,如果目标事务包括对账户数据的存储指令,那么可以将账户数据存储至单默克尔B+树的数据节点;如果目标事务包括对一个合约账户的合约数据的存储指令,那么可以将合约数据存储至与一个合约账户对应的默克尔B+树的数据节点,不同合约账户对应不同的默克尔B+树。如此,实现了采用单默克尔B+树存储
账户数据,采用多默克尔B+树存储多个合约账户的合约账户。由于账户数据和合约数据是分开存储的,因此降低了每个数据库的数据量,提升了读写性能和扩展性能,从而提升了区块链的整体性能。
附图说明
[0041]图1为本申请实施例提供的一种默克尔B+树的示意图;
[0042]图2为本申请实施例提供的数据管理方法的流程示意图;
[0043]图3为本申请实施例提供的批量插入后对整棵树统一分裂的示意图;
[0044]图4为本申请实施例提供的数据回滚的示意图;
[0045]图5为本申请实施例提供的账户树和合约树的示意图;
[0046]图6为本申请实施例提供的数据管理装置的结构示意图;
[0047]图7为本申请实施例提供的一种区块链系统的结构示意图。
具体实施方式
[0048]以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本申请实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本申请。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本申请的描述。
[0049]应当理解,当在本申请说明书和所附权利要求书中使用时,术语“包括”指示所本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种数据管理方法,其特征在于,所述方法包括:创建目标事务;若所述目标事务包括对账户数据的存储指令,则将所述账户数据存储至单默克尔B+树的数据节点;若所述目标事务包括对一个合约账户的合约数据的存储指令,则将所述合约数据存储至与所述一个合约账户对应的默克尔B+树的数据节点,不同合约账户对应不同的默克尔B+树;其中,默克尔B+树的最后一层为数据节点,默克尔B+树的其他层为索引节点;一个合约账户对应的默克尔B+树的树根存储在所述一个合约账户的账户数据的根字段里面。2.根据权利要求1所述的数据管理方法,其特征在于,所述方法还包括:接收目标键的证明请求;基于所述证明请求,对从所述目标键所在的节点到默克尔B+树的根节点的路径上的所有节点进行拼接,生成所述目标键的默克尔证明;遍历所述路径上的所有节点,对于每个节点均执行:计算所述每个节点的验证哈希值;在所述每个节点的验证哈希值与所述每个节点存储的哈希值相等的情况下,在所述每个节点查找所述目标键;在所述目标键满足目标条件的情况下,所述证明请求验证成功;其中,所述目标条件包括:所述目标键命中所述路径上的每个索引节点的子节点列表的一个键,且命中的键与每个索引节点的下一节点的子节点列表的最小键相等;所述目标键命中所述路径上的数据节点的子节点列表的一个键。3.根据权利要求2所述的数据管理方法,其特征在于,所述目标键值为一个合约账户对应的默克尔B+树中的键值;所述证明请求验证成功之前,所述方法还包括:验证一个合约账户对应的默克尔B+树的树根与所述一个合约账户的账户数据的根字段相等。4.根据权利要求1所述的数据管理方法,其特征在于,所述方法还包括:在完成目标事务之后,以默克尔B+树的最后一层为起始层,以默克尔B+树的最上层为终止层,逐层判断每层的每个节点的键值对的数量是否大于或等于预设值;在一个数据节点的键值对的数量大于或等于预设值的情况下,将一个数据节点分裂为键值对的数量小于预设值的多个数据节点。5.根据权利要求4所述的数据管理方法,其...

【专利技术属性】
技术研发人员:邱炜伟李伟郑柏川张珂杰黄方蕾
申请(专利权)人:杭州趣链科技有限公司
类型:发明
国别省市:

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

1