当前位置: 首页 > 科技观察

如何使用IPFS将文件存储在区块链上?

时间:2023-03-14 09:38:07 科技观察

在本系列中,我们将讨论在区块链上存储文件文档的链上和链下方法。稍后,我们将学习如何使用由Moralis[1]和InfuraIPFS[2]提供支持的星际文件系统(IPFS)网络在链下存储图像、PDF或任何其他数字资产等文件。到本教程系列结束时,您将能够在IPFS网络上存储和访问文件。作为数据库的区块链作为数据库,区块链是分布在多个计算机网络中的不可变数字交易分类帐。它使我们能够存储数据,即NFT元数据[3](包括文件),并以与任何其他数据库相同的方式检索它们。将文件存储在区块链上(链上)链上是指直接在区块链上发生的经过验证的活动或交易。在这种情况下,将文件直接上传到区块链也是一种链上活动。但是,我们应该将文件直接存储在链上吗?将文件保存在链上是个好主意吗?区块链存储成本是多少?在区块链(链上)上存储文件的成本在区块链上存储大文件的成本可能非常昂贵。根据IBM的《区块链技术的存储要求——观点文档》第9页[4],区块链上1GB的存储成本约为100美元,比传统存储贵500倍。区块链(On-Chain)文件存储性能除了昂贵之外,在区块链上存储大量文件会增加文件访问延迟[5](增加从区块链上传/下载文件所需的时间)。文件存储需要低延迟才能快速访问。但是,这会降低区块链系统的性能,并在文件很大并导致延迟增加时使维护变得非常困难。不建议将文件、合同、文档、PDF和个人信息等非交易数据直接存储在区块链上,但您应该考虑将它们存储在链下。将文件存储在区块链之外(链下)“链下”一词是指发生在区块链之外的活动或交易。在这种情况下,链下资产是没有直接上传到区块链的文件。由于不推荐存储非交易数据,将文件上传到其他服务器或数据库(IPFS、MongoDB、Oracle等),为上传文件生成的HashID将作为元数据存储在区块链上。什么是IPFS?Web3数据库星际文件系统(IPFS)是一个去中心化的存储系统。一种协议和对等(p2p)网络,用于在分布式文件系统(如区块链)中存储、访问和共享数据。IPFS基于基于内容的身份(CID),或基于内容的寻址,它可以比传统的基于位置的寻址方法更快地创建,用于保存文件。什么是基于位置的寻址?HTTP:"Where"是你想要的内容?♂?基于位置的寻址是访问互联网上的照片、音乐和文件等内容的传统方法,需要通过提供其绝对路径或地址来指定内容的托管位置,如下:基于位置的寻址的局限性在于它使用集中式服务器,如果托管它们的服务器发生故障,则内容将不可用。在像Twitter和Facebook这样的集中式服务器中,它们独立控制用户保存内容的交付方式(即URL),您只能通过TwitterURL访问Twitter个人资料图像,而不能通过FacebookURL。什么是基于内容的寻址?IPFS:你想要“什么”内容在基于内容的寻址或内容寻址存储(CAS)中,每个上传的内容都有自己唯一的标识符,称为哈希,可以比作指纹,并且任何两个内容都不能共享相同的哈希。照片、音乐和文件等内容可以通过其独特的IPFS哈希值而不是它们的位置来访问。上传到IPFS的任何内容都可以通过受支持的IPFS公共网关访问。例如,当通过MoralisIPFS上传文件时,我们可以使用InfuraIPFSURL来访问该文件。上传存储在一个IPFS对象中,这是一个具有两个字段的数据结构,一个字段最多可容纳256KB的blob数据,另一个字段是链接,它是指向其他IPFS对象的链接数组。/*IPFSObjectExample*/{Data:"",Links:[{Name:"",Hash:"",Size:256000}]}当内容大小超过256kb时,IPFS会自动将其分解为多个对象并创建一个空的IPFS,用于将所有哈希链接在一起。存储在IPFS上的内容不能像在区块链上那样被更改。相反,IPFS支持您的内容的版本控制,称为IPFS提交对象,它链接到以前的版本对象。IPFS最初由ProtocolLabs创始人JuanBenet于2015年2月创建。IPFS数据存储在哪里?缓存文件夹存储在IPFS上的数据保存在本地计算机上的缓存文件夹中,并可供通过IPFS网关请求它的其他人使用。数据也缓存在新用户的计算机上。缓存数据在垃圾收集期间被丢弃,这可能导致数据丢失。为了将您的数据永久存储在IPFS上,您需要将其固定到IPFS网络之一。IPFS有什么优势?1.快速记录检索。2.适用于所有技术。3.只能存储单个内容实例(不能重复)。4.上传的内容具有唯一标识以保证真实性。5.上传的内容不能更改。IPFS和HTTP存储的区别IPFS(ContentBasedAddressing)HTTP(LocationBasedAddressing)它基于去中心化服务器它基于集中式源服务器它利用内容寻址它利用位置来寻址具有相同内容的对象所有对象都被存储onlyonce具有相同内容的所有对象可以存储多次文件在多个节点之间共享并且始终可以访问当服务器关闭时文件不可访问变量。总结星际文件系统(IPFS)是一个可靠的去中心化存储系统。它也被广泛认为是文件存储的未来。在本文中,我们了解了HTTP和IPFS存储之间的区别,以及在区块链上存储文件的链上和链下(IPFS)方法。参考链接[1]Moralis:https://moralis.io/[2]InfuraIPFS:https://infura.io/[3]NFT元数据:https://docs.opensea.io/docs/metadata-standards[4]根据IBM第9页:https://www.ibm.com/downloads/cas/LA8XBQGR[5]访问延迟:https://www.igi-global.com/dictionary/access-latency/267