当前位置: 首页 > 专利查询>天津大学专利>正文

一种分片区块链系统存储拓展方法技术方案

技术编号:39297972 阅读:19 留言:0更新日期:2023-11-07 11:06
本发明专利技术公开了一种分片区块链系统存储拓展方法属于计算机科学与技术领域;本发明专利技术提出一种分片区块链系统存储拓展方法,设计一种新的状态树结构、区块链分片扩容协议以及对应的状态树算法以实现分片区块链系统储存拓展。相较于现有设计,本发明专利技术侧重于分片系统的存储领域,实现了在复杂网络环境下,也能保证高吞吐量低延时的共识协议,相较于现有技术,本发明专利技术有效减少了分片区块链系统存储拓展过程中的资源开销,同时保持分片之间的平衡状态。同时保持分片之间的平衡状态。同时保持分片之间的平衡状态。

【技术实现步骤摘要】
一种分片区块链系统存储拓展方法


[0001]本专利技术涉及计算机科学与
,具体涉及一种分片区块链系统存储拓展方法。

技术介绍

[0002]现有的区块链系统往往以较低的可扩展性为代价,在去中心化和潜在恶意的环境中保证数据的透明性、完整性和不可篡改性。然而随着时间的推移,区块链系统中的数据也在逐渐累加,在这种情况下,区块链的可扩展性的重要性也在逐渐提高。目前已经产生了许多针对区块链的可扩展性问题的解决方案,例如一些解决方案侧重于提高区块链的共识协议、智能合约执行等关键组件的性能或者采用结合链下技术以分担链上存储压力的方式提高系统的可扩展性。
[0003]在近几年中,作为增强传统数据库可扩展性的分片技术也被应用到区块链
中,其可以将网络划分为多个组并行处理交易。在相对早期的时候,分片区块链如Elastico、Omniledger、Monoxide只能支持基于UTXO模型的网络和交易分片,例如在Elastico中每个块都需要广播到所有节点进行存储即不能支持状态分片。之后的系统开始考虑区块链中的状态分片如Chainspace、AHL,它们将分片技术推广到智能合约程序中,并提出了一些技术以处理跨组的交易。
[0004]针对存储问题,在区块链领域中最开始是采用Merkel

tree的数据结构形式以维护系统状态数据,之后的大多数区块链系统数据结构也是以Merkel Tree为原型进一步结合其他数据结构以增强系统性能,如Merkel Bucket Tree(MBT),其是哈希表和Merkel Tree的结合体以支持快速计算;Merkel Patricia Tree(MPT),其是前缀树和Merkel Tree结合体以提高查询性能;Merkel B+Tree,其是B+树和Merkel Tree结合体以维持数据结构的平衡性。
[0005]在分片区块链系统中,当分片的存储压力达到阈值,系统就需要考虑扩容问题,在这个背景下会产生两个问题:大规模数据迁移和Merkle树重建。分片区块链系统中,每个分片(组)维护一定数量的状态(K

V),上述两个技术问题的产生原因是状态分配原则,即某个状态依据某种规则确定其应该被分配到某个分片(组)。
[0006]考虑一种朴素的分配原则:将状态的Key取哈希值,再将其对分片数量取模即:Hash(K)mod M,其中Hash为哈希函数,M为分片数量,当系统需要分片扩容时即M

>M+1,下式等式对于多数状态都是不成立的Hash(K)mod M=Hash(K)mod M+1
[0007]这就意味在分片扩容时某个分片的多数状态都不再属于此分片,此分片需要将这些状态通过网络传播的形式发送到目标分片,这便产生了第一个技术问题即大规模数据迁移。
[0008]由于分片需要以某种数据结构(Merkel Tree)的形式维护本分片的状态,那么多数状态需要转移意味此数据结构中所保存的多数信息都以失效,这便产生了第二个技术问题即Merkel树重建。为了解决上述问题,本专利技术提出一种高效、均衡的分片区块链系统存储
拓展方法。

技术实现思路

[0009]本专利技术的目的在于提出提出一种高效、均衡的分片区块链系统存储拓展方法减少扩展过程中的资源开销,同时保持分片之间的平衡状态。
[0010]为了实现上述目的,本专利技术采用了如下技术方案:
[0011]一种分片区块链系统存储拓展方法,设计一种新的状态树结构、区块链分片扩容协议以及对应的状态树算法以实现分片区块链系统储存拓展,具体包括以下内容:
[0012]S1、状态树结构设计:
[0013]以Merkel Tree数据结构为原型,将其与Jump Hash算法相结合,给Merkel Tree的叶节点赋予级别信息,进而设计一种新的状态树结构,记作Jump Merkel Tree,简称JMT;
[0014]S2、分片扩容协议设计:
[0015]当分片区块链系统的每个分片的存储压力达到阈值时,系统进入同步状态,在此状态下,系统完成新分片JMT构建和旧分片JMT哈希值更新操作;
[0016]S3、状态树算法设计:
[0017]基于S1所设计的状态树结构及S2所设计的分片扩容协议,记录状态树每层节点的数量和每层的最后的节点,从最底层开始:
[0018]①
若第i层节点数量为奇数,则新增节点为第i+1层节点的右子节点;若第i层为最高层,则创建新的根节点R,第i层节点和新增节点分别作为其左右子节点;
[0019]②
若第i层节点数量为偶数,则在第i+1层创建新节点P,将新增节点P作为其左子节点,重复算法流程直至结束。
[0020]优选地,S1中所述给Merkel Tree的叶节点赋予的级别信息具体为:
[0021]级别0:在下一次分片扩容时移动到新分片的节点;
[0022]级别1:在下一次分片扩容时不移动的节点。
[0023]优选地,S2中所述新分片JMT构建和旧分片JMT哈希值更新具体包括如下内容:
[0024]①
新分片JMT构建:系统进入同步状态后,每个老分片将其片内级别为0的状态发送给新分片,新分片对上述状态进行收集,然后利用Jump Hash算法对其划分为不同级别,其中,级别为0的节点位于左侧,级别为1的节点位于右侧,利用非叶节点的规则构建完整JMT;
[0025]②
旧分片JMT哈希值更新:将同步状态下级别为0的节点或非同步状态下JMT需要移动节点定义为脏节点(dirty),当节点被赋为脏节点(dirty),代表该节点的Hash值是无效的,计算该节点的HashNew;
[0026]对于同步状态的脏节点(dirty)哈希值查询,节点表现为已无效的Hash;
[0027]对于非同步状态的脏节点(dirty)哈希值查询,节点表现为HashNew。
[0028]与现有技术相比,本专利技术提供了一种分片区块链系统存储拓展方法,具备以下有益效果:
[0029]本专利技术应用于分片区块链领域,相较于其他该领域研究如跨片交易、分片共识,本专利技术且侧重于分片系统的存储方面。具体包括如下有益效果:
[0030](1)本专利技术设计了新的状态树结构,最大限度保证了扩容期间状态树完整性,降低
了计算开销。
[0031](2)本专利技术设计了分片扩容协议,降低了数据迁移规模,进而大幅降低系统扩容延迟。
[0032](3)本专利技术设计了状态树算法,在分片顺利扩容的前提下,保证了系统的持续可用性。
附图说明
[0033]图1为本专利技术实施例1中的JMT逻辑视图;
[0034]图2为本专利技术实施例1中的带脏节点的JMT逻辑视图,其中,方形和三角形节点被标记为脏节点(dirty),需要计算这些节点的HashNew,由于三角形叶节点的HashNew值为空,所以对应的三角形非叶节点的HashNew也为空,本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种分片区块链系统存储拓展方法,其特征在于,设计一种新的状态树结构、区块链分片扩容协议以及对应的状态树算法以实现分片区块链系统储存拓展,具体包括以下内容:S1、状态树结构设计:以Merkel Tree数据结构为原型,将其与Jump Hash算法相结合,给Merkel Tree的叶节点赋予级别信息,进而设计一种新的状态树结构,记作Jump Merkel Tree,简称JMT;S2、分片扩容协议设计:当分片区块链系统的每个分片的存储压力达到阈值时,系统进入同步状态,在此状态下,系统完成新分片JMT构建和旧分片JMT哈希值更新操作;S3、状态树算法设计:基于S1所设计的状态树结构及S2所设计的分片扩容协议,记录状态树每层节点的数量和每层的最后的节点,从最底层开始:

若第i层节点数量为奇数,则新增节点为第i+1层节点的右子节点;若第i层为最高层,则创建新的根节点R,第i层节点和新增节点分别作为其左右子节点;

若第i层节点数量为偶数,则在第i+1层创建新节点P,将新增节点P作为其左子节点,重复算法流程直至结束...

【专利技术属性】
技术研发人员:范霆昱刘秀龙陈宝超曲雯毓
申请(专利权)人:天津大学
类型:发明
国别省市:

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

1