CN114866561B - 一种组合本地纠删码联盟链存储方法及系统 - Google Patents
一种组合本地纠删码联盟链存储方法及系统 Download PDFInfo
- Publication number
- CN114866561B CN114866561B CN202210477205.3A CN202210477205A CN114866561B CN 114866561 B CN114866561 B CN 114866561B CN 202210477205 A CN202210477205 A CN 202210477205A CN 114866561 B CN114866561 B CN 114866561B
- Authority
- CN
- China
- Prior art keywords
- block
- node
- blocks
- time delay
- data
- 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.)
- Active
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/104—Peer-to-peer [P2P] networks
- H04L67/1044—Group management mechanisms
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/104—Peer-to-peer [P2P] networks
- H04L67/1059—Inter-group management mechanisms, e.g. splitting, merging or interconnection of groups
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Theoretical Computer Science (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种组合本地纠删码联盟链存储方法及系统。方法包括以下步骤:S1、将区块链中各节点划分成各个不同的时延圈,其中每个节点均独立拥有时延圈;S2、根据需要选择每r个时延圈为一个组,每一组生成一个局部校验块;S3、若需要进行块修复时,将该r个时延圈各自内部的块进行组合,再以一个组合块的形式传输到丢失块的节点上。本发明在现有纠删码技术应用于区块链的基础上,引入局部分布和拓扑分布的组合本地分布。将各节点划分到各时延圈,节点修复过程首先在时延圈内进行初处理,之后再将处理后的块发到目标节点。在将单区块的存储开销降为O(1)的同时,将单块失效的修复开销也降低为O(1),相比传统纠删码与区块链结合的技术所需要的O(k),k是数据块个数,大大降低了存储开销。
Description
技术领域
本发明涉及联盟链技术领域,更具体地说,特别涉及一种组合本地纠删码联盟链存储方法及系统。
背景技术
域名系统(Domain Name System,DNS)是互联网的重要基础设施,其主要作用是建立域名与IP地址之间的映射关系,使用户能够通过域名访问互联网上的其他应用。根据CNNIC于2021年2月发布的第47次《中国互联网络发展状况统计报告》显示,截至2021年2月,中国的网民数量已达到9.89亿,互联网应用规模仍在平稳增长,直播、短视频、网购的用户规模显著增长,互联网应用与现代生活水乳交融,在给大众生活提供便利的同时,也给互联网基础应用增加了更大的压力。
DNS系统为来自全球的网络查询提供域名解析服务,中国的顶级域名‘.CN’每天被请求的次数超过10亿次,而DNS协议在设计之初对安全性设计不足导致DNS系统频繁地遭到恶意攻击,如DDos、域名劫持、域名投毒等攻击给各方都带来了巨大的损失。 DNS系统的脆弱性使得设计一种新型域名系统变得尤为重要。
而区块链作为一种由所有节点共同维护的只可追加的账本,可工作在不可信的环境之中。为了防止区块被恶意节点所更改,区块链中的区块由区块头中的加密哈希值所连接。一般来说,传统区块链需要在每个节点都存一份完整的区块链数据的副本,以及共识协议,比如说在公有链中使用的就是Pow,而在联盟链中最常用的便是Practical ByzantineFault Tolerance(PBFT)协议,确保了整个网络的数据一致性。然而,对于每个区块来说,其存储开销是O(n),n为网络中节点的数量。对于这种全副本区块链,每个节点需要花费大量的存储开销来保存整个链,比如说:如今区块链的大小为360GB,并以每日0.2GB 的速度稳步增大。如此大的存储开销,无疑给新节点的加入区块链制造了较大的准入门槛。最终将导致拥有存储资源的企业或个人才能拥有加入该网络的资格,无形中便形成了巨头垄断的局面,破坏了去中心化的初衷。
Qi团队所提出的BFT-store方案[Qi X,Zhang Z,Jin C,et al.A reliablestorage partition for permissioned blockchain[J].IEEE Trans.Knowl.Data Eng.,2021,33(1):14-27]较完善地提供了一种将区块链与纠删码技术相结合的方法。但也有许多不足的地方。假如说在PBFT协议下, BFT-store对原本完整的区块链数据进行了纠删编码,并且分别存在了不同节点上,这虽说大大降低了存储开销。但是当要读取某个区块上存储的数据时,需要到存储了该数据块的节点上去取数据,而不是像传统区块链存储那样在本地就可以取到该数据。因此当存储节点失效时(比如拒绝响应读请求以及给出错误数据块时),就需要向所有节点发送重构请求。各节点收到重构请求后,会将本地存储的块传给请求节点,当请求节点收集到n-2f 个正确纠删编码块后,并将它们进行重构计算,才能够将该数据块恢复出来。而在PBFT 协议中,块失效的概率最大为1/3。而每次失效都需要网络中传输n-2f个编码块,即 f+i(1≤i≤3)个编码块。这无疑会造成巨大的网络开销。而在Zilliqa[L.Luu et al.,“A secure sharding protocol for open blockchains,”inProc.ACM SIGSAC Conf.Comput.Commun. Secur.,2016,pp.17–30]协议和Ripple[D.Schwartz et al.,“The ripple protocol consensus algorithm,”Rip-ple Labs IncWhite Paper,vol.5,2014]中,其块失效的概率分别约为1/4和 1/5,而块失效后的repairpenalty分别是2f+i(1≤i≤4)和3f+i(1≤i≤5),无疑在这后面这两种情况下,降低块失效的repair penalty非常重要。BFT-store一文中通过设置多副本,使得降低了块失效的概率,提高了系统的吞吐率,并且降低了读延迟。但这样也会同时成倍地增加存储开销。而对于日志这种冷数据而言,为了降低块修复概率而选择使用多副本是不合适的。因此,在纠删码编码的方向做一些改进是比较合理的。
BFT-store中使用的是Reed-Solomon编码(RS编码),这也是最常用的编码方案。Reference[Hu Y,Cheng L,Yao Q,Lee PPC,Wang W,Chen W.“Exploiting CombinedLocality for Wide-Stripe Erasure Coding in Distributed Storage,”pp.232-248,2021]里描述了一种宽条带的编码方案,为了兼顾存储开销和修复性能,它将rack分组,并计算得出每个rack应该中放置多少个编码块,每组生成一个局部校验块。这篇文章中所提出的方法是parity Locality和topology locality的tradeoff。它在降低存储开销的同时,保证了当有节点失效时repair penalty比较小。但是该文章的背景是在非拜占庭环境实现的。对于区块链存储而言,是不适用的。且对于该文中所提到的rack概念,同一个rack内通信时延低,因此在修复时,同rack内的数据先进行组合,之后再将组合后的数据块传输出去。在同一个 rack中,其可信性和可靠性是高度相似的,也就是说当一个节点失效时(被攻击或者断电),其它节点也有很大概率会失效。而在区块链环境中,各节点的可靠性与是否可信是相互独立的,彼此之间不应有强关联关系。并且由于当数据块在rack内组合,再将之往外传输,而这个过程中生成的块的正确性是无法确定的。因为在区块链的共识过程中,只保留了各编码块的哈希值,组合后生成的块是全新的数据块,其信息并未被区块链记录。
为了解决区块链的高存储开销问题,现有工作提出了很多解决办法。比如:使用链下存储的方法,将数据和数据摘要分离,区块链上只保留了数据通过SHA-256生成的摘要,而在链下基于分布式哈希表的分布式对象存储中存储这个摘要对应的数据。再比如:一种基于IPFS的区块链数据存储模型解决区块链技术的存储瓶颈,其中矿工将交易数据存入IPFS网络,并将返回的交易IPFS散列打包到区块中,显著地减少了区块链中保存的数据量。这两种方法都是将链上存储中所有节点共同承担的存储压力转移到了链下。虽说减轻了各节点的存储压力,降低了节点的加入门槛,但与此同时,也降低了数据的安全性,即当链下存储的数据被篡改时,只能通过区块链查得存储的数据是错误的,而不能通过区块链将正确数据恢复。
除了使用链下存储的方式,更普遍的方式还是使用链上存储。为了降低链上存储的存储开销,有团队提出了一种基于分组的协作式存储方法,即将整个网络分成多个组,每个组存储一部分数据。在同一个组中,每个节点也会保留部分数据块的完整拷贝。除此之外,对链上数据块进行纠删码编码也是一种新颖的思路。Perard D等学者提出:可以将区块编码成各个块,分发到各节点存储。但这样的方法破坏了区块的完整性,每次去读区块信息都需要从网络中将各个块收集起来后解码再读,读性能较差。也有提出一种纠删码结合区块链的方案。与Perard D团队不同,Qi团队不是将区块编码成各个编码块,而是收集了一定区块后,统一编码。这样相比将区块编码的方法,其好处是可以保证区块的完整性,当要读某个区块时,不需要去全网收集编码块,而是找到对应数据块存储的节点,去读取。除此之外,为了提升读性能,Qi团队还将多副本与缓存技术加入其中。并且考虑了当节点加入或退出的重编码问题。为此,有必要开发一种组合本地纠删码联盟链存储方法及系统。
发明内容
本发明的目的在于提供一种组合本地纠删码联盟链存储方法及系统,以克服现有技术所存在的缺陷。
为了达到上述目的,本发明采用的技术方案如下:
一种组合本地纠删码联盟链存储方法,包括以下步骤:
S1、将区块链中各节点划分成各个不同的时延圈,其中每个节点均独立拥有时延圈;
S2、根据需要选择每r个时延圈为一个组,每一组生成一个局部校验块;
S3、若需要进行块修复时,将该r个时延圈各自内部的块进行组合,再以一个组合块的形式传输到丢失块的节点上。
进一步地,所述步骤S1中的每个节点由客户端、数据读取模块、数据恢复模块组成,经过共识算法确认的区块被广播到网络并且自身会通过纠删码编码,每一份数据由各个节点自行保存,若客户端接受到访问请求,则会通过数据读取模块进行三种数据访问,包括本地读取、远程读取和解码读取,若访问的区块存储在本节点内,则直接返回对应数据,若访问的区块不在本地,则访问远程节点获取对应区块,若区块不在本地,且目标节点没有响应,则本地节点通过解码引擎进行数据恢复,计算出对应区块的数据。
进一步地,所述数据恢复模块在节点故障时恢复区块数据,通过解码引擎,故障节点重新上线后解码出完整区块链的数据,再通过编码引擎进行编码,客户端将共识算法验证过的区块缓存在本地,直至满足区块数量到达设置的编码阈值,再对这些区块进行编码并选择保留部分数据。
进一步地,所述步骤S1具体为将区块链中各节点根据地理距离、通信延时划分为若干个时延圈。
进一步地,所述步骤S3在进行块修复时,丢失块的节点向所在组的所有节点提出修复块请求,该组内各个时延圈内选择一个汇总节点,并由该汇总节点收集该时延圈内的所有块,来合成一个新的块,传输给目标节点;记录同所述时延圈内各数据块组合生成组合块的哈希值,在当目标节点收到各时延圈发来的组合块时,通过查验区块链上记录的该组合块的哈希值来判断各组合块是否正确。
进一步地,步骤S1中划分时延圈的步骤具体为:节点首先需要向网络中各节点发送一个消息,计算该消息发到各节点的时延,找出通信时延最低的节点N,若该时延小于预设值tthreshold,则将新加入的Nnew划分至N所在时延圈,否则将会新建一个时延圈,将 Nnew放入其中。
本发明还提供一种根据上述的组合本地纠删码联盟链存储方法的系统,包括:
划分模块,用于将区块链中各节点划分成各个不同的时延圈,其中每个节点均独立拥有时延圈;
生成模块,用于根据需要选择每r个时延圈为一个组,每一组生成一个局部校验块;
组合传输模块,用于在若需要进行块修复时,将该r个时延圈各自内部的块进行组合,再以一个组合块的形式传输到丢失块的节点上。
与现有技术相比,本发明的优点在于:本发明在现有纠删码技术应用于区块链的基础上,引入局部分布和拓扑分布的组合本地分布。将各节点划分到各时延圈,节点修复过程首先在时延圈内进行初处理,之后再将处理后的块发到目标节点。在将单区块的存储开销降为O(1)的同时,将单块失效的修复开销也降低为O(1),相比传统纠删码与区块链结合的技术所需要的O(k),k是数据块个数,大大降低了存储开销。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明组合本地纠删码联盟链存储方法的流程图。
图2是本发明中的时延圈分布图。
图3是本发明中单节点的架构图。
图4是本发明与现有技术的存储开销对比图。
图5是本发明与现有技术不同错误节点数量的平均修复时间对比图。
图6是本发明组合本地纠删码联盟链存储系统的原理图。
具体实施方式
下面结合附图对本发明的优选实施例进行详细阐述,以使本发明的优点和特征能更易于被本领域技术人员理解,从而对本发明的保护范围做出更为清楚明确的界定。
参阅图1和图2所示,本实施例公开了一种组合本地纠删码联盟链存储方法(CLEC:Combination Locality Based Erasure Code for Permissioned Blockchain Storage,CLEC),在区块链存储结合纠删码技术的基础上,改进了编码方案。
本实施例包括以下步骤:
步骤S1、将区块链中各节点划分成各个不同的时延圈,其中每个节点均独立拥有时延圈。
步骤S2、根据需要选择每r个时延圈为一个组,每一组生成一个局部校验块。
步骤S3、若需要进行块修复时,将该r个时延圈各自内部的块进行组合,再以一个组合块的形式传输到丢失块的节点上。
本实施例大大降低了跨时延圈传输时延。
本实施例在进行块修复时,丢失块的节点(目标节点)向所在组的所有节点提出修复块请求,该组内各个时延圈内选择一个汇总节点(丢失块所在节点就是该时延圈的汇总节点),并由该汇总节点收集该时延圈内的所有块,来合成一个新的块,传输给目标节点,但同时,会引入一个问题,即传输给目标节点的各汇总节点的可信度是未知的,而新生成的组合块的信息也是事先未被存储到区块链上的。也就是说该组成块是否是正确的是无法查验的。因此,本实施例在编码过程中,记录同所述时延圈内各数据块组合生成组合块的哈希值(但是并不保留该组合块),在当目标节点收到各时延圈发来的组合块时,通过查验区块链上记录的该组合块的哈希值来判断各组合块是否正确。
结合图2所示,CLEC主要分为两个部分,整个系统根据地理距离/通信延时等因素分为了若干个时延圈,每个节点都有属于自己的时延圈,时延圈内彼此通信的延迟非常低,而时延圈间彼此通信的延迟较高。而对于每个节点,具体的系统架构如图3所示,每个节点相比传统区块链而言多了一个纠删码层。
当新节点加入CLEC时的过程,本实施例会给该节点划分时延圈,该节点首先需要向网络中各节点发送一个消息,然后计算该消息发到各节点的时延。找出通信时延最低的节点N,若该时延小于时间阈值tthreshold,则将新加入的节点Nnew划分至N所在时延圈,否则将会新建一个时延圈,将Nnew放入其中,具体算法为:
本实施例中,每个节点由客户端、数据读取模块、数据恢复模块组成,经过共识算法确认的区块被广播到网络,同时自身会通过纠删码编码保留部分数据。
纠删码编码后,每一份数据都由各个节点自行保存,不保留多其余的数据。若客户端接受到访问请求,则会通过数据读取模块进行三种数据访问,分别是本地读取、远程读取和解码读取。若访问的区块就存储在本节点内,则直接返回对应数据。若访问的区块不在本地,则访问远程节点获取对应区块。若区块不在本地,且目标节点没有响应,则本地节点通过解码引擎进行数据恢复,矩阵运算或异或方式计算出对应区块的数据。
所述数据恢复模块在节点故障时恢复区块数据,通过解码引擎,故障节点重新上线后解码出完整区块链的数据,再通过编码引擎进行编码,客户端将共识算法验证过的区块缓存在本地,直至满足区块数量到达设置的编码阈值,再对这些区块进行编码并选择保留部分数据。
编码方案如下表所示。
CLEC不是将一个区块分别编码成各个编码块,因为这样会导致每次要读一个区块时,都需要去区块链网络中将各个编码块收集起来,再拼接成一个完整的区块,会导致读性能显著下降。而是待收集了n-2f-lp+1个区块后,将它们编码成n个块,其中有n-2f-lp+1个数据块,2f-1个全局数据块,lp个局部校验块。各块分别放置在不同的group中,每个 group安排一个局部校验块。
当节点访问本地,以及访问目标节点都无法获取目标块时,开启块修复过程。因此,本实施例中只考虑单点修复问题。编码分为三步:1、收集到k个区块;2、将它编码成k 个数据块,2f-1个RS编码块,每个存有数据块的group生成一个局部校验块。每个节点按照规定保存块与各块的哈希值。该规定是在所有节点都有效的,因此每个节点都知道自己所在的时延圈内有哪些块。并且每个节点都会将各存有数据块的组内的chunks进行异或,算得一个组合块,并广播共识。3、各节点根据放置算法保留对应的数据块或校验块,并保留所有块包括各时延圈的组合块的元数据,但不会存储上一步所说的组合块。计算组合块并保存其元数据是为重构读做准备。
在不考虑拜占庭攻击节点的情况下并且在引入局部校验块的场景下,系统可以抵御 gp+1个节点失效。
n=k+lp+f-1 (1)
gp=f-1 (2)
由(1),(3)式可得:
由于各时延圈内的节点数量可能是不同的,而分组只能以时延圈为单位,因此共分 lp组,而只有包含了数据块的组才需要局部校验块,为保证每组包含的时延圈数目相差最小,因此前ddc mod lp个组包含个时延圈,后ddc-(ddc mod lp)个组包含/>个时延圈。
又因为:为了抵御f个恶意节点,若采用RS编码,应当使用RS(n-2f,2f)的编码方案。同时在区块链场景下,数据块k所占节点数比例需大于则k=(α-2)f+i(1≤i≤f),因此在引入到区块链环境下,因为存在恶意节点,需要对上述各式进行调整:
n=αf+i+lp-1(1≤i≤f) (5)
gp=2f-1 (6)
由(5)式可得由于(1≤i≤f),因此可得(7)式,取f的最大值,即因为lp数量越多,单块失效的修复速度越快,因此取而全局校验块个数为2f-1,数据块的个数为n-lp-2f+1。取n=20,γ=1.7,dc= 7,ddc=5为例,取α=5,即在Ripple协议下,可得f=3,lp=3,gp=5,k=12。且包含数据块的时延圈分为三组,第一组包含2个时延圈,第二组包含3个时延圈,具体如图4 所示。
当客户端发起读请求时,首先查找本地是否存有目标块,若不是存在本地,则通过本地记录的元数据信息查到该目标块存储的位置,去目标节点取数据块,而当有节点失效时,需开启重构读流程,具体程序如下:
其中,Nc是发起读请求的节点,当Nc无法从本地或其它节点直接获得数据块时,会向目标节点Nt所在组的所有节点发送一个重构读请求<reconstruct,name of targetblock>。第1-3行指的是通过Nc本地存储的元数据,获知存有目标块Bt的节点Nt,并且获知它所在的组,使组内的各块在各时延圈内组合,由于组内使用了局部校验块,因此只需要将各块进行异或运算进行组合。第4-5行指的是组内各时延圈将块组合完毕后以一个组合块的形式发给节点Nc,节点Nc收到足够多正确的组合块后开启重构过程。这里存在一个问题,即各时延圈的组合块是不存储在节点上的,因此其在时延圈内组合后的正确与否是无法判断的。针对这个问题,本实施例在编码过程中,会计算出各时延圈的组合块及其哈希值,并进行共识,将该哈希值存储到各节点中,但并不存储组合块。因此在重构读过程中,当收到其他组传来的组合块时,就可以通过之前存储的组合块哈希来验证组合块的正确性。
本实施例相比BFT-store方案大大降低了修复开销,在BFT-store中,节点修复过程需要向网络中去取n-2f个块,并且节点失效概率最大可能达到在PBFT,Zilliqa和Ripple协议中则分别为/>这无疑对系统的网络开销是极大的负担。而在CLEC中,节点失效的修复开销等于各时延圈内部各块的组合和传输时间,以及将组合块传回请求块节点的时间,而时延圈内部的传输时延远小于跨时延圈传输时延,几乎可以忽略。因此在 CLEC中,块修复的网络开销近似于组内时延圈的数量的块,远低于BFT-store方案的网络开销。
举例说明,在Ripple协议下,总节点数是20节点时,BFT-store方案中编码方案为RS(14,6),因此当一个块失效时,需要向网络中去取14个块才能将该块恢复,消耗的网络带宽是14个块,且由于要去不同的节点取块,其延迟也会很大。而在如图4所示的情况下,跨时延圈只需要传输一个块,加上时延圈内部传输块,所消耗的网络带宽是5个块,且由于同时延圈内部传输速度快,跨时延圈传输速度慢,这也会大大降低传输时间。因此可以很好地提升读性能和修复性能。
实验在Tendermint(开源的区块链系统)上实现了BFT-store与CLEC,所有实验都是在阿里云平台上搭建实现。实验共使用20台机器。网络带宽是200Mbps。所有机器的系统都是centos7。机器共分布在7个地区,可模拟7个时延圈。时延圈之间与时延圈内彼此传输4MB的块所耗时延。对角线的内容是时延圈内部通信所需要的时延。
本实施例首先测试了一下节点的存储开销,节点数从15变化到20,本实施例假设区块链的每个区块大小为4MB,即每个chunk的大小也都是4MB。从图4可以看出,在不同α情况下,即在不同的共识协议下,CLEC和BFTstore的存储开销几乎差不多。BFTstore 的存储冗余度会略低于CLEC。以α=5,n=20为例。在BFTstore中,每个区块的平均存储开销为6MB,存储冗余度为1.5,而在CLEC中,每个区块的平均存储开销为7MB,存储冗余度为1.75。CLEC的存储冗余度大约是BFTstore的1.67倍。
以20个节点,α=5为例,其可容忍的错误节点数最多为3个。假设CLEC中共有三个局部校验块,所有节点分布在7个时延圈内。通过测试不同faulty nodes的修复速度。结果如图5所示,对于不同错误节点数量,BFT-store的平均修复时间几乎不变,都是3.08 秒。而CLEC的修复时间随错误节点数增加而缓慢增加,因为若是同一组内的节点同时失效,则需要使用全局校验块来修复该块,会导致修复时间延长,但最大也不会超过0.51。 BFT-store的修复时延约为CLEC的6倍,可见CLEC可以显著降低块失效后的修复时间。
参阅图6所示,本实施例还提供一种根据上述的组合本地纠删码联盟链存储方法的系统,包括:
划分模块1,用于将区块链中各节点划分成各个不同的时延圈,其中每个节点均独立拥有时延圈;
生成模块2,用于根据需要选择每r个时延圈为一个组,每一组生成一个局部校验块;
组合传输模块3,用于在若需要进行块修复时,将该r个时延圈各自内部的块进行组合,再以一个组合块的形式传输到丢失块的节点上。
本发明在现有纠删码技术应用于区块链的基础上,引入局部分布和拓扑分布的组合本地分布。将各节点划分到各时延圈,节点修复过程首先在时延圈内进行初处理,之后再将处理后的块发到目标节点。在将单区块的存储开销降为O(1)的同时,将单块失效的修复开销也降低为O(1),相比传统纠删码与区块链结合的技术所需要的O(k),k是数据块个数,大大降低了存储开销。
虽然结合附图描述了本发明的实施方式,但是专利所有者可以在所附权利要求的范围之内做出各种变形或修改,只要不超过本发明的权利要求所描述的保护范围,都应当在本发明的保护范围之内。
Claims (4)
1.一种组合本地纠删码联盟链存储方法,其特征在于,包括以下步骤:
S1、将区块链中各节点划分成各个不同的时延圈,其中每个节点都有属于自己的时延圈;
S2、根据需要选择每r个时延圈为一个组,每一组生成一个局部校验块;
S3、若需要进行块修复时,将该r个时延圈各自内部的块进行组合,再以一个组合块的形式传输到丢失块的节点上;
所述步骤S1中的每个节点由客户端、数据读取模块、数据恢复模块组成,经过共识算法确认的区块被广播到网络并且自身会通过纠删码编码,每一份数据由各个节点自行保存,若客户端接受到访问请求,则会通过数据读取模块进行三种数据访问,包括本地读取、远程读取和解码读取,若访问的区块存储在本节点内,则直接返回对应数据,若访问的区块不在本地,则访问远程节点获取对应区块,若区块不在本地,且目标节点没有响应,则本地节点通过解码引擎进行数据恢复,计算出对应区块的数据;
所述数据恢复模块在节点故障时恢复区块数据,通过解码引擎,故障节点重新上线后解码出完整区块链的数据,再通过编码引擎进行编码,客户端将共识算法验证过的区块缓存在本地,直至满足区块数量到达设置的编码阈值,再对这些区块进行编码并选择保留部分数据;
所述步骤S3在进行块修复时,丢失块的节点向所在组的所有节点提出修复块请求,该组内各个时延圈内选择一个汇总节点,并由该汇总节点收集该时延圈内的所有块,来合成一个新的块,传输给目标节点;记录同所述时延圈内各数据块组合生成组合块的哈希值,在当目标节点收到各时延圈发来的组合块时,通过查验区块链上记录的该组合块的哈希值来判断各组合块是否正确。
2.根据权利要求1所述的组合本地纠删码联盟链存储方法,其特征在于,所述步骤S1具体为将区块链中各节点根据地理距离、通信延时划分为若干个时延圈。
3.根据权利要求1所述的组合本地纠删码联盟链存储方法,其特征在于,步骤S1中划分时延圈的步骤具体为:节点首先需要向网络中各节点发送一个消息,计算该消息发到各节点的时延,找出通信时延最低的节点N,若该时延小于预设值tthreshold,则将新加入的Nnew划分至N所在时延圈,否则将会新建一个时延圈,将Nnew放入其中。
4.一种根据权利要求1-3任意一项所述的组合本地纠删码联盟链存储方法的系统,其特征在于,包括:
划分模块,用于将区块链中各节点划分成各个不同的时延圈,其中每个节点都有属于自己的时延圈;
生成模块,用于根据需要选择每r个时延圈为一个组,每一组生成一个局部校验块;
组合传输模块,用于在若需要进行块修复时,将该r个时延圈各自内部的块进行组合,再以一个组合块的形式传输到丢失块的节点上。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210477205.3A CN114866561B (zh) | 2022-05-03 | 2022-05-03 | 一种组合本地纠删码联盟链存储方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210477205.3A CN114866561B (zh) | 2022-05-03 | 2022-05-03 | 一种组合本地纠删码联盟链存储方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114866561A CN114866561A (zh) | 2022-08-05 |
CN114866561B true CN114866561B (zh) | 2023-09-01 |
Family
ID=82636152
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210477205.3A Active CN114866561B (zh) | 2022-05-03 | 2022-05-03 | 一种组合本地纠删码联盟链存储方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114866561B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107656832A (zh) * | 2017-09-18 | 2018-02-02 | 华中科技大学 | 一种低数据重建开销的纠删码方法 |
WO2020035086A2 (en) * | 2019-11-06 | 2020-02-20 | Alipay (Hangzhou) Information Technology Co., Ltd. | Data security of shared blockchain data storage based on error correction code |
CN111367859A (zh) * | 2018-12-26 | 2020-07-03 | 北京邦天信息技术有限公司 | 一种区块链交易数据的存储方法及系统 |
CN113225395A (zh) * | 2021-04-30 | 2021-08-06 | 桂林电子科技大学 | 一种多数据中心环境下的数据分布策略及数据修复算法 |
CN114047878A (zh) * | 2021-11-09 | 2022-02-15 | 中山大学 | 一种面向区块链域名解析的纠删码低开销存储系统及方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020047707A1 (zh) * | 2018-09-03 | 2020-03-12 | 深圳花儿数据技术有限公司 | 分布式存储系统的数据编码、解码及修复方法 |
-
2022
- 2022-05-03 CN CN202210477205.3A patent/CN114866561B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107656832A (zh) * | 2017-09-18 | 2018-02-02 | 华中科技大学 | 一种低数据重建开销的纠删码方法 |
CN111367859A (zh) * | 2018-12-26 | 2020-07-03 | 北京邦天信息技术有限公司 | 一种区块链交易数据的存储方法及系统 |
WO2020035086A2 (en) * | 2019-11-06 | 2020-02-20 | Alipay (Hangzhou) Information Technology Co., Ltd. | Data security of shared blockchain data storage based on error correction code |
CN113225395A (zh) * | 2021-04-30 | 2021-08-06 | 桂林电子科技大学 | 一种多数据中心环境下的数据分布策略及数据修复算法 |
CN114047878A (zh) * | 2021-11-09 | 2022-02-15 | 中山大学 | 一种面向区块链域名解析的纠删码低开销存储系统及方法 |
Non-Patent Citations (1)
Title |
---|
Exploiting Combined Locality for Wide-Stripe Erasure Coding in Distributed Storage;Yuchong Hu;19th USENIX Conference on File and Storage Technologies;233-248 * |
Also Published As
Publication number | Publication date |
---|---|
CN114866561A (zh) | 2022-08-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8984363B1 (en) | Proof of retrievability for archived files | |
Qi et al. | BFT-Store: Storage partition for permissioned blockchain via erasure coding | |
Qi et al. | A reliable storage partition for permissioned blockchain | |
Cao et al. | LT codes-based secure and reliable cloud storage service | |
US9329940B2 (en) | Dispersed storage having a plurality of snapshot paths and methods for use therewith | |
US9170882B2 (en) | Retrieving data segments from a dispersed storage network | |
US5530757A (en) | Distributed fingerprints for information integrity verification | |
CN109194646B (zh) | 一种基于区块链的安全认证数据存取方法 | |
TWI759791B (zh) | 基於錯誤校正碼的共享區塊鏈資料儲存的方法、系統及裝置 | |
Wang et al. | ConsortiumDNS: A distributed domain name service based on consortium chain | |
WO2014056381A1 (zh) | 数据冗余实现方法及装置 | |
CN112615847B (zh) | 基于区块链的数据共享和隐私保护方法 | |
CN108810112A (zh) | 一种市场监管区块链系统的节点同步方法及装置 | |
CN113986143A (zh) | 一种面向区块链日志存储的高可靠低开销数据存储方法 | |
CN114866561B (zh) | 一种组合本地纠删码联盟链存储方法及系统 | |
CN114047878A (zh) | 一种面向区块链域名解析的纠删码低开销存储系统及方法 | |
Weatherspoon et al. | Naming and integrity: Self-verifying data in peer-to-peer systems | |
Yu et al. | On distributed object storage architecture based on mimic defense | |
CN114915377A (zh) | 一种基于喷泉码的联盟链存储系统 | |
CN110602251B (zh) | 基于节点间数据共享的数据处理方法、设备、装置、介质 | |
CN115499453A (zh) | 面向联盟链的分片存储方法 | |
Wang et al. | A data lightweight scheme for parallel proof of vote consensus | |
Wu et al. | CLEC: Combination Locality Based Erasure Code for Permissioned Blockchain Storage. | |
Guo et al. | BFT-DSN: A Byzantine Fault Tolerant Decentralized Storage Network | |
CN111786943B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |