基于区块链的文件存储方法和电子设备技术

技术编号:25480168 阅读:30 留言:0更新日期:2020-09-01 23:01
本公开的实施例公开了基于区块链的文件存储方法和电子设备。该方法的一具体实施方式包括:获取待处理的目标文件和文件块大小;基于目标文件和文件块大小,生成文件块集合;对于文件块集合中的每个文件块,生成该文件块的哈希值,得到文件块集合的哈希值集合;基于哈希值集合,生成目标文件的文件标识;将文件块集合发送至第一终端,其中,第一终端存储文件块集合,第一终端生成存储记录表;接收第一终端返回的存储记录表;将文件标识和存储记录表记录到区块链中。这种方法针对切分后的文件块生成哈希值,基于哈希值生成文件标识,将文件块分散存储后生成存储记录表,将文件标识和存储记录表记录到区块链中,提高了存储数据的安全性和不可篡改。

【技术实现步骤摘要】
基于区块链的文件存储方法和电子设备
本公开实施例涉及保密和数据存储领域,具体涉及一种基于区块链的文件存储方法、电子设备。
技术介绍
面对海量数据,传统数据存储方案采用网络存储。网络存储一般采用专用磁盘阵列存储数据,且大多采用集中式存储方式,对存储服务器性能要求很高,成为系统性能的瓶颈。同时,其可靠性和安全性也很难满足大规模存储需要。随着存储技术的发展,大规模的数据存储系统需要采取分布式存储。分布式存储技术将文件或数据同步地分散于多个存储设备或节点上,这些设备或节点之间通过网络相互连接。区块链实现去中心化的分布式存储,可以基于可大规模伸缩的丰富计算资源实现分布式的部署,并在动态更新的情况下保证分布式存储数据的准确性。
技术实现思路
本公开实施例提出了一种基于区块链的文件存储方法。第一方面,本公开实施例提供了一种基于区块链的文件存储方法,该方法包括:获取待处理的目标文件和文件块大小;基于目标文件和文件块大小,生成文件块集合;对于文件块集合中的每个文件块,生成该文件块的哈希值,得到文件块集合的哈希值集合;基于哈希值集合,生成目标文件的文件标识;将文件块集合发送至第一终端,其中,第一终端存储文件块集合,第一终端生成存储记录表;接收第一终端返回的存储记录表;将文件标识和存储记录表记录到区块链中。在一些实施例中,基于目标文件和文件块大小,生成文件块集合,包括:获取目标文件大小s和文件块大小d;利用公式n=ceil(s/d)确定处理后的文件块数量,其中,n表示文件块数量,ceil表示用于获取大于s和d的商s/d的最小整数的函数;生成初始文件块集合Fseg={x1,x2,...,xn},其中,x表示初始文件块,x1表示第一个初始文件块,x2表示第二个初始文件块,xn表示第n个初始文件块,n表示所述初始文件块集合中的所述初始文件块数量,Fseg表示所述初始文件块集合;对所述初始文件块集合进行复制处理,生成所述文件块集合。在一些实施例中,对初始文件块集合进行复制处理,生成文件块集合,包括:对于初始文件块集合中的每个初始文件块,将该初始文件块进行复制生成初始复制文件块,得到第一数目m个初始复制文件块,生成初始复制文件块集合;根据初始复制文件块集合,利用公式生成文件块集合X,其中,m表示初始复制文件块的数目,n表示初始文件块数量,x表示初始复制文件块,i表示初始文件块数量计数,i≤n,i≥1,j为复制文件块的数量计数,j≤m,j≥1;x11表示第1个初始文件块的第一个复制文件块,x1j表示第1个初始文件块的第j个复制文件块,x1m表示第1个初始文件块的第m个复制文件块,xi1表示第i个初始文件块的第1个复制文件块,xij表示第i个初始文件块的第j个复制文件块,xim表示第i个初始文件块的第m个复制文件块。在一些实施例中,对于文件块集合中的每个文件块,生成该文件块的哈希值,得到文件块集合的哈希值集合,包括:通过如下公式确定文件块集合中的文件块数量:T=m×n,其中T表示文件块数量,m表示复制文件块的数目,n表示初始文件块数量;对于文件块集合中的每个文件块,生成该文件块的哈希值,得到T个哈希值;将T个哈希值确定为所述文件块集合的哈希值集合。在一些实施例中,基于哈希值集合,生成目标文件的文件标识,包括:将哈希值集合构建为树型数据结构,其中,树型数据结构包括叶子节点、中间节点、根结点,叶子节点存储哈希值集合中的哈希值,中间节点存储该中间节点的叶子节点的哈希值串联结果,根结点存储T个叶子节点中存储的T个哈希值的串联结果,其中,T表示文件块集合中的文件块数量;通过如下公式串联根结点存储的T个哈希值:Hash={hash(x11)...hash(x1,j)...hash(x1,m)...hash(xi,1)...hash(xi,m)},其中,Hash表示T个哈希值的串联结果,hash()表示生成文件块的哈希值,x11表示第1个初始文件块的第一个复制文件块,x1j表示第1个初始文件块的第j个复制文件块,x1m表示第1个初始文件块的第m个复制文件块,xim表示第i个初始文件块的第m个复制文件块;将T个哈希值的串联结果确定为目标文件的文件标识。在一些实施例中,第一终端存储文件集合,第一终端生成存储记录表,包括;第一终端确定第二数目p个存储单元的处理时间集合{ti;i∈[1,p]},其中t表示处理时间,i为存储单元计数,p是任意整数,p>T,ti表示第i个存储单元的处理时间;第一终端确定第二数目p个存储单元的等待时间集合{wi;i∈[1,p]},其中w表示等待时间,i为所述存储单元计数,p是任意整数,p>T,wi表示第i个存储单元的等待时间;第一终端利用处理时间集合和等待时间集合,生成p个存储单元的初始性能指标集合:{ti+wi;i∈[1,p]},其中,w表示等待时间,t表示处理时间,i为存储单元计数,p是任意整数,p>T,ti表示第i个存储单元的处理时间,wi表示第i个存储单元的等待时间,ti+wi表示第i个存储单元的初始性能指标;第一终端对初始性能指标集合中的每个初始性能指标,按照数值从大到小重新排序,生成性能指标序列;第一终端将文件块集合中的T个文件块,分别存储到性能指标集合中的前T个性能指标对应的各个存储单元中;第一终端根据文件块集合和性能指标集合的对应关系,生成存储记录表。在一些实施例中,将文件标识和存储记录表记录到区块链中,包括:调用智能合约,其中,智能合约包括智能合约代码、实例和执行数据;响应于确定具有写入区块链的权限和文件标识合法,运行智能合约代码,将文件标识和存储记录表存储在区块链中。第二方面,本公开的一些实施例提供了一种基于区块链的文件存储装置,包括:第一接收单元,被配置成获取待处理的目标文件和文件块大小;第一生成单元,被配置成基于目标文件和文件块大小,生成文件块集合;第二生成单元,被配置成对于文件块集合中的每个文件块,生成该文件块的哈希值,得到文件块集合的哈希值集合;第三生成单元,被配置成基于哈希值集合,生成目标文件的文件标识;信息发送单元,被配置成将文件块集合发送至第一终端,其中,第一终端存储文件块集合,第一终端生成存储记录表;存储单元,被配置成接收第一终端返回的存储记录表;解析单元,被配置成将文件标识和存储记录表记录到区块链中。第三方面,本公开实施例提供了一种终端设备,该终端设备包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当上述一个或多个程序被上述一个或多个处理器执行时,使得上述一个或多个处理器实现如第一方面中任一实现方式描述的方法。第四方面,本公开实施例提供了一种计算机可读介质,其上存储有计算机程序,其中,所述程序被处理器执行时实现如第一方面中任一实现方式描述的方法。本公开实施例提供一种基于区块链的文件存储方法,获取待处理的目标文件和文件块大小;基于目标文件和文件块大小,生成文件块集合;对于文件块集合中的每个文件块,生成该文件块的哈希值,得到文件块集合的哈希值集合;基于哈希值集合,生成目标文件的文件标识;将文件块本文档来自技高网...

【技术保护点】
1.一种基于区块链的文件存储方法,包括:/n获取待处理的目标文件和文件块大小;/n基于所述目标文件和所述文件块大小,生成文件块集合;/n对于所述文件块集合中的每个文件块,生成该文件块的哈希值,得到所述文件块集合的哈希值集合;/n基于所述哈希值集合,生成所述目标文件的文件标识;/n将所述文件块集合发送至第一终端,其中,所述第一终端存储所述文件块集合,所述第一终端生成存储记录表;/n接收所述第一终端返回的所述存储记录表;/n将所述文件标识和所述存储记录表记录到区块链中。/n

【技术特征摘要】
1.一种基于区块链的文件存储方法,包括:
获取待处理的目标文件和文件块大小;
基于所述目标文件和所述文件块大小,生成文件块集合;
对于所述文件块集合中的每个文件块,生成该文件块的哈希值,得到所述文件块集合的哈希值集合;
基于所述哈希值集合,生成所述目标文件的文件标识;
将所述文件块集合发送至第一终端,其中,所述第一终端存储所述文件块集合,所述第一终端生成存储记录表;
接收所述第一终端返回的所述存储记录表;
将所述文件标识和所述存储记录表记录到区块链中。


2.根据权利要求1所述的方法,其中,所述基于所述目标文件和所述文件块大小,生成文件块集合,包括:
获取所述目标文件大小s和所述文件块大小d;
利用公式n=ceil(s/d)确定处理后的文件块数量,其中,n表示所述文件块数量,ceil表示用于获取大于s和d的商s/d的最小整数的函数;
生成初始文件块集合Fseg={x1,x2,...,xn},其中,x表示初始文件块,x1表示第一个初始文件块,x2表示第二个初始文件块,xn表示第n个初始文件块,n表示所述初始文件块集合中的所述初始文件块数量,Fseg表示所述初始文件块集合;
对所述初始文件块集合进行复制处理,生成所述文件块集合。


3.根据权利要求2所述的方法,其中,所述对所述初始文件块集合进行复制处理,生成所述文件块集合,包括:
对于所述初始文件块集合中的每个初始文件块,将该初始文件块进行复制生成初始复制文件块,得到第一数目m个初始复制文件块,生成初始复制文件块集合;
根据所述初始复制文件块集合,利用公式生成所述文件块集合X,其中,m表示初始复制文件块的数目,x表示初始复制文件块,i表示初始文件块数量计数,i≤n,i≥1,n表示初始文件块数量,j为复制文件块的数量计数,j≤m,j≥1,x11表示第1个初始文件块的第一个复制文件块,x1j表示第1个初始文件块的第j个复制文件块,x1m表示第1个初始文件块的第m个复制文件块,xi1表示第i个初始文件块的第1个复制文件块,xij表示第i个初始文件块的第j个复制文件块,xim表示第i个初始文件块的第m个复制文件块。


4.根据权利要求3所述的方法,其中,所述对于所述文件块集合中的每个文件块,生成该文件块的哈希值,得到所述文件块集合的哈希值集合,包括:
通过如下公式确定所述文件块集合中的文件块数量:T=m×n,其中T表示所述文件块数量,m表示所述复制文件块的数目,n表示初始文件块数量;
对于所述文件块集合中的每个文件块,生成该文件块的哈希值,得到T个哈希值;
将所述T个哈希值确定为所述文件块集合的哈希值集合。


5.根据权利要求4所述的方法,其中,所述基于所述哈希值集合,生成所述目标文件的文件标识,包括:
将所述哈希值集合构建为树型数据结构,其中,所述树型数据结构包括叶子节点、中间节点、根结点,所述叶子节点存储所述哈希值集合中的哈希值,中间节点存储该中间节点的叶子节点的哈希值串联结果,根结点存储T个叶子节点中存储的T个哈希值的串联结果,其中,T表示所述文件块集合中的文件块数量;
通过如下公式串联所述根结点存储的T个哈希值:Hash={hash(x11)...hash(x1,j)...hash(x1,m)...hash(xi,1)...hash(xi,m)...

【专利技术属性】
技术研发人员:周纯
申请(专利权)人:宁波富万信息科技有限公司
类型:发明
国别省市:浙江;33

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

1