基于区块链的分级存储方法及装置、电子设备制造方法及图纸

技术编号:22330029 阅读:22 留言:0更新日期:2019-10-19 12:15
一种基于区块链的分级存储方法,数据库中存储了由区块链的账户状态数据构成的Merkle状态树;数据库包括多级数据存储;Merkle状态树上的数据节点被标记了指示数据节点发生数据更新时所在区块的区块号;当任一级数据存储满足数据迁移条件时,确定该数据存储中待迁移的数据节点对应的区块号区间;基于区块号区间确定迁移临界值;迁移临界值为大于区块号区间的区块号临界值;遍历与迁移临界值对应的区块的Merkle状态树,将被标记的区块号小于迁移临界值的目标数据节点的区块号修改为迁移临界值;遍历与区块号区间中的各个区块号对应的区块的Merkle状态树,将被标记的区块号小于迁移临界值的数据节点,从目标数据存储中迁移至下一级数据存储。

Block chain based hierarchical storage method, device and electronic equipment

【技术实现步骤摘要】
基于区块链的分级存储方法及装置、电子设备
本说明书一个或多个实施例涉及区块链
,尤其涉及一种基于区块链的分级存储方法及装置、电子设备。
技术介绍
区块链技术,也被称之为分布式账本技术,是一种由若干台计算设备共同参与“记账”,共同维护一份完整的分布式数据库的新兴技术。由于区块链技术具有去中心化、公开透明、每台计算设备可以参与数据库记录、并且各计算设备之间可以快速的进行数据同步的特性,使得区块链技术已在众多的领域中广泛的进行应用。
技术实现思路
本说明书提出一种基于区块链的分级存储方法,所述区块链的账户状态数据被组织成Merkle状态树在数据库中存储;所述数据库包括多级数据存储;所述Merkle状态树上的数据节点被标记了区块号;所述区块号指示所述数据节点发生数据更新时所在的区块;所述方法包括:当所述数据库中的任一级目标数据存储满足了数据迁移条件时,确定所述目标数据存储中待迁移至下一级数据存储的数据节点对应的区块号区间;基于所述区块号区间确定迁移临界值;其中,所述迁移临界值为大于所述区块号区间的区块号临界值;遍历与所述迁移临界值对应的目标区块的Merkle状态树,查找被标记的区块号小于所述迁移临界值的目标数据节点,并将查找到的所述目标数据节点的区块号修改为所述迁移临界值;遍历与所述区块号区间中的各个区块号对应的区块的Merkle状态树,查找被标记的区块号小于所述迁移临界值的数据节点,并将查找到的数据节点从所述目标数据存储中,迁移至所述目标数据存储的下一级数据存储。可选的,所述基于所述区块号区间确定迁移临界值,包括:如果所述区块号区间的右区间为开区间,将所述区块号区间的右端点值,确定为所述迁移临界值;如果所述区块号区间的右区间为闭区间,将所述区块号区间的右端点值与所述区块链的区块号递增步长的和确定为所述迁移临界值。可选的,所述数据库为Key-Value数据库;所述Merkle状态树上的数据节点以Key-Value键值对的形式存储在所述数据库中;其中,所述Key-Value键值对的key为所述数据节点包含的数据内容的hash值;所述Key-Value键值对的value为所述数据节点包含的数据内容。可选的,所述方法还包括:确定最新区块的Merkle状态树上发生数据更新的数据节点;为所述最新区块的Merkle状态树上发生数据更新的数据节点标记所述最新区块的区块号。可选的,所述数据库中存储的所述Merkle状态树上的数据节点的Value中,包含预设的区块号字段;为所述Merkle状态树上的数据节点标记的区块号,添加在所述区块号字段中。可选的,所述数据库中预设了指向所述Merkle状态树上的数据节点的Value的存储位置的区块号字段;为所述Merkle状态树上的数据节点标记的区块号,添加在所述区块号字段中。可选的,所述Merkle树为融合了Trie字典树的树形结构的Merkle树变种。可选的,所述Merkle状态树为MerklePatriciaTree状态树。可选的,所述数据库为LevelDB数据库;或者基于LevelDB架构的数据库;可选的,所述数据库为基于LevelDB架构的Rocksdb数据库。可选的,所述多级数据存储对应的存储介质的读写性能,存在性能差异;其中,级数高的数据存储对应的存储介质的读写性能,高于级数低的数据存储对应的存储介质的读写性能。本说明书还提出一种基于区块链的分级存储装置,所述区块链的账户状态数据被组织成Merkle状态树在数据库中存储;所述数据库包括多级数据存储;所述Merkle状态树上的数据节点被标记了区块号;所述区块号指示所述数据节点发生数据更新时所在的区块;所述装置包括:确定模块,当所述数据库中的任一级目标数据存储满足了数据迁移条件时,确定所述目标数据存储中待迁移至下一级数据存储的数据节点对应的区块号区间;基于所述区块号区间确认迁移临界值;其中,所述迁移临界值为大于所述区块号区间的区块号临界值;修改模块,遍历与所述迁移临界值对应的目标区块的Merkle状态树,查找被标记的区块号小于所述迁移临界值的目标数据节点,并将查找到的所述目标数据节点的区块号修改为所述迁移临界值;迁移模块,遍历与所述区块号区间中的各个区块号对应的区块的Merkle状态树,查找被标记的区块号小于所述迁移临界值的数据节点,并将查找到的数据节点从所述目标数据存储中,迁移至所述目标数据存储的下一级数据存储。可选的,所述确定模块:如果所述区块号区间的右区间为开区间,将所述区块号区间的右端点值,确定为所述迁移临界值;如果所述区块号区间的右区间为闭区间,将所述区块号区间的右端点值与所述区块链的区块号递增步长的和确定为所述迁移临界值。可选的,所述数据库为Key-Value数据库;所述Merkle状态树上的数据节点以Key-Value键值对的形式存储在所述数据库中;其中,所述Key-Value键值对的key为所述数据节点包含的数据内容的hash值;所述Key-Value键值对的value为所述数据节点包含的数据内容。可选的,所述装置还包括:标记模块,确定最新区块的Merkle状态树上发生数据更新的数据节点;为所述最新区块的Merkle状态树上发生数据更新的数据节点标记所述最新区块的区块号。可选的,所述数据库中存储的所述Merkle状态树上的数据节点的Value中,包含预设的区块号字段;为所述Merkle状态树上的数据节点标记的区块号,添加在所述区块号字段中。可选的,所述数据库中预设了指向所述Merkle状态树上的数据节点的Value的存储位置的区块号字段;为所述Merkle状态树上的数据节点标记的区块号,添加在所述区块号字段中。可选的,所述Merkle树为融合了Trie字典树的树形结构的Merkle树变种。可选的,所述Merkle状态树为MerklePatriciaTree状态树。可选的,所述数据库为LevelDB数据库;或者基于LevelDB架构的数据库;可选的,所述数据库为基于LevelDB架构的Rocksdb数据库。可选的,所述多级数据存储对应的存储介质的读写性能,存在性能差异;其中,级数高的数据存储对应的存储介质的读写性能,高于级数低的数据存储对应的存储介质的读写性能。在以上技术方案中,可以实现对数据库中存储的Merkle状态树上的数据节点进行剪枝,将记录了历史状态数据的数据节点从Merkle状态树上移除,迁移至下一级数据存储,并在本级数据存储中继续存储和保留记录了最新状态数据的数据节点,进而完成针对数据库中存储的Merkle状态树的分级存储。附图说明图1是一示例性实施例提供的一种将区块链的账户状态数据组织成MPT状态树的示意图;图2是一示例性实施例提供的一种MPT状态树上的node复用的示意图;图3是一示例性实施例提供的一种基于区块链的分级存储方法的流程图;图4是一示例性实施例提供的一种电子设备的结构示意图;图5是一示例性实施例提供的一种基于区块链的分级存储装置的框图。具体实施方式这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书一个或多个实施例相一致的所有实施方式。相反,本文档来自技高网...

【技术保护点】
1.一种基于区块链的分级存储方法,所述区块链的账户状态数据被组织成Merkle状态树在数据库中存储;所述数据库包括多级数据存储;所述Merkle状态树上的数据节点被标记了区块号;所述区块号指示所述数据节点发生数据更新时所在的区块;所述方法包括:当所述数据库中的任一级目标数据存储满足了数据迁移条件时,确定所述目标数据存储中待迁移至下一级数据存储的数据节点对应的区块号区间;基于所述区块号区间确定迁移临界值;其中,所述迁移临界值为大于所述区块号区间的区块号临界值;遍历与所述迁移临界值对应的目标区块的Merkle状态树,查找被标记的区块号小于所述迁移临界值的目标数据节点,并将查找到的所述目标数据节点的区块号修改为所述迁移临界值;遍历与所述区块号区间中的各个区块号对应的区块的Merkle状态树,查找被标记的区块号小于所述迁移临界值的数据节点,并将查找到的数据节点从所述目标数据存储中,迁移至所述目标数据存储的下一级数据存储。

【技术特征摘要】
1.一种基于区块链的分级存储方法,所述区块链的账户状态数据被组织成Merkle状态树在数据库中存储;所述数据库包括多级数据存储;所述Merkle状态树上的数据节点被标记了区块号;所述区块号指示所述数据节点发生数据更新时所在的区块;所述方法包括:当所述数据库中的任一级目标数据存储满足了数据迁移条件时,确定所述目标数据存储中待迁移至下一级数据存储的数据节点对应的区块号区间;基于所述区块号区间确定迁移临界值;其中,所述迁移临界值为大于所述区块号区间的区块号临界值;遍历与所述迁移临界值对应的目标区块的Merkle状态树,查找被标记的区块号小于所述迁移临界值的目标数据节点,并将查找到的所述目标数据节点的区块号修改为所述迁移临界值;遍历与所述区块号区间中的各个区块号对应的区块的Merkle状态树,查找被标记的区块号小于所述迁移临界值的数据节点,并将查找到的数据节点从所述目标数据存储中,迁移至所述目标数据存储的下一级数据存储。2.根据权利要求1所述的方法,所述基于所述区块号区间确定迁移临界值,包括:如果所述区块号区间的右区间为开区间,将所述区块号区间的右端点值,确定为所述迁移临界值;如果所述区块号区间的右区间为闭区间,将所述区块号区间的右端点值与所述区块链的区块号递增步长的和确定为所述迁移临界值。3.根据权利要求1所述的方法,所述数据库为Key-Value数据库;所述Merkle状态树上的数据节点以Key-Value键值对的形式存储在所述数据库中;其中,所述Key-Value键值对的key为所述数据节点包含的数据内容的hash值;所述Key-Value键值对的value为所述数据节点包含的数据内容。4.根据权利要求1所述的方法,所述方法还包括:确定最新区块的Merkle状态树上发生数据更新的数据节点;为所述最新区块的Merkle状态树上发生数据更新的数据节点标记所述最新区块的区块号。5.根据权利要求1或4所述的方法,所述数据库中存储的所述Merkle状态树上的数据节点的Value中,包含预设的区块号字段;为所述Merkle状态树上的数据节点标记的区块号,添加在所述区块号字段中。6.根据权利要求1或4所述的方法,所述数据库中预设了指向所述Merkle状态树上的数据节点的Value的存储位置的区块号字段;为所述Merkle状态树上的数据节点标记的区块号,添加在所述区块号字段中。7.根据权利要求1所述的方法,所述Merkle树为融合了Trie字典树的树形结构的Merkle树变种。8.根据权利要求7所述的方法,所述Merkle状态树为MerklePatriciaTree状态树。9.根据权利要求1所述的方法,所述数据库为LevelDB数据库;或者基于LevelDB架构的数据库。10.根据权利要求9所述的方法,所述数据库为基于LevelDB架构的Rocksdb数据库。11.根据权利要求1所述的方法,所述多级数据存储对应的存储介质的读写性能,存在性能差异;其中,级数高的数据存储对应的存储介质的读写性能,高于级数低的数据存储对应的存储介质的读写性能。12.一种基于区块链的分级存储装置,所述区块链的账户状态数据被组织成Merkle状态树在数据库中存储;所述数据库包括多级数据存储;所述Merkle状态树上的数据节点被...

【专利技术属性】
技术研发人员:陆钟豪俞本权卓海振
申请(专利权)人:阿里巴巴集团控股有限公司
类型:发明
国别省市:开曼群岛,KY

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

1