💧
Web IDEを使ってSuiのNFTを作成しよう!
概要
新しい技術を学ぶために最初のつまずきポイントは環境構築です。
Suiはオンラインエディターでモジュールのデプロイから関数実行までを試すことができます。
この記事では、オンラインのIDEを使って、NFTの作成を実行していきます。
手順
bitslabを使います。
以下のリンクにアクセスします。
いくつかテンプレートがありますが、今回はemptyを選択します。
任意のプロジェクト名を入力して作成します。
※この記事では、my_nftにしています。
my_nft.moveにNFTを作成するコードを記述します。
以下のコードを貼り付けます。
※モジュール名は、プロジェクト名にしてください。
module my_nft::my_nft;
use std::string::String;
use sui::package;
use sui::display;
// オブジェクトを作成
public struct NFT has key, store {
id: UID,
name: String,
image_url: String,
}
public struct MY_NFT has drop {}
// Suiチェーンにデプロイ時に1度だけ実行して、NFTオブジェクトを作成
fun init(otw: MY_NFT, ctx: &mut TxContext) {
let keys = vector[
b"name".to_string(),
b"image_url".to_string(),
b"description".to_string(),
b"creator".to_string(),
];
let values = vector[
b"{name}".to_string(),
b"{image_url}".to_string(),
b"Sui Handon".to_string(),
b"Unknown Sui Fan".to_string(),
];
let publisher = package::claim(otw, ctx);
let mut display = display::new_with_fields<NFT>(
&publisher, keys, values, ctx
);
display.update_version();
transfer::public_transfer(publisher, ctx.sender());
transfer::public_transfer(display, ctx.sender());
}
// NFTを発行
public fun mint(name: String, image_url: String, ctx: &mut TxContext): NFT {
let nft = NFT {
id: object::new(ctx),
name,
image_url
};
nft
}
// 実行したアドレスにNFTを転送
#[allow(lint(self_transfer))]
public entry fun mint_and_transfer(name: String, image_url: String, ctx: &mut TxContext) {
let nft = mint(name, image_url, ctx);
transfer::transfer(nft, ctx.sender());
}
デプロイするネットワークを選択して、Compileを押します。
コンパイルしたネットワークを選択して、deployボタンを押します。
成功したらログが出力されます。
mint_and_transferを実行します。
arg0: NFTの名前
arg1: 画像のリンク
成功するとNFTが発行できます。
参考記事
Discussion