关键词:Avalanche、ERC-721、NFT 智能合约、Fuji 测试网、Solidity、Pinata、OpenZeppelin、Remix IDE
如果你一直想通过一条高速、低 Gas、原生 EVM 兼容的公链发行独一无二的数字艺术或游戏道具,这本手把手教程能在 30 分钟内帮你完成从图像上传到合约部署,再到链上验证的全流程。下面所有操作均在 Avalanche Fuji 测试网 进行,无需真花一分钱,准备好一次愉快的实践之旅了吗?
事前准备:五条必备“燃料”
开始前,请把手机、浏览器和钱包统统调成“开发者模式”:
- NFT 源文件:准备好你的图片与 metadata JSON,确保命名连续、无空格。
- Pinata 账号:用邮箱注册后即可获取 1 GB 免费 IPFS 存储空间。(👉 三分钟教你搞定图片与 metadata 上传到 IPFS)
- Core 钱包:Chrome/Edge 商店直接安装,切到 Settings → Advanced → Testnet Mode ON。
- Remix IDE:无需安装,网页端即用。
- 测试网水龙 头:准备好 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 分钟速成合约
- 打开 OpenZeppelin Wizard → 选 ERC-721。
- Name 填入“Photography”;Symbol 填“FOTO”。
- Base URI 粘贴上一步的文件夹路径
https://gateway.pinata.cloud/ipfs/QmYdWxbiwsf.../ 勾选 Mintable + Auto Increment Ids(自动铸造递增 ID)。
⚡ 简单示例中,我们只造 1 枚,勾选只是为了演示写法。
- 右侧代码区立即生成可编译的 Solidity 合约;顶部点
Open in Remix。
第三步:Remix 编译+部署三连击
编译
进入 Remix 自动打开的 .sol 文件:
- 左侧 Solidity Compiler 选 0.8.x 最新版本,点击 Compile。
- 绿勾即成功。
连接网络
- 左栏最下方 Deploy & Run → Environment 选 Injected Provider – Web3。
- Core 弹窗要求连接 → Confirm,并确认
Account显示的是 Fuji 地址(43113)。
正式部署
- Contract 下拉列表选
Photography.sol - 点击 Deploy。
- Core 弹出交易 → 预估 Gas 约 0.05 AVAX → Confirm。
- Remix 终端出现绿色 ✅,即为部署成功。
第四步:Snowtrace 验证合约
将窗口里的合约地址复制,打开 Snowtrace Testnet Explorer → 粘贴 → Search。可清晰地看到“Contract Creation”交易,页面将永久保存你的合约源码和 ABI,方便后续 DApp 调接口。
第五步:铸币(Mint)你的第一张 NFT
回到 Remix → Deployed Contracts 区域,展开 Photography 合约函数列表:
- 点击
safeMint→ 填接收地址(一般是自己的 Core 地址)。 - transact → Core 再次弹窗 → Confirm。
- Remix 终端打印“Transaction mined” → Snowtrace 刷新页签将出现第二条交易记录。
至此,你在 Avalanche Fuji 测试网上拥有了一枚真正的 ERC-721 NFT!
👉 通过浏览器钱包一键查看自己 NFT 的终极教程
第六步:从测试网到主网的迁移提示
想正式发行,只需把网络切换到 Avalanche C-Chain Mainnet 并做以下改动:
- 钱包地址内要有足量主网 AVAX;
- 部署前在 Wizard 里把对应
constructor参数复制粘贴到主网 Remix; - 使用 snowtrace.io 查看;
- 后续可考虑在主流 NFT 市场上架,费率通常仅 2% 左右。
常见问题 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 重新生成或清理空格即可。
下一步行动清单
- ✅ 在 Core 中添加自定义 NFT,看链上展示效果;
- ✅ 把合约与前端简单 HTML-JS 打通,让用户自己 mint;
- ✅ 将图片打包转储到直接 Coinbase 支持的 IPFS 网关,提高文件可读率;
- ✅ 学习 ERC-721A 库,节省 60% Gas,为正式发布蓄势。
祝你早日上线专属 NFT 系列,冲上 Avalanche 社区热门榜!