Sui NFT 合约

  • sycute
  • 更新于 2024-03-19 15:58
  • 阅读 906

记录如何写一个NFT合约,并且要用到display功能,能够在浏览器或者钱包中看到图片

记录如何写一个 NFT 合约,并且要用到display功能,能够在浏览器或者钱包中看到图片。

1. 新建项目

打开终端,执行命令创建合约目录

sui move new nft

结果如下

./
├── Move.lock
├── Move.toml
└── sources

2. 填充内容

sources目录新建文件mynft.move

文件内容参考源码

3. 关键点讲解

更多Display信息参考 Sui Display 入门

定义 key 值与模版 value

let keys = vector[
  utf8(b"name"),
  utf8(b"image_url"),
  utf8(b"project_url"),
];

let values = vector[
  utf8(b"{name}"),
  utf8(b"https://github.com/{name}.png"),
  utf8(b"https://github.com"),
];

使用 Display 函数,并将版本升级到 1

let display = display::new_with_fields<NFT>(&publisher, keys, values,ctx);

// update version to 1
display::update_version(&mut display);

transfer::public_transfer(display, tx_context::sender(ctx));

4. 发布合约

先切换到测试网络

sui client switch --env testnet

接下来使用命令发布到测试网

sui client publish --gas-budget=60000000

查看终端,查询到PackageID:0x6be5ae949644e92fb04cb1714fca6ffcbd830243827d3d60a229ff2badf3785e

5. 交互

由于合约函数中添加了entry关键词,可以很方便在浏览器中操作

package

链接钱包之后,第一个参数填写你的 Github 名称,第二个参数写一个描述,点击Execute。 成功之后,可以在钱包 -- 资产中看到这个 NFT 了。

nft_asset.png


星航计划 QQ群:79489587

点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
sycute
sycute
0x80d6...FdC9
电报联系 @luosanzhang