一种状态数据存储、查询和管理方法、设备及存储介质技术

技术编号:22531797 阅读:12 留言:0更新日期:2019-11-13 09:06
本发明专利技术公开了一种状态数据存储、查询和管理方法、设备及存储介质,属于区块链技术领域。根据区块高度Hi‑ΔHB之前的索引节点的键值,采用以上所述的一种状态数据查询方法查询区块高度Hi‑ΔHB之前的索引节点;当所述键值对应若干个索引节点时,保留区块高度最高的索引节点,删除其余索引节点;其中,Hi为当前区块高度,ΔHB为区块回滚区间。针对现有技术中的索引节点存在冗余数据的问题,本申请的技术方案不需要遍历整个索引节点的键值去更新索引节点,及管理状态数据,提高数据库的IO读写能力,数据吞吐能力。

A state data storage, query and management method, device and storage medium

The invention discloses a state data storage, query and management method, a device and a storage medium, belonging to the block chain technical field. According to the key value of the index node before the block height hi \u2011 \u0394 Hb, a state data query method described above is used to query the index node before the block height hi \u2011 \u0394 HB; when the key value corresponds to several index nodes, the index node with the highest block height is reserved, and the other index nodes are deleted; where hi is the current block height and \u0394 Hb is the block rollback interval. In view of the problem that the index node in the prior art has redundant data, the technical scheme of the application does not need to traverse the key value of the entire index node to update the index node, manage the status data, improve the IO read-write ability and data throughput ability of the database.

【技术实现步骤摘要】
一种状态数据存储、查询和管理方法、设备及存储介质
本专利技术涉及区块链
,尤其涉及一种状态数据存储、查询和管理方法、设备及存储介质。
技术介绍
区块链运行时间越久,区块高度会越高,产生的区块数据越多,鉴于区块链分布式存储的特性,区块及区块内的默克尔树均存储在各个区块链节点本地的数据库中,占用较大的空间。其中,默克尔树占用空间最大,默克尔树上主要记录区块链的状态数据,如交易地址的账户余额等数据,而账户余额数据主要以最新数据为准,除去区块回滚因素需要查看区块回滚高度内的状态数据的历史数据外,状态数据的历史数据对于大多数区块链节点及节点上钱包的交易地址账户来说是无用的,同时随着区块的产生,状态数据的历史数据会不断积累,默克尔状态树的节点数目不断增加,受限于硬盘IO读写瓶颈,每次存储一个默克尔树节点或者读取一个默克尔树节点的数据时,都会降低区块链节点本地数据库的读写效率;同时也会占用较大磁盘存储空间,因此状态数据的历史数据成了冗余数据,占用区块链节点本地存储空间,亟待处理。中国专利技术专利申请,公开号:CN109684333A;公开日:2019.04.26;提供一种数据存储及裁剪方法、设备和存储介质,该方法包括:在本地数据库中存储第一默克尔树除根节点外的各节点的父节点信息;以及,在向第一默克尔树中插入第一叶子节点时,在本地数据库中存储对应于第一叶子节点的第一索引节点;其中,第一索引节点的第二键值包括第一叶子节点的第一键值、第一区块高度和第一哈希值;其中,第二键值用于查找与第一键值相同的若干索引节点和对应的叶子节点,父节点信息用于查找冗余的父节点。该专利技术通过存储叶子节点对应的索引节点,根据索引节点删除冗余的状态数据,在不影响正常的账户状态的前提下,大大提高了数据同步的速率,以及提高了读写效率。该方案随着区块越来越多,索引节点也会越来越多,因此导致利用该数据存储方法保存索引节点,所花费的时间过长,进而影响到冗余数据的裁剪速度和进度,从而会出现索引节点不能跟随区块的最新高度,进行及时更新的情况,反而不利于提高区块链节点本地数据库中数据同步的速率,以及读写效率,如果从索引节点查询最新状态数据,可能还会带来查询到的最新状态数据不准确的技术问题。
技术实现思路
1.专利技术要解决的技术问题为了克服上述技术问题,本专利技术提供了一种状态数据存储、查询和管理方法、设备及存储介质。不需要遍历整个索引节点的键值去更新索引节点,及管理状态数据,提高数据库的IO读写能力,数据吞吐能力。2.技术方案为解决上述问题,本专利技术提供的技术方案为:第一方面,本专利技术提供了一种状态数据存储方法,适用于区块链节点,包括:将叶子节点所在的区块高度、叶子节点的键值、叶子节点哈希值放在一起,形成所述叶子节点对应的索引节点。进一步地,所述索引节点还包括所述叶子节点的默克尔状态树路径上的除根节点以外的中间节点哈希值。进一步地,所述叶子节点的键值为所述索引节点的键值,所述叶子节点所在的区块高度为所述索引节点的区块高度Hi,将所述键值相同的索引节点存储在一起。进一步地,所述索引节点还包括由区间号和标记号形成的前缀,所述区间号用以标识所述索引节点所在的区块裁剪区间ΔHi,所述标记号用以标识所述节点为索引节点。进一步地,所述的区块裁剪区间ΔHi范围为:[Hi-ΔH,Hi],其中,Hi为任一区块高度,ΔH为区块裁剪高度。第二方面,本专利技术提供了一种状态数据查询方法,适用于区块链节点,包括根据键值查询以上所述的一种状态数据存储方法中所述的索引节点,以查找所述键值所在的区块高度对应的叶子节点。进一步地,根据键值查询以上所述的一种状态数据存储方法中所述的索引节点,以查找所述键值所在的区块高度对应的叶子节点,叶子节点哈希值,以及叶子节点的默克尔状态树路径上的中间节点哈希值,以验证或管理所述叶子节点哈希值。进一步地,所述的索引节点包含前缀,所述前缀由区间号和标记号形成,所述区间号用以标识所述索引节点所在的区块裁剪区间ΔHi,所述标记号用以标识所述节点为索引节点。进一步地,所述的区块裁剪区间ΔHi范围为:[Hi-ΔH,Hi],其中,Hi为任一区块高度,ΔH为区块裁剪高度。第三方面,本专利技术提供了一种状态数据管理方法,适用于区块链节点,包括:根据区块高度Hi-ΔHB之前的索引节点的键值,采用以上所述的一种状态数据查询方法查询区块高度Hi-ΔHB之前的索引节点;当所述键值对应若干个索引节点时,保留区块高度最高的索引节点,删除其余索引节点,及其对应的叶子节点;其中,Hi为当前区块高度,ΔHB为区块回滚区间。进一步地,包括:所述索引节点还包括所述叶子节点的默克尔状态树路径上的除根节点以外的中间节点哈希值;当所述键值对应若干个索引节点时,保留区块高度最高的索引节点,删除其余索引节点,及其对应的叶子节点,以及所述叶子节点的默克尔状态树路径上的除根节点以外的中间节点哈希值。进一步地,每一个区块形成后,均执行上述方法,以管理所述状态数据。进一步地,区块高度每隔一个区块裁剪高度ΔH执行一次上述方法,包括:当离当前区块高度Hi最近的一个区块裁剪区间ΔHi内的索引节点根据以上所述的一种状态数据存储方法保存结束后,根据前一区块裁剪区间ΔHi-1内的索引节点的键值,采用以上所述的一种状态数据查询方法去查询前一区块裁剪区间ΔHi-1及其之前的索引节点;当所述键值对应若干个索引节点时,保留区块高度最高的索引节点,删除其余索引节点。其中,所述的区块裁剪区间ΔHi范围为:[Hi-ΔH,Hi],前一区块裁剪区间ΔHi-1范围为:[Hi-2ΔH,Hi-ΔH],其中,ΔH为区块裁剪高度,ΔH≥ΔHB。进一步地,所述叶子节点的键值为所述索引节点的键值,所述叶子节点所在的区块高度Hi为所述索引节点的区块高度Hi,将所述键值相同的索引节点存储在一起,以便根据前一区块裁剪区间ΔHi-1内的索引节点的键值,采用以上所述的一种状态数据查询方法去查询前一区块裁剪区间ΔHi-1及其之前的索引节点。进一步地,所述索引节点还包括由区间号和标记号形成的前缀,所述区间号用以标识所述索引节点所在的区块裁剪区间ΔHi,所述标记号用以标识所述节点为索引节点,以便根据前一区块裁剪区间ΔHi-1内的索引节点的键值,采用以上所述的一种状态数据查询方法查询前一区块裁剪区间ΔHi-1及其之前的索引节点。第四方面,本专利技术提供了一种设备,所述设备包括:一个或多个处理器;存储器,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器执行如以上所述的方法。第五方面,本专利技术提供了一种存储有计算机程序的存储介质,该程序被处理器执行时实现如以上任一项所述的方法。3.有益效果采用本专利技术提供的技术方案,与现有技术相比,具有如下有益效果:本专利技术不需要遍历整个索引节点的键值去更新索引节点,及管理状态数据;只需要针对区块裁剪区间的索引节点涉及到的键值进行查询,从而对键值进行更新,删除索引节点的冗余数据,以及区块链节点存储的叶子节点,及其默克尔树路径上的中间节点,删除区块链节点本地数据库的冗余状态数据,提高数据库的IO读写能力,提高区块链节点本地数据库中数据同步的速率,以及数据吞吐能力。附图说明图1为实施例1提供的一种状态数据存储方法的流程图。图本文档来自技高网
...

【技术保护点】
1.一种状态数据存储方法,其特征在于,适用于区块链节点,包括:将叶子节点所在的区块高度、叶子节点的键值、叶子节点哈希值放在一起,形成所述叶子节点对应的索引节点。

【技术特征摘要】
1.一种状态数据存储方法,其特征在于,适用于区块链节点,包括:将叶子节点所在的区块高度、叶子节点的键值、叶子节点哈希值放在一起,形成所述叶子节点对应的索引节点。2.根据权利要求1所述的方法,其特征在于,所述索引节点还包括所述叶子节点的默克尔状态树路径上的除根节点以外的中间节点哈希值。3.根据权利要求1所述的方法,其特征在于,所述叶子节点的键值为所述索引节点的键值,所述叶子节点所在的区块高度为所述索引节点的区块高度Hi,将所述键值相同的索引节点存储在一起。4.根据权利要求1所述的方法,其特征在于,所述索引节点还包括由区间号和标记号形成的前缀,所述区间号用以标识所述索引节点所在的区块裁剪区间ΔHi,所述标记号用以标识所述节点为索引节点。5.根据权利要求4所述的方法,其特征在于,所述的区块裁剪区间ΔHi范围为:[Hi-ΔH,Hi],其中,Hi为当前区块高度,ΔH为区块裁剪高度。6.一种状态数据查询方法,其特征在于,适用于区块链节点,根据键值查询权利要求1所述的一种状态数据存储方法中所述的索引节点,以查找所述键值所在的区块高度对应的叶子节点。7.根据权利要求6所述的方法,其特征在于,根据键值查询权利要求1所述的一种状态数据存储方法中所述的索引节点,以查找所述键值所在的区块高度对应的叶子节点,叶子节点哈希值,以及叶子节点的默克尔状态树路径上的中间节点哈希值,以验证或管理所述叶子节点哈希值。8.根据权利要求6所述的方法,其特征在于,所述的索引节点包含前缀,所述前缀由区间号和标记号形成,所述区间号用以标识所述索引节点所在的区块裁剪区间ΔHi,所述标记号用以标识所述节点为索引节点。9.根据权利要求8所述的方法,其特征在于,所述的区块裁剪区间ΔHi范围为:[Hi-ΔH,Hi],其中,Hi为当前区块高度,ΔH为区块裁剪高度。10.一种状态数据管理方法,其特征在于,适用于区块链节点,包括:根据区块高度Hi-ΔHB之前的索引节点的键值,采用权利要求6所述的一种状态数据查询方法查询区块高度Hi-ΔHB之前的索引节点;当所述键值对应若干个索引节点时,保留区块高度最高的索引节点,删除其余索引节点,及其对应的叶子节点;其中,Hi为当前区块高度,ΔHB为区块回滚区间。11.根据权利要求10所述的方法,其特征在于,包括:所述索引节点还包括...

【专利技术属性】
技术研发人员:柳宇航王志文吴思进
申请(专利权)人:杭州复杂美科技有限公司
类型:发明
国别省市:浙江,33

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

1