WEB3.0

【WEB3】Remix IDEをつかってテストネットに独自コントラクトでNFTをデプロイ(作成)して自分のウォレットに転送(Mint)する方法

WEB3.0

こんにちは!TEDASKのToshiです。

前回のテストネット用のトークンを取得する方法に続いて、テストネットに独自コントラクトでNFTを作成し、自分のウォレットに作成したNFTを転送するまでのやり方を今回はご紹介したいと思います。

今回はSepoliaテストネットを利用しますので、もしまだSepoliaのトークンを取得していない場合は、次の記事を見ながらSepoliaのトークンを取得するところから始めましょう。

事前準備

Sepoliaのトークンを取得したら、次に以下の用意が必要です。

  1. 画像ファイルを読み込ませるためのサーバーもしくはGitHub
  2. NFT化するための画像
  3. SepoliaETHの残高

1.画像ファイルを読み込ませるためのサーバーもしくはGitHub

画像をNFTにする場合、もしその画像そのものをNFT化してしまうと、変換処理が多くなりガス代も多く掛かってしまうため、メタデータに画像ファイルのURL(置き場)をNFT化することでガス代を抑えるやり方が一般的です。

そのため、この画像のパスが変わってしまった場合(使っていたドメイン+サーバーを解約したとか)は、画像が表示されなくなってしまうため、一度配置した画像のURLは変わらないことが前提となります。

ですので今回は、レンタルサーバーではなくGitHubの公開リポジトリを利用して画像ファイルを配置したいと思います。

2.NFT化するための画像

当然ですが、NFT化するための画像を用意します。

一応注意ですが、試験とは言え著作権があるような画像は著作権違反になるため利用しないようにして下さい。また大事な作品なども、ここでの公開はおすすめしませんので、簡易的に作った画像を用意しましょう。

3.SepoliaETHの残高

今回は本番のイーサリアムネットワークではなく、テストネットにNFTを作成するのですが、テストネットでもガス代は掛かるため事前にSepoliaETHというトークンを取得しておく必要があります。

SepoliaETHトークンの取得については次の記事で紹介しています。

GitHubに画像データとメタデータを配置

もしGitHubを使ったことが無くレンタルサーバーが良いというかたは、ファイルの作りかはまでは一緒ですので、参考にして下さい。

【WEB3】Remix IDEをつかってテストネットに独自コントラクトでNFTをデプロイ(作成)して自分のウォレットに転送(Mint)する方法

まずnewでリポジトリを作成します。

【WEB3】Remix IDEをつかってテストネットに独自コントラクトでNFTをデプロイ(作成)して自分のウォレットに転送(Mint)する方法

名前はなんでもいいですが、自分で分かる名前にしておきます。またPublicを指定します。

【WEB3】Remix IDEをつかってテストネットに独自コントラクトでNFTをデプロイ(作成)して自分のウォレットに転送(Mint)する方法

ローカルにimagesフォルダとmetadataフォルダを作成します。

【WEB3】Remix IDEをつかってテストネットに独自コントラクトでNFTをデプロイ(作成)して自分のウォレットに転送(Mint)する方法

imagesフォルダにNFT化するための画像を入れます。名前はなんでもいいのですが、半角英数字にします。

【WEB3】Remix IDEをつかってテストネットに独自コントラクトでNFTをデプロイ(作成)して自分のウォレットに転送(Mint)する方法

次にmetadataフォルダに先ほどの0(拡張子なし)のファイルを作成します。これは後ほどTokenIDというIDをMint(ウォレットに転送)するときに入力するのですが、そのIDと対応する必要がありますので、まずは最小単位の「0」というファイルを作成します。

ちなみに画像名もこのメタデータのファイル名と合わせた方がわかりやすいという人は、画像のファイル名も0.pngや0.jpgなどに変更しても良いです。

{
  "name": "test NFT",
  "description": "test description",
  "image": "test.png",
  "attributes": [
    {
      "trait_type": "test category",
      "value": "test value"
    }
  ]
}

メタデータの内容は、決まっているのるパラメータに合わせますが、今回はこの内容で作成しますので、内容は適宜ご自身のものに書き換えてください。ちなみに、lmageだけはまだURLがまだ決まっていないので、仮でファイル名だけ入力しておきます。

では一旦この状態でGitHubにPushしてしまいます。

【WEB3】Remix IDEをつかってテストネットに独自コントラクトでNFTをデプロイ(作成)して自分のウォレットに転送(Mint)する方法

データが反映されています。

【WEB3】Remix IDEをつかってテストネットに独自コントラクトでNFTをデプロイ(作成)して自分のウォレットに転送(Mint)する方法

画像も確認できたので、次にURLを取得します。

【WEB3】Remix IDEをつかってテストネットに独自コントラクトでNFTをデプロイ(作成)して自分のウォレットに転送(Mint)する方法

リポジトリ画面の「Settings」をクリックします。

【WEB3】Remix IDEをつかってテストネットに独自コントラクトでNFTをデプロイ(作成)して自分のウォレットに転送(Mint)する方法

左メニューの「Pages」をクリックします。

「Build and deployment」の「Branch」をNoneからmainに切り換えて、「Save」をクリックします。

すると、「Your site is live at」と表示されるので、そのURLにアクセスします。

【WEB3】Remix IDEをつかってテストネットに独自コントラクトでNFTをデプロイ(作成)して自分のウォレットに転送(Mint)する方法

そうすると「404」ページが表示されますが、とりあえず大丈夫です。

【WEB3】Remix IDEをつかってテストネットに独自コントラクトでNFTをデプロイ(作成)して自分のウォレットに転送(Mint)する方法

つぎに生成されたURL/images/test.png(ご自身で作ったファイル名)にアクセスします。

画像が表示されればOKですので、そのURLを先ほどのメタデータファイル(0)に貼り付けて、githubのデータを更新します。(面倒な場合はgithub上から直接更新しても良いです。)

{
  "name": "test NFT",
  "description": "test description",
  "image": "{{YOUR URL}}/nft_remix/images/test.png",
  "attributes": [
    {
      "trait_type": "test category",
      "value": "test value"
    }
  ]
}

これで準備OKです!

Remix IDEでNFTを作成

いよいよ画像をNFT化しますので、ブラウザ上でプログラムが実行できるRemix IDEにアクセスします。

https://remix.ethereum.org

【WEB3】Remix IDEをつかってテストネットに独自コントラクトでNFTをデプロイ(作成)して自分のウォレットに転送(Mint)する方法

初めてアクセスすると、アンケートのようなダイアログが表示されるので、とりあえずLearningを選択すれば良いかと思います。

【WEB3】Remix IDEをつかってテストネットに独自コントラクトでNFTをデプロイ(作成)して自分のウォレットに転送(Mint)する方法

メイン画面に移ったら、「Workplace」の左横のメニューアイコンをクリックして「Create using template」をクリックします。

【WEB3】Remix IDEをつかってテストネットに独自コントラクトでNFTをデプロイ(作成)して自分のウォレットに転送(Mint)する方法

テンプレート一覧が表示されるので、「OpenZepperin」の「ERC721 contract with:」mintable、burnableが記載されているテンプレートの「Create」をクリックします。

【WEB3】Remix IDEをつかってテストネットに独自コントラクトでNFTをデプロイ(作成)して自分のウォレットに転送(Mint)する方法

 「OK」をクリックします。

【WEB3】Remix IDEをつかってテストネットに独自コントラクトでNFTをデプロイ(作成)して自分のウォレットに転送(Mint)する方法

ファイルが自動で生成されるので、生成作業が落ち着いたら「contracts」フォルダの中の「MyToken.sol」をクリックします。

ソースコードが記述されているのがわかります。

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

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

contract MY_NFT is ERC721, ERC721Burnable, Ownable {
    constructor(address initialOwner)
        ERC721("MY_NFT", "MYNFT")
        Ownable(initialOwner)
    {}
    
    function _baseURI() internal pure override returns (string memory) {
        return "{{YOUR URL}}/nft_remix/metadata/";
    }

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

ソースコードに上記のコードで不足している、function _baseURI()の部分を追記します。{{YOUR URL}}の部分は先ほどGitHubで作ったページURLです。metadataはメタデータファイルが入っているディレクトリです。

MY_NFTMYNFTの部分は自由ですので、ご自身の分かる名前に適宜変更してください。

【WEB3】Remix IDEをつかってテストネットに独自コントラクトでNFTをデプロイ(作成)して自分のウォレットに転送(Mint)する方法

Cntl+sで保存すると、自動でコンパイルが始まり、ファイルが生成されます。チェックマークが表示されていればOKです。

【WEB3】Remix IDEをつかってテストネットに独自コントラクトでNFTをデプロイ(作成)して自分のウォレットに転送(Mint)する方法

左メニューの「DEPLOY & RUN TRANSACTIONS」メニューをクリックします。

【WEB3】Remix IDEをつかってテストネットに独自コントラクトでNFTをデプロイ(作成)して自分のウォレットに転送(Mint)する方法

「ENVIRONMENT」をクリックしたら「Injected Provider – MetaMask」をクリックします。

【WEB3】Remix IDEをつかってテストネットに独自コントラクトでNFTをデプロイ(作成)して自分のウォレットに転送(Mint)する方法

MetaMaskの接続が必要になるので、パスワードで接続します。このとき、MetaMask上で、Sepoliaが選択されていることを事前に確認しておきます。

【WEB3】Remix IDEをつかってテストネットに独自コントラクトでNFTをデプロイ(作成)して自分のウォレットに転送(Mint)する方法

「接続」をクリック。

【WEB3】Remix IDEをつかってテストネットに独自コントラクトでNFTをデプロイ(作成)して自分のウォレットに転送(Mint)する方法

このようにSepoliaが表示されていればOKです。また、MyToken.solが表示されているを確認し、「Deploy」ボタンの横に、自分のウォレットアドレスを入力したら、「Deploy」をクリックします。

【WEB3】Remix IDEをつかってテストネットに独自コントラクトでNFTをデプロイ(作成)して自分のウォレットに転送(Mint)する方法

MetaMaskが立ち上がり、コントラクトを展開と表示されるので、「確認」をクリックします。

【WEB3】Remix IDEをつかってテストネットに独自コントラクトでNFTをデプロイ(作成)して自分のウォレットに転送(Mint)する方法

デプロイが完了すると、コンソールにチェックマークがついて、デプロイ完了したことが分かります。

これでNFTか作成されました。

ただ、作成しただけ、自分のウォレットにはNFTはまだ存在しない状態なので、次に作成したNFTを自分のウォレットに送る作業(Mint)をします。

作成したNFTをMintする(転送する)

【WEB3】Remix IDEをつかってテストネットに独自コントラクトでNFTをデプロイ(作成)して自分のウォレットに転送(Mint)する方法

Deployが完了したのを確認して、画面左下の「Deployed Contracts」の下にあるコントラクトの詳細をクリックします。

【WEB3】Remix IDEをつかってテストネットに独自コントラクトでNFTをデプロイ(作成)して自分のウォレットに転送(Mint)する方法

「safeMint」の矢印をクリックします。

【WEB3】Remix IDEをつかってテストネットに独自コントラクトでNFTをデプロイ(作成)して自分のウォレットに転送(Mint)する方法

to:にはMetaMaskのウォレットアドレスを入力、tokenId:には0(画像のファイル名)を入力したら、「transact」をクリックします。

【WEB3】Remix IDEをつかってテストネットに独自コントラクトでNFTをデプロイ(作成)して自分のウォレットに転送(Mint)する方法

そうすると、再度MetaMaskが立ち上がるので、「確認」をクリックします。

【WEB3】Remix IDEをつかってテストネットに独自コントラクトでNFTをデプロイ(作成)して自分のウォレットに転送(Mint)する方法

コンソールにチェックマークが付けばNFTの転送が完了です!

OpenSeaのテストネットサイトでNFTを確認

問題なく送られているかをOpenSeaのテストネットサイトで確認してみましょう!

https://testnets.opensea.io

【WEB3】Remix IDEをつかってテストネットに独自コントラクトでNFTをデプロイ(作成)して自分のウォレットに転送(Mint)する方法

検索窓に、自分のウォレットアドレス(MetaMaskのウォレットアドレス)を入力して、「アカウント」が表示されたら、ウォレットアドレスをクリックします。

【WEB3】Remix IDEをつかってテストネットに独自コントラクトでNFTをデプロイ(作成)して自分のウォレットに転送(Mint)する方法

「名前なし」のアカウントが表示されると思うので、そのまま下にスクロールします。

【WEB3】Remix IDEをつかってテストネットに独自コントラクトでNFTをデプロイ(作成)して自分のウォレットに転送(Mint)する方法

このように、上手く言っていれば、画像が表示されます。

他の画像の無いデータもみえていますが、これはメタデータ関係で間違った分のデータたちです。

【WEB3】Remix IDEをつかってテストネットに独自コントラクトでNFTをデプロイ(作成)して自分のウォレットに転送(Mint)する方法

画像をクリックして詳細を見てみます。

【WEB3】Remix IDEをつかってテストネットに独自コントラクトでNFTをデプロイ(作成)して自分のウォレットに転送(Mint)する方法

実際にご自身でデプロイ、ミントをすれば対応会見が分かると思うのですが、一応まとめると

TEDASK_NFTの部分は、今回の説明で言うと、REMIX IDEのcontact MY_NFTの部分です。

test NFT 2はメタデータ内に書いた「name」の部分です。

所有者がyouとなっていますが、OpenSeaに自分のウォレットアドレスでアカウントログインをすれば、youと表示されています。

【WEB3】Remix IDEをつかってテストネットに独自コントラクトでNFTをデプロイ(作成)して自分のウォレットに転送(Mint)する方法

説明はメタデータのdescriptionで書いた内容です。

特性はメタデータのattributesで書いた内容が反映されています。

以上がOpenSeaのテストネットサイトでの確認方法です。

MetaMaskでのNFTの確認方法

自分のウォレットアドレスにNFTをMintしているので、もちろんMetaMaskでも確認ができます。

【WEB3】Remix IDEをつかってテストネットに独自コントラクトでNFTをデプロイ(作成)して自分のウォレットに転送(Mint)する方法

アドオンのMetaMaskを立ち上げたら、NFTタブを開きます。

【WEB3】Remix IDEをつかってテストネットに独自コントラクトでNFTをデプロイ(作成)して自分のウォレットに転送(Mint)する方法

先ほどのNFTがあるのが確認できます。画像をクリックします。

【WEB3】Remix IDEをつかってテストネットに独自コントラクトでNFTをデプロイ(作成)して自分のウォレットに転送(Mint)する方法

詳細が表示されました。

以上がMetaMaskでの確認方法です。

まとめ

以上が、独自コントラクトでNFTを作成して、自分のウォレットにNFTを転送するまでの作業を紹介しました。

今回はあくまで、とりあえずNFTを作成することに重点をおいたので、コントラクトの細かいオプションなどには触れていません。

今後はもう少しコントラクトの詳細に触れたり、同じトークンを複数作って他の人に送るなどの方法についても紹介で来たらと思っています。

私もまだまだ勉強中の身ですので、間違いや疑問点などあればコメントいただけたら嬉しく思います。

以上、「【WEB3】Remix IDEをつかってテストネットに独自コントラクトでNFTをデプロイ(作成)して自分のウォレットに転送(Mint)する方法」でした!

この記事を書いた人
Toshi Seito

TEDASK代表
WordPressに関する相談実績のべ300件以上、タイムチケットでのWordPressの立ち上げお手伝いのチケット販実績240件以上!WordPressのカスタマイズから、WEBサービス制作、ホームページ制作のご相談はお任せ下さい。

Toshi Seitoをフォローする

コメント

タイトルとURLをコピーしました