概述
在接下来的部分中,我们首先要确保大家都知道什么是 NFT、NFT 元数据和 IPFS。毕竟,如果你想自信地回答“什么是 IPFS NFT?”这个问题,你需要了解这些概念。我们还将告知你是否要关注 IPFS NFT。这样,当你进入今天的教程部分时,你就会知道 NFT 和 IPFS 的来龙去脉。反过来,你将能够决定是否要将 NFT IPFS 存储解决方案用于未来的项目。

如果您决定完成今天的教程,您将学习如何使用 JavaScript (JS) 或 TypeScript (TS) 创建和上传 IPFS NFT 元数据。首先,您将了解需要注意的先决条件。然后,我们将带您完成该过程涉及的三个步骤。此外,我们将为您提供所有命令行和示例脚本,让您轻松完成。最终,您只需复制粘贴我们的代码行和命令,即可将示例 NFT 元数据上传到 IPFS。

探索 NFT 和 IPFS
如上所述,您需要知道什么是 NFT 和 IPFS 才能正确理解 IPFS NFT。因此,我们将使用接下来的三个部分来确保您清楚地了解 IPFS 和 NFT 的交集。事不宜迟,让我们首先仔细研究一下 NFT、代表 NFT 的文件和 NFT 元数据!

NFT、NFT 代表文件和 NFT 元数据
非同质化代币(NFT)是一种特殊的加密资产。与同质化代币不同,它们是不可互换的,因为每个 NFT 都具有独特的链上签名。因此,NFT 被用来代表数字艺术和数字收藏品也就不足为奇了。然而,值得指出的是,NFT 可以代表任何独特的数字或实物。这种表示通常是通过将代表 NFT 的文件分配给 NFT 来完成的。然而,需要注意的是,这些文件并不存储在区块链上。毕竟,这会产生经济和技术后果,因为区块链不是为存储大文件而设计的。
相反,开发人员使用云存储解决方案存储代表 NFT 的文件。IPFS 是实现此目的的最佳去中心化选项之一(下文将详细介绍)。此外,在正确存储文件后,开发人员会获取其 URL 并将其添加到 NFT 元数据中。此外,后者还包含有关 NFT 的一些其他详细信息,通常以 JSON 文件的形式出现。就像代表 NFT 的文件一样,开发人员倾向于以相同的方式存储 NFT 元数据文件。因此,IPFS NFT 元数据存储往往是最常见的解决方案。
NFT 智能合约中实际包含的细节是 NFT 元数据 (URI) 的链接。当然,智能合约还包括其他标准化信息。但是,细节取决于 NFT 的类型(ERC-721、ERC-1155、SPL 等)。最后,一旦 Web3 开发人员部署了 NFT 智能合约,他们就会创建(铸造)NFT。在此过程中,链上交易会将 NFT 元数据链接(URI)存储在区块链上。
现在您对 NFT、代表 NFT 的文件和 NFT 元数据有了更好的了解,现在是时候探索 IPFS 了。

什么是 IPFS?
星际文件系统 (IPFS) 是一种分布式系统,用于上传、存储和访问网站、应用程序、数据和文件。此外,Protocol Labs 开发了这种点对点 (P2P) 超媒体协议,以保存和发展人类的知识。毕竟,IPFS 使网络更具弹性、可升级和开放。
此外,作为一种 P2P 文件共享协议,IPFS 使用户能够以去中心化的方式托管和访问内容。此外,用户运营商托管了整体数据的一部分,从而创建了一个用于存储和共享文件或其他内容的独特而创新的系统。另请注意,IPFS 不像传统的 HTTP 系统那样基于位置。相反,它采用内容寻址策略。因此,IPFS 生态系统中的所有内容都有一个唯一的哈希值,用作内容标识符 (CID)。因此,IPFS 用户可以根据其内容而不是位置找到任何文件、网站、数据等。本质上,为了找到特定的数据,IPFS 使用请求内容所特有的加密哈希值。此外,IPFS 还通过将内容链接在一起来识别内容。

IPFS 的工作原理
如果您想深入了解 IPFS 的运作方式,请务必使用此协议的文档。但是,快速了解以下三个原则将有助于您了解 IPFS NFT:
通过内容寻址进行识别——使用 IPFS 时,内容是通过“内容中的内容”而不是“内容位于何处”来查找的。这是可能的,因为 IPFS 协议中的每部分内容都有一个 CID(内容来源的唯一哈希值)。
通过 DAG(有向无环图)链接内容– IPFS 使用 Merkle DAG,其中所有节点都有一个标识符,该标识符的形式是节点内容的哈希值。此外,IPFS 通常将用户的内容拆分为块的各个部分,以构建 Merkle DAG 表示。这意味着不同的文件部分可以来自多个来源,并且仍能有效地进行身份验证。在某种程度上,这类似于使用 BitTorrent,它允许您同时从多个对等点获取文件。
通过 DHT(分布式哈希表)发现内容– IPFS 利用 DHT 来查找哪些对等点托管用户查询的内容。此外,由于哈希表本质上是键到值的数据库,因此 DHT 是分布式网络中跨对等点拆分的表。因此,要查找内容,您需要查询这些对等点。

什么是 IPFS NFT?
到目前为止,您已经知道什么是 NFT 和 IPFS。因此,您可能已经对 IPFS NFT 有了清晰的认识。但是,由于“IPFS NFT”一词可能有点令人困惑,因此了解 NFT 是什么以及 IPFS 包含什么可能还不够。因此,有必要解释一下。
IPFS NFT 不是 IPFS “拥有”或“铸造”的非同质化代币。相反,“IPFS NFT”一词是指使用 IPFS 存储代表 NFT 的文件、NFT 元数据或两者的所有 NFT。此外,同样,“IPFS NFT 元数据”侧重于使用 IPFS 存储的 NFT 元数据文件。
您应该使用 IPFS 进行 NFT 存储吗?
有一些特定的项目和 NFT 实用程序可以通过使用 NFT 表示文件和/或 NFT 元数据文件的集中式存储解决方案为用户提供额外的价值。但是,参与 Web3 开发的每个人都应该努力实现适当的去中心化水平。因此,我们认为去中心化存储解决方案是必经之路。谈到这些解决方案,IPFS 往往是最佳选择。现在,在开始使用 NFT IPFS 解决方案之前,请确保您了解使用 IPFS 进行 NFT 存储的主要优缺点。IPFS 的主要缺点之一是它不会永久存储文件,因为它不使用区块链技术。然而,这正是 Filecoin 巧妙补充 IPFS 的地方。
另一方面,IPFS 具有一些明显的优势:
高效且价格低廉——IPFS 的 P2P 系统可同时从多个节点检索内容,因此效率极高。这还可以节省大量带宽。毕竟,效率的提高有助于降低系统成本。
弹性——IPFS 提供了一个高度弹性的系统,使创建镜像数据网络变得简单。此外,得益于内容寻址,IPFS 的内容可以自主版本化。
去中心化——信息审查和单点故障问题是中心化存储解决方案和 Web2 的核心问题。因此,IPFS 的去中心化特性通过提供扁平、开放的网络消除了这些问题。
可用性——通过促进弹性网络的创建,IPFS 可实现更持久的可用性。例如,这可提高发展中国家或那些速度较慢的咖啡店 WiFi 连接的连通性。
IPFS NFT – 如何与 Moralis 一起使用 IPFS 进行 NFT 元数据存储
现在是时候启动本教程的行动步骤了!我们将带您完成一个简单的三步过程,使您能够在几分钟内创建和上传 IPFS NFT 元数据。如果您还记得文章顶部的代码片段,您可能已经知道本部分的主角是 Moralis 的“ uploadFolder ” IPFS API 端点。后者使 NFT IPFS 存储更加简单,是 NFT 开发的有用工具。
但是,在您按照我们的指示上传示例元数据之前,请确保满足以下先决条件:
安装 Node v.14 或更高版本。
准备好您最喜欢的代码编辑器或 IDE。我们倾向于使用 Visual Studio Code (VSC)。
安装您最喜欢的包管理器(“npm”,“yarn”或“pnpm”)。
步骤 1:获取 Web3 API 密钥并安装 Moralis SDK
如果您还没有这样做,请立即创建您的免费 Moralis 帐户。通过这样做,您将可以访问您的管理区域,在那里您可以获取您的 Web3 API 密钥:

我们将很快向您展示将上面复制的 API 密钥粘贴到哪里。但首先让我们确保您为专注于 NFT 和 IPFS 的项目安装 Moralis SDK。幸运的是,您可以使用单个命令(使用与您的包管理器匹配的命令)来执行此操作:
第 2 步:使用示例“Index.js”脚本
使用 Moralis SDK,您可以创建一个正确合并“ uploadFolder ”端点的“ IPFS NFT 元数据”脚本。以下是可以实现这一目的的代码行:
要使用上述代码行,您必须将“ YOUR_API_KEY ”占位符替换为您在第一步中获得的 Web3 API 密钥。此外,查看上面的代码行,您可以看到“ abi ”的详细信息。这是我们定义路径和内容以及与我们的示例 IPFS NFT 元数据相关的所有详细信息的地方。
此外,上述脚本还包含一个示例图像,我们已经将其上传到IPFS。您可以使用Brave浏览器查看它:

当然,如果您要使用上述示例脚本上传您的 IPFS NFT,您需要替换指示名称、描述和 NFT 属性的占位符。此外,您还需要使用自己的图像,将其上传到 IPFS,并用它替换上述 IPFS 地址。
步骤3:执行示例NFT和IPFS程序
您已到达本“NFT IPFS”教程的最后阶段。假设您正在使用上述 JavaScript 示例脚本,则只需在终端中输入以下命令:
注意:如果您使用“index.ts”脚本,则需要改用“npx ts-node index.ts”命令。
最后,使用您的终端探索结果。确保复制它返回的路径并使用 Brave 浏览器查看您的 NFT 的元数据。