一种区块链数据恢复方法、装置、设备及介质制造方法及图纸

技术编号:25598452 阅读:27 留言:0更新日期:2020-09-11 23:56
本发明专利技术公开了一种区块链数据恢复方法、装置、设备及介质,该方法包括获取待回滚高度,基于待回滚高度获取对应的所有待回滚根节点哈希值,基于待回滚根节点哈希值,从数据库中获取每一待回滚根节点哈希值对应的待回滚根节点数据,并生成待回滚MPT树,将待回滚MPT树更新到内存中,将内存中的账本MPT树替换为待回滚MPT树,并基于待回滚MPT树,将区块链的账本状态回滚到对应的待回滚高度,删除原始待恢复区块链中待回滚高度之后的区块数据,并基于待回滚高度从同步的区块链节点中获取正常区块数据,恢复原始待恢复区块链中待回滚高度之后的区块数据,并基于正常区块数据获取正确根节点数据,对待回滚MPT树进行恢复,以提高区块链中的数据恢复的速度,降低数据恢复成本。

【技术实现步骤摘要】
一种区块链数据恢复方法、装置、设备及介质
本专利技术涉及区块链数据处理
,具体涉及一种区块链数据恢复方法、装置、设备及介质。
技术介绍
区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(Blockchain),是比特币的一个重要概念,其本质是一个去中心化的数据库,底层是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次比特币网络交易的信息,用于验证交易的有效性(防伪)和生成下一个区块。根据区块链的特性,存储在区块链中的数据一旦产生将无法修改,而在实际应用中,不可避免地会出现由于技术原因或人为原因导致存储在区块链中的数据产生错误,由于区块链中的数据一旦产生无法修改的特性,目前对区块链中的数据进行恢复大多是从第一个区块开始,依次完成整个区块链的数据恢复,恢复速度慢,无法做到数据快速恢复,恢复成本高。
技术实现思路
本专利技术所要解决的技术问题是目前对区块链中的数据进行恢复大多是从第一个区块开始,依次完成整个区块链的数据恢复,恢复速度慢,无法做到数据快速恢复,恢复成本高。因此,提供一种区块链数据恢复方法、装置、设备及介质,以提高区块链中的数据恢复的速度,降低数据恢复成本。本专利技术通过下述技术方案实现:一种区块链数据恢复方法,包括:获取待回滚高度,基于所述待回滚高度查询数据库,获取所述待回滚高度对应的所有待回滚根节点哈希值;基于所述待回滚根节点哈希值,从所述数据库中获取每一所述待回滚根节点哈希值对应的待回滚根节点数据;基于每一所述待回滚根节点数据,生成待回滚MPT树,将所述待回滚MPT树更新到内存中,将所述内存中的账本MPT树替换为待回滚MPT树;基于所述待回滚MPT树,将所述区块链的账本状态回滚到对应的待回滚高度;基于所述待回滚高度,删除原始待恢复区块链中所述待回滚高度之后的区块数据,并基于所述待回滚高度从同步的区块链节点中获取正常区块数据,恢复所述原始待恢复区块链中待回滚高度之后的区块数据,获取目标恢复区块链;当获取所述目标恢复区块链后,获取基于所述待回滚MPT树恢复后的恢复MPT树,并将所述恢复MPT树的根节点哈希值与所述同步的区块链节点对应的根节点哈希值进行比较,若所述恢复MPT树的根节点哈希值与所述同步的区块链节点对应的根节点哈希值一致,则所述区块链数据恢复完成。进一步地,所述基于每一所述待回滚根节点数据,生成待回滚MPT树,包括:基于每一所述待回滚根节点数据,递归查找所述数据库,获取所述根节点数据对应的所有子节点数据;所述根节点数据和所述子节点数据根据各自的节点属性生成待回滚MPT树。进一步地,所述区块链数据恢复方法还包括:获取创世块,所述创世块中存储有不同数据类型的账本数据,每一所述账本数据中包括账本数据键值对;对每一所述账本数据的值进行哈希计算,获取所述账本数据对应的哈希值;将所述账本数据的哈希值和所述账本数据的键输入到MPT树模型中,生成各数据类型对应的账本MPT树;将所述账本MPT树的根节点哈希值存储在区块头中,所述账本数据键值对存储在区块体中,生成正常区块。进一步地,所述区块链数据恢复方法还包括:将同步的区块链的账本状态进行比较,若所述同步的区块链中一区块的账本状态与其他同步的区块的账本状态不相同,则将账本状态异常的所述区块作为异常区块,获取所述异常区块的高度作为异常高度;将所述异常高度的上一个区块高度作为待回滚高度。进一步地,所述区块链数据恢复方法还包括:获取待接收数据,所述待接收数据包括待接收键值对,所述待接收数据携带有数据类型;基于所述数据类型,获取内存中存储的所述数据类型对应的账本MPT树;对所述待接收数据中的值进行哈希计算,获取待接收数据的哈希值;将所述待接收数据的键和所述待接收数据的哈希值,输入到所述账本MPT树中,形成新MPT树;计算所述新MPT树的根节点哈希值,获取新根节点哈希值,将所述新根节点哈希值记录在一区块的区块头中,所述待接收键值对记录在对应的区块体中,生成新的区块;将所述新的区块加入到所述目标恢复区块链中对应的位置,形成新区块链。进一步地,在所述对所述待接收数据中的值进行哈希计算之后,所述区块链数据恢复方法还包括:将所述待接收数据中的键和对应的哈希值作为数据存储键,待接收数据的值作为数据存储值,以键值对的形式存储在数据库中。一种区块链数据恢复装置,包括:待回滚高度处理模块,用于获取待回滚高度,基于所述待回滚高度查询数据库,获取所述待回滚高度对应的所有待回滚根节点哈希值;待回滚根节点数据获取模块,用于基于所述待回滚根节点哈希值,从所述数据库中获取每一所述待回滚根节点哈希值对应的待回滚根节点数据;待回滚MPT树处理模块,用于基于每一所述待回滚根节点数据,生成待回滚MPT树,将所述待回滚MPT树更新到内存中,将所述内存中的账本MPT树替换为待回滚MPT树;账本状态回滚处理模块,用于基于所述待回滚MPT树,将所述区块链的账本状态回滚到对应的待回滚高度;区块数据恢复模块,用于基于所述待回滚高度,删除原始待恢复区块链中所述待回滚高度之后的区块数据,并基于所述待回滚高度从同步的区块链节点中获取正常区块数据,恢复所述原始待恢复区块链中待回滚高度之后的区块数据,获取目标恢复区块链;区块链数据恢复模块,用于当获取所述目标恢复区块链后,获取基于所述待回滚MPT树恢复后的恢复MPT树,并将所述恢复MPT树的根节点哈希值与所述同步的区块链节点对应的根节点哈希值进行比较,若所述恢复MPT树的根节点哈希值与所述同步的区块链节点对应的根节点哈希值一致,则所述区块链数据恢复完成。进一步地,所述待回滚MPT树处理模块包括:子节点数据获取单元,用于基于每一所述待回滚根节点数据,递归查找所述数据库,获取所述根节点数据对应的所有子节点数据;待回滚MPT树生成单元,用于所述根节点数据和所述子节点数据根据各自的节点属性生成待回滚MPT树。一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上述区块链数据恢复方法。一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如上述区块链数据恢复方法。本专利技术提供的区块链数据恢复方法、装置、设备及介质,通过获取待回滚高度,基于待回滚高度查询数据库,获取待回滚高度对应的所有待回滚根节点哈希值,基于待回滚根节点哈希值,从数据库中获取每一待回滚根节点哈希值对应的待回滚根节点数据,基于每一待回滚根节点数据,生成待回滚MPT树,将待回滚MPT树更新到内存中,将内存中的账本MPT树替换为待回滚MPT树,基于待回滚MPT树,将区块链的账本状态回滚到对应的待回滚高度,基于待回滚高度,删除原始待恢复区块链中待回滚高度之后的区块数本文档来自技高网...

【技术保护点】
1.一种区块链数据恢复方法,其特征在于,包括:/n获取待回滚高度,基于所述待回滚高度查询数据库,获取所述待回滚高度对应的所有待回滚根节点哈希值;/n基于所述待回滚根节点哈希值,从所述数据库中获取每一所述待回滚根节点哈希值对应的待回滚根节点数据;/n基于每一所述待回滚根节点数据,生成待回滚MPT树,将所述待回滚MPT树更新到内存中,将所述内存中的账本MPT树替换为待回滚MPT树;/n基于所述待回滚MPT树,将所述区块链的账本状态回滚到对应的待回滚高度;/n基于所述待回滚高度,删除原始待恢复区块链中所述待回滚高度之后的区块数据,并基于所述待回滚高度从同步的区块链节点中获取正常区块数据,恢复所述原始待恢复区块链中待回滚高度之后的区块数据,获取目标恢复区块链;/n当获取所述目标恢复区块链后,获取基于所述待回滚MPT树恢复后的恢复MPT树,并将所述恢复MPT树的根节点哈希值与所述同步的区块链节点对应的根节点哈希值进行比较,若所述恢复MPT树的根节点哈希值与所述同步的区块链节点对应的根节点哈希值一致,则所述区块链数据恢复完成。/n

【技术特征摘要】
1.一种区块链数据恢复方法,其特征在于,包括:
获取待回滚高度,基于所述待回滚高度查询数据库,获取所述待回滚高度对应的所有待回滚根节点哈希值;
基于所述待回滚根节点哈希值,从所述数据库中获取每一所述待回滚根节点哈希值对应的待回滚根节点数据;
基于每一所述待回滚根节点数据,生成待回滚MPT树,将所述待回滚MPT树更新到内存中,将所述内存中的账本MPT树替换为待回滚MPT树;
基于所述待回滚MPT树,将所述区块链的账本状态回滚到对应的待回滚高度;
基于所述待回滚高度,删除原始待恢复区块链中所述待回滚高度之后的区块数据,并基于所述待回滚高度从同步的区块链节点中获取正常区块数据,恢复所述原始待恢复区块链中待回滚高度之后的区块数据,获取目标恢复区块链;
当获取所述目标恢复区块链后,获取基于所述待回滚MPT树恢复后的恢复MPT树,并将所述恢复MPT树的根节点哈希值与所述同步的区块链节点对应的根节点哈希值进行比较,若所述恢复MPT树的根节点哈希值与所述同步的区块链节点对应的根节点哈希值一致,则所述区块链数据恢复完成。


2.根据权利要求1所述的一种区块链数据恢复方法,其特征在于,所述基于每一所述待回滚根节点数据,生成待回滚MPT树,包括:
基于每一所述待回滚根节点数据,递归查找所述数据库,获取所述根节点数据对应的所有子节点数据;
所述根节点数据和所述子节点数据根据各自的节点属性生成待回滚MPT树。


3.根据权利要求1所述的一种区块链数据恢复方法,其特征在于,所述区块链数据恢复方法还包括:
获取创世块,所述创世块中存储有不同数据类型的账本数据,每一所述账本数据中包括账本数据键值对;
对每一所述账本数据的值进行哈希计算,获取所述账本数据对应的哈希值;
将所述账本数据的哈希值和所述账本数据的键输入到MPT树模型中,生成各数据类型对应的账本MPT树;
将所述账本MPT树的根节点哈希值存储在区块头中,所述账本数据键值对存储在区块体中,生成正常区块。


4.根据权利要求1所述的一种区块链数据恢复方法,其特征在于,所述区块链数据恢复方法还包括:
将同步的区块链的账本状态进行比较,若所述同步的区块链中一区块的账本状态与其他同步的区块的账本状态不相同,则将账本状态异常的所述区块作为异常区块,获取所述异常区块的高度作为异常高度;
将所述异常高度的上一个区块高度作为待回滚高度。


5.根据权利要求3所述的一种区块链数据恢复方法,其特征在于,所述区块链数据恢复方法还包括:
获取待接收数据,所述待接收数据包括待接收键值对,所述待接收数据携带有数据类型;
基于所述数据类型,获取内存中存储的所述数据类型对应的账本MPT树;
对所述待接收数据中的值进行哈希计算,获取待接收数据的哈希值;

【专利技术属性】
技术研发人员:李成才雷罡高勇邓柯
申请(专利权)人:成都质数斯达克科技有限公司
类型:发明
国别省市:四川;51

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

1