核心关键词:Sui NFT、Sui JS SDK、IPFS Pinata、铸造 NFT、Sui Devnet、Move 合约、动态元数据、链游开发、去中心化存储、Web3 JavaScript
为什么选择 Sui?
作为新一代高性能公链,Sui 不仅交易确认不到 1 秒,还把「动态元数据」和「对象模型」玩出了花。开发者只需要 JavaScript 基础即可上手。下文会以 Devnet 为例,手把手带你用 60 行代码完成 Sui NFT 铸造。
准备工作
- Node.js ≥ 18
- VSCode 或任意文本编辑器
- 基础 JavaScript 经验
👉 想一步到位?这里有一份浓缩版的完整代码片段可以直接复制运行。
步骤 1:用 Pinata 上传媒体并生成元数据
Sui 支持动态元数据,但图片、视频依然需要去中心化存储。IPFS PIN 服务 Pinata 是首选,防篡改、免费额度充足。
- 注册 Pinata 并登录。
- Upload → File → 选择文件 → 命名 → Upload。
- 复制生成的 CID(形如
QmZhnkim…),稍后在代码里使用ipfs://CID调用。
步骤 2:初始化项目与安装依赖
mkdir sui-nft && cd sui-nft
npm init -y
npm install @mysten/sui.js修改 package.json,添加 type: "module" 以支持 ES Module:
{
"name": "sui-nft",
"type": "module",
"dependencies": {
"@mysten/sui.js": "^0.46.1"
}
}创建脚本文件:
touch mint-nft.js步骤 3:生成钱包与地址
在 mint-nft.js 头部引入依赖并创建 Ed25519 密钥对:
import { Ed25519Keypair, JsonRpcProvider, Network, RawSigner } from '@mysten/sui.js';
const keypair = new Ed25519Keypair();
const address = keypair.getPublicKey().toSuiAddress();
console.log('地址:', address);终端运行:
node mint-nft.js出现 0x... 即为成功。
步骤 4:领取 Devnet 测试币
继续补充代码,连接到 Devnet 并请求空投:
const provider = new JsonRpcProvider(Network.DEVNET);
const fund = await provider.requestSuiFromFaucet(address);
console.log(fund);空投返回 5 个独立对象,每个 0.01 SUI,后续可通过合并减少对象碎片。
合并测试币
对象的“奶牛模型”意味着必须先把 NFT Gas 统一到一个对象:
const wait = ms => new Promise(res => setTimeout(res, ms));
await wait(3000); // 等待节点确认
const signer = new RawSigner(keypair, provider);
const mergeTxn = await signer.mergeCoins({
primaryCoin: fund.transferred_gas_objects[0].id,
coinToMerge: fund.transferred_gas_objects[1].id,
gasBudget: 10000
});
console.log('合并交易:', mergeTxn);正式铸造 NFT
调用官方示例模块 devnet_nft::mint,传入名称、描述与 IPFS 链接:
const mintTxn = await signer.executeMoveCall({
packageObjectId: '0x2',
module: 'devnet_nft',
function: 'mint',
arguments: [
'GM Morning',
'由 Pinata 上传,Sui 铸造的早安问候 NFT',
'ipfs://QmZhnkimthxvL32vin2mrQvnhN8ZbWFMvKMxRqHEq7dPz3'
],
gasBudget: 15000
});
const nftId = mintTxn.effects.created[0].reference.objectId;
console.log(`浏览器查看:https://explorer.sui.io/object/${nftId}?network=devnet`);终端执行:
node mint-nft.js出现绿色链接即铸造完成!可点开查看元数据与多媒体。
常见问题 FAQ
Q1:我要用到主网时如何切换?
A:把 Network.DEVNET 改为 Network.MAINNET 即可,注意邮箱在主网存证真正的 SUI 代币。
Q2:CID 填错或图片更新后怎么办?
A:重新上传 Pinata 获取新 CID,然后再次调用合约即可;IPFS 无中心化删改风险。
Q3:Gas 不足导致合并失败怎么办?
A:Devnet 可重复申请水龙头;正式网络需确保钱包里 0x2::sui::SUI 充足。
Q4:如何批量铸造?
A:把 mintTxn 封装进循环,或部署自定义 Move 合约调用 batch_mint。
Q5:为何我在浏览器看不到 NFT?
A:多数时候是 CID 路径格式问题,请使用正规格式 ipfs://CID 而非 ipfs.io/ipfs/CID。
扩展玩法
- 链游集成:把武器、角色当作 NFT,结合动态元数据实现“稀有度升级”。
- 市场挂单:调用
0x2::transfer::transfer把 NFT 传到市场地址,后台监听交易完成即下架。 - 批量快照:监听对象事件,定时导出 NFT 与钱包映射数据。
👉 想一站式体验链游资产跨链流转?点我一步直达。
至此,一张真正上链、可溯源、可转让的 Sui NFT 已诞生。下一步你可以尝试部署自己的 NFT 系列合约,或在市场挂单让全球玩家交易。祝你 Web3 之旅安全、顺滑!