CN111611622A - 基于区块链的文件存储方法和电子设备 - Google Patents

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

Info

Publication number
CN111611622A
CN111611622A CN202010478720.4A CN202010478720A CN111611622A CN 111611622 A CN111611622 A CN 111611622A CN 202010478720 A CN202010478720 A CN 202010478720A CN 111611622 A CN111611622 A CN 111611622A
Authority
CN
China
Prior art keywords
file
file block
block
blocks
initial
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.)
Withdrawn
Application number
CN202010478720.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.)
Ningbo Fuwan Information Technology Co ltd
Original Assignee
Ningbo Fuwan Information Technology Co ltd
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 Ningbo Fuwan Information Technology Co ltd filed Critical Ningbo Fuwan Information Technology Co ltd
Priority to CN202010478720.4A priority Critical patent/CN111611622A/zh
Publication of CN111611622A publication Critical patent/CN111611622A/zh
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

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

Description

基于区块链的文件存储方法和电子设备
技术领域
本公开实施例涉及保密和数据存储领域,具体涉及一种基于区块链的文件存储方法、电子设备。
背景技术
面对海量数据,传统数据存储方案采用网络存储。网络存储一般采用专用磁盘阵列存储数据,且大多采用集中式存储方式,对存储服务器性能要求很高,成为系统性能的瓶颈。同时,其可靠性和安全性也很难满足大规模存储需要。随着存储技术的发展,大规模的数据存储系统需要采取分布式存储。分布式存储技术将文件或数据同步地分散于多个存储设备或节点上,这些设备或节点之间通过网络相互连接。区块链实现去中心化的分布式存储,可以基于可大规模伸缩的丰富计算资源实现分布式的部署,并在动态更新的情况下保证分布式存储数据的准确性。
发明内容
本公开实施例提出了一种基于区块链的文件存储方法。
第一方面,本公开实施例提供了一种基于区块链的文件存储方法,该方法包括:获取待处理的目标文件和文件块大小;基于目标文件和文件块大小,生成文件块集合;对于文件块集合中的每个文件块,生成该文件块的哈希值,得到文件块集合的哈希值集合;基于哈希值集合,生成目标文件的文件标识;将文件块集合发送至第一终端,其中,第一终端存储文件块集合,第一终端生成存储记录表;接收第一终端返回的存储记录表;将文件标识和存储记录表记录到区块链中。
在一些实施例中,基于目标文件和文件块大小,生成文件块集合,包括:获取目标文件大小s和文件块大小d;利用公式n=ceil(s/d)确定处理后的文件块数量,其中,n表示文件块数量,ceil表示用于获取大于s和d的商s/d的最小整数的函数;生成初始文件块集合Fseg={x1,x2,...,xn},其中,x表示初始文件块,x1表示第一个初始文件块,x2表示第二个初始文件块,xn表示第n个初始文件块,n表示所述初始文件块集合中的所述初始文件块数量,Fseg表示所述初始文件块集合;对所述初始文件块集合进行复制处理,生成所述文件块集合。
在一些实施例中,对初始文件块集合进行复制处理,生成文件块集合,包括:对于初始文件块集合中的每个初始文件块,将该初始文件块进行复制生成初始复制文件块,得到第一数目m个初始复制文件块,生成初始复制文件块集合;根据初始复制文件块集合,利用公式
Figure BDA0002516632480000021
生成文件块集合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是本公开的一些实施例可以应用于其中的示例性系统的架构图;
图2是根据本公开的基于区块链的文件存储方法的一些实施例的流程图;
图3是根据本公开的一些实施例的基于区块链的文件存储方法的一个应用场景的示意图;
图4是适于用来实现本公开的一些实施例的服务器的计算机系统的结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的实施例。虽然附图中显示了本公开的某些实施例,然而应当理解的是,本公开可以通过各种形式来实现,而且不应该被解释为限于这里阐述的实施例。相反,提供这些实施例是为了更加透彻和完整地理解本公开。应当理解的是,本公开的附图及实施例仅用于示例性作用,并非用于限制本公开的保护范围。
另外还需要说明的是,为了便于描述,附图中仅示出了与有关发明相关的部分。在不冲突的情况下,本公开中的实施例及实施例中的特征可以相互组合。
需要注意,本公开中提及的“一个”、“多个”的修饰是示意性而非限制性的,本领域技术人员应当理解,除非在上下文另有明确指出,否则应该理解为“一个或多个”。
下面将参考附图并结合实施例来详细说明本公开。
图1示出了可以应用本公开的基于区块链的文件存储方法的实施例的示例性系统架构100。
如图1所示,系统架构100可以包括终端设备101、102、103,网络104和服务器105。网络104用以在终端设备101、102、103和服务器105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备101、102、103通过网络104与服务器105交互,以接收或发送消息等。终端设备101、102、103上可以安装有各种通讯客户端应用,例如文件存储应用、数据分析应用、自然语言处理应用等。
终端设备101、102、103可以是硬件,也可以是软件。当终端设备101、102、103为硬件时,可以是具有显示屏的各种终端设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。当终端设备101、102、103为软件时,可以安装在上述所列举的终端设备中。其可以实现成多个软件或软件模块(例如用来提供目标文件输入等),也可以实现成单个软件或软件模块。在此不做具体限定。
服务器105可以是提供各种服务的服务器,例如对终端设备101、102、103输入的目标数据进行存储的服务器等。服务器可以对接收到的目标文件进行切分以及分发、存储等处理,并将处理结果(例如切分后的文件块)反馈给终端设备。
需要说明的是,本公开实施例所提供的基于区块链的文件存储方法可以由服务器105,也可以由终端设备执行。
需要指出的是,服务器105的本地也可以直接存储文件,服务器105可以直接提取本地的文件通过切分处理得到文件块集合,此时,示例性系统架构100可以不包括终端设备101、102、103和网络104。
还需要指出的是,终端设备101、102、103中也可以安装有存储类应用,此时,切分处理方法也可以由终端设备101、102、103执行。此时,示例性系统架构100也可以不包括服务器105和网络104。
需要说明的是,服务器105可以是硬件,也可以是软件。当服务器105为硬件时,可以实现成多个服务器组成的分布式服务器集群,也可以实现成单个服务器。当服务器为软件时,可以实现成多个软件或软件模块(例如用来提供存储服务),也可以实现成单个软件或软件模块。在此不做具体限定。
应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
继续参考图2,示出了根据本公开的基于区块链的文件存储方法的一些实施例的流程200。该基于区块链的文件存储方法,包括以下步骤:
步骤201,获取待处理的目标文件和文件块大小。
在一些实施例中,基于区块链的文件存储方法的执行主体(例如图1所示的终端设备)可以直接获取目标用户待存储的目标文件。可选的,目标用户是指提供待存储的目标文件的用户。
可选的,文件可以是操作系统管理磁盘中的数据的基本单元。文件可以是由字节组成的。文件可以包括但不限于以下形式之一:为文本文件、视频文件、音频文件、图像文件、可执行文件等等。具体的,目标文件大小记为s。
可选的,文件块可以是一组按顺序连续排列在一起的文件的集合。文件块的大小可以是文件块中所存储的文件数据的容量。
步骤202,基于目标文件和文件块大小,生成文件块集合。
在一些实施例中,上述执行主体利用公式n=ceil(s/d)确定处理后的文件块集合中所包含的文件块数量。其中,n表示所述文件块数量,ceil表示用于获取大于s和d的商s/d的最小整数的函数。s表示目标文件大小,d表示文件块大小。
可选的,生成初始文件块集合Fseg={x1,x2,...,xn}。其中,x表示初始文件块,x1表示第一个初始文件块,x2表示第二个初始文件块,xn表示第n个初始文件块,n表示初始文件块集合中的初始文件块数量,Fseg表示初始文件块集合。对于初始文件块集合中的每个初始文件块,将该初始文件块进行复制生成初始复制文件块,得到第一数目m个初始复制文件块,生成初始复制文件块集合。
可选的,根据初始复制文件块集合,利用下述公式生成文件块集合X:
Figure BDA0002516632480000071
其中,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个复制文件块。
通过文件块的切分和复制处理,将目标文件拆分成小的文件子块,再基于文件子块生成复制文件块。将重复备份后的文件子块存储于多个存储单元中,当出现存储单元故障而丢失所存储的文件子块的情况,能够有效利用其它相同的复制文件块恢复目标文件。
步骤203,对于文件块集合中的每个文件块,生成该文件块的哈希值,得到文件块集合的哈希值集合。
在一些实施例中,上述执行主体通过如下公式确定文件块集合中的文件块数量
T=m×n
其中,T表示文件块数量,m表示复制文件块的数目,n表示初始文件块数量。
可选的,对于所述文件块集合中的每个文件块,生成该文件块的哈希值,得到T个哈希值,其中,T表示文件块数量。将T个哈希值确定为文件块集合的哈希值集合。
步骤204,基于哈希值集合,生成目标文件的文件标识。
在一些实施例中,上述执行主体将哈希值集合构建为树型数据结构。其中,树型数据结构包括叶子节点、中间节点、根结点。叶子节点存储哈希值集合中的哈希值。中间节点存储该中间节点的叶子节点的哈希值串联结果。根结点存储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个哈希值的串联结果Hash确定为目标文件的文件标识。具体的,T为“4”。T个哈希值为“00740f4”、“bf03b40”、“79a664”、“68712d3”。将4个哈希值串联后得到的结果为“00740f4bf03b4079a66468712d3”。将“00740f4bf03b4079a66468712d3”确定为目标文件的文件标识。
步骤205,将所述文件块集合发送至第一终端。
在一些实施例中,上述执行主体将文件块集合发送至第一终端。其中,第一终端存储所述文件块集合。第一终端生成存储记录表。
可选的,第一终端确定第二数目p个存储单元的处理时间集合。其中t表示处理时间,i为存储单元计数,p是任意整数,p>T,ti表示第i个存储单元的处理时间。第一终端确定第二数目p个存储单元的等待时间集合{wi;i∈[1,p]}。其中w表示等待时间,i为存储单元计数,p是任意整数,p>T。wi表示第i个存储单元的等待时间。T表示文件块集合中的文件块数量
第一终端利用处理时间集合和等待时间集合,生成p个存储单元的初始性能指标集合:{ti+wi;i∈[1,p]}。其中,w表示等待时间,t表示处理时间,i为存储单元计数,p是任意整数,p>T。ti表示第i个存储单元的处理时间。wi表示第i个存储单元的等待时间。ti+wi表示第i个存储单元的初始性能指标。T表示文件块集合中的文件块数量
第一终端对初始性能指标集合中的每个初始性能指标,按照数值从大到小重新排序,生成性能指标序列。第一终端将文件块集合中的T个文件块,分别存储到性能指标集合中的前T个性能指标对应的各个存储单元中。第一终端根据文件块集合和性能指标集合的对应关系,生成存储记录表。
第一终端根据各个存储单元的处理时间和等待时间的情况,判断存储单元的性能,形成性能指标序列。将文件块集合中的各个文件块存储于第一终端中排名前T个性能指标对应的存储单元中,优先选择性能好的存储单元用于存储目标文件。
步骤206,接收第一终端返回的存储记录表。
在一些实施例中,上述执行主体接收第一终端返回的存储记录表。
步骤206,将文件标识和存储记录表记录到区块链中。
在一些实施例中,上述执行主体调用智能合约。智能合约是一套以数字形式定义的承诺。智能合约可以控制区块链中的数据,约定区块链中各个参与终端的权利和义务。智能合约可以由计算机系统自动执行。具体的,智能合约包括智能合约代码、实例和执行数据。智能合约代码可以是智能合约的源代码。智能合约代码可以是一份计算机系统能够执行的代码。实例可以是区块链中运行智能合约的一个实际业务。执行数据可以是执行一个实例后在区块链中留存的数据。
可选的,响应于确定具有写入区块链的权限和文件标识合法,运行智能合约代码,将文件标识和存储记录表存储在区块链中。具体的,可以将文件标识和存储记录表形成一个区块。运行智能合约代码,将该区块添加到区块链中。具体的,记录该区块的智能合约在运行过程中产生实例和执行数据。将该实例和执行数据记录在区块链中。
图2给出的一个实施例具有如下有益效果:切分目标数据生成文件块集合。对文件块集合中的每个文件块生成哈希值,得到目标文件的文件标识。将文件块集合发送至第一终端,分散存储在对应的存储单元中,生成存储记录表记录存储单元和文件块的存储关系。执行主体将文件标识和存储记录表记录到区块链中并发布。本公开的实施例针对切分后的文件块生成哈希值,基于哈希值生成文件标识,将文件块分散存储后生成存储记录表,将文件标识和存储记录表记录到区块链中,提高了存储数据的安全性和不可篡改。。
继续参考图3,示出了根据本公开的基于区块链的文件存储方法的一个应用场景的示意图。
在图3的应用场景中,用户向服务器发送待存储的目标文件301。服务器接收到文件后,生成目标文件的文件标识302。服务器将文件块集合发送至第一终端303,并由第一终端完成存储。第一终端将生成的存储记录表发送至服务器304。服务器将文件标识和存储记录表记录到区块链中305。
本申请实施例提供的基于区块链的文件存储方法,首先将待存储的目标文件切成形成文件块集合。再对文件块集合中的每个文件块生成该文件块的哈希值,最终得到目标文件的文件标识。将文件块集合发送至第一终端存储,并接收第一终端发回的存储记录表。将文件标识和存储记录表记录到区块链中。该基于区块链的文件存储方法,可以利用区块链的架构保证所存储文件的安全性。文件存储在第一终端中,并未存储在区块链中,能够满足大容量文件存储的需求。
下面参考图4,其示出了适于用来实现本公开实施例的服务器的计算机系统400的结构示意图。图4示出的服务器仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图4所示,计算机系统400包括中央处理单元(CPU,Central Processing Unit)401,其可以根据存储在只读存储器(ROM,Read Only Memory)402中的程序或者从存储部分408加载到随机访问存储器(RAM,Random Access Memory)403中的程序而执行各种适当的动作和处理。在RAM 403中,还存储有系统400操作所需的各种程序和数据。CPU 401、ROM402以及RAM 403通过总线404彼此相连。输入/输出(I/O,Input/Output)接口405也连接至总线404。
以下部件连接至I/O接口405:包括硬盘等的存储部分406;以及包括诸如LAN(局域网,Local Area Network)卡、调制解调器等的网络接口卡的通信部分407。通信部分407经由诸如因特网的网络执行通信处理。驱动器408也根据需要连接至I/O接口405。可拆卸介质409,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器408上,以便于从其上读出的计算机程序根据需要被安装入存储部分406。
特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分407从网络上被下载和安装,和/或从可拆卸介质409被安装。在该计算机程序被中央处理单元(CPU)401执行时,执行本公开的方法中限定的上述功能。需要说明的是,本公开所述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本公开的操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如C语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上描述仅为本公开的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本公开中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本公开中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。

Claims (10)

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个初始复制文件块,生成初始复制文件块集合;
根据所述初始复制文件块集合,利用公式
Figure FDA0002516632470000021
生成所述文件块集合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)},其中,Hash表示T个哈希值的串联结果,hash()表示生成所述文件块的哈希值,x11表示第1个初始文件块的第一个复制文件块,x1j表示第1个初始文件块的第j个复制文件块,x1m表示第1个初始文件块的第m个复制文件块,xim表示第i个初始文件块的第m个复制文件块;
将所述T个哈希值的串联结果确定为所述目标文件的文件标识。
6.根据权利要求5所述的方法,其中,所述第一终端存储所述文件集合,所述第一终端生成存储记录表,包括;
所述第一终端确定第二数目p个存储单元的处理时间集合{ti;i∈[1,p]},其中t表示处理时间,i为存储单元计数,p是任意整数,p>T,ti表示第i个存储单元的处理时间,T表示文件块集合中的文件块数量;
所述第一终端确定第二数目p个存储单元的等待时间集合{wi;i∈[1,p]},其中w表示等待时间,i为所述存储单元计数,p是任意整数,p>T,wi表示第i个存储单元的等待时间,T表示文件块集合中的文件块数量;
所述第一终端利用所述处理时间集合和所述等待时间集合,生成p个存储单元的初始性能指标集合:{ti+wi;i∈[1,p]},其中,w表示扽带时间,t表示处理时间,i为所述存储单元计数,p是任意整数,p>T,ti表示第i个存储单元的处理时间,wi表示第i个存储单元的等待时间,ti+wi表示第i个存储单元的初始性能指标,T表示文件块集合中的文件块数量;
所述第一终端对所述初始性能指标集合中的每个初始性能指标,按照数值从大到小重新排序,生成性能指标序列;
所述第一终端将所述文件块集合中的T个文件块,分别存储到所述性能指标集合中的前T个性能指标对应的各个存储单元中;
所述第一终端根据所述文件块集合和所述性能指标集合的对应关系,生成存储记录表。
7.根据权利要求6所述的方法,其中,所述将所述文件标识和所述存储记录表记录到区块链中,包括:
调用智能合约,其中,所述智能合约包括智能合约代码、实例和执行数据;
响应于确定具有写入区块链的权限和所述文件标识合法,运行所述智能合约代码,将所述文件标识和所述存储记录表存储在区块链中。
8.一种基于区块链的文件存储装置,包括:
第一接收单元,被配置成获取待处理的目标文件和文件块大小;
第一生成单元,被配置成基于所述目标文件和所述文件块大小,生成文件块集合;
第二生成单元,被配置成对于所述文件块集合中的每个文件块,生成该文件块的哈希值,得到所述文件块集合的哈希值集合;
第三生成单元,被配置成基于所述哈希值集合,生成所述目标文件的文件标识;
信息发送单元,被配置成将所述文件块集合发送至第一终端,其中,所述第一终端存储所述文件块集合,所述第一终端生成存储记录表;
存储单元,被配置成接收所述第一终端返回的所述存储记录表;
解析单元,被配置成将所述文件标识和所述存储记录表记录到区块链中。
9.一种第一终端设备,包括:
一个或多个处理器;
存储装置,其上存储有一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-8中任一所述的方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其中,所述程序被处理器执行时实现如权利要求1-8中任一所述的方法。
CN202010478720.4A 2020-05-29 2020-05-29 基于区块链的文件存储方法和电子设备 Withdrawn CN111611622A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010478720.4A CN111611622A (zh) 2020-05-29 2020-05-29 基于区块链的文件存储方法和电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010478720.4A CN111611622A (zh) 2020-05-29 2020-05-29 基于区块链的文件存储方法和电子设备

Publications (1)

Publication Number Publication Date
CN111611622A true CN111611622A (zh) 2020-09-01

Family

ID=72203784

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010478720.4A Withdrawn CN111611622A (zh) 2020-05-29 2020-05-29 基于区块链的文件存储方法和电子设备

Country Status (1)

Country Link
CN (1) CN111611622A (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112565448A (zh) * 2020-12-16 2021-03-26 宁波云麟信息科技有限公司 基于区块链的电子存证节点选择方法和电子设备
CN112579297A (zh) * 2020-12-25 2021-03-30 中国农业银行股份有限公司 一种数据处理方法及装置
CN112688996A (zh) * 2020-12-16 2021-04-20 宁波云麟信息科技有限公司 基于区块链的电子存证数据存储方法和电子设备
WO2022222786A1 (zh) * 2021-04-20 2022-10-27 支付宝(杭州)信息技术有限公司 文件存证的方法、装置及设备

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112565448A (zh) * 2020-12-16 2021-03-26 宁波云麟信息科技有限公司 基于区块链的电子存证节点选择方法和电子设备
CN112688996A (zh) * 2020-12-16 2021-04-20 宁波云麟信息科技有限公司 基于区块链的电子存证数据存储方法和电子设备
CN112579297A (zh) * 2020-12-25 2021-03-30 中国农业银行股份有限公司 一种数据处理方法及装置
WO2022222786A1 (zh) * 2021-04-20 2022-10-27 支付宝(杭州)信息技术有限公司 文件存证的方法、装置及设备

Similar Documents

Publication Publication Date Title
CN111611622A (zh) 基于区块链的文件存储方法和电子设备
CN109254733B (zh) 用于存储数据的方法、装置和系统
US9934260B2 (en) Streamlined analytic model training and scoring system
US9250946B2 (en) Efficient provisioning of cloned virtual machine images using deduplication metadata
US8819488B1 (en) Architecture for end-to-end testing of long-running, multi-stage asynchronous data processing services
US11314451B2 (en) Method and apparatus for storing data
CN107220271B (zh) 一种分布式数字资源存储处理与管理的方法及系统
US11388244B1 (en) Method, device, and program product for managing computer system
CN111966631A (zh) 一种可快速分发的镜像文件生成方法、系统、设备和介质
US11487736B2 (en) Blockchain transaction processing systems and methods
CN111611621A (zh) 基于区块链的分布式数据加密存储方法和电子设备
CN111338834B (zh) 数据存储方法和装置
CN115801980A (zh) 视频生成方法和装置
CN112182112A (zh) 基于区块链的分布式数据动态存储方法和电子设备
CN112182111B (zh) 基于区块链的分布式系统分层处理方法和电子设备
CN111610938B (zh) 分布式数据编码存储方法、电子设备和计算机可读存储介质
CN112181307A (zh) 基于区块链的分布式数据冗余存储方法和电子设备
CN112182108A (zh) 基于区块链的分布式数据存储更新方法和电子设备
CN111444148B (zh) 基于MapReduce的数据传输方法和装置
WO2022156087A1 (zh) 数据血缘关系建立方法、装置、计算机设备及存储介质
CN111951112A (zh) 基于区块链的智能合约执行方法、终端设备和存储介质
CN110941658A (zh) 一种数据导出方法、装置、服务器及存储介质
CN112825525A (zh) 用于处理事务的方法和装置
CN113760680A (zh) 一种系统压力性能测试的方法和装置
CN112597119A (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
WW01 Invention patent application withdrawn after publication
WW01 Invention patent application withdrawn after publication

Application publication date: 20200901