CN116974474A - 一种基于擦除码的分片区块链存储系统及方法 - Google Patents
一种基于擦除码的分片区块链存储系统及方法 Download PDFInfo
- Publication number
- CN116974474A CN116974474A CN202310941523.5A CN202310941523A CN116974474A CN 116974474 A CN116974474 A CN 116974474A CN 202310941523 A CN202310941523 A CN 202310941523A CN 116974474 A CN116974474 A CN 116974474A
- Authority
- CN
- China
- Prior art keywords
- data
- blocks
- nodes
- fragment
- block
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 21
- 239000012634 fragment Substances 0.000 claims abstract description 137
- 239000011159 matrix material Substances 0.000 claims description 21
- 238000004422 calculation algorithm Methods 0.000 claims description 9
- 238000013507 mapping Methods 0.000 claims description 4
- 238000005516 engineering process Methods 0.000 description 8
- 239000004744 fabric Substances 0.000 description 5
- 101100268670 Caenorhabditis elegans acc-3 gene Proteins 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 230000006835 compression Effects 0.000 description 3
- 238000007906 compression Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 102100039164 Acetyl-CoA carboxylase 1 Human genes 0.000 description 2
- 101710190443 Acetyl-CoA carboxylase 1 Proteins 0.000 description 2
- 102100021641 Acetyl-CoA carboxylase 2 Human genes 0.000 description 2
- 101000677540 Homo sapiens Acetyl-CoA carboxylase 2 Proteins 0.000 description 2
- 101000894929 Homo sapiens Bcl-2-related protein A1 Proteins 0.000 description 2
- 238000013474 audit trail Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 238000012550 audit Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0652—Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明适用于区块链技术领域,尤其涉及一种基于擦除码的分片区块链存储系统及方法,针对区块链存储系统的所具有的交易吞吐量低、存储开销大的问题,本发明通过将节点分片,分片之间并行处理交易,并仅存储分片内节点的交易数据,降低存储开销的同时提高了交易的吞吐量。另外,本发明对分片内旧的交易数据使用局部擦除码进行编码压缩,进一步降低存储的开销的同时也提供了交易追溯审计的功能。
Description
技术领域
本发明属于区块链技术领域,尤其涉及一种基于擦除码的分片区块链存储系统及方法。
背景技术
近年来,由于诸如比特币、以太坊等加密货币的兴起,使得区块链这一技术逐渐为人熟知。区块链是一种基于密码学的分布式账本技术,通过冗余备份和哈希链等技术实现交易的安全以及审计追溯,通过工作量证明协议防止恶意节点篡改账本数据。区块链技术的防篡改和审计追溯的优点,十分适用于加密货币交易。然而,无法将区块链技术应用于非加密货币的交易中,因为非加密货币交易通常有着交易次数大、频次高的特点,导致交易产生的数据量非常大。由于工作量证明协议需要耗费大量的算力,以及公链区块链需要在每个节点中备份完整的区块链账本数据,使得传统的区块链技术无法应用于非加密货币交易。近年来,对于区块链技术的研究主要集中于两个方面,一是,降低区块链的存储开销,使区块链能够存储更多的交易数据;二是,增强区块链的交易吞吐量,通过采用不同的共识算法或者改变区块链的架构,增加区块链交易的吞吐量。
区块链存储优化主要有两种方式,分别为删除旧的交易数据和设计轻量型客户端节点。这些方法也存在有不足之处,将旧的的交易数据删除能够减少存储开销,但是区块链也失去了审计追溯的能力,轻量级客户端虽然能够减少客户端的存储开销,但是全节点服务器仍然是全副本备份的。纠删码是分布式存储系统中常用的冗余校验技术,通过将原始信息分割成为信息块,然后对信息块编码生成校验块,将信息块和编码块分散存储于分布式存储的节点中,既降低了数据存储的开销,又能及时地恢复数据。
为了提高区块链的交易吞吐量,当前有两种技术方案:一是链上链下相结合提升区块链的交易频度,链下负责处理小额的交易,链上负责将小额交易合并为大额的交易并同步至所有节点;二是通过有向无环图的结构重新组织区块链的构成,每进行一笔交易都会验证前面的几笔交易,使得DAG可以并发地写入很多交易,构成树状地拓扑结构。但是,此类方法也有性能和延迟的问题。
发明内容
本发明实施例的目的在于提供一种基于擦除码的分片区块链存储方法,旨在解决背景技术第三部分中提出的问题。
本发明实施例是这样实现的,一种基于擦除码的分片区块链存储系统,所述系统包括:共识模块和编解码模块;
所述共识模块,在系统启动之初,根据系统预设设定的分组大小P,使用基于可信执行环境的分片生成协议将节点随机划分为大小为P的节点分片,所述分片内的所述节点共同维护一套账本数据,每个分片的账本存储此分片节点的交易数据,不同的分片账本数据共同组成整体区块链系统的数据,所述共识模块在分片节点产生区块时,通过实用容错拜占庭算法对区块进行共识,为编解码模块提供数据,在交易涉及从属于不同所述分片的账户时,所述共识模块使用二段锁协议协调同步各个所述分片内的账户数据;
所述编解码模块,通过局部擦除码对区块数据进行编码压缩和解码恢复,包括编码子模块和解码子模块,所述编码子模块在分片内未经编码压缩的区块高度超过系统预设的编码阈值H时,将所述高度为H的区块均分为K块数据块,利用局部擦除码的矩阵线性关系生成L块局部校验块和G块全局校验块,K块数据块、L块局部校验块和G块全局校验块共同组成N块数据片段,分散存储于片内节点中,解码子模块向分片节点请求数据片段,使用规定的矩阵对数据片段进行解码,恢复被编码压缩的数据。
优选的,所述在系统启动之初,根据系统预设设定的分组大小P,使用基于可信执行环境的分片生成协议将节点随机划分为大小为P的节点分片的步骤,具体包括:
节点调用自身可信执行环境的随机数生成函数,生成无偏的随机数rnd和q;
当q为0时,所述节点对包含随机数rnd和轮次e的证书进行签名,并将签名证书广播通知网络中的其余节点;
所述节点等待时长后,所有节点均收到其余节点广播的证书,将所收到的最小随机数作为全局随机数,将全局随机数作为种子生成随机排列;
依据所述预设分组大小P和随机排列将所述节点随机分片为大小相等的子集,每个子集依序赋予唯一编号。
优选的,所述在交易涉及从属于不同所述分片的账户时,所述共识模块使用二段锁协议协调同步各个所述分片内的账户数据的步骤,具体包括:
共识模块向交易中的每个输入账户和交易输出账户所在的分片发送请求,获取账户锁,写入对应的账户名acc和布尔值true,表明账户acc已被上锁,若分片中已经存在对应的账户名acc和布尔值true,则对账户加锁失败,跳转到下一步;
共识模块获取到所有所述交易涉及到的账户后,执行交易内容,并将对应的状态变更写入到不同分片的账本中;
共识模块向已获取账户锁的分片发送请求,释放分片内的账户锁。
优选的,编码子模块在分片内未经编码压缩的区块高度超过系统预设的编码阈值H时,将所述高度为H的区块均分为K块数据块,将K块数据块等分为L组,每个分组中包含K/L块数据块;每个分组中的K/L数据块根据对应的系数矩阵计算得到局部校验块和全局校验块,共L块局部校验块和G块全局校验块。
优选的,K块数据块、L块局部校验块和G块全局校验块共同组成N块数据片段,分散存储于片内节点中,具体步骤为:
为所述每个数据片段赋予一个哈希编号,并记录每个数据片段的哈希编号、L组数据分组以及分组所对应的区块高度区间信息等元数据信息。
将K块数据块、L块局部校验块和G块全局校验块的哈希编码映射到的哈希环的虚拟节点,并将对应的数据片段发送到虚拟节点所对应的物理节点上;
在目标节点收到发送的数据片段之后,负责编码的节点将数据片段的哈希编号及其和区块高度的对应关系的元数据广播到分片内的其余节点上。
优选的,解码子模块向分片节点请求数据片段,使用规定的矩阵对数据片段进行解码,恢复被编码压缩的数据的步骤,具体包括:
根据请求的交易数据判定交易数据所属区块的高度范围,并确定构成的数据片段的K/L的哈希编号;
根据所述哈希编号,确定其在哈希环中的位置,并进一步确定存储数据片段的物理节点。负责编码的节点向存储数据片段的物理节点请求数据;
解码节点收到数据片段后,使用对应的系数矩阵解码恢复出被压缩的区块数据,并将请求的交易数据返回。
本发明实施例的另一目的在于提供一种基于擦除码的分片区块链存储方法,所述方法包括:
根据系统预设设定的分组大小P,使用基于可信执行环境的分片生成协议将节点随机划分为大小为P的节点分片,所述分片内的所述节点共同维护一套账本数据,每个分片的账本存储此分片节点的交易数据,不同的分片账本数据共同组成整体区块链系统的数据,在分片节点产生区块时,通过实用容错拜占庭算法对区块进行共识,为编解码模块提供数据,在交易涉及从属于不同所述分片的账户时,使用二段锁协议协调同步各个所述分片内的账户数据;
通过局部擦除码对区块数据进行编码压缩和解码恢复,在分片内未经编码压缩的区块高度超过系统预设的编码阈值H时,将所述高度为H的区块均分为K块数据块,利用局部擦除码的矩阵线性关系生成L块局部校验块和G块全局校验块,K块数据块、L块局部校验块和G块全局校验块共同组成N块数据片段,分散存储于片内节点中,向分片节点请求数据片段,使用规定的矩阵对数据片段进行解码,恢复被编码压缩的数据。
本发明实施例提供的一种基于擦除码的分片区块链存储方法,针对区块链存储系统的所具有的交易吞吐量低、存储开销大的问题,本发明通过将节点分片,分片之间并行处理交易,并仅存储分片内节点的交易数据,降低存储开销的同时提高了交易的吞吐量。另外,本发明对分片内旧的交易数据使用局部擦除码进行编码压缩,进一步降低存储的开销的同时也提供了交易追溯审计的功能。
附图说明
图1为本发明实施例提供的一种基于擦除码的分片区块链存储方法的分片内通信示意图;
图2为本发明实施例提供的节点分片划分流程的流程图;
图3为本发明实施例提供的节点数据分片示意图;
图4为本发明实施例提供的跨分片交易示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
可以理解,本申请所使用的术语“第一”、“第二”等可在本文中用于描述各种元件,但除非特别说明,这些元件不受这些术语限制。这些术语仅用于将第一个元件与另一个元件区分。举例来说,在不脱离本申请的范围的情况下,可以将第一xx脚本称为第二xx脚本,且类似地,可将第二xx脚本称为第一xx脚本。
如图1所示,为本发明实施例提供的一种基于擦除码的分片区块链存储方法的分片内通信示意图,所述方法包括:
根据系统预设设定的分组大小P,使用基于可信执行环境的分片生成协议将节点随机划分为大小为P的节点分片,所述分片内的所述节点共同维护一套账本数据,每个分片的账本存储此分片节点的交易数据,不同的分片账本数据共同组成整体区块链系统的数据,在分片节点产生区块时,通过实用容错拜占庭算法对区块进行共识,为编解码模块提供数据,在交易涉及从属于不同所述分片的账户时,使用二段锁协议协调同步各个所述分片内的账户数据;
通过局部擦除码对区块数据进行编码压缩和解码恢复,在分片内未经编码压缩的区块高度超过系统预设的编码阈值H时,将所述高度为H的区块均分为K块数据块,利用局部擦除码的矩阵线性关系生成L块局部校验块和G块全局校验块,K块数据块、L块局部校验块和G块全局校验块共同组成N块数据片段,分散存储于片内节点中,向分片节点请求数据片段,使用规定的矩阵对数据片段进行解码,恢复被编码压缩的数据。
在本实施例中提供了一种基于擦除码的分片区块链存储系统,包括:共识模块和编解码模块;
所述共识模块,在系统启动之初,根据系统预设设定的分组大小P,使用基于可信执行环境的分片生成协议将节点随机划分为大小为P的节点分片,所述分片内的所述节点共同维护一套账本数据,每个分片的账本存储此分片节点的交易数据,不同的分片账本数据共同组成整体区块链系统的数据。所述共识模块在分片节点产生区块时,通过实用容错拜占庭算法对区块进行共识,为编解码模块提供数据。在交易涉及从属于不同所述分片的账户时,所述共识模块实用二段锁协议协调同步各个所述分片内的账户数据。
所述编解码模块,通过局部擦除码对区块数据进行编码压缩和解码恢复,包括编码子模块和解码子模块。所述编码子模块,当分片内未经编码压缩的区块高度超过系统预设的编码阈值H时,将所述高度为H的区块均分为K块数据块,利用局部擦除码的矩阵线性关系生成L块局部校验块和G块全局校验块,K块数据块、L块局部校验块和G块全局校验块共同组成N块数据片段,分散存储于片内节点中。解码子模块向分片节点请求数据片段,使用规定的矩阵对数据片段进行解码,恢复被编码压缩的数据。
所述共识模块在系统启动之初,根据系统预设的分组大小P使用基于可信执行环境的分片生成协议将节点随机划分为大小为P的节点分片,包括:
所述节点调用自身可信执行环境的随机数生成函数,生成无偏的随机数rnd和q。
当q为0时,所述节点对包含随机数rnd和轮次e的证书进行签名,并将签名证书广播通知网络中的其余节点。
所述节点等待时长后,所有节点均收到其余节点广播的证书,将所收到的最小随机数作为全局随机数。将全局随机数作为种子生成随机排列。
依据所述预设分组大小P和随机排列将所述节点随机分片为大小相等的子集。每个子集依序赋予唯一编号。
本发明的实施例中的分片的划分依赖于可信执行环境生成的随机数种子,假设可信执行环境为Intel的SGX,且每个节点运行Hyperledger Fabric平台。在Fabric启动时,系统会调用Intel SGX中的sgx_rand_read()函数生成长度为8bit的随机值q和长度为32bit的随机值rnd。当q的值为0时,将rnd和q组成为一个证书广播至网络中其他节点。系统内所有节点等待3秒,确保所有节点均收到其余节点所广播的证书信息,收到所有证书信息后,挑选一个随机值rnd最小的证书,并以此作为全局随机数种子,所有节点以该随机种子生成随机排列。并按照系统预设的分组大小,将节点划分为指定大小的分片。假设区块链系统内共有40个节点,系统预设的分组大小为5,那么根据生成的排列,将排列中的第1至5个节点划分为第一个分组,将第6至10个节点划分为第二个分组,以此类推。
所述共识模块所确定的分片内节点的交易数据,当不同分片的节点之间发生交易时,所述共识模块使用二段锁协议通过跨分片交易所所涉及的节点信息,具体步骤如下:
第一步,所述共识模块向交易中的每个输入账户和交易输出账户所在的分片发送请求,获取账户锁,即写入对应的账户名acc和布尔值true,以表明账户acc已被上锁。如果分片中已经存在对应的账户名acc和布尔值true,那么对账户加锁失败,跳转到第三步。
第二步,所述共识模块获取到所有所述交易涉及到的账户后,执行交易内容,并将对应的状态变更写入到不同分片的账本中。
第三步,所述共识模块向已获取账户锁的分片发送请求,释放分片内的账户锁。
本发明的实施例中节点运行于Hyperledger Fabric平台上,不同分片中选举出部分节点,共同组成参照组分片,负责协调跨分片的交易。参照分片向跨分片交易所涉及的分片发送请求,获取对应的账户锁,即向分片所在的Hyperledger Fabric的World State中写入<L_acc, true>元组,如果World State中已存在对应的元组,获取账户锁失败,进行交易回滚。当跨分片交易获取所有的账户锁后,向跨分片交易所涉及的分片账本的区块链中提交子交易。假设存在跨分片交易ACC1-=n, ACC2-=m, ACC3+=(n+m),其中ACC1, ACC2, ACC3分别从属于不同的分片,代表从账户ACC1和账户ACC2中转账至账户ACC3中。那么,所对应的子交易为ACC1-=n, ACC2-=m, ACC3+=m。
所述的编码子模块将区块切分为K块数据块、L块局部校验块和G块全局校验块,分散存储于片内节点中,具体步骤为:
为所述每个数据片段赋予一个哈希编号,并记录每个数据片段的哈希编号、L组数据分组以及分组所对应的区块高度区间信息等元数据信息。
将K块数据块、L块局部校验块和G块全局校验块的哈希编码映射到的哈希环的虚拟节点,并将对应的数据片段发送到虚拟节点所对应的物理节点上。
在目标节点收到发送的数据片段之后,负责编码的节点将数据片段的哈希编号及其和区块高度的对应关系的元数据广播到分片内的其余节点上。
在本发明实施例中使用局部擦除码对区块数据进行压缩编码,故设定K为6,L为2,G为2,区块压缩的阈值高度H为200。负责编码的节点从存储交易数据的LevelDB数据库中读取最近200个区块所对应的交易数据,并使用GZIP压缩算法对交易数据进行打包,并等分为6块大小相同的数据块,并将其分为两组。随后使用2个23的系数矩阵对每组的数据块进行编码,生成2个局部校验块和2个全局校验块。随后使用SHA256算法对这个10个数据片段生成哈希编号,将每个数据片段的哈希编号映射到分片哈希环的虚拟节点中,并将数据片段的哈希编号、分组情况以及分组对应的高度区间等元数据信息存储至本地的SQLite数据库中。紧接着,编码节点将这10个数据片段发送到对应的虚拟节点中。目标节点收到编码节点发送的数据片段后,对编码节点发送响应消息。编码节点收集到所有虚拟节点的相应后,将本次编码的元数据信息广播至分片的节点中。节点收到元数据信息广播后,删除本地LevelDB数据库中存储的交易数据,并更新本地的SQLite元数据信息存储数据库。
所述解码子模块向分片节点请求数据片段,使用规定的矩阵对数据片段进行解码,恢复被编码压缩的数据,具体步骤为:
根据请求的交易数据判定交易数据所属区块的高度范围,并确定构成的数据片段的K/L的哈希编号。
根据所述哈希编号,确定其在哈希环中的位置,并进一步确定存储数据片段的物理节点。负责编码的节点向存储数据片段的物理节点请求数据。
解码节点收到数据片段后,使用对应的系数矩阵解码恢复出被压缩的区块数据,并将请求的交易数据返回
本发明的实施例中使用局部擦除码解码数据,节点运行于Hyperledger Fabric平台上。当客户端向分片请求交易数据时,分片将请求转发至交易数据所在的分片。存储交易的分片节点首先根据存储元数据信息的SQLite数据库,判定交易数据所从属的区块号。如果区块号属于未被压缩的区块链中,那么直接从分片中的任意节点读取交易数据,并将其回送给客户端。如果请求的交易数据已被编码压缩,那么分片内随机选取节点作为解码节点。节点根据元数据信息确定存储交易数据的数据片段分组以及分组内数据片段的编号,根据编号向节点请求数据片段。解码节点对数据片段使用进行解码运算,得到原始的区块数据,并从中获取所请求的交易数据,回送至客户端。
应该理解的是,虽然本发明各实施例的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,各实施例中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一非易失性计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink) DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (7)
1.一种基于擦除码的分片区块链存储系统,其特征在于,所述系统包括:共识模块和编解码模块;
所述共识模块,在系统启动之初,根据系统预设设定的分组大小G,使用基于可信执行环境的分片生成协议将节点随机划分为大小为P的节点分片,所述分片内的所述节点共同维护一套账本数据,每个分片的账本存储此分片节点的交易数据,不同的分片账本数据共同组成整体区块链系统的数据,所述共识模块在分片节点产生区块时,通过实用容错拜占庭算法对区块进行共识,为编解码模块提供数据,在交易涉及从属于不同所述分片的账户时,所述共识模块使用二段锁协议协调同步各个所述分片内的账户数据;
所述编解码模块,通过局部擦除码对区块数据进行编码压缩和解码恢复,包括编码子模块和解码子模块,所述编码子模块在分片内未经编码压缩的区块高度超过系统预设的编码阈值H时,将所述高度为H的区块均分为K块数据块,利用局部擦除码的矩阵线性关系生成L块局部校验块和G块全局校验块,K块数据块、L块局部校验块和G块全局校验块共同组成N块数据片段,分散存储于片内节点中,解码子模块向分片节点请求数据片段,使用规定的矩阵对数据片段进行解码,恢复被编码压缩的数据。
2.根据权利要求1所述的基于擦除码的分片区块链存储系统,其特征在于,所述在系统启动之初,根据系统预设设定的分组大小P,使用基于可信执行环境的分片生成协议将节点随机划分为大小为P的节点分片的步骤,具体包括:
节点调用自身可信执行环境的随机数生成函数,生成无偏的随机数rnd和q;
当q为0时,所述节点对包含随机数rnd和轮次e的证书进行签名,并将签名证书广播通知网络中的其余节点;
所述节点等待时长后,所有节点均收到其余节点广播的证书,将所收到的最小随机数作为全局随机数,将全局随机数作为种子生成随机排列;
依据所述预设分组大小P和随机排列将所述节点随机分片为大小相等的子集,每个子集依序赋予唯一编号。
3.根据权利要求1所述的基于擦除码的分片区块链存储系统,其特征在于,所述在交易涉及从属于不同所述分片的账户时,所述共识模块使用二段锁协议协调同步各个所述分片内的账户数据的步骤,具体包括:
共识模块向交易中的每个输入账户和交易输出账户所在的分片发送请求,获取账户锁,写入对应的账户名acc和布尔值true,表明账户acc已被上锁,若分片中已经存在对应的账户名acc和布尔值true,则对账户加锁失败,跳转到下一步;
共识模块获取到所有所述交易涉及到的账户后,执行交易内容,并将对应的状态变更写入到不同分片的账本中;
共识模块向已获取账户锁的分片发送请求,释放分片内的账户锁。
4.根据权利要求1所述的基于擦除码的分片区块链存储系统,其特征在于,编码子模块在分片内未经编码压缩的区块高度超过系统预设的编码阈值H时,将所述高度为H的区块均分为K块数据块,将K块数据块等分为L组,每个分组中包含K/L块数据块;每个分组中的K/L数据块根据对应的系数矩阵计算得到局部校验块和全局校验块,共L块局部校验块和G块全局校验块。
5.根据权利要求1所述的基于擦除码的分片区块链存储系统,其特征在于,K块数据块、L块局部校验块和G块全局校验块共同组成N块数据片段,分散存储于片内节点中,具体步骤为:
为所述每个数据片段赋予一个哈希编号,并记录每个数据片段的哈希编号、L组数据分组以及分组所对应的区块高度区间信息等元数据信息;
将K块数据块、L块局部校验块和G块全局校验块的哈希编码映射到的哈希环的虚拟节点,并将对应的数据片段发送到虚拟节点所对应的物理节点上;
在目标节点收到发送的数据片段之后,负责编码的节点将数据片段的哈希编号及其和区块高度的对应关系的元数据广播到分片内的其余节点上。
6.根据权利要求1所述的基于擦除码的分片区块链存储系统,其特征在于,解码子模块向分片节点请求数据片段,使用规定的矩阵对数据片段进行解码,恢复被编码压缩的数据的步骤,具体包括:
根据请求的交易数据判定交易数据所属区块的高度范围,并确定构成的数据片段的K/L的哈希编号;
根据所述哈希编号,确定其在哈希环中的位置,并进一步确定存储数据片段的物理节点。负责编码的节点向存储数据片段的物理节点请求数据;
解码节点收到数据片段后,使用对应的系数矩阵解码恢复出被压缩的区块数据,并将请求的交易数据返回。
7.一种基于擦除码的分片区块链存储方法,其特征在于,所述方法包括:
根据系统预设设定的分组大小P,使用基于可信执行环境的分片生成协议将节点随机划分为大小为P的节点分片,所述分片内的所述节点共同维护一套账本数据,每个分片的账本存储此分片节点的交易数据,不同的分片账本数据共同组成整体区块链系统的数据,在分片节点产生区块时,通过实用容错拜占庭算法对区块进行共识,为编解码模块提供数据,在交易涉及从属于不同所述分片的账户时,使用二段锁协议协调同步各个所述分片内的账户数据;
通过局部擦除码对区块数据进行编码压缩和解码恢复,在分片内未经编码压缩的区块高度超过系统预设的编码阈值H时,将所述高度为H的区块均分为K块数据块,利用局部擦除码的矩阵线性关系生成L块局部校验块和G块全局校验块,K块数据块、L块局部校验块和G块全局校验块共同组成N块数据片段,分散存储于片内节点中,向分片节点请求数据片段,使用规定的矩阵对数据片段进行解码,恢复被编码压缩的数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310941523.5A CN116974474A (zh) | 2023-07-28 | 2023-07-28 | 一种基于擦除码的分片区块链存储系统及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310941523.5A CN116974474A (zh) | 2023-07-28 | 2023-07-28 | 一种基于擦除码的分片区块链存储系统及方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116974474A true CN116974474A (zh) | 2023-10-31 |
Family
ID=88480954
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310941523.5A Pending CN116974474A (zh) | 2023-07-28 | 2023-07-28 | 一种基于擦除码的分片区块链存储系统及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116974474A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114331395A (zh) * | 2021-12-22 | 2022-04-12 | 南京航空航天大学 | 一种基于纠删码的区块链数据分组存储优化结构及方法 |
-
2023
- 2023-07-28 CN CN202310941523.5A patent/CN116974474A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114331395A (zh) * | 2021-12-22 | 2022-04-12 | 南京航空航天大学 | 一种基于纠删码的区块链数据分组存储优化结构及方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20220368457A1 (en) | Distributed Storage System Data Management And Security | |
EP3673376B1 (en) | Log-structured storage systems | |
WO2021003985A1 (zh) | 区块链数据归档存储方法、装置、计算机设备和存储介质 | |
EP3669263B1 (en) | Log-structured storage systems | |
US11036395B2 (en) | Secure and transparent pruning for blockchains | |
US11294881B2 (en) | Log-structured storage systems | |
US11423015B2 (en) | Log-structured storage systems | |
US10885022B1 (en) | Log-structured storage systems | |
EP3695303B1 (en) | Log-structured storage systems | |
US11422728B2 (en) | Log-structured storage systems | |
CN111183420A (zh) | 日志结构存储系统 | |
EP3695304B1 (en) | Log-structured storage systems | |
CN112835743B (zh) | 分布式账本数据存储优化方法、装置、电子设备及介质 | |
CN110651246B (zh) | 一种数据读写方法、装置和存储服务器 | |
CN116974474A (zh) | 一种基于擦除码的分片区块链存储系统及方法 | |
US20210081320A1 (en) | Log-structured storage systems | |
CN109067849B (zh) | 基于区块的数据同步方法 | |
CN115499244A (zh) | 一种基于数据湖的流式数据安全传输和存储方法 | |
Tian et al. | Sed‐Dedup: An efficient secure deduplication system with data modifications | |
CN114723444A (zh) | 一种用于并行投票共识的数据分片方法 | |
CN109063493B (zh) | 去中心化高性能同步方法 | |
CN116366682A (zh) | 区块链数据存储方法及装置 | |
CN117527815A (zh) | 一种去中心化的对象存储跨集群扩容方法 | |
CN115905411A (zh) | 区块链数据存储方法及装置 | |
CN116795790A (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 |