CN116521685A - 一种面向存储可扩展的联盟链分片方法 - Google Patents

一种面向存储可扩展的联盟链分片方法 Download PDF

Info

Publication number
CN116521685A
CN116521685A CN202310553853.7A CN202310553853A CN116521685A CN 116521685 A CN116521685 A CN 116521685A CN 202310553853 A CN202310553853 A CN 202310553853A CN 116521685 A CN116521685 A CN 116521685A
Authority
CN
China
Prior art keywords
storage
data
tree
slicing
blocks
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202310553853.7A
Other languages
English (en)
Inventor
信俊昌
闻亮
郝琨
姚钟铭
崔婷钰
王之琼
Original Assignee
东北大学
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 东北大学 filed Critical 东北大学
Priority to CN202310553853.7A priority Critical patent/CN116521685A/zh
Publication of CN116521685A publication Critical patent/CN116521685A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2291User-Defined Types; Storage management thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2246Trees, e.g. B+trees
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明提供一种面向存储可扩展的联盟链分片方法,首先在区块生成时对Merkle树叶子节点进行分类标识,然后对分类标识后的生成树进行分片,最后利用纠错码进行加密存储结构。本发明方法提高了存储可扩展性,降低了分片对吞吐量的影响,而且提高了存储效率和吞吐量,减少了分片过程中的存储硬件资源紧张。同时细粒化分片后进行单独地址保存,可以实现独立验证,提高验证效率。再者,本发明基于Merkle树分片之中的纠错码标记去维护数据,通过解码矩阵来判断数据是否被劫持,减少为了安全性对副本复制的冗余,提高了块内分片的安全性。

Description

一种面向存储可扩展的联盟链分片方法
技术领域
本发明涉及计算机区块链查询技术领域,特别是涉及一种面向存储可扩展的联盟链分片方法。
背景技术
随着国际数据的实际应用场景越来越频繁,区块链这一名词逐渐应用到了企业和个人用户上。区块链的去中心化、抗修改、数据透明化和非对称加密等特点使他被大型企业在数据管理等方面上逐步应用。区块链本质上是一个去中心化数据库,是一种混合多种分布式加密方法等计算机技术的新型应用模式。
伴随着越来越多的信息上传到区块链,近些年尤其是在以太坊和Hyperledger等联盟链平台上,也出现了对于存储可扩展的需求。但是目前在区块链领域的存储扩展技术正处于起步阶段,传统的数据库的分片系统移植到区块链系统来会带来安全性问题或者无法继续满足去中心化,这也称之为区块链的“不可能三角”。一些比较优秀的存储扩展算法开始在公有链应用,他们凭借良好的对恶劣交易环境的抗性,以及通过完整系统架构满足的高安全性在公有链广为应用。但是,随着数据累计,联盟链对存储扩展的需求也逐渐增大,与公有链不同,联盟链不需要牺牲过多的算力来实现存储扩展和安全性维护,所以需要一种相比较公有链上的分片方式更轻量化的方法设计。
发明内容
针对现有技术存在的问题,本发明提供一种面向存储可扩展的联盟链分片方法,包括:
步骤1:在区块生成时对Merkle树叶子节点进行分类标识;具体表述为:
步骤1.1:对用户写入数据进行摘要提取;包括:
步骤1.1.1:用户写入数据至局部区块链,对正在生成录入的哈希块进行键值的筛选,数据为Sdata={data1,data2,…,datai,…,datam},其中m表示数据总量大小;
步骤1.1.2:对于每个数据块,计算其摘要值dig=H(datai),其中H()是哈希函数,将所有的摘要值按字符顺序排序得到一个字符串S0;
步骤1.1.3:将字符串S0分成n个长度相等的子串,每个子串表示为Si,对于每个子串Si,找到摘要值中第一个大于等于Si的元素digj,将datai加入到以digj为键的数据集Sdig={dig1,dig2,…,digj…,dign}中;
步骤1.1.4:重复步骤1.1.2-步骤1.1.3直到所有数据块都被分类;
步骤1.2:根据提取到的摘要构建Merkle树;包括:
步骤1.2.1:对提取的数据摘要Sdig={dig1,dig2,…,dign}进行质数序列取余,将具有相同余数的摘要值dig按照自底向上构建树,根据余数确定从叶子节点到父母节点的分支,生成索引树;
步骤1.2.2:重复步骤1.2.1,直到将整个Sdig={dig1,dig2,…,dign}全部构建成为一棵带有分类标识的Merkle树,表示为MT={mt1,mt2,…,mtf},其中f表示依据数据构建树的个数;
步骤2:对分类标识后的生成树进行分片,具体表述为:
步骤2.1:已生成的块是不可变的,对于正在生成的数据块中,伴随Merkle树MTree={mt1,mt2,…,mtf}的生成,对其中的一棵Merkle树按树的层数进行判断,超过阈值则在当前层数将左子树单独分片;
步骤2.2:在正在生成的MTree={mt1,mt2,…,mtf}中,对左子树进行剪枝分片保存,并把右子树和根节点的验证信息一并保存到左子树,右子树也同样保存左子树和根节点验证信息,如图3所示分别保存左右两部分;
步骤2.3:左右子树分片后保存成数据块,根据保存数据分为块C={C0,...,Cg},其中,g表示数据块的个数,如图4所示,将C={C0,...,Cg}编码复制保存到不同的物理地址;
步骤3:利用纠错码进行加密存储结构;具体表述为:
步骤3.1:对保存的数据块进行RS编码;具体表述为:对已经保存的数据块C={C0,...,Cg}进行RS编码,利用RS编码校验矩阵和生成矩阵对每个块编码为两个校验块v=(v1,v2,...,vs),u=(u1,u2,...,us),并保存到各分片所在的物理地址上;
步骤3.2:对已生成的编码进行还原,在发送端为将校验块v=(v1,v2,...,vs),u=(u1,u2,...,us)发送到编码器,通过对2的幂次进行还原生成C={C0,...,Cg};
步骤3.3:对于保存的数据C={C0,...,Cg},从中通过保存的验证信息Sdig={dig1,dig2,…,dign}进行哈希树验证;具体表述为:
步骤3.3.1:首先计算出每个叶子节点C={C0,...,Cg}的散列值hi=H(C),然后将所有的hi按顺序连接起来得到一个字符串H0;
步骤3.3.2:对于每个非叶子节点,将其左右子节点的标签连接起来得到一个字符串H1;对于每个非叶子节点,计算其标签hi=H(H1);
步骤3.3.3:重复步骤3.3.1和步骤3.3.2直到得到根节点hr,最后将hr与Sdig中的第一个元素dig1进行比较,如果相等,则验证成功;否则验证失败。
本发明的有益效果是:
本发明是一种基于联盟链的特性的Merkle树块内分片方法,提高了存储可扩展性,降低了分片对吞吐量的影响,而且提高了存储效率和吞吐量,减少了分片过程中的存储硬件资源紧张。同时细粒化分片后进行单独地址保存,可以实现独立验证,提高验证效率。再者本发明基于Merkle树分片之中的纠错码标记去维护数据,通过解码矩阵来判断数据是否被劫持,减少为了安全性对副本复制的冗余,提高了块内分片的安全性。
附图说明
图1为本发明的面向平台并行运行结构示意图;
图2为本发明的面向存储可扩展的联盟链分片索引树示意图;
图3为本发明的面向存储可扩展的联盟链分片方法模型示意图;
图4为本发明的基于纠错码安全分片结构示意图;
图5为本发明的面向存储可扩展的联盟链分片方法流程图。
具体实施方式
下面结合附图和具体实施实例对发明做进一步说明。
分片系统理论上可以改善整个系统的存储性能,但是会因为分片导致通信代价变大,使得验证效率低。而在在分片过程中当多个交易同时集中到一个节点中,如果节点再进行分片操作,就可能出现堵塞现象,所以需要优化分片带来的损耗。由于Mp-tree架构是一个包含在区块生成的细粒度分片过程,可以把分片过程并行在区块生成的过程中去,从而进一步降低分片系统带来的损耗。而且,可以通过将对分片的验证信息保存在同一物理地址来实现独立验证,提高验证效率,为了确保独立验证结果,利用纠错码保障还原数据安全性。
本发明的实现利用Fabric1.0平台把节点功能分割,所以可以利用多通道(multi-channel)功能将Merkle树分片生成的过程集成到节点中去,在区块生成同时并行分片,在区块生成的同时先进行分片以及增加纠错码操作,然后再继续生成区块上传链码。具体原理图如图1所示。
本发明提供的一种面向存储可扩展的联盟链分片方法,如图5所示,包括:
步骤1:在区块生成时对Merkle树叶子节点进行分类标识;具体表述为:
步骤1.1:对用户写入数据进行摘要提取;包括:
步骤1.1.1:用户写入数据至局部区块链,对正在生成录入的哈希块进行键值的筛选,数据为Sdata={data1,data2,…,datai,…,datam},其中m表示数据总量大小;
步骤1.1.2:对于每个数据块,计算其摘要值dig=H(datai),其中H()是哈希函数,将所有的摘要值按字符顺序排序得到一个字符串S0;
步骤1.1.3:将字符串S0分成n个长度相等的子串,每个子串表示为Si,对于每个子串Si,找到摘要值中第一个大于等于Si的元素digj,将datai加入到以digj为键的数据集Sdig={dig1,dig2,…,digj…,dign}中;
步骤1.1.4:重复步骤1.1.2-步骤1.1.3直到所有数据块都被分类;
步骤1.2:根据提取到的摘要构建Merkle树;包括:
步骤1.2.1:第一层为根节点,根节点下有两个节点,每个节点下以此类推。对提取的数据摘要Sdig={dig1,dig2,…,dign}进行质数序列取余,将具有相同余数的摘要值dig按照自底向上构建树,即具有相同余数的数据摘要Sdig保存到同一子树下,根据余数确定从叶子节点到父母节点的分叉路径,直到找到目标节点,生成索引树;例如根据字符段生成B+树,如图2所示。
步骤1.2.2:重复步骤1.2.1,直到将整个Sdig={dig1,dig2,…,dign}全部构建成为一棵带有分类标识的Merkle树,表示为MT={mt1,mt2,…,mtf},其中f表示依据数据构建树的个数;
步骤2:对分类标识后的生成树进行分片,具体表述为:
步骤2.1:已生成的块是不可变的,对于正在生成的数据块中,伴随Merkle树MTree={mt1,mt2,…,mtf}的生成,对其中的一棵Merkle树按树的层数进行判断,超过阈值则在当前层数将左子树单独分片;
步骤2.2:在正在生成的MTree={mt1,mt2,…,mtf}中,对左子树进行剪枝分片保存,并把右子树和根节点的验证信息一并保存到左子树,右子树也同样保存左子树和根节点验证信息,这样便于后续单独验证,对分片后的Merkle树可以进行片内验证,无需重新合成完整树。如图3所示分别保存左右两部分,左子树包含根节点以及根节点的右子树Hashright的信息,统一保存。右子树保存根节点和左子树的信息,使得分片后的左右子树可以在验证的过程中独立验证。
步骤2.3:左右子树分片后保存成数据块,根据保存数据分为块C={C0,...,Cg},其中,g表示数据块的个数,如图4所示,将C={C0,...,Cg}编码复制保存到不同的物理地址;
如图3所示,在每个节点将块分为M={mt1,mt2,…,mtf}这一过程中,如果在区块Merkle树构建过程后再进行分片,会额外增加分片代价,降低系统性能。所以在举例的Mp树构建过程中,每当向上构建父母双亲节点时,把对应交易数据节点的信息直接分片存储到存储节点中去,就可以实现并行分片,减少分片后的代价。在Merkle树生成过程中,把根节点和另一个节点验证信息额外保存在另一方中,如图例所示,按照左右子树分片时,Hash12则额外保存Hash1234和Hash34的信息,再对Merkle树进行分片,每个分片对应的是一个子树,为了便于数据还原,根节点永远保存在最后一个分片子树中去。基于根节点的分片则分为两部分,前半段以Hash12为新的根节点的分片树,后一部分是以Hash1234为根节点来分片存储。
步骤3:利用纠错码进行加密存储结构;具体表述为:
步骤3.1:对保存的数据块进行RS编码(Reed-solomon codes);具体表述为:对已经保存的数据块C={C0,...,Cg}进行RS编码,利用RS编码校验矩阵和生成矩阵对每个块编码为两个校验块v=(v1,v2,...,vs),u=(u1,u2,...,us),对每个块额外生成一个校验块用于通过RS编码进行验证如图4所示,并保存到各分片所在的物理地址上;
步骤3.2:对已生成的编码进行还原,在发送端为将校验块v=(v1,v2,...,vs),u=(u1,u2,...,us)发送到编码器,通过对2的幂次进行还原生成C={C0,...,Cg},不会受到新增数据块的影响;
步骤3.3:对于保存的数据C={C0,...,Cg},从中通过保存的验证信息Sdig={dig1,dig2,…,dign}进行哈希树验证;具体表述为:
步骤3.3.1:首先计算出每个叶子节点C={C0,...,Cg}的散列值hi=H(C),然后将所有的hi按顺序连接起来得到一个字符串H0;
步骤3.3.2:对于每个非叶子节点,将其左右子节点的标签连接起来得到一个字符串H1;对于每个非叶子节点,计算其标签hi=H(H1);
步骤3.3.3:重复步骤3.3.1和步骤3.3.2直到得到根节点hr,最后将hr与Sdig中的第一个元素dig1进行比较,如果相等,则验证成功;否则验证失败。

Claims (8)

1.一种面向存储可扩展的联盟链分片方法,其特征在于,包括:
步骤1:在区块生成时对Merkle树叶子节点进行分类标识;
步骤2:对分类标识后的生成树进行分片;
步骤3:利用纠错码进行加密存储结构。
2.根据权利要求1所述的一种面向存储可扩展的联盟链分片方法,其特征在于,所述步骤1包括:
步骤1.1:对用户写入数据进行摘要提取;
步骤1.2:根据提取到的摘要构建Merkle树。
3.根据权利要求2所述的一种面向存储可扩展的联盟链分片方法,其特征在于,所述步骤1.1包括:
步骤1.1.1:用户写入数据至局部区块链,对正在生成录入的哈希块进行键值的筛选,数据为Sdata={data1,data2,…,datai,…,datam},其中m表示数据总量大小;
步骤1.1.2:对于每个数据块,计算其摘要值dig=H(datai),其中H()是哈希函数,将所有的摘要值按字符顺序排序得到一个字符串S0;
步骤1.1.3:将字符串S0分成n个长度相等的子串,每个子串表示为Si,对于每个子串Si,找到摘要值中第一个大于等于Si的元素digj,将datai加入到以digj为键的数据集Sdig={dig1,dig2,…,digj…,dign}中;
步骤1.1.4:重复步骤1.1.2-步骤1.1.3直到所有数据块都被分类。
4.根据权利要求2所述的一种面向存储可扩展的联盟链分片方法,其特征在于,所述步骤1.2包括:
步骤1.2.1:对提取的数据摘要Sdig={dig1,dig2,…,dign}进行质数序列取余,将具有相同余数的摘要值dig按照自底向上构建树,根据余数确定从叶子节点到父母节点的分支,生成索引树;
步骤1.2.2:重复步骤1.2.1,直到将整个Sdig={dig1,dig2,…,dign}全部构建成为一棵带有分类标识的Merkle树,表示为MT={mt1,mt2,…,mtf},其中f表示依据数据构建树的个数。
5.根据权利要求1所述的一种面向存储可扩展的联盟链分片方法,其特征在于,所述步骤2包括:
步骤2.1:已生成的块是不可变的,对于正在生成的数据块中,伴随Merkle树MTree={mt1,mt2,…,mtf}的生成,对其中的一棵Merkle树按树的层数进行判断,超过阈值则在当前层数将左子树单独分片;
步骤2.2:在正在生成的MTree={mt1,mt2,…,mtf}中,对左子树进行剪枝分片保存,并把右子树和根节点的验证信息一并保存到左子树,右子树也同样保存左子树和根节点验证信息,分别保存左右两部分;
步骤2.3:左右子树分片后保存成数据块,根据保存数据分为块C={C0,...,Cg},其中,g表示数据块的个数,将C={C0,...,Cg}编码复制保存到不同的物理地址。
6.根据权利要求1所述的一种面向存储可扩展的联盟链分片方法,其特征在于,所述步骤3包括:
步骤3.1:对保存的数据块进行RS编码;
步骤3.2:对已生成的编码进行还原,在发送端为将校验块v=(v1,v2,...,vs),u=(u1,u2,...,us)发送到编码器,通过对2的幂次进行还原生成C={C0,...,Cg};
步骤3.3:对于保存的数据C={C0,...,Cg},从中通过保存的验证信息Sdig={dig1,dig2,…,dign}进行哈希树验证。
7.根据权利要求6所述的一种面向存储可扩展的联盟链分片方法,其特征在于,所述步骤3.1具体表述为:对已经保存的数据块C={C0,...,Cg}进行RS编码,利用RS编码校验矩阵和生成矩阵对每个块编码为两个校验块v=(v1,v2,...,vs),u=(u1,u2,...,us),并保存到各分片所在的物理地址上。
8.根据权利要求6所述的一种面向存储可扩展的联盟链分片方法,其特征在于,所述步骤3.3具体表述为:
步骤3.3.1:首先计算出每个叶子节点C={C0,...,Cg}的散列值hi=H(C),然后将所有的hi按顺序连接起来得到一个字符串H0;
步骤3.3.2:对于每个非叶子节点,将其左右子节点的标签连接起来得到一个字符串H1;对于每个非叶子节点,计算其标签hi=H(H1);
步骤3.3.3:重复步骤3.3.1和步骤3.3.2直到得到根节点hr,最后将hr与Sdig中的第一个元素dig1进行比较,如果相等,则验证成功;否则验证失败。
CN202310553853.7A 2023-05-16 2023-05-16 一种面向存储可扩展的联盟链分片方法 Pending CN116521685A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310553853.7A CN116521685A (zh) 2023-05-16 2023-05-16 一种面向存储可扩展的联盟链分片方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310553853.7A CN116521685A (zh) 2023-05-16 2023-05-16 一种面向存储可扩展的联盟链分片方法

Publications (1)

Publication Number Publication Date
CN116521685A true CN116521685A (zh) 2023-08-01

Family

ID=87394018

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310553853.7A Pending CN116521685A (zh) 2023-05-16 2023-05-16 一种面向存储可扩展的联盟链分片方法

Country Status (1)

Country Link
CN (1) CN116521685A (zh)

Similar Documents

Publication Publication Date Title
Tatti et al. The long and the short of it: summarising event sequences with serial episodes
CN109586896B (zh) 一种基于哈希前缀树的数据完整性验证方法
JP4939421B2 (ja) データを検索し記憶するシステム及び方法
CN107391306B (zh) 一种异构数据库备份文件恢复方法
CN105868305A (zh) 一种支持模糊匹配的云存储数据去重复方法
US20120173932A1 (en) Storage codes for data recovery
CN113535706B (zh) 两阶段布谷鸟过滤器及基于两阶段布谷鸟过滤器的重复数据删除方法
JP2008513891A6 (ja) データを検索し記憶するシステム及び方法
US20050234901A1 (en) Database with efficient fuzzy matching
CN116628083B (zh) 区块链交易数据扩容存储方法及系统
CN111221780B (zh) 一种基于区块链的服务器文件安全存储方法
CN106484559A (zh) 一种校验矩阵的构造方法及水平阵列纠删码的构造方法
US20060112097A1 (en) Encoding data to be sorted
US9037553B2 (en) System and method for efficient maintenance of indexes for XML files
CN111966654A (zh) 一种基于Trie字典树的混合过滤器
CN115237914A (zh) 防篡改索引结构及其构建、存储和查询方法
CN117349860B (zh) 一种基于矩阵变化和数据切分的文件存储系统及方法
WO2002008956A9 (en) Focal point compression method and apparatus
CN116521685A (zh) 一种面向存储可扩展的联盟链分片方法
US20060106857A1 (en) Method and system for assured document retention
Zhao et al. CLEAN: Frequent pattern-based trajectory compression and computation on road networks
US20080215606A1 (en) Focal point compression method and apparatus
CN112995340B (zh) 一种基于区块链的去中心化文件系统再平衡方法
Zhang et al. Approximate Pattern Matching Using the Burrows-Wheeler Transform.
CN112115110B (zh) 一种对文件进行编号的同步备份方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination