[发明专利]数据库升级方法、状态数据查询方法、设备和存储介质有效
申请号: | 202010631490.0 | 申请日: | 2020-07-03 |
公开(公告)号: | CN111796845B | 公开(公告)日: | 2022-05-24 |
发明(设计)人: | 柳宇航;王志文;吴思进 | 申请(专利权)人: | 杭州复杂美科技有限公司 |
主分类号: | G06F8/65 | 分类号: | G06F8/65;G06F8/71;G06F16/22 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 310000 浙江省杭州市西湖*** | 国省代码: | 浙江;33 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 数据库 升级 方法 状态 数据 查询 设备 存储 介质 | ||
本发明提供一种数据库升级方法、状态数据查询方法、设备和存储介质,该方法包括:获取数据库更新信息;保留数据库所有版本的执行程序,并生成数据库更新后版本的执行程序;依次对数据库中各待更新区块执行:在数据库待更新区块的第一区块高度小于更新高度时,查询前一个区块的第一新状态哈希;生成第二旧状态哈希、第二新状态哈希、第一状态数据;在第一区块高度等于更新高度时,查询前一个区块的第一新状态哈希;生成第二新状态哈希、第一状态数据、第二旧状态哈希与第二新状态哈希的对应关系;在第一区块高度大于更新高度时,生成第二新状态哈希和第一状态数据的方法更新状态数据库。本申请保障状态数据一致。
技术领域
本申请涉及区块链技术领域,具体涉及一种数据库升级方法、状态数据查询方法、设备和存储介质。
背景技术
当前区块链系统中绝大多数区块链是账户模型,所用到的状态数据存储使用的数据结构一般包括默克尔树(Merkle Tree)、默克尔平衡二叉树(MAVL)、Merkle PatriciaTries(MPT)树等。状态数据库对区块链的状态数据(如账户余额等)进行存储,随着区块链的运行状态数据将会越来越多,状态数据库由于性能不足等原因需要进行升级;
改善状态数据结构可以缓解状态数据库性能不足的缺陷,改善状态数据结构后,将生成新的执行程序;假设区块链中其它节点都已使用新的执行程序生成状态数据,节点A使用旧的执行程序生成状态数据,将产生节点A与其它节点所生成的状态数据后不一致的问题。
发明内容
鉴于现有技术中的上述缺陷或不足,期望提供一种更新状态数据库的数据库升级方法、状态数据查询方法、设备和存储介质。
第一方面,本发明提供一种适用于区块链节点的数据库升级方法,上述方法包括:
获取数据库更新信息;其中,数据库更新信息包括数据库的更新高度;
保留数据库所有版本的执行程序,并生成数据库更新后版本的第一执行程序;
依次对数据库中各待更新区块执行以下步骤:
判断数据库待更新区块的第一区块高度是否小于更新高度:
是,则根据待更新区块的前一个区块的第一旧状态哈希查询前一个区块的第一新状态哈希;以及,
根据待更新区块的第一区块数据、第一旧状态哈希、待更新区块的原始版本的第二执行程序生成第二旧状态哈希,根据第一区块数据、第一新状态哈希、第一执行程序生成第二新状态哈希和第一状态数据;以及,
生成第二旧状态哈希与第二新状态哈希的对应关系;
否,则判断第一区块高度是否等于更新高度:
是,则根据待更新区块的前一个区块的第一旧状态哈希查询前一个区块的第一新状态哈希;以及,
根据待更新区块的第一区块数据、第一新状态哈希、第一执行程序生成第二新状态哈希和第一状态数据;以及,
否,则根据待更新区块的第一区块数据、待更新区块的前一个区块的状态哈希、第一执行程序生成第二新状态哈希和第一状态数据。
第二方面,本发明提供一种适用于区块链节点的状态数据查询方法,上述方法包括:
接收状态数据查询请求信息,根据状态数据查询请求信息查找到根据第一方面的数据库升级方法升级数据库后所存储的第一状态数据并返回。
第三方面,本发明还提供一种设备,包括一个或多个处理器和存储器,其中存储器包含可由该一个或多个处理器执行的指令以使得该一个或多个处理器执行根据本发明各实施例提供的数据库升级方法、状态数据查询方法。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于杭州复杂美科技有限公司,未经杭州复杂美科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010631490.0/2.html,转载请声明来源钻瓜专利网。
- 上一篇:私钥生成方法、设备和存储介质
- 下一篇:数据裁剪方法、设备和存储介质