在 Avalanche Fuji 测试网部署首个 ERC-721 NFT 智能合约完整指南

·

关键词:Avalanche、ERC-721、NFT 智能合约、Fuji 测试网、Solidity、Pinata、OpenZeppelin、Remix IDE

如果你一直想通过一条高速、低 Gas、原生 EVM 兼容的公链发行独一无二的数字艺术或游戏道具,这本手把手教程能在 30 分钟内帮你完成从图像上传到合约部署,再到链上验证的全流程。下面所有操作均在 Avalanche Fuji 测试网 进行,无需真花一分钱,准备好一次愉快的实践之旅了吗?


事前准备:五条必备“燃料”

开始前,请把手机、浏览器和钱包统统调成“开发者模式”:

  1. NFT 源文件:准备好你的图片与 metadata JSON,确保命名连续、无空格。
  2. Pinata 账号:用邮箱注册后即可获取 1 GB 免费 IPFS 存储空间。(👉 三分钟教你搞定图片与 metadata 上传到 IPFS
  3. Core 钱包:Chrome/Edge 商店直接安装,切到 Settings → Advanced → Testnet Mode ON
  4. Remix IDE:无需安装,网页端即用。
  5. 测试网水龙 头:准备好 Fuji 测试 AVAX。一次性申请 2 AVAX 足够部署+铸币。

第一步:格式化你的 NFT 资产

上传至 Pinata

登录 Pinata → Upload → Folder(推荐文件夹一次性上传),获得 ipfs://Qm.../ 形态的 Base URI。例如:
https://gateway.pinata.cloud/ipfs/QmYdWxbiwsf.../(尾部保留 /)。

检查 metadata

每个 JSON 要包含以下字段,属性 trait 可根据作品自行增减:

{
  "name": "My NFT #1",
  "description": "随心拍第 1 号作品",
  "image": "ipfs://QmU.../1.png",
  "attributes": [
    { "trait_type": "拍摄器材", "value": "Sony A7R IV" }
  ]
}

文件名必须与 token id 完全对应(1.json、2.json …),这样 OpenZeppelin 的自动递增 ID 才能正确匹配。


第二步:用 OpenZeppelin 5 分钟速成合约

  1. 打开 OpenZeppelin Wizard → 选 ERC-721。
  2. Name 填入“Photography”;Symbol 填“FOTO”。
  3. Base URI 粘贴上一步的文件夹路径 https://gateway.pinata.cloud/ipfs/QmYdWxbiwsf.../
  4. 勾选 Mintable + Auto Increment Ids(自动铸造递增 ID)。

    ⚡ 简单示例中,我们只造 1 枚,勾选只是为了演示写法。
  5. 右侧代码区立即生成可编译的 Solidity 合约;顶部点 Open in Remix

第三步:Remix 编译+部署三连击

编译

进入 Remix 自动打开的 .sol 文件:

连接网络

  1. 左栏最下方 Deploy & RunEnvironmentInjected Provider – Web3
  2. Core 弹窗要求连接 → Confirm,并确认 Account 显示的是 Fuji 地址(43113)。

正式部署


第四步:Snowtrace 验证合约

将窗口里的合约地址复制,打开 Snowtrace Testnet Explorer → 粘贴 → Search。可清晰地看到“Contract Creation”交易,页面将永久保存你的合约源码和 ABI,方便后续 DApp 调接口。


第五步:铸币(Mint)你的第一张 NFT

回到 Remix → Deployed Contracts 区域,展开 Photography 合约函数列表:

  1. 点击 safeMint → 填接收地址(一般是自己的 Core 地址)。
  2. transact → Core 再次弹窗 → Confirm
  3. Remix 终端打印“Transaction mined” → Snowtrace 刷新页签将出现第二条交易记录。

至此,你在 Avalanche Fuji 测试网上拥有了一枚真正的 ERC-721 NFT!
👉 通过浏览器钱包一键查看自己 NFT 的终极教程


第六步:从测试网到主网的迁移提示

想正式发行,只需把网络切换到 Avalanche C-Chain Mainnet 并做以下改动:


常见问题 FAQ

Q1:填完 1000 张 metadata,也要手动改 smart contract 吗?
A:不用。只要 1.编号连续,2.Base URI 指向根目录,OpenZeppelin 的自动递增 ID 会自动把 tokenURI(1) 映射到 1.json,同理 1000 → 1000.json。

Q2:Core 钱包显示连接成功,但 Remix 仍报错?
A:关闭 Remix 浏览器标签 → 重新开新标签打开 Remix → 再次选 Injected Provider – Web3,即可重新检测。

Q3:我已经部署,但 Snowtrace 没出现合约源码?
A:Fuji 测试网默认不会自动开源。进入“Contract”→“Code”→ “Verify & Publish”,拷贝 Remix 里编译后的源码和 ABI 填表即可。

Q4:可以一次性铸造多张 NFT 吗?
A:可在合约里添加批量 mint 方法,如 batchMint(address[] calldata to, uint256[] calldata ids),线上模板仅示范单发。

Q5:为什么我在 Pinata 传文件后 URI 访问 404?
A:请确认连接方式为 https://gateway.pinata.cloud/ipfs/文件夹CID/ 的形式;Pinata 的网关地址会定期调整,记得保存最稳定的路径。

Q6:用 Remix 部署时提示 Gas estimation failed?
A:多半是 Base URI 带特殊字符或 ID 字段缺失,返回 Wizard 重新生成或清理空格即可。


下一步行动清单

祝你早日上线专属 NFT 系列,冲上 Avalanche 社区热门榜!