[发明专利]一种状态树数据存储方法、同步方法及设备和存储介质有效
申请号: | 201910712211.0 | 申请日: | 2019-08-02 |
公开(公告)号: | CN110442579B | 公开(公告)日: | 2022-06-28 |
发明(设计)人: | 柳宇航;王志文;吴思进 | 申请(专利权)人: | 杭州复杂美科技有限公司 |
主分类号: | G06F16/22 | 分类号: | G06F16/22;G06F16/23;G06F16/27 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 310000 浙江省杭州市西湖*** | 国省代码: | 浙江;33 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 状态 数据 存储 方法 同步 设备 介质 | ||
本发明提供一种状态树数据存储方法、同步方法及设备和存储介质,包括:在内存中缓存并实时更新状态树数据;在若干预指定的第一区块高度将内存中的第一区块高度的状态树数据存储到本地数据库,并更新本地数据库中最新状态树数据的索引和区块高度。本发明通过将状态树数据存储在内存中,并在达到若干设定的特定区块高度时,将各特定区块高度的状态树数据存储在本地数据库中,无需从状态树数据库中查找状态树数据,大大提高了同步速度,并且避免了在查找过程中消耗过多的IO资源。
技术领域
本申请涉及信息存储技术领域,具体涉及区块链的一种状态树数据存储方法、同步方法及设备和存储介质。
背景技术
当前区块链系统中,通常会利用默克尔树,默克尔平衡二叉树等对区块链的状态树数据(如账户余额等)进行存储,而在区块同步时,通常是由请求节点将对端节点的各区块中的交易执行后生成状态数据,这种方案同步数据比较缓慢。《CN109542979》、《CN108243253》以及以太坊快速同步可以实现从某一高度获取状态树数据,虽然对同步速度有了一定的改善,但是这些会给被请求节点带来较大的压力,如从对端节点获取默克尔树节点的时候,也会从数据库中查找,需要消耗较多的IO资源,而且也不能快速的查找某一区块高度的状态树数据。
发明内容
鉴于现有技术中的上述缺陷或不足,期望提供一种高效、快速的一种状态树数据存储方法、同步方法及设备和存储介质。
第一方面,本发明提供一种状态树数据存储方法,包括:
在内存中缓存并实时更新状态树数据;
在若干预指定的第一区块高度将内存中的第一区块高度的状态树数据存储到本地数据库,并更新本地数据库中最新状态树数据的索引和区块高度;
其中,索引和区块高度用于查找当前节点的本地数据库中的区块高度的状态树数据,以供第二节点获取当前节点的本地数据库中的最新状态树数据,并在若干区块链节点中选取目标节点以进行状态树数据的同步。
进一步,选取目标节点后还包括:
判断目标节点的同步高度的第一状态哈希与区块链上同步高度的区块的第二状态哈希是否一致以确定目标节点是否为可信任节点。
进一步,第一同步高度不大于当前高度和回滚高度的差值。
进一步,上述方法还包括:
判断当前节点的本地数据库中的最高区块高度的前面若干区块高度的区块状态树数据是否正在被其他区块链节点同步:
否,则删除一个区块高度的区块状态树数据。
进一步,上述在内存中缓存并实时更新状态树数据包括:
将执行第一区块所需存储的各节点分别存入相应的第一区块高度的第一缓存队列、所需删除的各节点分别存入第一区块高度的第二缓存队列;
从当前内存所缓存的状态树数据中删除第二缓存队列的各节点;
在当前内存所缓存的状态树数据中增加第一缓存队列的各节点。
第二方面,本发明提供一种状态树数据同步方法,所同步的状态树数据由被请求节点根据上述的存储方法存储,上述方法包括:
向若干节点分别发送同步请求信息以分别获取各被请求节点在本地数据库中存储的最高区块高度;
根据各最高区块高度生成各第一同步高度,并在各第一同步高度中选择最高区块高度确定为同步高度,根据同步高度确定目标节点;其中,第一同步高度由由最高区块高度和回滚高度生成;
向目标节点同步状态树数据,并将状态树数据存储到本节点的内存中。
进一步,上述根据第一同步高度确定目标节点后还包括:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于杭州复杂美科技有限公司,未经杭州复杂美科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910712211.0/2.html,转载请声明来源钻瓜专利网。
- 数据显示系统、数据中继设备、数据中继方法、数据系统、接收设备和数据读取方法
- 数据记录方法、数据记录装置、数据记录媒体、数据重播方法和数据重播装置
- 数据发送方法、数据发送系统、数据发送装置以及数据结构
- 数据显示系统、数据中继设备、数据中继方法及数据系统
- 数据嵌入装置、数据嵌入方法、数据提取装置及数据提取方法
- 数据管理装置、数据编辑装置、数据阅览装置、数据管理方法、数据编辑方法以及数据阅览方法
- 数据发送和数据接收设备、数据发送和数据接收方法
- 数据发送装置、数据接收装置、数据收发系统、数据发送方法、数据接收方法和数据收发方法
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置