数据存储方法及系统、设备和存储介质技术方案

技术编号:20389767 阅读:42 留言:0更新日期:2019-02-20 02:48
本发明专利技术提供一种数据存储方法及系统、设备和存储介质,该方法包括:在区块链网络的各节点本地存储对应于每个区块的默克尔树的全局索引表,以及每个区块的默克尔树。其中,版本的版本号为区块高度,全局索引表用于根据区块高度进行数据查询。本发明专利技术通过为默克尔树配置相对应的、以区块高度为版本号的全局索引表,为系统提供了可以直接通过区块高度查询全局索引表、通过一次读操作即可完成查询的数据查询途径,从而大幅提升了系统的数据读取性能;并进一步优化了系统在发生交易拥堵或节点崩溃时的健壮性。

【技术实现步骤摘要】
数据存储方法及系统、设备和存储介质
本申请涉及区块链
,具体涉及一种数据存储方法及系统、设备和存储介质。
技术介绍
当前区块链系统的数据读写的解决方案中,通常会采用默克尔树(MerkleTree)的结构,例如比特币的系统中通过默克尔树进行spv验证、以太坊的系统中通过默克尔前缀树(MerklePatriciaTree,简称MPT)进行数据的读写,等等。当前利用默克尔树的结构进行数据存储的方案的缺陷在于:所存储的数据限制了系统的读取性能,查询一笔交易的数据需要通过多次读操作来完成。例如,对于一颗20层的默克尔树,查询一个叶子节点的数据需要进行20次读操作来完成,导致数据查询的效率仅为普通数据库的查询效率的1/20,对于每秒能完成10万次读操作的系统,每秒仅能读取5000笔交易的数据。更进一步地,现有方案需要在节点本地数据库中写完默克尔树的数据后才能进行区块的共识,导致在交易数量剧增时容易发生交易拥堵。此外,现有方案在节点本地数据库中写默克尔树的数据时若发生崩溃,会导致无法生成区块。
技术实现思路
鉴于现有技术中的上述缺陷或不足,期望提供一种通过优化所存储的数据结构提升系统读取性能的数本文档来自技高网...

【技术保护点】
1.一种数据存储方法,其特征在于,包括:在区块链网络的各节点本地存储对应于每个区块的默克尔树的全局索引表,以及所述每个区块的默克尔树;其中,所述全局索引表以区块高度为版本号,用于根据所述区块高度进行数据查询。

【技术特征摘要】
1.一种数据存储方法,其特征在于,包括:在区块链网络的各节点本地存储对应于每个区块的默克尔树的全局索引表,以及所述每个区块的默克尔树;其中,所述全局索引表以区块高度为版本号,用于根据所述区块高度进行数据查询。2.根据权利要求1所述的方法,其特征在于,所述在区块链网络的各节点本地存储对应于每个区块的默克尔树的全局索引表,以及所述每个区块的默克尔树包括:构建最新版本的默克尔树;根据所述最新版本的默克尔树在节点本地的第一数据库中生成或更新全局索引表,并生成所述全局索引表的存储完成信息,以供所述节点中的共识单元将所述最新版本的默克尔树的根节点哈希打包至区块中进行共识;根据所述最新版本的默克尔树在节点本地的第二数据库中生成或更新每个区块的默克尔树。3.根据权利要求2所述的方法,其特征在于,所述根据所述最新版本的默克尔树在节点本地的第一数据库中生成或更新全局索引表,并生成所述全局索引表的存储完成信息,以供所述节点的共识单元将所述最新版本的默克尔树的根节点哈希打包至区块中进行共识之后还包括:在所述节点崩溃后,根据所述全局索引表在所述第二数据库中恢复所述每个区块的默克尔树。4.根据权利要求2所述的方法,其特征在于,所述构建最新版本的默克尔树包括:通过所述全局索引表查询交易所需的业务数据;根据所述业务数据和所述交易构建最新版本的默克尔树。5.根据权利要求1-4任一项所述的方法,其特征在于,所述全局索引表在每个版本中只记录当前版本的默克尔树中新增或修改的叶子节点。6.根据权利要求1-4任一项所述的方法,其特征在于,所述默克尔树为默克尔状态树,存储在键值(key-value)数据库中。7.一种数据存储系统,配置在区块链网络的节点中,其特征在于,包括:第一存储单元,配置用于在节点本地存储对应于每个区块的...

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

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

1