CN115033549A - 基于区块链的文件链接存储方法及装置 - Google Patents
基于区块链的文件链接存储方法及装置 Download PDFInfo
- Publication number
- CN115033549A CN115033549A CN202210696241.9A CN202210696241A CN115033549A CN 115033549 A CN115033549 A CN 115033549A CN 202210696241 A CN202210696241 A CN 202210696241A CN 115033549 A CN115033549 A CN 115033549A
- Authority
- CN
- China
- Prior art keywords
- file
- algorithm
- hash value
- target
- original
- 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
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
-
- 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/14—Details of searching files based on file metadata
- G06F16/148—File search processing
- G06F16/152—File search processing using file content signatures, e.g. hash values
-
- 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/17—Details of further file system functions
- G06F16/172—Caching, prefetching or hoarding of files
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Library & Information Science (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例公开了一种基于区块链的文件链接存储方法及装置,该方法根据区块链网络中所部署的智能合约中的第一算法,将分布式文件系统中所存储的文件的原始文件哈希值预先存储至区块链网络中;智能合约中设置有用于存储原始文件哈希值的第一算法以及用于生成内容标识符的第二算法;响应于用户针对目标文件的文件链接读取请求,根据第一算法从区块链网络中获取目标文件的原始文件哈希值;依据原始文件哈希值和智能合约中的第二算法,生成目标文件的内容标识符,以供用户利用目标文件的内容标识符从分布式文件系统中获取目标文件。本申请通过存储字节数更少的原始文件哈希值以完成对文件链接的存储,从而减少数据存储量,大幅度降低了存储成本。
Description
技术领域
本申请实施例涉及互联网技术领域,具体涉及一种基于区块链的文件链接存储方法及装置。
背景技术
在区块链网络的应用中,通常需要存储指向文件的统一资源标识符(UniformResource Identifier,URI)链接,为了使项目更加去中心化,很多项目会选择存储分布式文件系统对应的内容标识符(Content-ID,CID)来实现内容的寻址,具体地,内容标识符可直接以字符串的形式进行存储,例如Open Zeppelin公司实现的ERC721URIStorage。在区块链网络上存储数据,需要根据数据量的大小支付一定的Gas费用。在现有技术中,一般是将文件的内容标识符存储至区块链网络中,然而,内容标识符是通过一系列算法得到的,其字节数较多,数据存储量较大,需要支付较多的费用,存在着存储成本较多的问题。
发明内容
鉴于上述问题,本申请提出了一种基于区块链的文件链接存储方法、装置、计算设备及计算机存储介质,用于解决以下问题:现有的文件链接存储方法存在的数据存储量大、存储成本多等问题。
根据本申请实施例的一个方面,提供了一种基于区块链的文件链接存储方法,包括:
根据区块链网络中所部署的智能合约中的第一算法,将分布式文件系统中所存储的文件的原始文件哈希值存储至区块链网络中;其中,智能合约中设置有用于存储原始文件哈希值的第一算法以及用于生成内容标识符的第二算法;
响应于用户针对目标文件的文件链接读取请求,根据第一算法从区块链网络中获取目标文件的原始文件哈希值;
依据原始文件哈希值和智能合约中的第二算法,生成目标文件的内容标识符,以供用户利用目标文件的内容标识符从分布式文件系统中获取目标文件。
进一步地,在依据原始文件哈希值和智能合约中的第二算法,生成目标文件的内容标识符之后,该方法还包括:
依据目标文件的内容标识符生成目标文件的文件链接,并将目标文件的文件链接返回至用户。
进一步地,根据区块链网络中所部署的智能合约中的第一算法,将分布式文件系统中所存储的文件的原始文件哈希值存储至区块链网络中进一步包括:
针对分布式文件系统中所存储的每个文件,获取该文件的文件标识;
利用第一预设哈希算法,计算该文件的原始文件哈希值;
根据第一算法和该文件的原始文件哈希值,构造该文件的文件标识对应的数据键值对,将数据键值对存储至区块链网络中;其中,该文件的文件标识对应的数据键值对包含有该文件的原始文件哈希值。
进一步地,根据第一算法和该文件的原始文件哈希值,构造该文件的文件标识对应的数据键值对,将数据键值对存储至区块链网络中进一步包括:
根据第一算法,将该文件的文件标识作为数据键,将该文件的原始文件哈希值作为数据键对应的数据值,得到该文件的文件标识对应的数据键值对;
将数据键值对存储至区块链网络中所部署的智能合约中。
进一步地,响应于用户针对目标文件的文件链接读取请求,根据第一算法从区块链网络中获取目标文件的原始文件哈希值进一步包括:
根据第一算法,从文件链接读取请求中提取目标文件的文件标识,并从区块链网络中获取目标文件的文件标识对应的数据键值对,依据目标文件的文件标识对应的数据键值对,得到目标文件的原始文件哈希值。
进一步地,从区块链网络中获取目标文件的文件标识对应的数据键值对,依据目标文件的文件标识对应的数据键值对,得到目标文件的原始文件哈希值进一步包括:
从区块链网络中所部署的智能合约中查找以目标文件的文件标识为数据键的数据键值对作为目标文件的文件标识对应的数据键值;
提取目标文件的文件标识对应的数据键值对中的数据值作为目标文件的原始文件哈希值。
进一步地,第二算法包括:预设解码算法、第二预设哈希算法以及预设编码算法;
依据原始文件哈希值和智能合约中的第二算法,生成目标文件的内容标识符进一步包括:
利用预设解码算法对原始文件哈希值进行解码,得到第一字节码;
利用第二预设哈希算法对第一字节码进行编码,得到第二字节码;
利用预设编码算法对第二字节码进行编码,得到目标文件的内容标识符。
进一步地,该方法还包括:
预先通过向区块链网络中发送交易,将智能合约部署至区块链网络中。
进一步地,分布式文件系统包括星际文件系统。
根据本申请实施例的另一方面,提供了一种基于区块链的文件链接存储装置,包括:
存储模块,用于根据区块链网络中所部署的智能合约中的第一算法,将分布式文件系统中所存储的文件的原始文件哈希值存储至区块链网络中;其中,智能合约中设置有用于存储原始文件哈希值的第一算法以及用于生成内容标识符的第二算法;
获取模块,用于响应于用户针对目标文件的文件链接读取请求,根据第一算法从区块链网络中获取目标文件的原始文件哈希值;
生成模块,用于依据原始文件哈希值和智能合约中的第二算法,生成目标文件的内容标识符,以供用户利用目标文件的内容标识符从分布式文件系统中获取目标文件。
根据本申请实施例的又一方面,提供了一种计算设备,包括:处理器、存储器、通信接口和通信总线,处理器、存储器和通信接口通过通信总线完成相互间的通信;
存储器用于存放至少一可执行指令,可执行指令使处理器执行上述一种基于区块链的文件链接存储方法对应的操作。
根据本申请实施例的再一方面,提供了一种计算机存储介质,存储介质中存储有至少一可执行指令,可执行指令使处理器执行如上述一种基于区块链的文件链接存储方法对应的操作。
根据本申请实施例提供的一种基于区块链的文件链接存储方法及装置,根据区块链网络中所部署的智能合约中的第一算法,将分布式文件系统中所存储的文件的原始文件哈希值预先存储至区块链网络中;智能合约中设置有用于存储原始文件哈希值的第一算法以及用于生成内容标识符的第二算法;响应于用户针对目标文件的文件链接读取请求,根据第一算法从区块链网络中获取目标文件的原始文件哈希值;依据原始文件哈希值和智能合约中的第二算法,生成目标文件的内容标识符,以供用户利用目标文件的内容标识符从分布式文件系统中获取目标文件。本申请通过存储字节数更少的原始文件哈希值以完成对文件链接的存储,在用户请求读取目标文件的文件链接时,再根据预先部署在智能合约内的第一算法和第二算法,实时生成目标文件的内容标识符,以供用户利用目标文件的内容标识符从分布式文件系统中获取目标文件,从而有效地减少了数据存储量,大幅度降低了存储成本。
上述说明仅是本申请实施例技术方案的概述,为了能够更清楚了解本申请实施例的技术手段,而可依照说明书的内容予以实施,并且为了让本申请实施例的上述和其它目的、特征和优点能够更明显易懂,以下特举本申请实施例的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本申请实施例的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了根据本申请一个实施例的基于区块链的文件链接存储方法的流程示意图;
图2示出了根据本申请另一个实施例的基于区块链的文件链接存储方法的流程示意图;
图3示出了根据本申请一个实施例的基于区块链的文件链接存储装置的结构框图;
图4示出了根据本申请实施例的一种计算设备的结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
首先,对本申请一个或多个实施例涉及的名词术语进行解释。
星际文件系统(Inter Planetary File System,IPFS):一种分布式系统,用于存储和访问文件、网站、应用程序和数据。
内容标识符CID:在分布式系统中自我描述的内容标识符,一般使用加密哈希来实现内容寻址。
智能合约:部署在区块链网络中,用于执行特定逻辑的计算机交易协议,其中包含了代码函数,可以完成决策的执行、资金的存储以及数据的读写等。
Solidity:一种针对以太坊虚拟机(ETHereum Virtual Machine,EVM)的一种契约型编程语言,用于实现智能合约。
Gas:指的是测量在区块链网络上执行特定操作所需的计算工作量的单位;由于每个区块链上的交易都需要计算资源才能执行,因此每个交易都需要收费,Gas指在区块链上成功进行交易所需的费用。
Open Zeppelin:区块链行业的知名公司,提供了大量以太坊网络的模块化、可重用、安全的智能合约库,以Solidity语言编写。
图1示出了根据本申请一个实施例的基于区块链的文件链接存储方法的流程示意图,如图1所示,该方法包括如下步骤S101-S103:
步骤S101:根据区块链网络中所部署的智能合约中的第一算法,将分布式文件系统中所存储的文件的原始文件哈希值存储至区块链网络中。
在本实施例中,分布式文件系统中所存储的每个文件都有其对应的文件标识(ID),可将每个文件对应的文件标识和每个文件的原始文件哈希值预先对应存储在区块链网络中;具体地,可以根据第一算法和该文件的原始文件哈希值,构造该文件的文件标识对应的数据键值对,将数据键值对存储至区块链网络中;其中,每个文件的文件标识和原始文件哈希值为一一对应关系。
具体地,为了减少数据存储量并降低存储成本,在智能合约中开发了用于存储原始文件哈希值的第一算法以及用于生成内容标识符的第二算法,然后通过向区块链网络发起交易将智能合约部署至区块链网络,其中,第一算法用于存储每个文件的原始文件哈希值;第二算法用于依据原始文件哈希值生成文件链接对应的CID。在本步骤中,根据智能合约中的第一算法,将分布式文件系统中所存储的文件的原始文件哈希值存储至区块链网络中。
步骤S102:响应于用户针对目标文件的文件链接读取请求,根据第一算法从区块链网络中获取目标文件的原始文件哈希值。
其中,目标文件是指用户想要从分布式文件系统中获取的文件。在本步骤中,当用户需要从分布式文件系统获取某个目标文件时,用户需要先通过向区块链网络进行请求,发送针对目标文件的文件链接读取请求,以读取目标文件在分布式文件系统中的内容标识符或文件链接,其中,该文件链接读取请求携带有目标文件的文件标识;由于在区块链网络中将每个文件的文件标识和每个文件的原始文件哈希值进行了对应存储,那么响应于该文件链接读取请求,根据智能合约中的第一算法和目标文件的文件标识从区块链网络中可便捷地获取目标文件的原始文件哈希值。
步骤S103:依据原始文件哈希值和智能合约中的第二算法,生成目标文件的内容标识符,以供用户利用目标文件的内容标识符从分布式文件系统中获取目标文件。
具体地说,通过第二算法依据目标文件的原始文件哈希值生成文件链接对应的CID,用户通过CID可确定目标文件的文件链接,进而从分布式文件系统中依据目标文件的文件链接获取到目标文件。
与现有技术中直接存储CID相比,本实施例通过在区块链网络中存储字节数更少的原始文件哈希值,响应于用户针对目标文件的文件链接读取请求,通过第一算法和第二算法实时将原始文件哈希值转换为CID,减少了数据存储量,大幅度降低了存储所产生的Gas费用。
根据本申请实施例提供的基于区块链的文件链接存储方法,通过存储字节数更少的原始文件哈希值以完成对文件链接的存储,在用户请求读取目标文件的文件链接时,再根据预先部署在智能合约内的第一算法和第二算法,实时生成目标文件的内容标识符,以供用户利用目标文件的内容标识符从分布式文件系统中获取目标文件,从而有效地减少了数据存储量,大幅度降低了存储成本。
图2示出了根据本申请另一个实施例的基于区块链的文件链接存储方法的流程示意图,如图2所示,该方法包括如下步骤S201-S206:
步骤S201:预先通过向区块链网络中发送交易,将智能合约部署至区块链网络中。
在本步骤中,预先通过向区块链网络中发送交易,将设置有用于存储原始文件哈希值的第一算法以及用于依据原始文件哈希值生成CID的第二算法的智能合约部署至区块链网络中。
步骤S202:针对分布式文件系统中所存储的每个文件,获取该文件的文件标识,利用第一预设哈希算法,计算该文件的原始文件哈希值。
其中,第一预设哈希算法是用于依据文件大小、时间、文件类型、文件创作者等文件信息计算对应文件的原始文件哈希值的算法;文件标识为用于标识文件的标识信息,例如可为文件ID等。具体地,针对分布式文件系统中所存储的每个文件,获取该文件的文件ID,利用第一预设哈希算法对该文件的文件信息进行运算,计算该文件的原始文件哈希值。第一预设哈希算法可为安全散列算法(Secure Hash Algorithm,SHA)等。
步骤S203:根据智能合约中的第一算法和该文件的原始文件哈希值,构造该文件的文件标识对应的数据键值对,将数据键值对存储至区块链网络中。
其中,该文件的文件标识对应的数据键值对包含有该文件的原始文件哈希值。
在一种可选的实施方式中,步骤S203进一步包括:根据第一算法,将该文件的文件标识作为数据键,将该文件的原始文件哈希值作为数据键对应的数据值,得到该文件的文件标识对应的数据键值对;将数据键值对存储至区块链网络中所部署的智能合约中。
在本步骤中,可以构建该文件的文件标识对应的数据键值对,数据键值对包含有该文件的原始文件哈希值,具体地,将该文件的文件标识作为数据键key,将该文件的原始文件哈希值作为数据键key对应的数据值value,得到该文件的文件标识对应的数据键值对key-value,将数据键值对key-value存储至区块链网络中所部署的智能合约中。例如,数据键值对格式可以为(key,value),每个文件都有对应的数据键值对。在本实施例中,文件的原始文件哈希值可为通过安全散列算法计算得出的256位哈希值,简称为SHA256哈希值,因此,数据键值对也可以表示为(文件ID,SHA256哈希值);其中,文件ID即为该数据键值对中的数据键key,SHA256哈希值为该数据键值对中的数据值value。
步骤S204:响应于用户针对目标文件的文件链接读取请求,根据第一算法从区块链网络中获取目标文件的原始文件哈希值。
具体地说,从文件链接读取请求中提取目标文件的文件标识;由于通过执行步骤S202和步骤S203,使得在区块链网络中存储有分布式文件系统中的每个文件的文件标识对应的数据键值对,那么在提取得到目标文件的文件标识之后,即可依据目标文件的文件标识,从区块链网络中获取目标文件的文件标识对应的数据键值对,并根据第一算法,从该数据键值对中提取得到目标文件的原始文件哈希值。例如,若数据键值对存储在区块链网络中所部署的智能合约中,那么可从区块链网络中所部署的智能合约中查找以目标文件的文件标识为数据键的数据键值对作为目标文件的文件标识对应的数据键值;提取目标文件的文件标识对应的数据键值对中的数据值作为目标文件的原始文件哈希值。
当用户需要从分布式文件系统获取某个目标文件时,用户需要先通过向区块链网络进行请求,发送针对目标文件的文件链接读取请求,以读取目标文件在分布式文件系统中的内容标识符或文件链接,其中,该文件链接读取请求携带有目标文件的文件标识;那么响应于该文件链接读取请求,从该文件链接读取请求中提取目标文件的文件标识,例如提取到的文件标识为文件ID1,则从区块链网络中所部署的智能合约中查找以文件ID1为数据键的数据键值对,然后从该数据键值对中提取数据值,从而得到目标文件的原始文件哈希值,假设该数据键值对为(文件ID1,SHA256哈希值1),其中的SHA256哈希值1即为目标文件的原始文件哈希值。
步骤S205:依据原始文件哈希值和智能合约中的第二算法,生成目标文件的内容标识符。
在一种可选的实施方式中,第二算法可包括:预设解码算法、第二预设哈希算法以及预设编码算法。步骤S205进一步包括:利用预设解码算法对原始文件哈希值进行解码,得到第一字节码;利用第二预设哈希算法对第一字节码进行编码,得到第二字节码;利用预设编码算法对第二字节码进行编码,得到目标文件的内容标识符。
具体地说,预设解码算法可包括Hex解码算法等算法,具体地说,Hex编码算法是将数据转化成符合Intel Hex文件中的数据格式的编码方式,也就是将每一个字节表示的十六进制表示的内容,用字符串来显示;例如“99、105、224,7”通过Hex编码算法编码之后的数据为:“6369e007”,是一个字符串;则通过Hex解码算法可将编码后的字符串解码得到原始字节;因此,本实施例中可以选用Hex解码算法作为预设解码算法对原始文件哈希值进行解码,得到第一字节码。
进一步地,第二预设哈希算法可包括多重哈希算法(multihash算法)等算法。传统的哈希算法被证明存在一定的不安全性,随着存储时间变长,一般的哈希算法存储的CID会发生变化,生成的文件链接不准确,不足以实现IPFS和其他分布式系统中的内容寻址;multihash算法是自描述散列本身包含描述其两个长度和什么加密算法生成的它的元数据,因此,存储多种格式的CID通过multihash算法的编码具有永不过时的功能,那么在本实施例中可以选用multihash算法作为第二预设哈希算法对解码后的原始文件哈希值进行编码,也就是对第一字节码进行编码,从而得到第二字节码。
预设编码算法可包括Base64算法和Base58算法等算法;其中,Base64算法是常见的可读性编码算法,Base64是指在编码过程中使用了64种字符:大写字母“A”到“Z”、小写字母“a”到“z”、数字“0”到“9”、“+”和“/”。Base58是比特币(Bitcoin)中使用的一种编码方式,主要用于产生Bitcoin的钱包地址;相比Base64算法,Base58算法不使用数字“0”、大写字母“O”、大写字母“I”、和小写字母“i”、以及“+”和“/”符号。在本实施例中,针对IPFS,可以使用Base58算法作为预设编码算法。
CID有两个版本,分别为CID V0和CID V1;其中CID V0适用于IPFS默认的编码规则和加密算法。在本实施例中,以IPFS为例,IPFS一般采用的是CID V0算法,CID V0算法可将文件的原始文件哈希值经过多种解码和编码转换为文件链接对应的CID,用户即可通过该文件链接对应的CID,在IPFS中寻找该CID对应的文件。
以预设解码算法为Hex解码算法、第二预设哈希算法为multihash算法以及预设编码算法为Base58算法为例,首先将文件的SHA256哈希值,通过Hex解码得到原始的第一字节码X,再将第一字节码X通过multihash算法进行编码得到第二字节码Y,通过Base58算法对第二字节码Y进行编码,得到最终的结果就是目标文件的CID;也就是说,用户可以通过目标文件的CID,在IPFS中寻找对应的文件。由于在CID V0算法的编码过程中,目标文件的SHA256哈希值与目标文件的CID相比,目标文件的CID的字节数约为目标文件的SHA256哈希值的字节数的1.3倍以上,因此,相比现有技术直接存储文件链接或CID,本实施例通过存储文件的SHA256哈希值以完成对文件链接的存储,可以有效降低存储成本。
步骤S206:依据目标文件的内容标识符生成目标文件的文件链接,并将目标文件的文件链接返回至用户。
在本步骤中,依据目标文件的CID生成目标文件的文件链接,以IPFS为例,可在CID上添加“IPFS://”即可直接生成目标文件的文件链接,将该目标文件的文件链接返回给用户,用户通过该文件链接即可从IPFS中读取目标文件。
根据本申请实施例提供的基于区块链的文件链接存储方法,在智能合约中写入第一算法和第二算法,当用户请求读取目标文件的文件链接时,从文件链接读取请求中提取目标文件的文件标识,并从区块链网络中获取目标文件的文件标识对应的数据键值对,根据第一算法,从目标文件的文件标识对应的数据键值对提取得到目标文件的原始文件哈希值,依据原始文件哈希值和智能合约中的第二算法,实时生成目标文件的CID或者文件链接,从而实现了通过存储字节数更少的原始文件哈希值以完成对文件链接的存储,获得了与直接存储文件CID一样的读取效果,在保证了读取效果的基础上,有效地减少了数据存储量,大幅度降低了存储成本,优化了文件链接存储方式。
图3示出了根据本申请一个实施例的基于区块链的文件链接存储装置的结构框图,如图3所示,该装置包括:存储模块301、获取模块302和生成模块303:
存储模块301,用于根据区块链网络中所部署的智能合约中的第一算法,将分布式文件系统中所存储的文件的原始文件哈希值存储至区块链网络中。
其中,智能合约中设置有用于存储原始文件哈希值的第一算法以及用于生成内容标识符的第二算法。
在一种可选的实施方式中,存储模块301进一步用于:针对分布式文件系统中所存储的每个文件,获取该文件的文件标识;利用第一预设哈希算法,计算该文件的原始文件哈希值;根据第一算法和该文件的原始文件哈希值,构造该文件的文件标识对应的数据键值对,将数据键值对存储至区块链网络中;其中,该文件的文件标识对应的数据键值对包含有该文件的原始文件哈希值。
在一种可选的实施方式中,存储模块301进一步用于:根据第一算法,将该文件的文件标识作为数据键,将该文件的原始文件哈希值作为数据键对应的数据值,得到该文件的文件标识对应的数据键值对;将数据键值对存储至区块链网络中所部署的智能合约中。
在一种可选的实施方式中,存储模块301进一步用于:预先通过向区块链网络中发送交易,将智能合约部署至区块链网络中。
获取模块302,用于响应于用户针对目标文件的文件链接读取请求,根据第一算法从区块链网络中获取目标文件的原始文件哈希值。
在一种可选的实施方式中,获取模块302进一步用于:根据第一算法,从文件链接读取请求中提取目标文件的文件标识,并从区块链网络中获取目标文件的文件标识对应的数据键值对,依据目标文件的文件标识对应的数据键值对,得到目标文件的原始文件哈希值。
在一种可选的实施方式中,获取模块302进一步用于:从区块链网络中所部署的智能合约中查找以目标文件的文件标识为数据键的数据键值对作为目标文件的文件标识对应的数据键值;提取目标文件的文件标识对应的数据键值对中的数据值作为目标文件的原始文件哈希值。
生成模块303,用于依据原始文件哈希值和智能合约中的第二算法,生成目标文件的内容标识符,以供用户利用目标文件的内容标识符从分布式文件系统中获取目标文件。
在一种可选的实施方式中,生成模块303进一步用于:依据目标文件的内容标识符生成目标文件的文件链接,并将目标文件的文件链接返回至用户。
在一种可选的实施方式中,第二算法包括:预设解码算法、第二预设哈希算法以及预设编码算法;生成模块303进一步用于:利用预设解码算法对原始文件哈希值进行解码,得到第一字节码;利用第二预设哈希算法对第一字节码进行编码,得到第二字节码;利用预设编码算法对第二字节码进行编码,得到目标文件的内容标识符。
在一种可选的实施方式中,分布式文件系统包括星际文件系统。
以上各模块的描述参照方法实施例中对应的描述,在此不再赘述。
根据本申请实施例提供的基于区块链的文件链接存储装置,在智能合约中写入第一算法和第二算法,当用户请求读取目标文件的文件链接时,从文件链接读取请求中提取目标文件的文件标识,并从区块链网络中获取目标文件的文件标识对应的数据键值对,根据第一算法,从目标文件的文件标识对应的数据键值对提取得到目标文件的原始文件哈希值,依据原始文件哈希值和智能合约中的第二算法,实时生成目标文件的CID或者文件链接,从而实现了通过存储字节数更少的原始文件哈希值以完成对文件链接的存储,获得了与直接存储文件CID一样的读取效果,在保证了读取效果的基础上,有效地减少了数据存储量,大幅度降低了存储成本,优化了文件链接存储方式。
本申请实施例还提供了一种非易失性计算机存储介质,计算机存储介质存储有至少一可执行指令,可执行指令可执行上述任意方法实施例中的基于区块链的文件链接存储方法。
图4示出了根据本申请实施例的一种计算设备的结构示意图,本申请实施例的具体实施例并不对计算设备的具体实现做限定。
如图4所示,该计算设备可以包括:处理器(processor)402、通信接口(Communications Interface)404、存储器(memory)406、以及通信总线408。
其中:
处理器402、通信接口404、以及存储器406通过通信总线408完成相互间的通信。
通信接口404,用于与其它设备比如客户端或其它服务器等的网元通信。
处理器402,用于执行程序410,具体可以执行上述基于区块链的文件链接存储方法实施例中的相关步骤。
具体地,程序410可以包括程序代码,该程序代码包括计算机操作指令。
处理器402可能是中央处理器CPU,或者是特定集成电路ASIC(ApplicationSpecific Integrated Circuit),或者是被配置成实施本申请实施例的一个或多个集成电路。计算设备包括的一个或多个处理器,可以是同一类型的处理器,如一个或多个CPU;也可以是不同类型的处理器,如一个或多个CPU以及一个或多个ASIC。
存储器406,用于存放程序410。存储器406可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
程序410具体可以用于使得处理器402执行上述任意方法实施例中的基于区块链的文件链接存储方法。程序410中各步骤的具体实现可以参见上述基于区块链的文件链接存储方法实施例中的相应步骤和单元中对应的描述,在此不赘述。所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的设备和模块的具体工作过程,可以参考前述方法实施例中的对应过程描述,在此不再赘述。
在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本申请实施例也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本申请实施例的内容,并且上面对特定语言所做的描述是为了披露本申请实施例的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本申请实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本申请实施例的示例性实施例的描述中,本申请实施例的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本申请实施例要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本申请实施例的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本申请实施例的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本申请实施例的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本申请实施例中的一些或者全部部件的一些或者全部功能。本申请实施例还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本申请实施例的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本申请实施例进行说明而不是对本申请实施例进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本申请实施例可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
Claims (12)
1.一种基于区块链的文件链接存储方法,包括:
根据区块链网络中所部署的智能合约中的第一算法,将分布式文件系统中所存储的文件的原始文件哈希值存储至所述区块链网络中;其中,所述智能合约中设置有用于存储原始文件哈希值的第一算法以及用于生成内容标识符的第二算法;
响应于用户针对目标文件的文件链接读取请求,根据所述第一算法从所述区块链网络中获取所述目标文件的原始文件哈希值;
依据所述原始文件哈希值和所述智能合约中的第二算法,生成所述目标文件的内容标识符,以供用户利用所述目标文件的内容标识符从所述分布式文件系统中获取所述目标文件。
2.根据权利要求1所述的方法,其中,在所述依据所述原始文件哈希值和所述智能合约中的第二算法,生成所述目标文件的内容标识符之后,所述方法还包括:
依据所述目标文件的内容标识符生成所述目标文件的文件链接,并将所述目标文件的文件链接返回至用户。
3.根据权利要求1或2所述的方法,其中,所述根据区块链网络中所部署的智能合约中的第一算法,将分布式文件系统中所存储的文件的原始文件哈希值存储至所述区块链网络中进一步包括:
针对所述分布式文件系统中所存储的每个文件,获取该文件的文件标识;
利用第一预设哈希算法,计算该文件的原始文件哈希值;
根据所述第一算法和该文件的原始文件哈希值,构造该文件的文件标识对应的数据键值对,将所述数据键值对存储至所述区块链网络中;其中,该文件的文件标识对应的数据键值对包含有该文件的原始文件哈希值。
4.根据权利要求3所述的方法,其中,所述根据所述第一算法和该文件的原始文件哈希值,构造该文件的文件标识对应的数据键值对,将所述数据键值对存储至所述区块链网络中进一步包括:
根据所述第一算法,将该文件的文件标识作为数据键,将该文件的原始文件哈希值作为所述数据键对应的数据值,得到该文件的文件标识对应的数据键值对;
将所述数据键值对存储至所述区块链网络中所部署的智能合约中。
5.根据权利要求1-4任一项所述的方法,其中,所述响应于用户针对目标文件的文件链接读取请求,根据所述第一算法从所述区块链网络中获取所述目标文件的原始文件哈希值进一步包括:
根据所述第一算法,从所述文件链接读取请求中提取所述目标文件的文件标识,并从所述区块链网络中获取所述目标文件的文件标识对应的数据键值对,依据所述目标文件的文件标识对应的数据键值对,得到所述目标文件的原始文件哈希值。
6.根据权利要求5所述的方法,其中,所述从所述区块链网络中获取所述目标文件的文件标识对应的数据键值对,依据所述目标文件的文件标识对应的数据键值对,得到所述目标文件的原始文件哈希值进一步包括:
从所述区块链网络中所部署的智能合约中查找以所述目标文件的文件标识为数据键的数据键值对作为所述目标文件的文件标识对应的数据键值;
提取所述目标文件的文件标识对应的数据键值对中的数据值作为所述目标文件的原始文件哈希值。
7.根据权利要求1-6任一项所述的方法,其中,所述第二算法包括:预设解码算法、第二预设哈希算法以及预设编码算法;
所述依据所述原始文件哈希值和所述智能合约中的第二算法,生成所述目标文件的内容标识符进一步包括:
利用所述预设解码算法对所述原始文件哈希值进行解码,得到第一字节码;
利用所述第二预设哈希算法对所述第一字节码进行编码,得到第二字节码;
利用所述预设编码算法对所述第二字节码进行编码,得到所述目标文件的内容标识符。
8.根据权利要求1-7任一项所述的方法,其中,所述方法还包括:
预先通过向所述区块链网络中发送交易,将所述智能合约部署至所述区块链网络中。
9.根据权利要求1-8任一项中所述的方法,其中,所述分布式文件系统包括星际文件系统。
10.一种基于区块链的文件链接存储装置,包括:
存储模块,用于根据区块链网络中所部署的智能合约中的第一算法,将分布式文件系统中所存储的文件的原始文件哈希值存储至所述区块链网络中;其中,所述智能合约中设置有用于存储原始文件哈希值的第一算法以及用于生成内容标识符的第二算法;
获取模块,用于响应于用户针对目标文件的文件链接读取请求,根据所述第一算法从所述区块链网络中获取所述目标文件的原始文件哈希值;
生成模块,用于依据所述原始文件哈希值和所述智能合约中的第二算法,生成所述目标文件的内容标识符,以供用户利用所述目标文件的内容标识符从所述分布式文件系统中获取所述目标文件。
11.一种计算设备,包括:处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;
所述存储器用于存放至少一可执行指令,所述可执行指令使所述处理器执行如权利要求1-9中任一项所述的一种基于区块链的文件链接存储方法对应的操作。
12.一种计算机存储介质,所述存储介质中存储有至少一可执行指令,所述可执行指令使处理器执行如权利要求1-9中任一项所述的一种基于区块链的文件链接存储方法对应的操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210696241.9A CN115033549A (zh) | 2022-06-20 | 2022-06-20 | 基于区块链的文件链接存储方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210696241.9A CN115033549A (zh) | 2022-06-20 | 2022-06-20 | 基于区块链的文件链接存储方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115033549A true CN115033549A (zh) | 2022-09-09 |
Family
ID=83124654
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210696241.9A Pending CN115033549A (zh) | 2022-06-20 | 2022-06-20 | 基于区块链的文件链接存储方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115033549A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115694841A (zh) * | 2022-11-09 | 2023-02-03 | 中煤科工集团信息技术有限公司 | 基于区块链和ipfs网络的元数据流通方法、装置及存储介质 |
-
2022
- 2022-06-20 CN CN202210696241.9A patent/CN115033549A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115694841A (zh) * | 2022-11-09 | 2023-02-03 | 中煤科工集团信息技术有限公司 | 基于区块链和ipfs网络的元数据流通方法、装置及存储介质 |
CN115694841B (zh) * | 2022-11-09 | 2024-01-26 | 中煤科工集团信息技术有限公司 | 基于区块链和ipfs网络的元数据流通方法、装置及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10698885B2 (en) | Method and device for writing service data in block chain system | |
CN109040341B (zh) | 智能合约地址的生成方法、装置、计算机设备及可读存储介质 | |
CN107391632B (zh) | 数据库存储处理方法、装置、计算设备及计算机存储介质 | |
CN110737659A (zh) | 图数据存储和查询方法、装置及计算机可读存储介质 | |
CN110825363B (zh) | 智能合约获取方法、装置、电子设备及存储介质 | |
JP2019153260A (ja) | 共有経済のための分散型台帳装置及び分散型台帳方法 | |
CN110489466B (zh) | 邀请码的生成方法、装置、终端设备及存储介质 | |
KR102111871B1 (ko) | 랜덤 문자열을 생성하기 위한 방법 및 장치 | |
KR20190064621A (ko) | 2진 데이터를 인코딩 및 디코딩하기 위한 방법 및 디바이스 | |
CN112015806A (zh) | 区块链存储数据的方法及装置 | |
CN115033549A (zh) | 基于区块链的文件链接存储方法及装置 | |
CN111651695A (zh) | 一种短链接的生成与解析方法及装置 | |
CN110147653B (zh) | 应用程序安全加固方法及装置 | |
CN108712486B (zh) | 工作量证明方法及装置 | |
CN107491460B (zh) | 适配系统的数据映射方法及装置 | |
CN116842012A (zh) | 一种Redis集群的分片存储方法、装置、设备及存储介质 | |
CN107562533B (zh) | 一种数据加载处理方法及装置 | |
CN113537392B (zh) | 相似图像的识别方法、装置、计算设备及计算机存储介质 | |
CN115276889B (zh) | 解码处理方法、装置、计算机设备及存储介质 | |
CN116204612A (zh) | 一种文本相似度计算方法及系统 | |
CN110308889B (zh) | 调制处理装置及方法 | |
US9176972B1 (en) | Implied M83 names in alternate name generation in directories supporting multiple naming protocols | |
KR20120056944A (ko) | Ngs 데이터의 고속 압축장치 및 그 방법 | |
WO2018193707A1 (ja) | 情報処理装置、プログラム、情報処理方法及びデータ構造 | |
CN114499465A (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 |