CN118018561A - 一种基于拜占庭容错去中心化存储网络的文件管理方法 - Google Patents

一种基于拜占庭容错去中心化存储网络的文件管理方法 Download PDF

Info

Publication number
CN118018561A
CN118018561A CN202410144039.4A CN202410144039A CN118018561A CN 118018561 A CN118018561 A CN 118018561A CN 202410144039 A CN202410144039 A CN 202410144039A CN 118018561 A CN118018561 A CN 118018561A
Authority
CN
China
Prior art keywords
file
bft
block
storage
dsn
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
CN202410144039.4A
Other languages
English (en)
Inventor
徐明辉
郭河川
张家豪
张伟琦
成秀珍
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shandong University
Original Assignee
Shandong University
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 Shandong University filed Critical Shandong University
Priority to CN202410144039.4A priority Critical patent/CN118018561A/zh
Publication of CN118018561A publication Critical patent/CN118018561A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明涉及文件管理技术领域,具体地说,涉及一种基于拜占庭容错去中心化存储网络的文件管理方法。区块链节点根据其提供的功能进行分类:编码、存储和检索;具体包括:编码区块链节点将来自客户端的文件编码成块,并将它们分配给存储区块链节点;存储区块链节点以扇区为单位提供存储空间,并将收到的文件块存储在其扇区中;检索区块链节点从存储区块链节点处收集文件块,对其进行解码,然后将恢复的文件发送给提出请求的客户端。本发明设计利用同态指纹和阈值签名来验证编码过程的正确性和块的完整性,可以有效防止拜占庭攻击者、保障安全;利用存储加权BFT共识算法考虑了存储区块链节点贡献的存储资源数量的差异,实现了最佳拜占庭弹性。

Description

一种基于拜占庭容错去中心化存储网络的文件管理方法
技术领域
本发明涉及文件管理技术领域,具体地说,涉及一种基于拜占庭容错去中心化存储网络的文件管理方法。
背景技术
随着互联网的普及和数字化时代的到来,越来越多的数据被存储在网络上。随着大数据、云计算和物联网等技术的发展,数据量呈现爆炸式增长,对数据存储和管理的要求也越来越高。在当今数字化时代,数据存储和管理已经成为各种组织和个人的核心需求。传统的集中式存储系统在数据安全性、可靠性和扩展性方面面临着巨大的挑战。而传统的中心化存储方式存在着一些问题,例如数据安全性不高、隐私泄露风险大、存储成本较高等。因此,去中心化存储网络应运而生,它能够有效地解决这些问题。
去中心化存储网络是一种基于区块链技术的分布式存储系统,它将数据分散存储在多个节点上,从而提高了数据的可靠性和安全性。然而,去中心化存储网络在实际应用中仍然面临着一些问题,如数据篡改、节点故障、恶意攻击以及拜占庭容错问题。
拜占庭容错问题是分布式计算领域中的经典问题,它是指在分布式系统中,由于通信延迟、数据不一致等因素导致系统中的节点无法达成一致的决策。在去中心化存储网络中,拜占庭容错问题表现为多个节点之间无法达成一致的数据副本,从而导致数据不一致和数据丢失等问题。
拜占庭容错是一种分布式计算领域的容错技术,它允许在一定数量的恶意节点存在的情况下,系统仍然能够正常运行。拜占庭容错技术通过引入冗余和一致性协议,确保系统中的诚实节点能够达成共识并执行正确的操作。将拜占庭容错技术应用于去中心化存储网络,可以提高网络的安全性和稳定性,抵御恶意攻击和节点故障等问题。鉴于此,我们提出了一种基于拜占庭容错去中心化存储网络的文件管理方法。
发明内容
本发明的目的在于提供一种基于拜占庭容错去中心化存储网络的文件管理方法,以解决上述背景技术中提出的问题。
为实现上述技术问题的解决,本发明的目的之一在于,提供了一种基于拜占庭容错去中心化存储网络的文件管理方法,拜占庭容错去中心化存储网络BFT-DSN是一种结合了BFT擦除编码和BFT共识以获得最佳弹性的DSN;在BFT-DSN中,区块链节点根据其提供的功能进行分类:编码、存储和检索;具体文件管理方法包括如下步骤:
S1、编码区块链节点将来自客户端的文件编码成块,并将它们分配给存储区块链节点;
本步骤中,BFT-DSN利用同态指纹和阈值签名来验证编码过程的正确性和块的完整性,以保证安全,防止拜占庭攻击者;
S2、存储区块链节点以扇区为单位提供存储空间,并将收到的文件块存储在其扇区中;
S3、检索区块链节点从存储区块链节点处收集文件块,对其进行解码,然后将恢复的文件发送给提出请求的客户端;
在上述的文件管理方法中,BFT-DSN采用区块链来审核事件,利用存储加权BFT共识算法,添加到区块链中的新区块以达成共识;
同时,利用使用梅克尔树的存储证明方案来监控每个区块链节点实际贡献的存储空间并支持共识。
作为本技术方案的进一步改进,所述步骤S1中包括BFT-DSN的“放入”操作,即客户端将文件放入网络;该操作包括如下步骤:
首先,客户端将文件发送给编码区块链节点,以便将文件编码成块;其中,编码区块链节点是根据存储权重从所有区块链节点中随机挑选出来的;
从客户端接收文件时,编码区块链节点会使用(K,M)-RS代码将文件编码成n块,其中,K、M均为EC参数,这里K=n-f,M=f;文件的编码过程可表示如下:
D={d1,...,dn-f}=Split(F)
C={c1,...,cn}=Encode(D)
式中,D为文件编码块合集,di为第i块文件编码块,n表示BFT-DSN网络中的扇区总数,f表示可容忍的拜占庭扇区的最大数量,Split(·)表示分割函数;C为文件编码块字节合集,ci为第i块文件编码块字节,Encode(·)表示用于将字符串编码成字节形式的函数;
编码成n个块后,编码区块链节点将其分配给BFT-DSN的n个扇区,每个扇区一个块;
其次,客户端在区块链上签署STORE交易,并在该交易中包含数据块的同态指纹,以确保收到这些数据块的区块链节点能够验证其完整性;此外,为了在这些同态指纹和文件之间建立绑定关系,可以将文件的标识符设置为/>即同态指纹的哈希值,并将其包含在STORE事务中;
从区块链接收STORE交易时,存储区块链节点首先要验证标识符与数据块的同态指纹之间的对应关系;具体做法是:
重新计算数据块同态指纹的哈希值,确保得到的哈希值等于
如果验证成功,区块链节点将继续计算奇偶块的同态指纹;
计算方法是利用同态特性,对数据块的同态指纹进行EC编码;而后区块链节点用签名密钥对每个数据块的同态指纹进行签名,生成部分签名,然后将其发送给存储相应数据块的区块链节点。
作为本技术方案的进一步改进,所述存储区块链节点验证标识符与数据块的同态指纹之间的对应关系时,为了加快BFT-DSN的验证过程,可以为每个区块链节点分配一个权重,该权重等于他们承诺的扇区数;这样,每个区块链节点可以为其存储的每个数据块接收总权重至少为n-f的部分签名;然后将这些签名合并,生成该数据块的总签名;存储区块链节点可以使用相应的汇总签名验证从编码区块链节点收到的数据块的完整性;如果验证成功,存储区块链节点就会存储该数据块;
在选择EC参数K和M时,用n表示BFT-DSN网络中的扇区总数,用f表示可容忍的拜占庭扇区的最大数量;则f值的计算公式为f=[(n-1)/3]。
作为本技术方案的进一步改进,所述BFT-DSN存储文件过程中还需要控制其存储成本,存储成本的计算方法为:
为了存储文件(n-f,f)-RS首先将Fint分割成n-f个数据块,每个数据块的大小为|F|/(n-f),然后生成f个大小相同的奇偶校验块;则n个数据块的总存储成本为:
根据n=3f+1的假设,文件的存储成本为:
式中,CF为文件的存储成本。
作为本技术方案的进一步改进,所述存储证明方案BFT-DSN PoS中,在n=3f+1的假设中,根据扇区数而不是节点数来定义n和f;其中,n代表BFT-DSN中承诺的扇区数,而f则表示拜占庭对手能控制的最大扇区数;
在BFT-DSN中:PoS用于确认主机区块链节点是否在扇区中持续存储了数据;BFT-DSN通过EC来实现存储复制;
另外,构建梅克尔树BFT-DSN PoS的核心理念是使用梅克尔树,它是由扇区中的当前数据构建的哈希树;当一个扇区被抵押时,首先会填入随机数据,然后也会从中建立一棵梅克尔树;梅克尔树中的每片叶子代表一定大小的数据片段,其中所有节点,无论是叶子节点还是内部节点,都具有相同的大小;扇区的梅克尔树建立后,梅克尔根节点会被发送到区块链,以支持PoS验证。
作为本技术方案的进一步改进,所述BFT-DSN PoS中,生成证明要为一个扇区生成PoS,其主机区块链节点会从扇区的梅克尔树中随机选取一片叶子;然后,区块链节点提供哈希值,对应从所选叶子到梅克尔树根的路径上每个节点的同级节点;验证者使用所提供的哈希值重建通向根节点的树枝,并检查根节点是否与区块链上存储的预期值相匹配;每个PoS都会作为交易广播到区块链上,让所有节点进行验证;一旦区块链上记录了新承诺的扇区的初始PoS,该扇区即被视为已承诺。如果区块链节点正确存储数据,其提供的哈希值将是有效的;
区块链节点定期生成PoS,具体为:要为一个扇区生成新的PoS,主机区块链节点会选择另一片叶子;这种选择基于一个伪随机函数,该函数使用前一个PoS作为输入;然后,区块链节点重复上述步骤;
最后需要更新梅克尔树:当扇区中的块集发生变化时,必须更新根据扇区构建的梅克尔树;在扇区中添加或删除数据块时,意味着要修改更新扇区中的连续数据段;梅克尔树更新后,新的梅克尔根将被发送到区块链上;随后的PoS将根据更新后的梅克尔树生成。
作为本技术方案的进一步改进,所述存储加权BFT共识算法用于优化DSN中BFT共识的弹性,是基于存储证明算法和Tendermint Core设计的SW-BFT算法,该算法会考虑区块链节点承诺的扇区数量,并相应调整其共识权重;其将BFT-DSN的PoS方案与TendermintCore结合在一起;具体为:
首先让每个区块链节点维护一个权重表,权重表会根据新的扇区承诺、失败的PoS以及其他存储和共识故障进行更新。
作为本技术方案的进一步改进,所述SW-BFT重复使用了Tendermint核心的三个投票阶段,以就区块达成共识,包括:预投票、预提交和提交;其中,每个阶段都需要2/3的投票才能继续;
更新权重表的每个事件都对应一个链上交易;当相关交易在区块链上得到确认后,该事件就会生效。
作为本技术方案的进一步改进,所述步骤S3为BFT-DSN中的获取操作,在该操作中,客户端使用的标识符IDF从BFT-DSN中检索文件/>具体包括如下步骤:
首先,客户端随机选择一个检索区块链节点,并向检索区块链节点发送由标识的检索请求;其中,与投放操作中的存储区块链节点一样,检索区块链节点也是根据存储权重从所有区块链节点中选出的;
检索区块链节点收到请求后,会将其广播给所有存储区块链节点;
收到请求后,每个存储区块链节点会将其存储的块和伴随的集合签名发送给检索区块链节点;
这样,检索区块链节点就能验证每个数据块的完整性;一旦检索区块链节点收集到n-f个正确的数据块,就可以对进行解码;
F=Concatenate(d1,...,dn-f)
式中,Decode(·)表示decode解码函数(将字节序列解码为字符串),Concatenate(d1,...,dn-f)表示字符串拼接函数;
获取操作过程中,需要为检索过程设置超时以应对所选检索区块链节点是拜占庭式的情况;设置超时的原理为:
检索区块链节点总能在固定时间内为文件接收至少n-f个正确的分块,并对其进行解码;
如果检索区块链节点未能在特定时间间隔内生成所请求的文件则会被视为有问题;任何节点都可以报告这一情况,然后选择不同的检索区块链节点;
如果检索区块链节点及时输出文件并发送给客户端,客户端就会使用验证检索文件/>的完整性;如果所选的检索区块链节点发送了错误的文件,客户端就会报告错误,并尝试使用不同的检索区块链节点进行检索。
作为本技术方案的进一步改进,所述BFT-DSN的关键特性为:拜占庭容错,该特性用于确保文件的可检索性;其中,拜占庭容错特性至少包括安全性、有效性和可检索性。
作为本技术方案的进一步改进,所述。
本发明的目的之二在于,提供了一种基于拜占庭容错去中心化存储网络的文件管理平台装置,包括处理器、存储器以及存储在存储器中并在处理器上运行的计算机程序,处理器用于执行计算机程序时实现上述的基于拜占庭容错去中心化存储网络的文件管理方法的步骤。
本发明的目的之三在于,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述的基于拜占庭容错去中心化存储网络的文件管理方法的步骤。
与现有技术相比,本发明的有益效果:
1.该基于拜占庭容错去中心化存储网络的文件管理方法中,文件首先由编码区块链节点编码成块,然后每个块存储在存储区块链节点提供的扇区中;BFT-DSN利用同态指纹和阈值签名来验证编码过程的正确性和块的完整性,可以有效防止拜占庭攻击者、保障安全;还能确保在获取操作过程中收集的数据块的完整性得到有效验证;
2.该基于拜占庭容错去中心化存储网络的文件管理方法中,BFT-DSN采用区块链来审核事件,如文件的放/取操作和存储过期,它利用一种新颖的存储加权BFT共识算法,就添加到区块链中的新区块达成共识,该共识算法考虑了存储区块链节点贡献的存储资源数量的差异,实现了最佳拜占庭弹性;
3.该基于拜占庭容错去中心化存储网络的文件管理方法中,利用一种使用梅克尔树的存储证明方案来监控每个区块链节点实际贡献的存储空间并支持共识,并证明了BFT-DSN的拜占庭弹性,它表明,即使控制一个扇区的存储区块链节点受到攻击并拒绝提供其存储的数据块,检索区块链节点仍能从收集的数据块中解码出请求的文件。
附图说明
图1为本发明中示例性的整体管理方法流程图;
图2为本发明中示例性的BFT-DSN PoS方案结构图;
图3为本发明中示例性的BFT-DSN中的获取操作代码图;
图4为本发明中示例性的电子计算机平台装置结构图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例1
如图1-图3所示,本实施例提供了一种基于拜占庭容错去中心化存储网络的文件管理方法,拜占庭容错去中心化存储网络BFT-DSN是一种结合了BFT擦除编码和BFT共识以获得最佳弹性的DSN;在BFT-DSN中,区块链节点根据其提供的功能进行分类:编码、存储和检索;具体文件管理方法包括如下步骤:
S1、编码区块链节点将来自客户端的文件编码成块,并将它们分配给存储区块链节点;
本步骤中,BFT-DSN利用同态指纹和阈值签名来验证编码过程的正确性和块的完整性,以保证安全,防止拜占庭攻击者;
S2、存储区块链节点以扇区为单位提供存储空间,并将收到的文件块存储在其扇区中;
S3、检索区块链节点从存储区块链节点处收集文件块,对其进行解码,然后将恢复的文件发送给提出请求的客户端;
在上述的文件管理方法中,BFT-DSN采用区块链来审核事件,利用存储加权BFT共识算法,添加到区块链中的新区块以达成共识;
同时,利用使用梅克尔树的存储证明方案来监控每个区块链节点实际贡献的存储空间并支持共识。
本实施例中,步骤S1中包括BFT-DSN的“放入”操作,即客户端将文件F放入网络;该操作包括如下步骤:
首先,客户端将文件发送给编码区块链节点,以便将文件编码成块;其中,编码区块链节点是根据存储权重从所有区块链节点中随机挑选出来的;
从客户端接收文件时,编码区块链节点会使用(K,M)-RS代码将文件编码成n块,其中,K、M均为EC参数,这里K=n-f,M=f;文件的编码过程可表示如下:
D={d1,...,dn-f}=Split(F)
C={c1,...,cn}=Encode(D)
式中,D为文件编码块合集,di为第i块文件编码块,n表示BFT-DSN网络中的扇区总数,f表示可容忍的拜占庭扇区的最大数量,Split(·)表示分割函数;C为文件编码块字节合集,ci为第i块文件编码块字节,Encode(·)表示用于将字符串编码成字节形式的函数(常用于将字符串转换为bytes类型);
编码成n个块后,编码区块链节点将其分配给BFT-DSN的n个扇区,每个扇区一个块。需要注意的是,一个区块链节点可以抵押多个扇区,因此同一个区块链节点可能会收到不同的块。
其次,客户端会在区块链上签署STORE交易,并在该交易中包含数据块的同态指纹,以确保收到这些数据块的区块链节点能够验证其完整性。不包含奇偶校验块的同态指纹是为了节省链上存储空间,因为它们可以通过数据块的同态指纹使用公式计算出来。此外,为了在这些同态指纹和文件之间建立绑定关系,可以将文件的标识符设置为/>即同态指纹的哈希值,并将其包含在STORE事务中。
从区块链接收STORE交易时,存储区块链节点首先要验证标识符与数据块的同态指纹之间的对应关系;具体做法是:
重新计算数据块同态指纹的哈希值,确保得到的哈希值等于
如果验证成功,区块链节点将继续计算奇偶块的同态指纹;
计算方法是利用同态特性,对数据块的同态指纹进行EC编码;接下来,区块链节点用签名密钥对每个数据块的同态指纹进行签名,生成部分签名,然后将其发送给存储相应数据块的区块链节点。
进一步地,存储区块链节点验证标识符与数据块的同态指纹之间的对应关系时,为了加快BFT-DSN的验证过程,先为每个区块链节点分配一个权重,该权重等于他们承诺的扇区数。这样,每个区块链节点可以为其存储的每个数据块接收总权重至少为n-f的部分签名。然后将这些签名合并,生成该数据块的总签名。因此,存储区块链节点可以使用相应的汇总签名验证从编码区块链节点收到的数据块的完整性。如果验证成功,存储区块链节点就会存储该数据块。
在选择EC参数K和M时,即如何确定RS编码的两个参数K和M的值,先用n表示BFT-DSN网络中的扇区总数,用f表示可容忍的拜占庭扇区的最大数量,则f值的计算公式为f=[(n-1)/3]。
由于文件的每个块分配到一个扇区,因此文件编码的块总数等于扇区总数,即K+M=n。首先,在这种情况下考虑生成攻击是很重要的。对于(K,M)-RS代码,如果对手拥有文件的K个或更多块,它就可以假装存储了/>的任意数量的块。为了防范这种攻击,必须将K设置为一个明确大于拜占庭对手控制的最大扇区数(即f)的值。其次,由于存在拥有f个拜占庭扇区的对手,最多可能有f个数据块被丢弃或篡改。由于每个数据块的完整性都经过HF和WTS验证,因此可以识别出被篡改的数据块。因此需要让文件在有n-f个正确的数据块时可以恢复。因此,K必须等于或小于n-f。最后但并非最不重要的一点是,可以看出文件/>的存储成本为/>这表明K越大,存储成本越低。因此,让K=n-f,即区间(f,n-f]中的最大值。根据n=3f+1的假设,这个区间显然不是空的。因此有M=n-K=f。综上所述,优先选择(n-f,f)-RS编码。
另外,BFT-DSN中HF和WTS的影响为:同态指纹用于验证奇偶校验块的完整性;如果奇偶校验块是由的数据块正确编码而来,那么它们的同态指纹就会与计算出的同态指纹相匹配;通过使用HF验证每个数据块的完整性,BFT-DSN保证了基于EC的分散存储的安全性。
此外,为了加快验证过程,可以采用加权阈值签名方案,以确保验证过程无需每次收集和编码n-f个同态指纹即可完成。值得说明的是,虽然可以保证每个正确的同态指纹都由总权重至少为n-f的区块链节点签名,但权重为f+1的集合签名足以验证同态指纹。这是因为没有诚实的区块链节点会签署无效的同态指纹,而拜占庭区块链节点的签名权重不会超过f。因此,需要停止等待部分签名和通过WTS-Verify验证的权重阈值设为f+1,以避免不必要的延迟。
具体地,BFT-DSN存储文件过程中还需要控制其存储成本,存储成本的计算方法为:
为了存储文件(n-f,f)-RS首先将Fint分割成n-f个数据块,每个数据块的大小为|F|/(n-f),然后生成f个大小相同的奇偶校验块;则n个数据块的总存储成本为:
根据n=3f+1的假设,文件的存储成本为:
式中,CF为文件的存储成本。
本实施例中,存储证明方案BFT-DSN PoS中,在n=3f+1的假设中,根据扇区数而不是节点数来定义n和f;其中,n代表BFT-DSN中承诺的扇区数,而f则表示拜占庭对手能控制的最大扇区数。因此,要维护SW-BFT共识设计需要验证每个承诺扇区的真实性至关重要。
在BFT-DSN中,PoS用于确认主机区块链节点是否在扇区中持续存储了数据。这些证明还有助于在共识过程中调整区块链节点的权重。Filecoin(存储文件的对等网络)使用计算量很大的PoRep算法(用来证明一个存储系统确实存储了某一份数据的拷贝,而且每一份拷贝使用不同的物理存储)来确保存储复制和重复,而BFT-DSN则不同,它通过EC(移动计算机和嵌入式计算机系统中的系统管理功能)来实现存储复制。因此,BFT-DSN中的PoS算法侧重于实现可检索性证明。另一个观察结果是,每次将文件放到BFT-DSN时,任何两个扇区中的块的总大小都是相同的。这是因为每次放入文件时,所有扇区都会分配大小相等的块,每个扇区一个块。此外,在BFT-DSN中,所有扇区的大小都相同,如32GB。基于这些观察结果,BFT-DSN PoS的设计方案可以为如图2所示的结构。
另外,构建梅克尔树BFT-DSN PoS的核心理念是使用梅克尔树,它是由扇区中的当前数据构建的哈希树。当一个扇区被抵押时,首先会填入随机数据,然后也会从中建立一棵梅克尔树。梅克尔树中的每片叶子代表一定大小的数据片段,例如256B。所有节点,无论是叶子节点还是内部节点,都具有相同的大小。这个过程一直持续到只剩下一个代表整个扇区的根节点为止。扇区的梅克尔树建立后,梅克尔根节点会被发送到区块链,以支持PoS验证。
进一步地,BFT-DSN PoS中,生成证明要为一个扇区生成PoS,其主机区块链节点会从扇区的梅克尔树中随机选取一片叶子。然后,区块链节点提供哈希值,对应从所选叶子到梅克尔树根的路径上每个节点的同级节点。验证者使用所提供的哈希值重建通向根节点的树枝,并检查根节点是否与区块链上存储的预期值相匹配。每个PoS都会作为交易广播到区块链上,让所有节点进行验证。一旦区块链上记录了新承诺的扇区的初始PoS,该扇区即被视为已承诺。如果区块链节点正确存储数据,其提供的哈希值将是有效的。这一过程使验证者能够重建树形路径并确认根节点。但是,如果存储不正确,哈希值就会不匹配,从而让验证者发现问题。区块链节点定期生成PoS。要为一个扇区生成新的PoS,主机区块链节点会选择另一片叶子。这种选择基于一个伪随机函数,该函数使用前一个PoS作为输入。然后,区块链节点重复上述步骤。
最后需要更新梅克尔树:当扇区中的块集发生变化时(例如,BFT-DSN中添加了新文件或BFT-DSN中的文件过期),必须更新根据扇区构建的梅克尔树。在扇区中添加或删除数据块时,意味着要修改更新扇区中的连续数据段。因此,相应的叶子和它们的祖先将被重新计算。梅克尔树中的所有其他节点保持不变。梅克尔树更新后,新的梅克尔根将被发送到区块链上。随后的PoS将根据更新后的梅克尔树生成。
本实施例中,存储加权BFT共识算法用于优化DSN中BFT共识的弹性,是基于存储证明算法和Tendermint Core设计的SW-BFT算法,该算法会考虑区块链节点承诺的扇区数量,并相应调整其共识权重;其将BFT-DSN的PoS方案与Tendermint Core结合在一起;具体为:
首先让每个区块链节点维护一个权重表,该权重表会随着时间的推移跟踪其他区块链节点承诺的扇区数量,以便监控每个区块链节点承诺的扇区数量,并确保SW-BFT中所有节点的一致监控;其中,权重表会根据新的扇区承诺(增加共识权重)、失败的PoS(降低共识权重)以及其他存储和共识故障进行更新。
进一步地,SW-BFT重复使用了Tendermint核心的三个投票阶段,以就区块达成共识,包括:预投票、预提交和提交;其中,每个阶段都需要2/3的投票才能继续。
SW-BFT与Tendermint Core的主要区别在于:SW-BFT会根据权重表检查2/3票的阈值(相当于n个扇区中的n-f个,其中n=3f+1)。例如,在预投票阶段,每个区块链节点都会从其他区块链节点那里收集预投票信息。这些信息包含投票区块的哈希值,并由投票人签名。收到预投票信息后,区块链节点会从其权重表中检查投票人的权重,然后将该权重与该区块收到的投票总权重相加。如果总权重达到n-f,区块链节点就进入下一阶段。其他两个投票阶段(即预提交和提交)的权重累积程序与预投票阶段类似。
值得注意的是,更新权重表的每个事件都对应一个链上交易。当相关交易在区块链上得到确认后,该事件就会生效。在一个区块的共识过程中,每个区块链节点的区块链视图都会锁定在上一个区块的高度。这就确保了每个区块链节点在共识过程中都能始终如一地观察权重表。监控权重表的一致性至关重要,因为任何不一致都可能导致共识失败。
本实施例中,步骤S3为BFT-DSN中的获取操作,在该操作中,客户端使用的标识符IDF从BFT-DSN中检索文件/>如图3所示;具体包括如下步骤:
首先,客户端随机选择一个检索区块链节点,并向检索区块链节点发送由IDF标识的检索请求;其中,与投放操作中的存储区块链节点一样,检索区块链节点也是根据存储权重从所有区块链节点中选出的;
检索区块链节点收到请求后,会将其广播给所有存储区块链节点;
收到请求后,每个存储区块链节点会将其存储的块和伴随的集合签名发送给检索区块链节点;
这样,检索区块链节点就能验证每个数据块的完整性;一旦检索区块链节点收集到n-f个正确的数据块,就可以对进行解码;
F=Concatenate(d1,...,dn-f)
式中,Decode(·)表示decode解码函数(将字节序列解码为字符串),Concatenate(d1,...,dn-f)表示字符串拼接函数;
获取操作过程中,需要为检索过程设置超时以应对所选检索区块链节点是拜占庭式的情况;设置超时的原理为:
首先检索区块链节点总能在固定时间内为文件接收至少n-f个正确的分块,并对其进行解码;这是因为至少有n-f个由诚实区块链节点运行的区段,每个区段都存储了/>的一个块;
如果检索区块链节点未能在特定时间间隔内生成所请求的文件则会被视为有问题;任何节点都可以报告这一情况,然后选择不同的检索区块链节点;
如果检索区块链节点及时输出文件并发送给客户端,客户端就会使用验证检索文件/>的完整性;如果所选的检索区块链节点发送了错误的文件,客户端就会报告错误,并尝试使用不同的检索区块链节点进行检索。
本实施例中,BFT-DSN的关键特性为:拜占庭容错,该特性用于确保文件的可检索性;其中,拜占庭容错特性至少包括安全性、有效性和可检索性。
具体地,拜占庭容错中最重要的问题是确保文件的可检索性,即使存在拜占庭对手;这是通过确保共识的安全性和有效性以及文件生命周期的可验证性来实现的。为了验证BFT-DSN的拜占庭容错特性,提出以下定理和证明:
首先,针对SW-BFT共识的安全性和有效性。前述证明了SW-BFT共识即使在拜占庭对手控制了n个扇区中的[(n-1)/3]时,也能实现安全性和有效性。
定理一、BFT-DSN中PoS算法的健全性:当且仅当区块链节点正在存储属于某个扇区的数据时,它才能为该扇区生成有效的PoS。
证明:如果区块链节点存储了某个扇区的所有数据,则区块链节点可使用证明生成算法为该扇区生成PoS。生成的PoS可以验证,因为区块链上的梅克尔根对应于由扇区中所有数据构建的梅克尔树的根。如果区块链节点没有存储扇区中的所有数据,即删除或修改了扇区中的部分数据,那么该扇区梅克尔树中的相应树叶就会缺失或改变。如果在生成PoS时选中了这些叶子中的一片,区块链节点将无法提供产生存储在区块链上的梅克尔根的梅克尔路径。由于梅克尔路径是持续查询的,因此迟早可以通过PoS验证检测到数据的擦除或修改。
BFT-DSN中PoS算法的健全性可防止拜占庭对手部署假冒攻击,假冒攻击者会假装维护任意数量的扇区,并打破拜占庭对手控制的扇区不超过[(n-1)/3]的假设。
定理二、在拜占庭对手控制的n个扇区中,不超过[(n-1)/3]的情况下,SW-BFT保证了安全性和有效性,定义如下:
A、安全性:如果一个诚实的区块链节点在高度h处提交了区块B,则在高度h处没有其他诚实的区块链节点决定B以外的任何区块;
B、有效性:对任何区块的共识最终都会结束。
证明:根据BFT-DSN中PoS算法的合理性,如果一个区块链节点正在积极维护一个扇区,那么它就能为该扇区生成有效的PoS。因此,如果有区块链节点在维护一个扇区,该扇区就会被列入权重表。因此,如果我们假设拜占庭对手最多维护f个扇区,并且总共维护了n=3f+1个扇区,那么拜占庭区块链节点的投票权应小于[(n-1)/3]。事实证明,如果在n个拜占庭投票权中,拜占庭投票权不超过[(n-1)/3],那么TendermintCore就能保证安全性和有效性。因此,SW-BFT共识保证了安全性和有效性。
C、可验证性:BFT-DSN的可验证性。旨在证明在文件的整个生命周期中,包括上传、编码、存储、下载和解码等阶段,拜占庭区块链节点不可能输出错误的文件或块而不被检测到。即使在拜占庭对手控制了n个扇区中的[(n-1)/3]扇区的情况下,这一点也是成立的。
在文件上传过程中,当客户端将文件发送给编码区块链节点时,可以通过重新计算IDF′并将其与区块链上存储的/>进行比较来验证接收到的文件/>的完整性。在EC编码过程中,编码区块链节点会从文件/>生成n个数据块。编码过程的正确性可通过同态指纹进行验证,以确保n个数据块均来自/>且未被篡改,且这种验证依赖于同态属性。在存储过程中,可以使用PoS验证每个数据块的完整性。BFT-DSN不会为每个数据块生成PoS,而是为每个扇区生成PoS。这就足够了,因为扇区的完整性是扇区内块完整性的必要条件。在下载数据块的过程中,区块链节点会将数据块连同总阈值签名一起发送给检索区块链节点。每个数据块的完整性可通过其集合阈值签名进行验证。只有总权重至少为f+1的区块链节点验证其同态指纹并签名后,聚合阈值签名才能通过验证。此外,根据加权阈值签名的权重分配和BFT-DSN中PoS的健全性,拜占庭对手的权重不可能高于f。因此,大块下载进度的验证得以实现。最后,检索区块链节点对收集到的数据块进行解码,并将输出文件发送给客户端。对接收到的文件/>的完整性验证与文件上传过程相同。这也是基于/>
D、可检索性:BFT-DSN的拜占庭容错性,它满足DSN的基本属性——可检索性,即使存在拜占庭对手。即使最多有[(n-1)/3]个扇区被拜占庭对手控制,BFT-DSN也能实现可检索性,证明如下:
首先推论:当BFT-DSN中总共有n个扇区时,如果最多有[(n-1)/3]个扇区被拜占庭对手控制,那么诚实的检索区块链节点可以在检索过程中成功输出文件
证明:在任何文件的检索过程中,诚实的检索区块链节点至少可以获得/>的n-f个不同的正确块。这是因为在/>的存储过程中,n个块被分配到n个扇区,其中至少n-f个是诚实的。因此,至少有n-f个/>块存储在诚实的扇区中。由拜占庭节点控制的扇区可能会提供不正确的数据块,而诚实的检索区块链节点可以根据可验证性检测并拒绝这些数据块。因此,诚实的检索区块链节点总能成功收集n-f个正确的数据块,这足以解码/>
定理三、当BFT-DSN中总共有n个扇区时,如果拜占庭对手控制的扇区不超过[(n-1)/3],BFT-DSN就能保证文件的可检索性。这意味着,对于任何文件其检索过程最终都会成功,并在预期的O(1)次尝试中完成。
证明如果检索区块链节点有问题,拒绝提供正确的文件,就会触发超时。在这种情况下,客户端可以切换到另一个检索区块链节点。由于检索区块链节点是根据其控制的扇区数随机选择的,而且我们假设拜占庭区块链节点控制的扇区总数最多为n中的[(n-1)/3],因此所选检索区块链节点出现拜占庭的概率(记为PrByzantine)小于1/3。因此,找到诚实的检索区块链节点所需的预期尝试次数为:
式中,O(1)为检索过程中检索成功的预期尝试次数。
如图4所示,本实施例还提供了一种基于拜占庭容错去中心化存储网络的文件管理平台装置,该装置包括处理器、存储器以及存储在存储器中并在处理器上运行的计算机程序。
处理器包括一个或一个以上处理核心,处理器通过总线与存储器相连,存储器用于存储程序指令,处理器执行存储器中的程序指令时实现上述的基于拜占庭容错去中心化存储网络的文件管理方法的步骤。
可选的,存储器可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随时存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
此外,本发明还提供一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,计算机程序被处理器执行时实现上述的基于拜占庭容错去中心化存储网络的文件管理方法的步骤。
可选的,本发明还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述各方面基于拜占庭容错去中心化存储网络的文件管理方法的步骤。
本领域普通技术人员可以理解,实现上述实施例的全部或部分步骤的过程可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,程序可以存储于计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上显示和描述了本发明的基本原理、主要特征和本发明的优点。本行业的技术人员应该了解,本发明不受上述实施例的限制,上述实施例和说明书中描述的仅为本发明的优选例,并不用来限制本发明,在不脱离本发明精神和范围的前提下,本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内。本发明要求保护范围由所附的权利要求书及其等效物界定。

Claims (10)

1.一种基于拜占庭容错去中心化存储网络的文件管理方法,其特征在于:拜占庭容错去中心化存储网络BFT-DSN是一种结合了BFT擦除编码和BFT共识以获得最佳弹性的DSN;在BFT-DSN中,区块链节点根据其提供的功能进行分类:编码、存储和检索;具体文件管理方法包括如下步骤:
S1、编码区块链节点将来自客户端的文件编码成块,并将它们分配给存储区块链节点;
本步骤中,BFT-DSN利用同态指纹和阈值签名来验证编码过程的正确性和块的完整性,以保证安全,防止拜占庭攻击者;
S2、存储区块链节点以扇区为单位提供存储空间,并将收到的文件块存储在其扇区中;
S3、检索区块链节点从存储区块链节点处收集文件块,对其进行解码,然后将恢复的文件发送给提出请求的客户端;
在上述的文件管理方法中,BFT-DSN采用区块链来审核事件,利用存储加权BFT共识算法,添加到区块链中的新区块以达成共识;
同时,利用使用梅克尔树的存储证明方案来监控每个区块链节点实际贡献的存储空间并支持共识。
2.根据权利要求1所述的基于拜占庭容错去中心化存储网络的文件管理方法,其特征在于:所述步骤S1中包括BFT-DSN的“放入”操作,即客户端将文件放入网络;该操作包括如下步骤:
首先,客户端将文件发送给编码区块链节点,以便将文件编码成块;其中,编码区块链节点是根据存储权重从所有区块链节点中随机挑选出来的;
从客户端接收文件时,编码区块链节点会使用(K,M)-RS代码将文件编码成n块,其中,K、M均为EC参数,这里K=n-f,M=f;文件的编码过程可表示如下:
C={c1,...,cn}=Encode(D)
式中,D为文件编码块合集,di为第i块文件编码块,n表示BFT-DSN网络中的扇区总数,f表示可容忍的拜占庭扇区的最大数量,Split(·)表示分割函数;C为文件编码块字节合集,ci为第i块文件编码块字节,Encode(·)表示用于将字符串编码成字节形式的函数;
编码成n个块后,编码区块链节点将其分配给BFT-DSN的n个扇区,每个扇区一个块;
其次,客户端在区块链上签署STORE交易,并在该交易中包含数据块的同态指纹,以确保收到这些数据块的区块链节点能够验证其完整性;此外,为了在这些同态指纹和文件之间建立绑定关系,将文件的标识符设置为/>即同态指纹的哈希值,并将其包含在STORE事务中;
从区块链接收STORE交易时,存储区块链节点首先要验证标识符与数据块的同态指纹之间的对应关系;具体做法是:
重新计算数据块同态指纹的哈希值,确保得到的哈希值等于
如果验证成功,区块链节点将继续计算奇偶块的同态指纹;
计算方法是利用同态特性,对数据块的同态指纹进行EC编码;而后区块链节点用签名密钥对每个数据块的同态指纹进行签名,生成部分签名,然后将其发送给存储相应数据块的区块链节点。
3.根据权利要求2所述的基于拜占庭容错去中心化存储网络的文件管理方法,其特征在于:所述存储区块链节点验证标识符与数据块的同态指纹之间的对应关系时,为了加快BFT-DSN的验证过程,可以为每个区块链节点分配一个权重,该权重等于他们承诺的扇区数;这样,每个区块链节点可以为其存储的每个数据块接收总权重至少为n-f的部分签名;然后将这些签名合并,生成该数据块的总签名;存储区块链节点可以使用相应的汇总签名验证从编码区块链节点收到的数据块的完整性;如果验证成功,存储区块链节点就会存储该数据块;
在选择EC参数K和M时,用n表示BFT-DSN网络中的扇区总数,用f表示可容忍的拜占庭扇区的最大数量;则f值的计算公式为f=[(n-1)/3]。
4.根据权利要求3所述的基于拜占庭容错去中心化存储网络的文件管理方法,其特征在于:所述BFT-DSN存储文件过程中还需要控制其存储成本,存储成本的计算方法为:
为了存储文件(n-f,f)-RS首先将Fint分割成n-f个数据块,每个数据块的大小为|F|/(n-f),然后生成f个大小相同的奇偶校验块;则n个数据块的总存储成本为:
根据n=3f+1的假设,文件的存储成本为:
式中,CF为文件的存储成本。
5.根据权利要求1所述的基于拜占庭容错去中心化存储网络的文件管理方法,其特征在于:所述存储证明方案BFT-DSN PoS中,在n=3f+1的假设中,根据扇区数而不是节点数来定义n和f;其中,n代表BFT-DSN中承诺的扇区数,而f则表示拜占庭对手能控制的最大扇区数;
在BFT-DSN中:PoS用于确认主机区块链节点是否在扇区中持续存储了数据;BFT-DSN通过EC来实现存储复制;
另外,构建梅克尔树BFT-DSN PoS的核心理念是使用梅克尔树,它是由扇区中的当前数据构建的哈希树;当一个扇区被抵押时,首先会填入随机数据,然后也会从中建立一棵梅克尔树;梅克尔树中的每片叶子代表一定大小的数据片段,其中所有节点,无论是叶子节点还是内部节点,都具有相同的大小;扇区的梅克尔树建立后,梅克尔根节点会被发送到区块链,以支持PoS验证。
6.根据权利要求5所述的基于拜占庭容错去中心化存储网络的文件管理方法,其特征在于:所述BFT-DSN PoS中,生成证明要为一个扇区生成PoS,其主机区块链节点会从扇区的梅克尔树中随机选取一片叶子;然后,区块链节点提供哈希值,对应从所选叶子到梅克尔树根的路径上每个节点的同级节点;验证者使用所提供的哈希值重建通向根节点的树枝,并检查根节点是否与区块链上存储的预期值相匹配;每个PoS都会作为交易广播到区块链上,让所有节点进行验证;一旦区块链上记录了新承诺的扇区的初始PoS,该扇区即被视为已承诺;如果区块链节点正确存储数据,其提供的哈希值将是有效的;
区块链节点定期生成PoS,具体为:要为一个扇区生成新的PoS,主机区块链节点会选择另一片叶子;这种选择基于一个伪随机函数,该函数使用前一个PoS作为输入;然后,区块链节点重复上述步骤;
最后需要更新梅克尔树:当扇区中的块集发生变化时,必须更新根据扇区构建的梅克尔树;在扇区中添加或删除数据块时,意味着要修改更新扇区中的连续数据段;梅克尔树更新后,新的梅克尔根将被发送到区块链上;随后的PoS将根据更新后的梅克尔树生成。
7.根据权利要求1所述的基于拜占庭容错去中心化存储网络的文件管理方法,其特征在于:所述存储加权BFT共识算法用于优化DSN中BFT共识的弹性,是基于存储证明算法和Tendermint Core设计的SW-BFT算法,该算法会考虑区块链节点承诺的扇区数量,并相应调整其共识权重;其将BFT-DSN的PoS方案与Tendermint Core结合在一起;具体为:
首先让每个区块链节点维护一个权重表,权重表会根据新的扇区承诺、失败的PoS以及其他存储和共识故障进行更新。
8.根据权利要求7所述的基于拜占庭容错去中心化存储网络的文件管理方法,其特征在于:所述SW-BFT重复使用了Tendermint核心的三个投票阶段,以就区块达成共识,包括:预投票、预提交和提交;其中,每个阶段都需要2/3的投票才能继续;
更新权重表的每个事件都对应一个链上交易;当相关交易在区块链上得到确认后,该事件就会生效。
9.根据权利要求1所述的基于拜占庭容错去中心化存储网络的文件管理方法,其特征在于:所述步骤S3为BFT-DSN中的获取操作,在该操作中,客户端使用的标识符/>从BFT-DSN中检索文件/>具体包括如下步骤:
首先,客户端随机选择一个检索区块链节点,并向检索区块链节点发送由标识的检索请求;其中,与投放操作中的存储区块链节点一样,检索区块链节点也是根据存储权重从所有区块链节点中选出的;
检索区块链节点收到请求后,会将其广播给所有存储区块链节点;
收到请求后,每个存储区块链节点会将其存储的块和伴随的集合签名发送给检索区块链节点;
这样,检索区块链节点就能验证每个数据块的完整性;一旦检索区块链节点收集到n-f个正确的数据块,就可以对进行解码;
式中,Decode(·)表示decode解码函数,Concatenate(d1,...,dn-f)表示字符串拼接函数;
获取操作过程中,需要为检索过程设置超时以应对所选检索区块链节点是拜占庭式的情况;设置超时的原理为:
检索区块链节点总能在固定时间内为文件接收至少n-f个正确的分块,并对其进行解码;
如果检索区块链节点未能在特定时间间隔内生成所请求的文件则会被视为有问题;任何节点都可以报告这一情况,然后选择不同的检索区块链节点;
如果检索区块链节点及时输出文件并发送给客户端,客户端就会使用IDF验证检索文件F的完整性;如果所选的检索区块链节点发送了错误的文件,客户端就会报告错误,并尝试使用不同的检索区块链节点进行检索。
10.根据权利要求1所述的基于拜占庭容错去中心化存储网络的文件管理方法,其特征在于:所述BFT-DSN的关键特性为:拜占庭容错,该特性用于确保文件的可检索性;其中,拜占庭容错特性至少包括安全性、有效性和可检索性。
CN202410144039.4A 2024-02-01 2024-02-01 一种基于拜占庭容错去中心化存储网络的文件管理方法 Pending CN118018561A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202410144039.4A CN118018561A (zh) 2024-02-01 2024-02-01 一种基于拜占庭容错去中心化存储网络的文件管理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202410144039.4A CN118018561A (zh) 2024-02-01 2024-02-01 一种基于拜占庭容错去中心化存储网络的文件管理方法

Publications (1)

Publication Number Publication Date
CN118018561A true CN118018561A (zh) 2024-05-10

Family

ID=90953536

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202410144039.4A Pending CN118018561A (zh) 2024-02-01 2024-02-01 一种基于拜占庭容错去中心化存储网络的文件管理方法

Country Status (1)

Country Link
CN (1) CN118018561A (zh)

Similar Documents

Publication Publication Date Title
Zamani et al. Rapidchain: Scaling blockchain via full sharding
US11799660B2 (en) Optimizations for verification of interactions system and method
US10630463B2 (en) Meta block chain
Goodson et al. Efficient Byzantine-tolerant erasure-coded storage
Erway et al. Dynamic provable data possession
CN111045855B (zh) 备份数据的方法、装置和计算机程序产品
Qi et al. A reliable storage partition for permissioned blockchain
CN108650231B (zh) 基于区块链的生物特征采集方法及系统
KR20200016238A (ko) 스크립트 기반 블록체인 상호작용
EP3665858A1 (en) Verification of interactions system and method
EP3847602A1 (en) Secure and transparent pruning for blockchains
US11468044B2 (en) Optimizations for verification of interactions system and method using probability density functions
CN114915404A (zh) 一种面向物联网的区块链数据存储扩展模型构建方法
CN108494790B (zh) 一种在分布式网络中检测持续型网络攻击的方法
Leung Vault: Fast bootstrapping for cryptocurrencies
Chen et al. Auditable Version Control Systems.
Zhao et al. Secure hierarchical processing and logging of sensing data and IoT events with blockchain
KR102349014B1 (ko) 고속 동기화 가능 탈중앙화 분산 데이터베이스 구성 방법 및 시스템
CN110519287B (zh) 一种信息管理方法及相关设备
CN118018561A (zh) 一种基于拜占庭容错去中心化存储网络的文件管理方法
US20240106669A1 (en) Methods and systems for streaming block templates with cross-references
Guo et al. BFT-DSN: A Byzantine Fault Tolerant Decentralized Storage Network
CN112948847B (zh) 基于区块链的数据共享系统及数据正确性验证方法
CN114584326A (zh) 区块链数据处理方法、装置、电子设备及存储介质
CN113779146A (zh) 一种基于区块链的分布式电子证照可验证存储系统

Legal Events

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