区块链状态数据恢复方法及装置、电子设备制造方法及图纸

技术编号:22594451 阅读:20 留言:0更新日期:2019-11-20 10:58
一种区块链状态数据恢复方法,区块链中的账户状态数据被组织成Merkle状态树在数据库中存储;Merkle状态树包括由各区块链账户的最新账户状态组织成的当前Merkle状态树;以及,由各区块链账户的历史账户状态组织成的历史Merkle状态树;包括:确定待恢复的目标区块;其中,所述目标区块为所述区块链的最新区块之前的任一历史区块;迭代执行状态恢复逻辑,直到将最新区块的当前Merkle状态树上与各区块链账户对应的最新账户状态,恢复为所述目标区块的历史Merkle状态树上与各区块链账户对应的历史账户状态。

Blockchain state data recovery method and device, electronic equipment

A blockchain state data recovery method, in which the account state data in the blockchain is organized into a Merkle state tree for storage in the database; the Merkle state tree includes a current Merkle state tree organized by the latest account state of each blockchain account; and a historical Merkle state tree organized by the historical account state of each blockchain account; including: determining the target area to be recovered Block; wherein, the target block is any historical block before the latest block of the blockchain; iterative execution of state recovery logic until the latest account state corresponding to each blockchain account on the current Merkle state tree of the latest block is restored to the historical account state corresponding to each blockchain account on the historical Merkle state tree of the target block.

【技术实现步骤摘要】
区块链状态数据恢复方法及装置、电子设备
本说明书一个或多个实施例涉及区块链
,尤其涉及一种区块链状态数据恢复方法及装置、电子设备。
技术介绍
区块链技术,也被称之为分布式账本技术,是一种由若干台计算设备共同参与“记账”,共同维护一份完整的分布式数据库的新兴技术。由于区块链技术具有去中心化、公开透明、每台计算设备可以参与数据库记录、并且各计算设备之间可以快速的进行数据同步的特性,使得区块链技术已在众多的领域中广泛的进行应用。
技术实现思路
本说明书提出一种区块链状态数据恢复方法,所述区块链中的账户状态数据被组织成Merkle状态树在数据库中存储;所述Merkle状态树包括由各区块链账户的最新账户状态组织成的当前Merkle状态树;以及,由各区块链账户的历史账户状态组织成的历史Merkle状态树;所述方法包括:确定待恢复的目标区块;其中,所述目标区块为所述区块链的最新区块之前的任一历史区块;迭代执行状态恢复逻辑,直到将最新区块的当前Merkle状态树上与各区块链账户对应的最新账户状态,恢复为所述目标区块的历史Merkle状态树上与各区块链账户对应的历史账户状态;所述状态恢复逻辑包括:确定与所述最新区块中的交易相关的目标账户,并查询所述目标账户在所述最新区块的上一区块的历史Merkle状态树上对应的历史账户状态;将所述最新区块的当前Merkle状态树中与所述目标账户对应的最新账户状态,修改为所述上一区块的历史Merkle状态树中与所述目标账户对应的历史账户状态,并在修改完成后将所述上一区块重新确定为所述最新区块。可选的,所述确定与所述最新区块中的交易相关的目标账户,包括:重新执行所述最新区块中的交易,以确定所述最新区块中的交易相关的目标账户;或者,查询与所述最新区块对应的读写集,以确定所述最新区块中的交易相关的目标账户。所述查询所述目标账户在所述最新区块的上一区块的历史Merkle状态树上对应的历史账户状态,包括:在所述最新区块的上一区块的历史Merkle状态树上查询与所述目标账户对应的历史账户状态;或者,在与所述最新区块的上一区块对应的读写集中,查询所述目标账户在所述最新区块的上一区块的历史Merkle状态树上对应的历史账户状态。可选的,所述迭代执行状态恢复逻辑之前,还包括:确定从所述区块链的创世块至所述目标区块所包含的交易的总数量,是否大于从所述目标区块至所述最新区块所包含的交易的总数量;如果是,进一步迭代执行所述状态恢复逻辑。可选的,还包括:在所述区块链中的任一区块中的交易执行完毕后,基于与所述区块中的交易相关的目标账户的最新账户状态,生成与所述区块的当前Merkle状态树对应的更新数据节点和与所述区块的历史Merkle状态树对应的历史数据节点;基于生成的所述更新数据节点对所述区块的上一区块的当前Merkle状态树上与所述目标账户对应的数据节点进行修改更新,以得到所述区块的当前Merkle状态树;以及,基于生成的所述历史数据节点和复用的所述区块的上一区块的历史Merkle状态树上与所述目标账户对应的数据节点以外的其它数据节点,为所述区块创建历史Merkle状态树。可选的,所述当前Merkle状态树上的数据节点被组织成B+树的数据结构在数据库中存储;所述历史Merkle状态树上的数据节点被组织成LSM树的数据结构在数据库中存储。可选的,所述数据库为Key-Value数据库;所述Merkle状态树上的数据节点以Key-Value键值对的形式存储在所述数据库中;其中,所述当前Merkle状态树上的数据节点的key为所述数据节点的节点ID;所述历史Merkle状态树上的数据节点的key为所述数据节点包含的数据内容的hash值。可选的,所述数据库为LevelDB数据库;或者基于LevelDB架构的数据库。可选的,所述数据库为基于LevelDB架构的Rocksdb数据库。可选的,所述Merkle树为融合了Trie字典树的树形结构的Merkle树变种。可选的,所述Merkle状态树为MerklePatriciaTree状态树。本说明书还提出一种区块链状态数据恢复装置,所述区块链中的账户状态数据被组织成Merkle状态树在数据库中存储;所述Merkle状态树包括由各区块链账户的最新账户状态组织成的当前Merkle状态树;以及,由各区块链账户的历史账户状态组织成的历史Merkle状态树;所述装置包括:确定模块,确定待恢复的目标区块;其中,所述目标区块为所述区块链的最新区块之前的任一历史区块;恢复模块,迭代执行状态恢复逻辑,直到将最新区块的当前Merkle状态树上与各区块链账户对应的最新账户状态,恢复为所述目标区块的历史Merkle状态树上与各区块链账户对应的历史账户状态;所述状态恢复逻辑包括:确定与所述最新区块中的交易相关的目标账户,并查询所述目标账户在所述最新区块的上一区块的历史Merkle状态树上对应的历史账户状态;将所述最新区块的当前Merkle状态树中与所述目标账户对应的最新账户状态,修改为所述上一区块的历史Merkle状态树中与所述目标账户对应的历史账户状态,并在修改完成后将所述上一区块重新确定为所述最新区块。可选的,所述确定模块:重新执行所述最新区块中的交易,以确定所述最新区块中的交易相关的目标账户;或者,查询与所述最新区块对应的读写集,以确定所述最新区块中的交易相关的目标账户。所述恢复模块:在所述最新区块的上一区块的历史Merkle状态树上查询与所述目标账户对应的历史账户状态;或者,在与所述最新区块的上一区块对应的读写集中,查询所述目标账户在所述最新区块的上一区块的历史Merkle状态树上对应的历史账户状态。可选的,所述恢复模块进一步:在迭代执行状态恢复逻辑之前,确定从所述区块链的创世块至所述目标区块所包含的交易的总数量,是否大于从所述目标区块至所述最新区块所包含的交易的总数量;如果是,进一步迭代执行所述状态恢复逻辑。可选的,还包括:生成模块,在所述区块链中的任一区块中的交易执行完毕后,基于与所述区块中的交易相关的目标账户的最新账户状态,生成与所述区块的当前Merkle状态树对应的更新数据节点和与所述区块的历史Merkle状态树对应的历史数据节点;修改模块,基于生成的所述更新数据节点对所述区块的上一区块的当前Merkle状态树上与所述目标账户对应的数据节点进行修改更新,以得到所述区块的当前Merkle状态树;创建模块,基于生成的所述历史数据节点和复用的所述区块的上一区块的历史Merkle状态树上与所述目标账户对应的数据节点以外的其它数据节点,为所述区块创建历史Merkle状态树。可选的,所述当前Merkle状态树上的数据节点被组织成B+树的数据结构在数据库中存储;所述历史Merkle状态树上的数据节点被组织成LSM树的数本文档来自技高网...

【技术保护点】
1.一种区块链状态数据恢复方法,所述区块链中的账户状态数据被组织成Merkle状态树在数据库中存储;所述Merkle状态树包括由各区块链账户的最新账户状态组织成的当前Merkle状态树;以及,由各区块链账户的历史账户状态组织成的历史Merkle状态树;所述方法包括:/n确定待恢复的目标区块;其中,所述目标区块为所述区块链的最新区块之前的任一历史区块;/n迭代执行状态恢复逻辑,直到将最新区块的当前Merkle状态树上与各区块链账户对应的最新账户状态,恢复为所述目标区块的历史Merkle状态树上与各区块链账户对应的历史账户状态;/n所述状态恢复逻辑包括:/n确定与所述最新区块中的交易相关的目标账户,并查询所述目标账户在所述最新区块的上一区块的历史Merkle状态树上对应的历史账户状态;/n将所述最新区块的当前Merkle状态树中与所述目标账户对应的最新账户状态,修改为所述上一区块的历史Merkle状态树中与所述目标账户对应的历史账户状态,并在修改完成后将所述上一区块重新确定为所述最新区块。/n

【技术特征摘要】
1.一种区块链状态数据恢复方法,所述区块链中的账户状态数据被组织成Merkle状态树在数据库中存储;所述Merkle状态树包括由各区块链账户的最新账户状态组织成的当前Merkle状态树;以及,由各区块链账户的历史账户状态组织成的历史Merkle状态树;所述方法包括:
确定待恢复的目标区块;其中,所述目标区块为所述区块链的最新区块之前的任一历史区块;
迭代执行状态恢复逻辑,直到将最新区块的当前Merkle状态树上与各区块链账户对应的最新账户状态,恢复为所述目标区块的历史Merkle状态树上与各区块链账户对应的历史账户状态;
所述状态恢复逻辑包括:
确定与所述最新区块中的交易相关的目标账户,并查询所述目标账户在所述最新区块的上一区块的历史Merkle状态树上对应的历史账户状态;
将所述最新区块的当前Merkle状态树中与所述目标账户对应的最新账户状态,修改为所述上一区块的历史Merkle状态树中与所述目标账户对应的历史账户状态,并在修改完成后将所述上一区块重新确定为所述最新区块。


2.根据权利要求1所述的方法,所述确定与所述最新区块中的交易相关的目标账户,包括:
重新执行所述最新区块中的交易,以确定所述最新区块中的交易相关的目标账户;或者,查询与所述最新区块对应的读写集,以确定所述最新区块中的交易相关的目标账户;
所述查询所述目标账户在所述最新区块的上一区块的历史Merkle状态树上对应的历史账户状态,包括:
在所述最新区块的上一区块的历史Merkle状态树上查询与所述目标账户对应的历史账户状态;或者,在与所述最新区块的上一区块对应的读写集中,查询所述目标账户在所述最新区块的上一区块的历史Merkle状态树上对应的历史账户状态。


3.根据权利要求2所述的方法,所述迭代执行状态恢复逻辑之前,还包括:
确定从所述区块链的创世块至所述目标区块所包含的交易的总数量,是否大于从所述目标区块至所述最新区块所包含的交易的总数量;如果是,进一步迭代执行所述状态恢复逻辑。


4.根据权利要求1所述的方法,还包括:
在所述区块链中的任一区块中的交易执行完毕后,基于与所述区块中的交易相关的目标账户的最新账户状态,生成与所述区块的当前Merkle状态树对应的更新数据节点和与所述区块的历史Merkle状态树对应的历史数据节点;
基于生成的所述更新数据节点对所述区块的上一区块的当前Merkle状态树上与所述目标账户对应的数据节点进行修改更新,以得到所述区块的当前Merkle状态树;以及,
基于生成的所述历史数据节点和复用的所述区块的上一区块的历史Merkle状态树上与所述目标账户对应的数据节点以外的其它数据节点,为所述区块创建历史Merkle状态树。


5.根据权利要求4所述的方法,所述当前Merkle状态树上的数据节点被组织成B+树的数据结构在数据库中存储;所述历史Merkle状态树上的数据节点被组织成LSM树的数据结构在数据库中存储。


6.根据权利要求1所述的方法,所述数据库为Key-Value数据库;
所述Merkle状态树上的数据节点以Key-Value键值对的形式存储在所述数据库中;其中,所述当前Merkle状态树上的数据节点的key为所述数据节点的节点ID;所述历史Merkle状态树上的数据节点的key为所述数据节点包含的数据内容的hash值。


7.根据权利要求1所述的方法,所述数据库为LevelDB数据库;或者基于LevelDB架构的数据库。


8.根据权利要求7所述的方法,所述数据库为基于LevelDB架构的Rocksdb数据库。


9.根据权利要求1所述的方法,所述Merkle树为融合了Trie字典树的树形结构的Merkle树变种。


10.根据权利要求9所述的方法,所述Merkle状态树为MerklePatriciaTree状态树。


11.一种区块链状态数据恢复装置,所述区块链中的账户状态数据被组织成Merkle状态树在数据库中存储;所述Merkle状态树包括由各区块链账户的最新...

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

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

1