Sui 学习日志 1
关于sui&move
Sui 使用面向对象的模型,每个资产都是与钱包相关联的独立对象,允许交易并行处理。Sui 的执行性能很高,区分了资产转移和智能合约调用,还具备很高的可拓展性。Sui智能合约常用 Move 语言开发,具有类似 OOP 的概念,直观好上手;move 底层是 rust 构建,性能高。
环境配置安装
brew install sui
# 其他系统参考: https://docs.sui.io/guides/developer/getting-started/sui-install# 连接到 SUI
sui client# 加入自己的地址
sui keytool import <INPUT_STRING> <KEY_SCHEME> [DERIVATION_PATH]
sui client addresses # 切换环境和地址
sui client switch --env <ALIAS>
sui client switch --address <ALIAS>
参考文档:https://docs.sui.io/guides
领取 gas
选择 tesetnet,然后输入地址
铸造自己的 NFT
官方 NTF 文档:https://docs.sui.io/guides/developer/nft
实现很简单,主要是定义 NFT 的结构体。铸造函数有个事件,NFT 铸造成功后发送到对应地址
我的代码实现
https://github.com/JJLi0427/SUI_Learn/tree/main/junjun_nft
增加了display功能,能够实现图片的展示:https://docs.sui.io/references/framework/sui_sui/display
相关代码:
let keys = vector[utf8(b"name"),utf8(b"image_url"),utf8(b"description"),utf8(b"creator"),utf8(b"project_url"),];let values = vector[utf8(b"{name}"),utf8(b"{image_url}"), utf8(b"{description}"),utf8(b"Junjun Li"),utf8(b"https://github.com/JJLi0427/SUI_Learn/"),];let publisher = package::claim(otw, ctx);let mut display = display::new_with_fields<TestnetNFT>(&publisher, keys, values, ctx);display::update_version(&mut display);
编译运行
cd junjun_nft
sui move build
sui client publish # 发布包,要记住 packageid
sui client call --package <package_id> --module testnet_nft --function mintnft --args <nft_name> <nft_description> <image_url>
# 调用 package 构建一个自己 Github 头像的 NFT:
sui client call --package 0x52e57073c336e4b367005fe4e1a40113c9259ac5d4f90d4c6b48e0458d770234 --module testnet_nft --function mintnft --args "JJLi0427" "Github:JJLi0427 NFT" "https://raw.githubusercontent.com/JJLi0427/SUI_Learn/main/assets/doare_nft.jpeg"
去区块链浏览器搜生成的 NFT,通过 objectid
https://suiscan.xyz/testnet/home
在自己钱包中查看