如何使用 Infura 创建 NFT

Consensys管理小助手 2023-04-14 10:43:41

 

 

以下是使用 Infura 创建 NFT 所需的所有步骤。

您对 NFT 感到好奇并想创建自己的 NFT 吗?Infura 是一个强大的工具,可以轻松地在以太坊和其他区块链上创建和管理 NFT。在本教程中,我们将逐步向您展示如何使用 Infura 铸造您自己的 NFT。

我将解释 NFT 以及铸造 NFT 的意义。我还将提供有关 Infura 工作原理以及入门所需内容的概述。

在本指南结束时,您将深入了解创建 NFT 需要什么,以及 Infura 如何帮助您快速轻松地完成此操作,让您在关注核心应用程序逻辑的同时照顾您的节点需要。

什么是 NFT?

非同质化代币 (NFT) 是独特的数字资产,代表特定项目的所有权,例如一件艺术品、音乐或内容。NFT 与常规代币不同,因为它们是不可替代的,不能被兑换成相同的物品或价值。

每个 NFT 都是独一无二的,具有由供需关系决定的独特价值。此外,NFT 通常存储在以太坊或 Polygon 等区块链技术上,提供了一种安全透明的方式来验证数字资产的所有权和真实性。

“铸造” NFT 是什么意思?

“铸造”一个 NFT 意味着在区块链网络上创建一个新的、独一无二的 NFT。这是将代币所有权分配给地址的过程,其中包含一些描述代币的元数据。

此过程通常从创建和部署 ERC721 或 ERC1155 智能合约开始,其中包含了 NFT 的具体细节,例如其名称和标识。 

接着是创建 NFT 资产(图像、音乐或内容和元数据)并将其上传到您选择的托管服务——稍后会详细介绍。

最后,使用接收者的地址和托管服务提供的 NFT 元数据 URI 从已部署的合约中调用 mint 函数。

对于 NFT 项目的托管资产和元数据,有以下三种方案可供选择:

1.AWS 等中心化托管服务——不抗审查。

2. 链上存储——费用太高

3. 像星际文件系统 (IPFS) 这样的去中心化存储是最好的选择,因为它不像链上存储那么昂贵,但去中心化程度足以抵抗审查。

Infura 在创建 NFT 时发挥什么作用?

无论是在以太坊、Polygon 或 Arbitrium 上部署 NFT 智能合约,还是在 IPFS 上托管 NFT 资产和元数据,您都需要通过操作复杂且昂贵的服务器软件(节点)来连接到这些网络,这是很容易出错和耗时的。

Infura 通过提供一组强大且易于使用的 API 来解决这些问题,让开发人员可以快速开始构建,而不必担心操作和维护区块链节点。

截至目前,Infura 支持 11个 网络,包括 Ethereum、IPFS、Filecoin、Polygon、Arbitrum、Avalanche、Optimism、Celo、Near、Aurora 和 StarkNet。

现在我们已经了解了大部分理论,让我们开始铸造 NFT!

创建 NFT 的要求

  • 安装 Node.js。建议使用 NVM 安装 node.js。

  • 安装 Truffle。

  • 一个免费的 Infura 帐户。

  • 一个 MetaMask 钱包。

  • 代码编辑器 - 最好是 VS Code。

  • 一些 Goerli 测试网 ETH。

如何编写 NFT 智能合约

truffle init infura-nft-project

cd infura-nft-project

truffle create contract InfuraNFTProject

首先,我们需要一个 Truffle 项目来容纳 NFT 智能合约。

Truffle 使构建、编译和部署智能合约到预定义网络变得容易。在我们的例子中,我们将在 Goerli 测试网上部署和铸造我们的 NFT,在下一节中,我们将设置 Truffle 来执行此操作。

truffle init infura-nft-projectcd infura-nft-projecttruffle create contract InfuraNFTProject

您的项目结构应如下所示:

为了快速开发该项目的智能合约,我们将使用 OpenZeppelin 的合约向导,这是一个基于 OpenZeppelin 实现的交互式智能合约生成器。

我将选中几个选项框,并让向导为我生成智能合约,然后我可以将其复制到 InfuraNFTProject.sol 中并进行编译。

 

要成功编译此合约,我们必须确保正确安装了文件开头列出的依赖项。

使用命令 npm install -dev @openzeppelin/contracts 安装 OpenZeppelin 的合约库。

使用truffle compile编译合约,会看到下图所示的响应,并生成一个新的 build 文件夹。

将您的 NFT 智能合约部署到 Goerli 测试网

成功编译智能合约后,下一步是将其部署到公共网络,以便我们可以铸造 NFT 并在我们的 MetaMask 移动钱包中看到它。

使用 Truffle 将智能合约部署到区块链的第一步是创建部署脚本,也称为 migration 文件。在 migrations 文件夹中,创建一个新文件 1_deploy_contracts.js并向其中添加以下内容。

 

第二步是访问您希望将 NFT 部署到的区块链网络。为了帮助我们访问像 Goerli 这样的公共网络,我们将使用 Infura。使用像 Infura 这样的工具,我们将不必在我们要部署的网络上设置和维护我们自己的节点,这需要很多的工作。

Infura 在包括 Goerli 在内的各种网络上维护这些节点,对外提供了一个我们可以访问公共区块链的端点,为我们节省了时间和精力。

前往 infura 仪表板,在 Web3API 下创建一个新项目,并获取您的项目密钥。在以太坊选项卡上,选择 Goerli 以公开您唯一的 Goerli 项目端点。

 

 

 

要通过 Truffle 使用 Infura API 将智能合约部署到 Goerli 网络,我们需要设置一个节点提供商来代表我们签署交易。

一种方法是从您的 MetaMask 钱包中获取您的助记词,并将其配置到 Truffle 里。另一种更简单的方法是使用 Truffle 仪表板,它会在需要时将交易路由到你的 MetaMask 钱包,从而避免暴露你的私钥。

由于本教程的目标是深入了解细节并展示其背后的工作原理,我们将使用第一种方法,因为它还允许我们通过 Infura 项目仪表板监控交易。PORTANT:  Add .env to .gitignore if you use GIT version control.

前往您的 MetaMask 钱包并点击右上角的个人资料图标 -> 点击设置 -> 安全和隐私 -> 显示助记词 -> 输入您的密码并复制您的助记词。

在 Truffle 项目的根目录中,创建一个 .env 文件并向其中添加以下内容。请确保此文件未被版本控制跟踪,因为将此文件提交可能会造成重大损失。

重要提示:如果您使用 GIT 版本控制,请将 .env 添加到 .gitignore。

现在我们已经准备好这些密钥,让我们更新 truffle-config.js 文件并将 Goerli 网络配置为我们选择的网络。

 

为此,我们需要下载配置文件中引用的 dotenv 和 @truffle/hdwallet-provider 依赖项。运行此命令  “npm install -dev dotenv @truffle/hdwallet-provider”。

现在一切就绪,我们可以使用这个简单的命令将智能合约部署到 Goerli 网络:“truffle migrate --network goerli”。

如果您已正确完成所有操作,并且您的 MetaMask 钱包中有足够的 goerli ETH,您应该会看到如下所示的响应:

 

如果您在 Etherscan 中搜索合约地址,您应该能够看到您的合约。做得好!

通过 Infura 将 NFT 资产和元数据上传到 IPFS

Infura 让我们更加便利的另一个地方是通过 Infura 仪表板提供对 IPFS 的访问。前往 Infura 仪表板并创建一个 IPFS 项目。

为了能够通过 Infura 访问 IPFS 内容,您需要启用一个专用网关,请参考这篇文章:关于创建专用网关的简单指南。

下一步是将 NFT 图像文件上传到 IPFS。获取您的 IPFS 项目 ID 和密钥,然后进入到包含您的 NFT 图像的根目录。

运行以下命令,将 “InfuraNFT.jpg” 替换为您的图像文件名称,并将 <API-Key>:<API-Key-Secret> 分别替换为您的项目 ID密钥

您应该得到如下所示的响应:

复制图像哈希并将其存储在某个地方,因为我们将在下一步中使用它。

接下来是创建并上传一个描述 NFT 图像的 JSON 文件,我们将遵循 Opensea 标准以确保我们能够在铸造后在 Opensea 上看到我们的 NFT。

将以下内容复制到 JSON 文件,将“<DEDICATED GATEWAY SUBDOMAIN>/ipfs/<NFT IMAGE HASH>”替换为您之前启用的专用网关子域和您的图像哈希。

要将此 JSON 文件上传到 IPFS,请在命令行中导航到包含 JSON 文件的目录,并运行以下命令:

请记住将文件名、 API-key 和 API-Key-Secret 分别替换为您的文件名、项目 ID 和密钥。有关如何使用 IPFS API 将图像和元数据上传到 IPFS 的更多信息,请参阅本指南。

如果您做对了,您 Infura IPFS 仪表板中应该有两个固定的项目。

 

在 NFT 智能合约上调用 mint 函数

部署 NFT 合约并将图像资产和元数据上传到 IPFS 后,我们就可以调用 mint 函数并将此 NFT 分配给以太坊地址。

为了帮助我们实现这一目标,我们将使用 Truffle 控制台。前往包含 truffle-config.js .env 文件的根目录,并运行以下命令将 Truffle 控制台连接到在 truffle-config.json 文件中定义的 Goerli 网络。

在打开的控制台中,获取已部署的 NFT 合约并调用 mint 函数,将收件人的地址和元数据 URI 替换为您的以太坊地址和您上传到 IPFS 的元数据的 URI。

您应该得到如下所示的响应:

 

现在,如果您前往 MetaMask 移动钱包,您应该会在 NFT 选项卡下看到新铸造的 NFT。确保你在 Goerli 网络上。您也可以前往 https://testnets.opensea.io/ ,并连接您的钱包以在 Opensea 上查看您的 NFT。

结论:现在您知道如何创建 NFT

就是这样!您已经编写并部署了一个 ERC 721 token,使用 Infura  API 将 NFT 图像和元数据上传到 IPFS,并且您已经使用 Truffle 控制台调用了 NFT 合约上的 mint 函数,将此 NFT 分配给了指定地址。

您可以看到,Infura 通过让您专注于您的应用程序,可以极大地提高您的工作效率。同时 Infura 管理您的节点,并为您提供一个强大的仪表板来实时跟踪和监控请求。

 

咨询我们的区块链专家

我们的全球解决方案团队提供区块链培训、战略咨询、实现服务和合作机会。

请与我们联系,了解更多资讯:wechat@consensys.net

...全文
2102 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

725

社区成员

发帖
与我相关
我的任务
社区描述
ConsenSys是一家领先的以太坊和去中心化协议软件公司,我们的产品套件由Infura、Quorum、Codefi、MetaMask、Truffle、Diligence 和我们的NFT 平台组成。
区块链 企业社区
社区管理员
  • csdnsqst0035
  • Ashley0001
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧