💧

Web IDEを使ってSuiのNFTを作成しよう!

に公開

概要

新しい技術を学ぶために最初のつまずきポイントは環境構築です。

Suiはオンラインエディターでモジュールのデプロイから関数実行までを試すことができます。

この記事では、オンラインのIDEを使って、NFTの作成を実行していきます。

手順

bitslabを使います。
以下のリンクにアクセスします。

https://ide.bitslab.xyz/

いくつかテンプレートがありますが、今回は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が発行できます。

参考記事

https://zenn.dev/fukaeridesui/articles/503ef4a2bf0b3f

https://www.bitslab.xyz/bitslabide

Discussion