CN111950025A - 一种基于区块链智能合约的文件分布式存储方法 - Google Patents
一种基于区块链智能合约的文件分布式存储方法 Download PDFInfo
- Publication number
- CN111950025A CN111950025A CN202010847039.2A CN202010847039A CN111950025A CN 111950025 A CN111950025 A CN 111950025A CN 202010847039 A CN202010847039 A CN 202010847039A CN 111950025 A CN111950025 A CN 111950025A
- Authority
- CN
- China
- Prior art keywords
- file
- hash
- subfile
- subfiles
- storage
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/11—File system administration, e.g. details of archiving or snapshots
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/16—File or folder operations, e.g. details of user interfaces specifically adapted to file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Computer Security & Cryptography (AREA)
- Data Mining & Analysis (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Human Computer Interaction (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于区块链智能合约的文件分布式存储方法,涉及文件存储技术领域,将待存储文件按照既定大小的块对其进行切分,拆成若干子文件,并通过散列算法计算出每个子文件的散列值;在智能合约内建立用于存放所有子文件散列值的全局散列表,实现子文件内容及其散列值的映射存储;将待存储文件的切分后的子文件散列值按顺序整理成子文件排序表,作为文件的元数据之一。本发明实现文件的分布式存储,对于重复地内容,无需重复存储,极大地节约可存储资源;使得文件修改变为可能并且较为便利,并不会增加大量的重复存储;节约了大量的文件存储成本和修改成本。
Description
技术领域
本发明涉及文件存储技术领域,具体是一种基于区块链智能合约的文件分布式存储方法。
背景技术
随着无纸化办公的推进,电子文件存储已经成为当下生活和工作离不开的应用。传统文件存储系统主要采用以下两种方式:1、利用中心化服务器(例如云盘)进行文件存储,通过冗余磁盘阵列保证数据不易失,这一方式为现代主流文件存储解决方案,一般由云存储服务商提供数据中心支持,通过品牌信用说服用户使用其文件托管服务;2、IPFS分布式文件存储,IPFS使用P2P组网,内容使用Merkle树组织,目前已实现的典型方案有FileCoin、F ileStorm等,通过引入代币激励矿工来提供存储支持,经由IPFS对外提供服务的检索节点访问数据。
第一种文件存储方式,文件存放于中心化服务器中,文件的安全性和可用性依赖于中心化服务器,存在数据丢失、内容易遭到篡改、文件查看和下载需经中心化服务器完成等缺陷;第二种文件存储方式的缺点在于,文件无法修改,存储修改后的文件只能通重新发布,成本较高,且数据访问依赖检索节点,这给文件的可用性带来了一定折损。
发明内容
针对现有文件存储系统的技术缺陷,本发明提供一种基于区块链智能合约的文件分布式存储方法,优化存储资源的同时,能够实现文件修改。
一种基于区块链智能合约的文件分布式存储方法,将待存储文件按照既定大小的块对其进行切分,拆成若干子文件,并通过散列算法计算出每个子文件的散列值;在智能合约内建立用于存放所有子文件散列值的全局散列表,实现子文件内容及其散列值的映射存储;将待存储文件的切分后的子文件散列值按顺序整理成子文件排序表,作为文件的元数据之一。
进一步的,块的大小为预设值,该预设值为全局参数或文件参数。
进一步的,子文件排序表采用顺序结构或链式结构的线性表存储于智能合约内。
进一步的,当发生散列冲突时,使用另一种散列算法计算出该子文件内容的二级散列值,并存放于二级散列表中,记录该子文件两次使用的散列算法及相应散列值;或者,将子文件内容依次存储并使用二级索引标记存储位置。
进一步的,智能合约内计算的散列值与上传子文件的散列值不一致时,不允许上传;全局散列表按照用户进行数据权限隔离,每个用户可以读取任意用户的子文件,只能修改自己上传的子文件。
进一步的,子文件内容存储于区块链网络或其他可信网络。
本发明的有益效果:1、通过将文件切分成若干子文件,每个子文件内容与其散列值进行映射存储,并保存文件切分后的子文件排序表,实现文件的分布式存储,对于重复地内容,无需重复存储,极大地节约可存储资源;2、使得文件修改变为可能并且较为便利,并不会增加大量的重复存储;3、节约了大量的文件存储成本和修改成本。
附图说明
图1为子文件内容及其散列值的映射示意图。
具体实施方式
下面结合附图和具体实施方式对本发明作进一步详细的说明。本发明的实施例是为了示例和描述起见而给出的,而并不是无遗漏的或者将本发明限于所公开的形式。很多修改和变化对于本领域的普通技术人员而言是显而易见的。选择和描述实施例是为了更好说明本发明的原理和实际应用,并且使本领域的普通技术人员能够理解本发明从而设计适于特定用途的带有各种修改的各种实施例。
一种基于区块链智能合约的文件分布式存储方法,将待存储文件按照既定大小的块对其进行切分,拆成若干子文件,存储至存储块,并通过散列算法计算出每个子文件的散列值;在智能合约内建立用于存放所有子文件散列值的全局散列表,实现子文件内容及其散列值的映射存储;将待存储文件的切分后的子文件散列值按顺序整理成子文件排序表,作为文件的元数据之一,如图1所示。
基于上述文件分布式存储方法,文件存储、下载流程如下:
1、文件存储业务:①将待存储文件按照既定大小的块对其进行切分,得到若干子文件;针对每一子文件,若已存储相同内容的子文件,则该子文件无需上传,即仅上传无相同内容的子文件;②所有需要上传的子文件均上传完毕后,将待存储文件的切分后的子文件散列值按顺序整理成子文件排序表,与其他元数据一起传递到智能合约内,完成此次文件存储,其中其他元数据包括但不限于上传者、文件名、文件大小。
2、文件下载业务:①从智能合约内获取待下载文件的元数据(包括子文件排序表);②访问智能合约内的全局散列表,下载子文件内容并依序排列,完成待下载文件的重建,完成此次下载业务。
通过文件存储、下载流程可以发现,本发明公开的文件分布式存储方法,对于重复的内容,无需重复存储,极大地节约可存储资源。去中心化区块链网络的存储消耗是按照字节计费的,因此通过本发明公开的文件分布式存储方法进行文件存储,能够极大地节约存储成本。
块的大小为预设值,本实施例中,该预设值可以是全局参数,也可以是文件参数。若块的大小是全局参数,则可以提高全局散列表的复用率,每个子文件使用固定大小更有利于发现相同内容的子文件,从而减少相同内容子文件的重复存储。若块的大小是文件参数,则可以提供用户侧的灵活定制,用户根据其发现的可以复用子文件,按照一定大小的块对其待存储文件进行分割,从而提高特定文件(组)的文件复用率。
子文件排序表可以采用顺序结构或链式结构的线性表存储于智能合约内。若采用顺序结构进行存储,则逻辑实现简单,但增删子文件时会产生大量的数据移动,进而增大智能合约的执行成本;若采用链式结构,随机访问性能和存储空间利用率存在一定的牺牲,但是动态增删子文件的执行成本会显著下降。子文件排序表具体选择何种线性存储结构,根据具体应用的实际情况进行选择。
通过散列算法计算出每个子文件的散列值,存在不同内容的子文件计算出相同散列值的可能性。为了避免这种散列冲突引发文件存储冲突,当遇到散列冲突时,使用另一种散列算法计算出该子文件内容的二级散列值,并存放于二级散列表中,记录该子文件两次使用的散列算法及相应散列值,便于后期该子文件内容存储的定位;除此之外,还可以将子文件内容依次存储并使用二级索引标记存储位置,例如不同的两个子文件,散列值均为X,则用X0、X2对其进行区分。前一种是二维散列表存储,可以一定程序上避免冲突,重复文件的检索逻辑始终维持同样的时间复杂度,但是冲突的增加可能导致子文件无处存储的问题;后一种是采用二维线性表存储散列值,可以动态无限扩展,冲突增加时可以始终保证可用,但需要牺牲重复文件的检索速度。
通常除了存储、下载业务外,还会有修改、快照业务等,文件修改、快照流程如下:
1、文件修改业务(与文件存储业务类似):①将修改后文件按照既定大小的块对其进行切分,获取修改的子文件并对其进行上传;②修改的子文件上传完毕后,根据其散列值及其排列顺序,更新文件的子文件排序表,与其他元数据一起传递到智能合约内,完成此次文件修改业务。
2、文件快照业务:将文件元数据执行一次备份即可,区块链本身也具有回溯链上数据历史状态的特性。
通过文件修改流程可以发现,本发明公开的文件分布式存储方法,完全解决了现有的I PFS分布式文件存储不便于修改的问题,而且数据访问灵活遍历。
当然,为防止恶意攻击,智能合约内计算的散列值与存储子文件的散列值不一致时,不允许存储,防止恶意攻击者利用篡改过的内容污染全局散列表的准确性。
全局散列表按照用户进行数据权限隔离,每个用户可以读取任意用户的子文件,只能修改自己上传的子文件。假设用户甲和用户乙上传了相同的文件A,当拆分后的块的大小相同时,获得的子文件及其散列值也完全相同,即用户甲和用户乙上传的文件仅在存储设备内占用了一份文件的存储空间,但是不同用户上传的文件,其元数据中包含的上传者是不同的。
当用户甲对其上传的文件A进行修改,形成文件A0时,用户乙上传的文件A的元数据(包括其中的子文件排序表)是不变的;仅用户甲原先的文件A的元数据发生了变化,子文件排序表按照修改后的文件进行了更新,文件名和文件大小均按照修改动作进行了更新。
用户ID还可以作为二维散列表的第二维数据,对不同用户上传的相同文件进行区分。
本实施例中,文件元数据存储于区块链网络之中,子文件内容存储于区块链网络或其他可信网络,例如分布式网络中。
显然,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域及相关领域的普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都应属于本发明保护的范围。
Claims (7)
1.一种基于区块链智能合约的文件分布式存储方法,其特征在于,将待存储文件按照既定大小的块对其进行切分,拆成若干子文件,并通过散列算法计算出每个子文件的散列值;在智能合约内建立用于存放所有子文件散列值的全局散列表,实现子文件内容及其散列值的映射存储;将待存储文件的切分后的子文件散列值按顺序整理成子文件排序表,作为文件的元数据之一。
2.根据权利要求1所述的文件分布式存储方法,其特征在于,块的大小为预设值,该预设值为全局参数或文件参数。
3.根据权利要求2所述的文件分布式存储方法,其特征在于,子文件排序表采用顺序结构或链式结构的线性表存储于智能合约内。
4.根据权利要求3所述的文件分布式存储方法,其特征在于,当发生散列冲突时,使用另一种散列算法计算出该子文件内容的二级散列值,并存放于二级散列表中,记录该子文件两次使用的散列算法及相应散列值。
5.根据权利要求3所述的文件分布式存储方法,其特征在于,当发生散列冲突时,将子文件内容依次存储并使用二级索引标记存储位置。
6.根据权利要求1-5任意一项所述的文件分布式存储方法,其特征在于,智能合约内计算的散列值与上传子文件的散列值不一致时,不允许上传;全局散列表按照用户进行数据权限隔离,每个用户可以读取任意用户的子文件,只能修改自己上传的子文件。
7.根据权利要求6所述的文件分布式存储方法,其特征在于,子文件内容存储于区块链网络或其他可信网络。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010847039.2A CN111950025A (zh) | 2020-08-21 | 2020-08-21 | 一种基于区块链智能合约的文件分布式存储方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010847039.2A CN111950025A (zh) | 2020-08-21 | 2020-08-21 | 一种基于区块链智能合约的文件分布式存储方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111950025A true CN111950025A (zh) | 2020-11-17 |
Family
ID=73358774
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010847039.2A Pending CN111950025A (zh) | 2020-08-21 | 2020-08-21 | 一种基于区块链智能合约的文件分布式存储方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111950025A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112667592A (zh) * | 2020-12-24 | 2021-04-16 | 平安科技(深圳)有限公司 | 数据存储方法、装置、计算机设备和存储介质 |
CN112783871A (zh) * | 2021-03-16 | 2021-05-11 | 广东核电合营有限公司 | 标牌数据处理方法、装置、计算机设备和存储介质 |
CN113111043A (zh) * | 2021-04-21 | 2021-07-13 | 北京大学 | 一种中台源数据文件的处理方法、装置、系统及存储介质 |
CN114416670A (zh) * | 2022-04-01 | 2022-04-29 | 天津联想协同科技有限公司 | 适用于网盘文档的索引创建方法、装置、网盘及存储介质 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108111585A (zh) * | 2017-12-15 | 2018-06-01 | 成都链网络科技有限公司 | 基于区块链的分布式存储方法 |
CN109145612A (zh) * | 2018-07-05 | 2019-01-04 | 东华大学 | 基于区块链实现防数据篡改、用户共谋的云数据共享方法 |
CN109246211A (zh) * | 2018-08-30 | 2019-01-18 | 南方科技大学 | 一种区块链中的资源上传和资源请求方法 |
CN109376172A (zh) * | 2018-09-27 | 2019-02-22 | 精硕科技(北京)股份有限公司 | 基于区块链的数据获取方法和系统 |
CN109587253A (zh) * | 2018-12-11 | 2019-04-05 | 浙江大学 | 一种基于区块链对文件实现分布式存储的方法 |
CN109634932A (zh) * | 2018-11-30 | 2019-04-16 | 北京瑞卓喜投科技发展有限公司 | 一种智能合约存储方法及存储系统 |
CN109918375A (zh) * | 2019-02-26 | 2019-06-21 | 杭州云象网络技术有限公司 | 一种基于区块链和分布式存储的大文本存储、索引及检索方法 |
CN110032545A (zh) * | 2019-03-27 | 2019-07-19 | 远光软件股份有限公司 | 基于区块链的文件存储方法、系统及电子设备 |
CN111049884A (zh) * | 2019-11-18 | 2020-04-21 | 武汉方始科技有限公司 | 一种分布式大文件存储系统及文件上传和下载方法 |
CN111127013A (zh) * | 2019-12-24 | 2020-05-08 | 深圳大学 | 基于区块链的去中心化数据交易方法、装置、设备及介质 |
-
2020
- 2020-08-21 CN CN202010847039.2A patent/CN111950025A/zh active Pending
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108111585A (zh) * | 2017-12-15 | 2018-06-01 | 成都链网络科技有限公司 | 基于区块链的分布式存储方法 |
CN109145612A (zh) * | 2018-07-05 | 2019-01-04 | 东华大学 | 基于区块链实现防数据篡改、用户共谋的云数据共享方法 |
CN109246211A (zh) * | 2018-08-30 | 2019-01-18 | 南方科技大学 | 一种区块链中的资源上传和资源请求方法 |
CN109376172A (zh) * | 2018-09-27 | 2019-02-22 | 精硕科技(北京)股份有限公司 | 基于区块链的数据获取方法和系统 |
CN109634932A (zh) * | 2018-11-30 | 2019-04-16 | 北京瑞卓喜投科技发展有限公司 | 一种智能合约存储方法及存储系统 |
CN109587253A (zh) * | 2018-12-11 | 2019-04-05 | 浙江大学 | 一种基于区块链对文件实现分布式存储的方法 |
CN109918375A (zh) * | 2019-02-26 | 2019-06-21 | 杭州云象网络技术有限公司 | 一种基于区块链和分布式存储的大文本存储、索引及检索方法 |
CN110032545A (zh) * | 2019-03-27 | 2019-07-19 | 远光软件股份有限公司 | 基于区块链的文件存储方法、系统及电子设备 |
CN111049884A (zh) * | 2019-11-18 | 2020-04-21 | 武汉方始科技有限公司 | 一种分布式大文件存储系统及文件上传和下载方法 |
CN111127013A (zh) * | 2019-12-24 | 2020-05-08 | 深圳大学 | 基于区块链的去中心化数据交易方法、装置、设备及介质 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112667592A (zh) * | 2020-12-24 | 2021-04-16 | 平安科技(深圳)有限公司 | 数据存储方法、装置、计算机设备和存储介质 |
CN112667592B (zh) * | 2020-12-24 | 2024-05-07 | 平安科技(深圳)有限公司 | 数据存储方法、装置、计算机设备和存储介质 |
CN112783871A (zh) * | 2021-03-16 | 2021-05-11 | 广东核电合营有限公司 | 标牌数据处理方法、装置、计算机设备和存储介质 |
CN113111043A (zh) * | 2021-04-21 | 2021-07-13 | 北京大学 | 一种中台源数据文件的处理方法、装置、系统及存储介质 |
CN114416670A (zh) * | 2022-04-01 | 2022-04-29 | 天津联想协同科技有限公司 | 适用于网盘文档的索引创建方法、装置、网盘及存储介质 |
CN114416670B (zh) * | 2022-04-01 | 2022-07-26 | 天津联想协同科技有限公司 | 适用于网盘文档的索引创建方法、装置、网盘及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111950025A (zh) | 一种基于区块链智能合约的文件分布式存储方法 | |
EP3818450B1 (en) | Using a storage system to optimize and maintain the metadata associated with a plurality of small files | |
US9183213B2 (en) | Indirection objects in a cloud storage system | |
US10810168B2 (en) | Allocating file system metadata to storage nodes of distributed file system | |
US9785646B2 (en) | Data file handling in a network environment and independent file server | |
CN102495894A (zh) | 重复数据查找方法、装置及系统 | |
WO2021068351A1 (zh) | 基于云存储的数据传输方法、装置及计算机设备 | |
CN105095300A (zh) | 一种数据库备份方法及系统 | |
CN108090125B (zh) | 一种非查询式的重复数据删除方法及装置 | |
CN104573064B (zh) | 一种大数据环境下的数据处理方法 | |
US20180107404A1 (en) | Garbage collection system and process | |
CN105653209A (zh) | 一种对象存储数据传输方法及装置 | |
CN103369002A (zh) | 一种资源下载的方法及系统 | |
US10515055B2 (en) | Mapping logical identifiers using multiple identifier spaces | |
CN111273863A (zh) | 高速缓存管理 | |
CN107145449B (zh) | 存储设备和存储方法 | |
US20040117437A1 (en) | Method for efficient storing of sparse files in a distributed cache | |
US20200250232A1 (en) | Partial file system instances | |
CN114138558A (zh) | 一种对象存储方法、装置、电子设备和存储介质 | |
CN112866406B (zh) | 一种数据存储方法、系统、装置、设备及存储介质 | |
CN112749144B (zh) | 一种基于区块链的持久化文件存储系统及方法 | |
CN113420005A (zh) | 数据存储方法、系统、电子设备及计算机存储介质 | |
CN116578746A (zh) | 对象去重方法及装置 | |
US20200019539A1 (en) | Efficient and light-weight indexing for massive blob/objects | |
US10152269B2 (en) | Method and system for preserving branch cache file data segment identifiers upon volume replication |
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 |