一种基于区块链智能合约的文件分布式存储方法技术

技术编号:26377026 阅读:19 留言:0更新日期:2020-11-19 23:45
本发明专利技术公开了一种基于区块链智能合约的文件分布式存储方法,涉及文件存储技术领域,将待存储文件按照既定大小的块对其进行切分,拆成若干子文件,并通过散列算法计算出每个子文件的散列值;在智能合约内建立用于存放所有子文件散列值的全局散列表,实现子文件内容及其散列值的映射存储;将待存储文件的切分后的子文件散列值按顺序整理成子文件排序表,作为文件的元数据之一。本发明专利技术实现文件的分布式存储,对于重复地内容,无需重复存储,极大地节约可存储资源;使得文件修改变为可能并且较为便利,并不会增加大量的重复存储;节约了大量的文件存储成本和修改成本。

【技术实现步骤摘要】
一种基于区块链智能合约的文件分布式存储方法
本专利技术涉及文件存储
,具体是一种基于区块链智能合约的文件分布式存储方法。
技术介绍
随着无纸化办公的推进,电子文件存储已经成为当下生活和工作离不开的应用。传统文件存储系统主要采用以下两种方式:1、利用中心化服务器(例如云盘)进行文件存储,通过冗余磁盘阵列保证数据不易失,这一方式为现代主流文件存储解决方案,一般由云存储服务商提供数据中心支持,通过品牌信用说服用户使用其文件托管服务;2、IPFS分布式文件存储,IPFS使用P2P组网,内容使用Merkle树组织,目前已实现的典型方案有FileCoin、FileStorm等,通过引入代币激励矿工来提供存储支持,经由IPFS对外提供服务的检索节点访问数据。第一种文件存储方式,文件存放于中心化服务器中,文件的安全性和可用性依赖于中心化服务器,存在数据丢失、内容易遭到篡改、文件查看和下载需经中心化服务器完成等缺陷;第二种文件存储方式的缺点在于,文件无法修改,存储修改后的文件只能通重新发布,成本较高,且数据访问依赖检索节点,这给文件的可用性带来了一定折损。
技术实现思路
针对现有文件存储系统的技术缺陷,本专利技术提供一种基于区块链智能合约的文件分布式存储方法,优化存储资源的同时,能够实现文件修改。一种基于区块链智能合约的文件分布式存储方法,将待存储文件按照既定大小的块对其进行切分,拆成若干子文件,并通过散列算法计算出每个子文件的散列值;在智能合约内建立用于存放所有子文件散列值的全局散列表,实现子文件内容及其散列值的映射存储;将待存储文件的切分后的子文件散列值按顺序整理成子文件排序表,作为文件的元数据之一。进一步的,块的大小为预设值,该预设值为全局参数或文件参数。进一步的,子文件排序表采用顺序结构或链式结构的线性表存储于智能合约内。进一步的,当发生散列冲突时,使用另一种散列算法计算出该子文件内容的二级散列值,并存放于二级散列表中,记录该子文件两次使用的散列算法及相应散列值;或者,将子文件内容依次存储并使用二级索引标记存储位置。进一步的,智能合约内计算的散列值与上传子文件的散列值不一致时,不允许上传;全局散列表按照用户进行数据权限隔离,每个用户可以读取任意用户的子文件,只能修改自己上传的子文件。进一步的,子文件内容存储于区块链网络或其他可信网络。本专利技术的有益效果:1、通过将文件切分成若干子文件,每个子文件内容与其散列值进行映射存储,并保存文件切分后的子文件排序表,实现文件的分布式存储,对于重复地内容,无需重复存储,极大地节约可存储资源;2、使得文件修改变为可能并且较为便利,并不会增加大量的重复存储;3、节约了大量的文件存储成本和修改成本。附图说明图1为子文件内容及其散列值的映射示意图。具体实施方式下面结合附图和具体实施方式对本专利技术作进一步详细的说明。本专利技术的实施例是为了示例和描述起见而给出的,而并不是无遗漏的或者将本专利技术限于所公开的形式。很多修改和变化对于本领域的普通技术人员而言是显而易见的。选择和描述实施例是为了更好说明本专利技术的原理和实际应用,并且使本领域的普通技术人员能够理解本专利技术从而设计适于特定用途的带有各种修改的各种实施例。一种基于区块链智能合约的文件分布式存储方法,将待存储文件按照既定大小的块对其进行切分,拆成若干子文件,存储至存储块,并通过散列算法计算出每个子文件的散列值;在智能合约内建立用于存放所有子文件散列值的全局散列表,实现子文件内容及其散列值的映射存储;将待存储文件的切分后的子文件散列值按顺序整理成子文件排序表,作为文件的元数据之一,如图1所示。基于上述文件分布式存储方法,文件存储、下载流程如下:1、文件存储业务:①将待存储文件按照既定大小的块对其进行切分,得到若干子文件;针对每一子文件,若已存储相同内容的子文件,则该子文件无需上传,即仅上传无相同内容的子文件;②所有需要上传的子文件均上传完毕后,将待存储文件的切分后的子文件散列值按顺序整理成子文件排序表,与其他元数据一起传递到智能合约内,完成此次文件存储,其中其他元数据包括但不限于上传者、文件名、文件大小。2、文件下载业务:①从智能合约内获取待下载文件的元数据(包括子文件排序表);②访问智能合约内的全局散列表,下载子文件内容并依序排列,完成待下载文件的重建,完成此次下载业务。通过文件存储、下载流程可以发现,本专利技术公开的文件分布式存储方法,对于重复的内容,无需重复存储,极大地节约可存储资源。去中心化区块链网络的存储消耗是按照字节计费的,因此通过本专利技术公开的文件分布式存储方法进行文件存储,能够极大地节约存储成本。块的大小为预设值,本实施例中,该预设值可以是全局参数,也可以是文件参数。若块的大小是全局参数,则可以提高全局散列表的复用率,每个子文件使用固定大小更有利于发现相同内容的子文件,从而减少相同内容子文件的重复存储。若块的大小是文件参数,则可以提供用户侧的灵活定制,用户根据其发现的可以复用子文件,按照一定大小的块对其待存储文件进行分割,从而提高特定文件(组)的文件复用率。子文件排序表可以采用顺序结构或链式结构的线性表存储于智能合约内。若采用顺序结构进行存储,则逻辑实现简单,但增删子文件时会产生大量的数据移动,进而增大智能合约的执行成本;若采用链式结构,随机访问性能和存储空间利用率存在一定的牺牲,但是动态增删子文件的执行成本会显著下降。子文件排序表具体选择何种线性存储结构,根据具体应用的实际情况进行选择。通过散列算法计算出每个子文件的散列值,存在不同内容的子文件计算出相同散列值的可能性。为了避免这种散列冲突引发文件存储冲突,当遇到散列冲突时,使用另一种散列算法计算出该子文件内容的二级散列值,并存放于二级散列表中,记录该子文件两次使用的散列算法及相应散列值,便于后期该子文件内容存储的定位;除此之外,还可以将子文件内容依次存储并使用二级索引标记存储位置,例如不同的两个子文件,散列值均为X,则用X0、X2对其进行区分。前一种是二维散列表存储,可以一定程序上避免冲突,重复文件的检索逻辑始终维持同样的时间复杂度,但是冲突的增加可能导致子文件无处存储的问题;后一种是采用二维线性表存储散列值,可以动态无限扩展,冲突增加时可以始终保证可用,但需要牺牲重复文件的检索速度。通常除了存储、下载业务外,还会有修改、快照业务等,文件修改、快照流程如下:1、文件修改业务(与文件存储业务类似):①将修改后文件按照既定大小的块对其进行切分,获取修改的子文件并对其进行上传;②修改的子文件上传完毕后,根据其散列值及其排列顺序,更新文件的子文件排序表,与其他元数据一起传递到智能合约内,完成此次文件修改业务。2、文件快照业务:将文件元数据执行一次备份即可,区块链本身也具有回溯链上数据历史状态的特性。通过文件修改流程可以发现,本专利技术公开的文件分布式存储方法,完全解决了现有的IPFS分布式文件存储不便于修改的问题,而且数据访本文档来自技高网...

【技术保护点】
1.一种基于区块链智能合约的文件分布式存储方法,其特征在于,将待存储文件按照既定大小的块对其进行切分,拆成若干子文件,并通过散列算法计算出每个子文件的散列值;在智能合约内建立用于存放所有子文件散列值的全局散列表,实现子文件内容及其散列值的映射存储;将待存储文件的切分后的子文件散列值按顺序整理成子文件排序表,作为文件的元数据之一。/n

【技术特征摘要】
1.一种基于区块链智能合约的文件分布式存储方法,其特征在于,将待存储文件按照既定大小的块对其进行切分,拆成若干子文件,并通过散列算法计算出每个子文件的散列值;在智能合约内建立用于存放所有子文件散列值的全局散列表,实现子文件内容及其散列值的映射存储;将待存储文件的切分后的子文件散列值按顺序整理成子文件排序表,作为文件的元数据之一。


2.根据权利要求1所述的文件分布式存储方法,其特征在于,块的大小为预设值,该预设值为全局参数或文件参数。


3.根据权利要求2所述的文件分布式存储方法,其特征在于,子文件排序表采用顺序结构或链式结构的线性表存储于智能合约内。


4.根据权利要求3所述的文件分布式存储方法,...

【专利技术属性】
技术研发人员:杨宁波杨智
申请(专利权)人:安徽高山科技有限公司
类型:发明
国别省市:安徽;34

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

1