如何使用IPFS来存储和托管NFT(教程) 金色财经

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

很多时候,这些链接是脆弱的(https://www.vice.com/en/article/pkdj79/peoples-expensive-nfts-keep-vanishing-this-is-why),用HTTP协议将用户引向特定位置,而非该资产本身。这意味着链接指向的内容可能在以后失效或者改变,造成原资产的丢失(只剩所有权记录是无价值的)。

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

内容寻址

IPFS内容标识符(https://docs.ipfs.io/guides/concepts/cid/)(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(https://en.wikipedia.org/wiki/Uniform_Resource_Identifier)用于在协议中指定某特定内容。协议是由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(https://docs.ipfs.io/how-to/address-ipfs-on-web/#http-gateways)帮助无法原生解析IPFS URI的旧版浏览器进行兼容。这种链接只应在应用程序的界面中使用,而不应该存入区块链或NFT的元数据中。

例子:https://dweb.link/ipfs/bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi

需注意到,HTTP gateway又将内容分发中心化,是中间人攻击的可能载体并带来潜在的单点失效—— 如果gateway运营方下线或者失联,链接将失效。而内置IPFS支持的浏览器(通过IPFS Companion(https://docs.ipfs.io/install/ipfs-companion/)浏览器扩展,或原生支持,如Brave(https://brave.com/ipfs-support/))可以避免这些问题,因为它们可以自动从此类链接中提取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(https://docs.ipfs.io/how-to/address-ipfs-on-web/#http-gateways)来获得兼容性。

同时应该避免其他链接到内容的方式(如非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这样的去中心化网络来提供内容的主要原因之一是为了防范链接失效(https://en.wikipedia.org/wiki/Link_rot)。这是通过让网络中别的节点共同运营数据镜像服务来实现的。但对数据可用性有高要求的开发者不应该依赖于别的节点的利他性。为了确保链接的内容可用,开发者应该pinning(https://docs.ipfs.io/concepts/persistence/)内容的CID在自己的存储节点上,并与愿意帮忙的节点一起存储分发该内容。如果愿意的话,开发者也可以使用pinning服务(https://docs.ipfs.io/how-to/work-with-pinning-services/)来代为运营。

(0)

相关推荐

  • 量化金融策略开源框架:QUANTAXIS

    ♚ 作者:余天,yutiansut 2015 创始人,QUANTAXIS 开发者. QUANTAXIS量化金融策略框架,是一个面向中小型策略团队的量化分析解决方案,是一个从数据爬取.清洗存储.分析回测 ...

  • 从“十四五”规划看去中心化云计算的崛起

    云计算发展如火如荼,但这个"云计算"却实际上被默认为"中心化"云计算,即集中化.统一归属的远程集群计算.然而,一种"去中心化"云计算正在快速 ...

  • 再谈负载均衡

    上周发的一篇负载均衡的文章有一个点不少人(统计了下在其他平台及上篇文章留言中大概有 8 人留言不解)有疑问,所以我觉得有必要单独写篇文章解释一下,先看下上篇文章展示的架构图 这里一些朋友的疑问点是 N ...

  • Python爬取淘数据平台商品数据,发现假发的市场原来那么火

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. 最近发现了一个不错的数据网站,叫"淘数据".里面的数据都是淘宝的商家数据 ...

  • 庚子鼠年春单细胞直播潮观后

    男, 一个长大了才会遇到的帅哥, 稳健,潇洒,大方,靠谱. 一段生信缘,一棵技能树, 一枚大型测序工厂的螺丝钉, 一个随机森林中提灯觅食的津门旅客. 序言 庚子鼠年伊春,一场突如其来的新冠疫情牵动着全 ...

  • 2020国内十大API接口服务平台

    API的概念早在上世纪60年代就已经出现,其代表的是应用程序的编程接口,是一些预先定义的函数,或指软件系统不同组成部分衔接的约定. 换句话说,API是一个信使,它将用户的请求交付给用户所请求的提供者, ...

  • 一文详解 API 设计最佳实践

    架构之美 68篇原创内容 公众号 -     前言    - 良好设计的API = 快乐的程序员

  • HTTP不懂怎么办?

    HTTP 基本概念 1. 什么是 HTTP?HTTP 的作用是什么? HTTP 全称:HyperText Transfer Protocol ,超文本传输协议. HTTP 从客户端到服务器端等一系列运 ...

  • IPFS互联网存储主流项目 FIL币必将再创行业奇迹

    IPFS互联网存储主流项目 FIL币必将再创行业奇迹 人生之路越走越窄,并非因为不够聪明,而是因为不再相信.不知从何时起,我们对社会上的一切事物,都要往最糟糕的去想才能放心.似乎只有这样,才能证明自己 ...

  • IPFS定在存储领域一枝独秀 眼光长远者既是最终赢家,怎么获取FIL最好?

    近年来,众多大型机构纷纷入市,包括行业基金.货币龙头机构,以及一些传统的股票或行业并购基金会,尤其是6月15日之后推出新的Filecoin计划,这是迄今为止历史上最好的投资自主网启动.主要有三点:一是 ...

  • 小米采用IPFS加密存储技术,分布式存储是必然趋势!

    最近,小米集团副总裁.集团技术委员会主席崔宝秋表示,小米已经在金融等方面对区块链进行了尝试.对区块链来说,嗅觉灵敏的雷军肯定不会错过这个机会.早在小米进入区块链领域之前,小米就已经在研究其他区块链开发 ...

  • 区块链研究实验室 | 如何使用IPFS在Flow上创建NFT市场

    原创 链三丰 区块链研究实验室 昨天 这是有关使用Flow和IPFS创建NFT(如NBA Top Shot)的三部分系列文章的第三部分. 第一部分:区块链研究实验室 | 如何使用Flow和IPFS创建 ...

  • 【IPFS周报-127】| 深入NFT的世界

    "NFT已经正式进入互联网时代,所以如果你想探索,测试你的想法,看看人们在建什么,加入这个周末的NFTHack IPFS社区--"近日,IPFS发布最新第127期周报,内容如下 . ...

  • OPPOR11内存储无文件修复教程

    显示无文件怎么办呢 Step 1:安装MT管理器 方案①:(请事先准备好一张有足够空间的TF卡) 演示版本:ColorOS 6 1.手机插入一张放有 MT管理器 安装包的SD卡(TF卡),打开 文件管 ...

  • NFT市场降温 NFT发展的白与黑 金色财经

    随着加密货币市场遇冷,NFT领域似乎也开始跟着降温. 据Nonfungible.com报告,自5月以来,NFT的整体销售额从高点1.76亿美元,骤降至860万美元,暴跌了95%.截至6月15日,每周销 ...

  • 协议实验室发布NFT.Storage,免费去中心化存储NFT数据

    4月30日,协议实验室官方发表最新博客,推出用于免费存储NFT数据的NFT.Storage存储新服务,其将为NFT在分布式存储协议和星际文件系统上提供免费的去中心化存储及带宽.此前,胡安曾表示&quo ...

  • 开疆辟土,IPFS成为数据存储新蓝海

    业界大咖对话:预见2021年数据存储最新9大趋势 新趋势关键词:IPFS 新趋势:开疆辟土,IPFS成为数据存储新蓝海 在IDC Data Age 2025报告中阐述,2019-2025年将是数据爆发 ...