一种面向联盟链的分片内数据组织管理方法技术

技术编号:24613370 阅读:78 留言:0更新日期:2020-06-24 01:04
本发明专利技术提出了一种面向联盟链的分片内数据组织管理方法:在分片内数据组织管理中,将分片内数据分三层管理,聚集层生成分片内所有账户状态数据的摘要,索引层负责对分片内账户状态数据的索引,数据层管理账户状态的历史数据。聚集默克尔B+树支持生成完整性证明,支持数据的多版本溯源,同时可以降低现有技术中存在的读放大情况;每生成一个区块,就对新生成的聚集默克尔B+树生成快照。当对聚集默克尔B+树进行更新时,依据之前生成的快照对外提供服务。

A method of data organization and management in slice based on alliance chain

【技术实现步骤摘要】
一种面向联盟链的分片内数据组织管理方法
本专利技术属于区块链
,涉及到分片内数据的组织管理,具体是一种面向联盟链的分片内数据组织管理方法及分片增加方法。
技术介绍
区块链是一种由互不信任的多方维护的不可篡改的分布式账本,除了具有分布式的特点,同时也支持拜占庭容错。但区块链系统在计算和存储方面的可扩展性较弱,使其不能满足企业级的需求,大大限制了区块链的发展。分片技术被认为是提高区块链可扩展性的解决方法。在基于帐户模型的区块链中,分片技术主要通过将账户数据划分成几个部分,每个部分称为一个分片,每个分片单独执行,从而提高系统吞吐量。分片划分之后,划分到每个分片中的状态数据目前主要通过默克尔树或其变体结合键值对数据库进行管理,比如MPT树结合基于LSM树的键值对数据库。但是,这些结构因为是在键值存储上实现的,会出现明显的读放大情况。在增加分片时,会出现数据的重划分过程,在数据迁移同步的过程中,系统无法对外提供服务,会出现系统服务短暂停机的情况,降低了系统的可用性。作为分片内账户状态数据组织的数据结构,首先要可以作为分片内账户状态的索引结构、生成分片内账户状态的摘要、支持账户状态数据的历史版本溯源,同时还应该满足:保证分片之间的负载均衡、分片划分时快速的数据迁移、数据迁移过程中提供不停机的服务。在现有技术中,账户状态数据组织结构一般被组织为默克尔树或其变体的形式,比如MPT、MBT、默克尔B+树等。但现有的这些技术都不能满足以上这些需求。默克尔桶树(MBT)。MBT由两部分组成:哈希表和默克尔树。哈希表由一系列桶组成,每个桶包含许多账户状态(每个桶内账户是有序的)。桶的哈希值是上层默克尔树的叶子节点,默克尔树的哈希根是所有状态的摘要。由于MBT是一棵大小固定的树,因此它的高度是一定的,并且从根节点到桶的路径上的节点,可以作为账户状态的完整性证明。但是,MBT无法为单独的账户状态提供完整性证明(因为一个桶里面有一批账户状态数据)。默克尔帕特里夏树(MPT)是由帕特里夏树(Patriciatrie)和默克尔树的混合物。该结构除了可以计算摘要外,还可以作为账户状态的索引,并提供完整性证明。此外,MPT通过在每个块上构建全局账户状态的快照来存储账户状态数据的所有版本。但是,MPT不是一棵平衡的树,它的高度可能会随着帐户数量的增长而快速增加,这会导致整体性能下降。同时MPT的结构是在键值存储区上实现的,具有明显的读放大的情况。默克尔B+树,作为一种具有出色的I/O性能的平衡结构,可以处理提供完整性证明的可验证查询。但是,默克尔B+树不支持数据的多版本溯源。因此,上述结构都存在一些缺陷。
技术实现思路
针对上面这些结构的存在的这些缺陷,本专利技术在分片中设计一种用于数据管理的聚集默克尔B+树(AMB-tree),如图12所示,聚集默克尔B+树具有出色的读写性能,并可以生成全局账户状态数据的摘要以及提供查询的完整性证明;每个分片内包含多个互相之间账户地址不连续的子分片,增加分片时,每个分片切分其聚集默克尔B+树,仅需切分其中一个子分片,减少了分片增加时数据的迁移量,同时这种方法保证在进行分片划分时分片之间的负载均衡;聚集默克尔B+树支持快速重建,并且每个分片可以在数据同步(迁移)期间服务不停机。本专利技术对聚集默克尔B+树又做了一些改进(AMB*-tree),本专利技术将AMB-tree的聚集层默克尔树中每个节点设置一个固定大小的缓存区,对数据的更新操作可以先写入缓存区,每个缓存区通过默克尔B+树进行管理。具体细节为:当有对状态数据的更新操作时,将更新操作写入根节点的缓冲区中,当根节点的缓冲区满了之后,将缓冲区的数据切分,切分之后写入子节点的缓冲区中,以此类推,缓冲数据会到达相应的叶子节点,最终将叶子节点内的数据写入索引层中。每个节点的缓冲区通过默克尔B+树进行组织管理,所有的默克尔B+树在主存中维护,当需要查找数据时,首先到缓存区中查找数据;需要对分片进行重新划分时,缓存区中若存在一些对分片中的账户的更新操作,首先需要将这些数据执行写回操作,写回之后执行分片划分操作。通过这种优化手段,大大提高了写的效率,同时根据数据访问的局部性,这种优化手段也提高了读的效率。如图1所示。基于以上,本专利技术提出了一种面向联盟链的分片内数据组织管理方法:在分片内数据组织管理中,将分片内数据分三层管理,聚集层生成分片内所有账户状态数据的摘要,索引层负责对分片内账户状态数据的索引,数据层管理账户状态的历史数据。聚集默克尔B+树支持生成完整性证明,支持数据的多版本溯源,同时可以降低现有技术中存在的读放大情况;每生成一个区块,就对新生成的聚集默克尔B+树生成快照。当对聚集默克尔B+树进行更新时,依据之前生成的快照对外提供服务。具体包括以下步骤:步骤1:利用聚集默克尔B+树组织管理分片内账户地址状态;所述默克尔B+树包括索引层、聚集层、数据层;具体包括以下子步骤:步骤1-1:每个分片负责全部地址空间的一部分地址空间,为了保证分片之间的负载均衡和增加分片时尽可能少的数据迁移,每个分片又分为多个子分片,子分片内部的地址空间是连续的,子分片之间的地址空间是不连续的,每个子分片中的账户状态用默克尔B+树组织管理,该树作为该子分片内账户状态的索引,此部分作为聚集默克尔B+树的索引层;步骤1-2:将分片内所有子分片的默克尔B+树的根节点作为叶子节点,通过默克尔树生成分片内所有账户状态的摘要,此部分作为聚集默克尔B+树的聚集层;步骤1-3:利用可验证只可添加跳表管理单个账户状态的全部历史数据,导致账户状态改变的交易所在区块的区块号作为账户状态的一个版本;为每个账户状态历史版本维护多层链接,链接通过哈希指针指向之前的版本,第0层链接全部版本数据,第0层链表中每隔2n个的版本依次链接成为第n层的链表,此部分作为聚集默克尔B+树的数据层。步骤2:针对所述聚集默克尔B+树,完成带完整性证明的状态查询操作和数据多版本溯源;具体包括以下子步骤:步骤2-1:在所述索引层,将从默克尔B+树顶端出发到满足查找条件的叶子节点的路径上每个节点保存的哈希指针作为所述索引层的完整性证明;所述具体查找办法为从包含查找键的子分片的根节点出发,查找包含查找键的子节点,依次逐层查询,直到叶子节点,查找路径上的所有的节点对应的哈希值即为索引层的完整性证明;步骤2-2:在所述聚集层,将从聚集层根节点出发到指向满足查找条件的子分片的叶子节点的路径上的所有节点的兄弟节点作为所述聚集层的完整性证明;所述查找办法为:从查找键所在的子分片的根节点(该根节点在聚集层作为叶子节点)出发,查找其对应的兄弟节点,之后再查找其父节点的兄弟节点,以此类推,直到根节点,查找到的所有从叶子节点到根节点这条路径上的所有兄弟节点即为聚集层的完整性证明;步骤2-3:在所述数据层,查找指定的账户状态版本时,给定一个账户和区块号,则应返回小于该区块号的最大的状态版本对应的数据;所述查找方法是:针对指定的账户,从当前状态版本出发,查找所有版本号大于等于所本文档来自技高网
...

【技术保护点】
1.一种面向联盟链的分片内数据组织管理方法,其特征在于,该方法具体包括以下步骤:/n步骤1:利用聚集默克尔B+树组织管理分片内账户地址状态,所述聚集默克尔B+树包括聚集层、索引层、数据层;/n步骤2:针对所述聚集默克尔B+树的聚集层、索引层、数据层,完成带完整性证明的状态查询操作和数据多版本溯源;/n步骤3:所述聚集默克尔B+树的更新时,依据更新前生成的快照对外提供服务。/n

【技术特征摘要】
1.一种面向联盟链的分片内数据组织管理方法,其特征在于,该方法具体包括以下步骤:
步骤1:利用聚集默克尔B+树组织管理分片内账户地址状态,所述聚集默克尔B+树包括聚集层、索引层、数据层;
步骤2:针对所述聚集默克尔B+树的聚集层、索引层、数据层,完成带完整性证明的状态查询操作和数据多版本溯源;
步骤3:所述聚集默克尔B+树的更新时,依据更新前生成的快照对外提供服务。


2.根据权利要求1所述的面向联盟链的分片内数据组织管理方法,其特征在于,所述步骤1具体包括:
步骤1-1:每个分片负责全部地址空间的一部分地址空间,为了保证分片之间的负载均衡和增加分片时尽可能少的数据迁移,每个分片又分为多个子分片,子分片内部的地址空间是连续的,子分片之间的地址空间是不连续的,每个子分片中的账户状态用默克尔B+树组织管理,该树作为该子分片内账户状态的索引,此部分作为聚集默克尔B+树的索引层;
步骤1-2:将分片内所有子分片的默克尔B+树的根节点作为叶子节点,通过默克尔树生成分片内所有账户状态的摘要,此部分作为聚集默克尔B+树的聚集层;
步骤1-3:利用可验证只可添加跳表管理单个账户状态的全部历史数据,导致账户状态改变的交易所在区块的区块号作为账户状态的一个版本;为每个账户状态历史版本维护多层链接,链接通过哈希指针指向之前的版本,第0层链接全部版本数据,第0层链表中每隔2n个的版本依次链接成为第n层的链表,此部分作为聚集默克尔B+树的数据层。


3.根据权利要求1所述的面向联盟链的分片内数据组织管理方法,其特征在于,所述步骤2中,在所述索引层,将从默克尔B+树顶端出发到满足查找条件的叶子节点的路径上每个节点保存的哈希指针作为所述索引层的完整性证明;所述具体查找办法为从包含查找键的子分片的根节点出发,查找包含查找键的子节点,依次逐层查询,直到叶子节点,查找路径上的所有的节点对应的哈希值即为索引层的完整性证明。


4.根据权利要求1所述的面向联盟链的分片内数据组织管理方法,其特征在于,所述步骤2中,在所述聚集层,将从聚集层根节点出发到指向满足查找条件的子分片的叶子节点的路径上的所有节点的兄弟节点作...

【专利技术属性】
技术研发人员:佟兴戚晓冬张召金澈清
申请(专利权)人:华东师范大学
类型:发明
国别省市:上海;31

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

1