IPFS 使用内容寻址来唯一标识全局命名空间中的每个文件,这对于将 NFT 元数据链接到资产或艺术品的存储位置很重要。

原文标题:《NFT 必修课:如何使用 IPFS 创建 NFT 以及部署智能合约?》
撰文:白泽研究院

多年来,数字艺术并未被认为是「真正的」艺术。绘画、雕塑和装置是「真正的」艺术,而数字艺术被视为「二流」艺术。然而,数字艺术家也花费了大量时间来建立他们的艺术和完善他们的技能,就像更多的「古典」艺术家一样。

多年来,数字艺术和数字艺术家的作品并没有得到应有的报酬。数字艺术家更像是自由职业者,从一场演出到另一场演出,总是很难从他们的数字艺术中赚到更多的钱。

原因是很难让数字艺术独一无二。数字艺术一旦被创造出来,就很容易在互联网上被复制数千次,而且很难追踪这些副本并区分哪一个是原始的。

在古典绘画中,我知道萨尔瓦多·达利(Salvador Dalli)的《记忆的永恒》上有成千上万张照片,但原始实物绘画是某人所有的(在这种情况下,它在纽约现代艺术博物馆)。

手把手教你如何使用 IPFS 创建 NFT 和部署智能合约

尽管我可以多次复制 / 粘贴此图像,但原始图像始终具有价值,因为很容易证明原始图像的所有权。原件被物理锁在博物馆里

我们如何将数字艺术变成独一无二的东西?

那便是今天的主角——NFT。

NFT 是具有不可替代性的代币,这意味着每个代币都是独一无二且不可替代的。他们通常使用以太坊 ERC-721 标准,该标准于 2018 年 1 月在以太坊网络中引入并彻底改变了整个行业。

如果你想了解如何创建和铸造数字 NFT,让我们开始吧!

使用 IPFS 铸造、存储 NFT 资产

让我们将 NFT 创建分解为两个部分。首先,有处理 NFT 的铸造和存储的区块链。区块链通过在全球数千台计算机 / 节点上复制它,来确保 NFT 的元数据是不可变的和安全的。然而,区块链无法处理存储大量数据,因为在这数千个节点之间复制大量数据变得极其昂贵。这就是第二部分:存储 NFT 数据。

在以太坊区块链上存储图像可能会花费数万美元。出于这个原因,大多数 NFT 数据需要存储在链外,我们也需要保护这些数据。

我们可以通过 IPFS——星际文件系统,一种用于共享和存储文件的点对点协议来解决这个问题。IPFS 使用内容寻址来唯一标识全局命名空间中的每个文件,这对于我们的 NFT 将 NFT 元数据链接到资产或艺术品的存储位置很重要。与 Dropbox 或 Google Drive 等集中式服务相比,IPFS 可以被视为具有数据固定的更持久性。

创建 NFT 时,我们需要使用引用资产的 URL 链接。此 URL 将包含在 NFT 的元数据中。正如您现在所知,NFT 数据是不可变的,它将永远存在于区块链中,因此为与 NFT 相关的资产或图像找到一个合适的家也很重要。

手把手教你如何使用 IPFS 创建 NFT 和部署智能合约 Pinata 是著名的 IPFS 服务之一:pinata.cloud

IPFS 使用称为 CID 的内容标识符,它将内容作为哈希引用。这些 CID 是 URL 的一部分,如果内容没有改变,URL 也不会改变。某个 CID 和相应 URL 后面的图像将始终是相同的图像,这使我们对链下存储的 NFT 数据具有一定程度的不变性。

在「逐步铸造」部分中,我们将看到如何使用 Pinata 创建 IFPS CID/URL 并将其与我们将要铸造的 NFT 相关联。

铸造 NFT

步骤 0 — 资产的所有权

在创建 NFT 之前,您需要确保您是要代币化的资产 / 艺术品的创建者或所有者。你必须有办法证明你是所有者或创造者。

步骤 1 — 准备资产

确保您拥有该图像的文件。您可以简单地对 JPEG/PNG 进行标记,但最好也有源文件或高质量的文件。如果您处理的是数字艺术,TIFF、AI/EPS 也可以在销售过程中共享。

步骤 2 — 选择市场并进行身份验证

现在我们需要铸造 NFT 代币。当您想出售代币时,可以直接在 OpenSea 市场上铸造它,或者您可以先在 Rarible 上铸造它,因为在 Rarible 上,您可以铸造代币而无需实际出售它。由你来决定。

在这一步一步中,我假设你已经安装了 MetaMask 浏览器插件,并且有一些 ETH 用于手续费。

在 OpenSea 上,单击创建并连接您的 MetaMask 钱包(检查钱包部分)。单击 MetaMask 图标登录到您的 MetaMask 钱包,然后单击连接。之后你还需要 Ether 在铸造过程中向网络支付交易费用,但现在你不需要花钱。

连接您的钱包后,您将使用您的公钥在网站上进行身份验证和识别。这类似于您使用 Google 或 Facebook 身份登录(也称为 SAML/SSO — 单点登录)。

步骤 3 — 通过上传文件开始创建 NFT

要创建新项目,请继续并单击创建。您必须创建一个集合,并且您的 NFT 可以成为集合的一部分。以后可以制作更多的收藏品——例如,2D 收藏品、3D 收藏品等。

创建集合后,您可以向集合中「添加新项目」。点击「添加新项目」。您将能够上传文件,并且您会发现多种可用格式:PNG、GIF、WEBP、MP4、MP3 等等。您可以在此处选择并上传您的文件。

步骤 4 — 创建 IPFS 链接

重要的是要强调图像本身并没有存储在区块链上。存储在区块链上的只是关于图像的元数据,即文件的哈希值、名称、时间戳和指向文件存储位置的链接。区块链不适合存储大文件,而且文件总是需要存储在其他地方。对于 OpenSea,他们将负责存储图像。

如果您希望买家收到高分辨率文件或源文件,您也可以将此文件存储在存储服务(IPFS、Google Drive、S3 或 Dropbox)中,并在「可解锁内容」字段中共享文件链接 . 购买完成后,此文件将与买家共享。

为了让事情更加去中心化并保持区块链精神,我们不要使用像 Google Drive 或 Dropbox 这样的集中式存储服务,而是使用 IPFS——星际文件系统。IPFS 不是区块链,而是一个分布式点对点文件系统(类似于 BitTorrent),允许我们存储和共享文件。

使用 UPFS 的最简单方法是 Pinata。如果您尚未注册,请转到 Pinata.cloud 并注册。拥有 Pinata 帐户后,转到仪表板,然后单击上传。选择文件并上传。

文件上传后,您将找到一个 CID 哈希(内容标识符),类似于 Qma4Jse7V6tZ7k3756iPv39tsMG6DhxUQrc42cKoAVVsbR。

这是将链接到图像的哈希值。同时复制图像的链接,返回 OpenSea 网站,并将其粘贴到「可解锁内容」字段中。该链接 应如下所示。

步骤 5 — NFT 属性

完成附加属性和标签。

最后点击创建。

您现在已经在 OpenSea 网站上创建了资产,但它仍未上市出售。

步骤 6 — 出售 NFT

转到您的商品页面,然后单击「出售」。

您还可以设置「设置价格」。这类似于 Ebay 的「立即购买」,它是您愿意立即出售您的商品的价格。价格可以用不同的加密货币列出,但最常见的是以太币(ETH,以太坊的原生货币)。

您也可以选择「最高出价」。这是拍卖选项,在此选项中,您可以选择最低出价、底价和拍卖截止日期。

最后,点击「发布您的列表」。

单击后,按照步骤铸造令牌。您的 MetaMask 窗口将提示(如果没有,您需要单击 MetaMask 图标)并单击符号。OpenSea 不收取任何费用,但是每当您创建新的 NFT 时,您都会将数据写入区块链,并且您将产生 gas 费用(即以太坊网络的费用)。

单击「批准」后,它会提示您的 MetaMask 钱包,以便您支付费用。在您的 MetaMask 钱包上,您可以单击「编辑」来编辑费用并选择慢速或快速。慢意味着您将支付更少的 gas 费用,但交易可能需要更长的时间才能在区块链中结算(通常不到 1 小时)。

考虑到以太坊可能会拥堵,铸造新 NFT 的成本有时可能会很高,但未来可能会降低。

这样你的 NFT 现已上市,人们将能够竞标或购买。

使用 IPFS 创建 NFT 的智能合约

如果你对代码非常感兴趣并想部署自己的 ERC-721 智能合约,那么你需要完成以下几个重要步骤:

  • 获取一些测试 ETH (教学将在 Ropsten 测试网)
  • 下载 IPFS
  • 将你的作品上传到 IPFS
  • 打开 Ethereum Remix 并创建智能合约
  • 部署智能合约
  • 铸造 NTF

获取 ETH 测试币

首先,使用 MetaMask (小狐狸钱包),将你的钱包网络切换到 Ropsten 测试网。

然后打开 Ropsten 水龙头网站 ,将你的钱包地址复制到水龙头并获取一些测试以太坊。我们将需要它来支付智能合约的 gas 费用。

手把手教你如何使用 IPFS 创建 NFT 和部署智能合约

下载 IPFS 并上传您的艺术作品文件

大多数 NFT 数据需要存储在链外,我们需要保护这些数据。

我们可以通过 IPFS——星际文件系统,一种用于共享和存储文件的点对点协议来解决这个问题。IPFS 使用内容寻址来唯一标识全局命名空间中的每个文件,这对于我们的 NFT 将 NFT 元数据链接到资产或艺术品的存储位置很重要。因此,与 Dropbox 或 Google Drive 等集中式服务相比,IPFS 可以被视为具有数据固定的更持久性。

我们将使用 IPFS 来存储我们的 NFT 文件。前往 IPFS 网站并在您的台式机 / 笔记本电脑上安装 IPFS。安装后,运行它。恭喜,您现在是一个 IPFS 节点!

点击 此处 进入 IPFS 官网

手把手教你如何使用 IPFS 创建 NFT 和部署智能合约

单击文件并上传您的艺术品!

上传后,您将可以访问可共享的链接,将链接复制保存下来。

手把手教你如何使用 IPFS 创建 NFT 和部署智能合约

打开 Ethereum Remix 并创建智能合约

现在,我们转到 Ethereum Remix IDE 并创建一个新的 Solidity 文件,例如「erc721.sol」。我们将使用 Ethereum Remix 并使用 0xcert/ethereum-erc721 合约来创建我们的 NFT 智能合约。

(Ethereum Remix 是一个开源 Web 应用程序,允许您开发、编译和部署智能合约。)

手把手教你如何使用 IPFS 创建 NFT 和部署智能合约

将以下脚本复制 / 粘贴到新创建的 .sol 文件中:

手把手教你如何使用 IPFS 创建 NFT 和部署智能合约

然后你需要去编译它,以下图所示:

手把手教你如何使用 IPFS 创建 NFT 和部署智能合约

一旦智能合约编译完成,就可以部署它了!

使用 Inject Web3 部署智能合约并确保它已连接到您的 MetaMask 的 Ropsten 测试网。

手把手教你如何使用 IPFS 创建 NFT 和部署智能合约

单击部署后,它会提示您的 MetaMask 确认合约部署。

手把手教你如何使用 IPFS 创建 NFT 和部署智能合约

单击确认继续并部署合同。在这种情况下,我们在测试 Ether 中支付我们的 gas 费用,但如果你使用的是以太坊网络,您将不得不向矿工支付实际费用。

恭喜!您的智能合约现已部署!你甚至可以去以太坊浏览器检查你的新智能合约!

手把手教你如何使用 IPFS 创建 NFT 和部署智能合约

铸造 NFT

现在转到 Deployed Contracts 部分并展开你的智能合约。

手把手教你如何使用 IPFS 创建 NFT 和部署智能合约

此外,扩展 mint 函数并添加以下详细信息:

  • 在_to 字段中添加您的 Ropsten 地址
  • 在_tokenid 字段中输入任何数字值(最好是几位数字)
  • 将您的 IPFS URL 添加到我们在 IPFS 部分获得的_uri 字段

最后,点击交易并在 Metamask 上确认您的交易!

好极了!!!你的 NFT 是铸造的!您可以使用新的智能合约铸造任意数量的 NFT!

要检查您是否真的铸造了 NFT,您可以在 Remix 上查看它,或者通过单击 Metamask 来检查交易,或者打开 以太坊浏览器(Etherscan)查看。

恭喜!你已经从头开始创建了自己的 NFT 智能合约和 NFT !您现在可以将其发送给朋友或者去以太坊主网实战,并以一百万美元的价格出售它!