1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

持ってる知識全般を棚卸するAdvent Calendar 2023

Day 16

Remix IDEを使ってテストネットにNFT(Non-Fungible Token)を作るまで

Posted at

概要

Remix IDEを使用してEthereumのテストネットにERC721に基づいたNFT(Non-Fungible Token)を作成する手順まとめた.
NFTを作成して確認するまでの最低限の手順だけでも,備忘録として残しておこうと思う.

今回の記事では,画像の登録などを行いません
もし画像付きのNFTを発行する場合はTokenURIなどの設定が追加で必要になります.

RemixIDEについて

ブラウザの統合開発環境で,コントラクトのソースコードであるSolidityの記述が可能.
コントラクトの作成からデプロイまでを一括で行うことができる.
ローカルで編集したsolidityコードのアップロードして編集することも可能.

ブラウザのキャッシュに編集データが残るため,キャッシュクリアすると戻せない.
編集したデータは一応ローカルにダウンロードしておくと良い

準備するもの

MetaMaskの拡張機能のインストール

インストールしてウォレットの作成まで進める.

firefox版とchrome版の2種類があるが,chrome版を推奨.
firefox版だと所持しているNFTの画像がうまく表示されなかったりする..

sepoliaテストネットへの接続

MetaMaskの接続先をテストネットに切り替える.

image.png

  1. MetaMaskの拡張機能をクリック
  2. 「ローカルテストネットワークを表示」をオンにする
  3. Sepoliaをクリック

テストネットにコントラクトをデプロイする際は,接続するネットの通貨を所持している必要がある.
通貨はfausetと呼ばれるサイトで配布されている.

fausetなどテストネットについては以下の記事でまとめた.

NFTを作るまで

1. RemixIDEでsolidtyのコードを書く

まずは,コントラクトをsolidtyで作成する.
とはいえ,RemixIDEを利用すると大枠をほとんど作成してくれる.

image.png

以下のようにソースコードが生成される.

MyToken.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;

import "@openzeppelin/contracts/token/ERC721/ERC721.sol";
import "@openzeppelin/contracts/access/Ownable.sol";

contract MyToken is ERC721, Ownable {
    constructor(address initialOwner)
        ERC721("MyToken", "MTK") // MyToken..トークン名 MTK..トークン名の略称
        Ownable(initialOwner)
    {}

    function safeMint(address to, uint256 tokenId) public onlyOwner {
        _safeMint(to, tokenId);
    }
}

任意で,ソースコードのうち,トークンの名前や略称を変えて置けばよい.

2. コンパイル・デプロイする

作成したsolファイルをコンパイルしてデプロイする.
コントラクト(作成してすぐだとMytoken.sol)を選択して,「Compile MyToken.sol」を選択する.
画像のように,左側のタブに緑のアイコンが付いたらコンパイルが成功する.

image.png

「Auto compile」にチェックを入れておくと,
solファイルを編集するたびに自動でコンパイルしてくれる.

特に理由がなければチェックを入れておくと便利.

次にデプロイする.

image.png

3.の作業で,Deployボタンの右側に入れるウォレットアドレスは,コントラクトのオーナーとなるアドレスです.
特にsolファイルを触らない限り,NFTの発行ができるのはオーナーのみ(onlyOwner)になるので,間違えないように注意してください.

デプロイのボタンを押すと,拡張機能にポップアップがでる.
image.png

ここで,確認を押すとトランザクションが発行されて,
コントラクトがテストネットにデプロイされる.

3. NFTを発行する

NFTの発行は,コントラクトの操作(トランザクション)を通して行う.
同じくデプロイのタブの下に「Deployed Contracts」がある.
クリックすると,コントラクトの関数一覧が表示される.

その中で,「safemint」という関数でNFTを発行する
safemintのタブを押すと,to と tokenIDを指定するボックスが出現する.
to は NFTの所有者となるウォレットアドレスを入力し,
tokenID は NFTのIDを入力する(0以上の整数).

記入したらtransactボタンを押す.

image.png

コントラクト発行時と同様に,MetaMaskの拡張機能が開いて確認をクリックする.
すると,safemintが実行される.

4. MetaMask・OpenSeaで確認する

まず検索するために,デプロイしたコントラクトのアドレスをコピーする.

image.png

OpenSea で確認

テストネット用のOpenSeaを開く.
(本番用のOpenSeaでは確認できないので注意)

先ほどコピーしたコントラクトアドレスで検索すると,
デプロイしたコントラクトが出てくる.

tokenURIなど適切な画像のパスをコントラクトに設定することで,
画像の表示が可能となる.

MetaMaskで確認

MetaMaskの拡張機能のボタンをクリックしてNFTのタブをクリックした後,
画面下部の「NFTのインポート」をクリックする.

「NFTのインポート」の画面で,
アドレスにデプロイしたコントラクトアドレス,
IDに,safemintで入力したIDを入力してインポートを押す.

image.png

インポートに成功すると,NFTタブに取得したNFTが表示される.

image.png

まとめ

本記事ではRemix IDEを使用してEthereumのテストネットにおいてERC721に基づいたNFT(Non-Fungible Token)を作成する最低限の手順を紹介しました.
RemixIDEとMetaMaskを用いてコントラクトのデプロイ・NFTの発行を実施して,
作成したNFTをOpenSeaとMetaMaskから取得を確認した.
画像の登録など,NFTの拡張機能については今回の記事では触れませんでしたが、
必要に応じてTokenURIなどの設定が必要になる.

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?