盘古开源解析:如何使用ipfs来存储和托管nft?

盘古开源 盘古开源     2022-12-29     803

关键词:

可以长久保存并防止篡改,这是NFT核心价值之一。不幸的是,目前许多面向消费者的NFT由于设计上的根本性漏洞,并没有这些属性。常常看到一些NFT号称“在区块链上永存”,但实际上经常因为成本和区块链存储能力的限制,存储的只有所有权记录和关联NFT的元数据。

很多时候,这些链接是脆弱的,用HTTP协议将用户引向特定位置,而非该资产本身。这意味着链接指向的内容可能在以后失效或者改变,造成原资产的丢失(只剩所有权记录是无价值的)。

IPFS可以解决这个问题,使用IPFS的NFT将享有优势。但只有遵从既有规范才能较好让数据得以永久保存并可访问。随着NFT的迅速流行,现在是一个好时机,让我们重温下在IPFS上存储和链接NFT数据的最佳实践。在本文中,我们将探讨两个近期热度话题:内容寻址和数据完整性。

内容寻址

IPFS内容标识符(CID)在精准标识内容方面是极其强大和灵活的,无论该内容存于何处,以何种方式存储。为了最大限度地利用这些优点,开发者在链接IPFS数据时应遵循以下建议和惯例。

链接概述

本文并非对CID的全面解释(对此,已有极佳的资料https://docs.ipfs.io/how-to/address-ipfs-on-web/#dweb-addressing-in-brief)。但本文旨在让读者了解以下几点:

CID

CID是自描述的,是对任意内容唯一对应的标识。

例子:

bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi

CID应该用在您的应用代码中,以及其他明确是在使用IPFS的场景下。

我们建议在磁盘上将CID转为IPFS URI存储,特别是在元数据或者区块链记录这种写入后不再更改的记录中。给CID加上ipfs://的URI格式,增加了上下文信息,让用户和自动化的工具更容易找到所链接的内容。

IPFS URI

统一资源标识符URI用于在协议中指定某特定内容。协议是由URI格式决定的(作为前缀附加到URI上,还加上://)。IPFS的URI格式是ipfs。有时URI可以在最后附加路径。

例子:

ipfs://bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi

ipfs://bafybeigvafaks2bvivtv46n2z7uxszpvl25jhvzc6dbhnjjgjkbeia5jta/nft.mp4

IPFS URI是指向文件或者目录的标准IPFS链接。当从智能合约链接到IPFS数据时,IPFS URI表明该数据应该通过IPFS系统获取。

当在NFT的结构化元数据中对IPFS上的图像及其他媒体资源做链接时,也应该使用IPFS URI。

HTTP Gateway URL

HTTP gateway帮助无法原生解析IPFS URI的旧版浏览器进行兼容。这种链接只应在应用程序的界面中使用,而不应该存入区块链或NFT的元数据中。

例子:

https://dweb.link/ipfs/bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi

需注意到,HTTP gateway又将内容分发中心化,是中间人攻击的可能载体并带来潜在的单点失效—— 如果gateway运营方下线或者失联,链接将失效。而内置IPFS支持的浏览器(通过IPFS Companion浏览器扩展,或原生支持,如Brave)可以避免这些问题,因为它们可以自动从此类链接中提取CID,并根据用户设置从IPFS加载数据。

不同场景中的寻址

在不同场景下,开发者应根据具体情况使用合适的链接设置方式。

链上

NFT智能合约上对一个NFT对应的资源和元数据应该使用IPFS URI。

例子:

ipfs://bafybeibnsoufr2renqzsh347nrx54wcubt5lgkeivez63xvivplfwhtpym/metadata.json

我们建议在生成NFT之前先生成IPFS URI,并将URI完整存于链上。对传入一个URI的智能合约接口,这种方式最简单。而且 ipfs:// 的URI格式让应用知晓此数据位于IPFS上。

元数据

在NFT的元数据中,应使用IPFS URI,这是在文本中链接IPFS资源最明确,且长期可靠的方式。

下面是一个链向NFT媒体资产的IPFS URI的例子:

ipfs://bafybeigvafaks2bvivtv46n2z7uxszpvl25jhvzc6dbhnjjgjkbeia5jta/nft.mp4

开发者可以用公共HTTP gateway来获得兼容性。同时应该避免其他链接到内容的方式(如非IPFS HTTP gateway的URL)。普通的HTTP链接至多只能作为内容的临时镜像,因为链接的内容很容易被改变。在区块链上,数据是永久存储而无法篡改的,所以在链上使用HTTP是脆弱的,有失效风险。

相比之下,IPFS URI是永久有效的,可被安全地作为数据的规范链接。通过使用IPFS URI作为“真理之源”链接,应用程序更容易使用多种不同的存储方案,或在未来切换不同的gateway,只要生成新的gateway链接。这比起将特定gateway链接“硬编码”到区块链的永久记录中更灵活。

应用

在面向用户的应用程序中,开发者应通过以下两种方式链接IPFS内容。

  1. IPFS URI

  2. HTTP gateway URL

直到更多的浏览器原生支持IPFS URI。请注意,这两种链接都是容易从原始CID或IPFS URI生成的。

下面是一个HTTP gateway URL指向公共的dweb.link:

https://dweb.link/ipfs/bafybeigvafaks2bvivtv46n2z7uxszpvl25jhvzc6dbhnjjgjkbeia5jta/nft.mp4

也可以使用CID作为子域名,而不是放在URL路径里:

https://bafybeigvafaks2bvivtv46n2z7uxszpvl25jhvzc6dbhnjjgjkbeia5jta.ipfs.dweb.link/nft.mp4

这两个例子都对应这个标准IPFS URI:

ipfs://bafybeigvafaks2bvivtv46n2z7uxszpvl25jhvzc6dbhnjjgjkbeia5jta/nft.mp4

数据完整性

关于NFT资产的一个重要的点在于其完整性 —— 包括资产本身和所有相关数据。IPFS使用CID来保护NFT数据的完整性,确保自链接创建以来没有篡改。开发者应遵守以下建议,让IPFS内置的数据验证功能发挥最大效用。

链接资产元数据

元数据是NFT价值构成的有机部分。因此,为保全资产的价值,在IPFS上存储资产时也应存储元数据,并确保两者都可获取。

实现该目标的首选方法如下:

  1. 创建两个新目录(一个用于资产,一个用于元数据);

  2. 将资产添加到其目录中;

  3. 将资产的目录添加到IPFS中,记录其CID;

  4. 在相应目录创建元数据,使用步骤3中的CID创建IPFS URI。该URI应该包含目录的CID和资产文件名;

  5. 将元数据的目录添加到IPFS中,记录其CID;

  6. 使用步骤5中的CID为元数据创建IPFS URI,将该URI存储在链上,加入所有权。

记录

该流程既能让开发者将文件名加入链接中(方便用户交互),又确保元数据和资产可被独立应用。

元数据将在以下位置被访问:ipfs://元数据目录的CID/元数据文件名

资产可以通过以下地址访问:ipfs://资产目录的CID/资产文件名

下面是JSON元数据例子,包含链接到图像文件的IPFS URI:

该图片可使用IPFS URI:

ipfs://bafybeidfjqmasnpu6z7gvn7l6wthdcyzxh5uystkky3xvutddbapchbopi/no-time-to-explain.jpeg访问。

在界面上,您的应用可以创建一个gateway URL 方便用户使用HTTP获取该图片,例如:

https://dweb.link/ipfs/bafybeidfjqmasnpu6z7gvn7l6wthdcyzxh5uystkky3xvutddbapchbopi/no-time-to-explain.jpeg

一旦元数据创建完成,作为JSON文件在IPFS上存储后,其CID可用来创建如ipfs://bafybeibnsoufr2renqzsh347nrx54wcubt5lgkeivez63xvivplfwhtpym/metadata.json的URI。该URI可存入智能合约中。

整个过程的实战案例,可在IPFS文档网站上如何在IPFS上发行NFT(https://docs.ipfs.io/how-to/mint-nfts-with-ipfs/#a-short-introduction-to-nfts)查看。文档使用javascript详细演示了整个过程。

高可用

使用如IPFS这样的去中心化网络来提供内容的主要原因之一是为了防范链接失效。这是通过让网络中别的节点共同运营数据镜像服务来实现的。但对数据可用性有高要求的开发者不应该依赖于别的节点的利他性。

为了确保链接的内容可用,开发者应该pinning内容的CID在自己的存储节点上,并与愿意帮忙的节点一起存储分发该内容。如果愿意的话,开发者也可以使用pinning服务(https://docs.ipfs.io/how-to/work-with-pinning-services/)来代为运营。

盘古开源解析:ipfs&filecoin如何完美配合实现去中心化存储?

我们都知道IPFS是对标HTTP,甚至最终取代它的一个点对点超媒体协议,它具备内容寻址功能,但并不具备去中心化存储功能。IPFS去中心化,实质是前端页面的去中心化。当我们访问一个域名,首先看到的就是... 查看详情

解析:ipfs如何有效保存元宇宙和nft的数据?

NFT是最重要的数字金融服务和最重要的IPFS存储技术。大型虚拟世界的持续应用需要充分的互联网技术,IPFS作为一种分布式存储技术,在元数据存储和NFT的安全方面发挥着重要作用,NFT数据的安装价值是不可估量的。... 查看详情

盘古开源解析:ipfs去中心化存储技术实现落地应用,有何价值?

Web3.0目前还很难被定义,它基于Web2.0,同时能有效的解决Web2.0的缺点,让互联网的价值最终归于用户。如IPFS去中心化分布式存储,如BAT、DOT、PHA等区块链隐私保护,让我们生活变得更方便更容易,而区块... 查看详情

盘古开源丨如何将本地filecoin存储引入near?

多年来,建立在区块链上的应用程序在解决数据存储方面遇到了困难。问题是直接存储在链上的数据很昂贵(想想数百万美元的千兆字节),并且存储在链外的数据可能很脆弱。迄今为止,IPFS已在很大程度上... 查看详情

盘古开源资讯:通过ipfs集群自动化处理ipfs上的数据冗余

IPFS集群通过分配、复制和跟踪分布在多个对等方之间的全局pinset来提供跨IPFS守护程序群的数据编排。IPFS赋予用户内容寻址存储的能力。然而,永久网络需要一个不损害IPFS网络分布式特性的数据冗余和可用性解决方案。IPFS... 查看详情

盘古开源赴约web3.0中国峰会,ipfs点亮未来存储市场

...行业大会”在成都世纪城新国际会展中心隆重举行。青岛盘古开源电子科技发展有限公司作为IPFS分布式存储行业领先者,受邀参加了此次峰会,与众多知名企业家齐聚一堂,共享分布式存储新机遇,探讨IPFS生态... 查看详情

盘古开源解析:ipfs&filecoin解决数据安全问题

数据爆炸增长的规律被称为:新摩尔定律,即人类有史以来的数据总量,每过18个月将会翻一番。如今的我们既是数据的生产者,更是数据的依赖者!数据爆炸的时代来自于生产和依赖,所有人都会问这样... 查看详情

盘古开源丨ipfs技术再次得到认证,哈希值加持数据存储安全

IPFS作为当前分布式存储的龙头技术,布局前期已经有了多种核心原理技术的支撑,多方面得到了业界的认可。目前国家也在新基建的搭建上布局规划IPFS技术,使得IPFS的发展开通了绿色通行证。IPFS不仅在数据传输速... 查看详情

盘古开源解析:filecoin到底是不是潜力股?

四川成都7月15日举办的IPFS分布式存储峰会,所有目标都很明确,分布式存储是时代风口,Filecoin也是目前最具价值的区块链项目。自从Filecoin上线以来,国内区块链市场基本上可以说是无人知晓。IPFS项目的生态布... 查看详情

盘古开源科普:零知识证明在filecoin网络中的作用

IPFS是互联网分布式存储底层协议,通过分散的网页证明了内容寻址的有效性,它为全球点对点网络提供了数十亿文件使用;而Filecoin是基于IPFS网络协议的去中心化的存储系统,它是目前IPFS协议的唯一激励层,... 查看详情

盘古开源:filecoin通过经济激励机制促进ipfs的发展

IPFS对标的就是Web2.0时代的HTTP协议,号称是要取代HTTP的。以IPFS为基础的分布式存储系统正在成为星际存储技术发展的新趋势。与传统服务器相比,IPFS存储方式具有随机性、分散性、安全性等特点,也受到了互联网巨... 查看详情

盘古开源解析:分布式存储协议,为何被称为web3.0的骨干?

分布式存储协议是一个点对点的去中心化网络,让用户通过在众多节点上托管文件和网站来进行备份。这确保了内容能够抵御审查和集中的故障点,如服务器问题或协调攻击。当一个网站瘫痪时,往往是由于集中式服... 查看详情

盘古开源丨ipfs&filecoin是存储领域的巨大革新

Filecoin是一个服务于分布式存储或者区块链存储的一个项目,如今它的主网运行即将迎来周年期,引起众人热议。但一直到今天,很多人对Filecoin的认知可能就跟最早对区块链的认知一样,仍然处在一个盲人摸象的... 查看详情

盘古开源丨区块链分布式存储迎来“政策红利期”,携手ipfs&filecoin迈向未来!

6月7日,《工业和信息化部中央网络安全和信息化委员会办公室关于加快推动区块链技术应用和产业发展的指导意见》(以下简称《指导意见》)正式对外发布。《指导意见》首先明确了区块链的定义以及明确我国区... 查看详情

盘古开源丨为什么未来的互联网需要ipfs/filecoin?

IPFS中文翻译是星际文件系统,是硬盘共享的互联网底层协议,主要用于访问数据。简单来说,IPFS可以创建一个存储网络,让更多的人在分享闲置存储空间的同时获得收入。这种人人都可以参与共享硬盘的存储模... 查看详情

盘古开源丨分布式存储时代渐近,ipfs构建下一代互联网!

数据容量的爆发多年前,平安城市项目主要是把街道上,银行里,各个小区的摄像头都接入城市管理平台。这个项目运行了一年多时,问题来了,接入摄像头越来越多,而且新买的摄像头越来越高清,... 查看详情

盘古开源丨ipfs技术稳进,filecoin即将迎来新一轮红利!

据官方最新消息,7月1日,Filecoin主网已完成v13HyperDrive网络升级。在此之前,Filecoin主网将在Filecoin网络区块高度达到892800时升级,此次升级主要是提高网络存储效率和优化GAS成本,通过消息聚合降低GAS消耗ÿ... 查看详情

如何制作千人千面的nft?如何存储nft?#crystals#nft.storage#ipfs

MixlabNFT 有哪些 应用可能?社区最近有哪些好玩的NFT项目?知识库NFT 门票/NFT证书/NFT杂志;穿戴式NFT/ 生成式NFT;时尚NFT/教育NFT/文旅 NFT......结课证书NFT- 斯坦福加密货币与区块链技术课时代杂志NFT生成式NFT- A... 查看详情