概要
Remix IDEを使用してEthereumのテストネットにERC721に基づいたNFT(Non-Fungible Token)を作成する手順まとめた.
NFTを作成して確認するまでの最低限の手順だけでも,備忘録として残しておこうと思う.
今回の記事では,画像の登録などを行いません
もし画像付きのNFTを発行する場合はTokenURIなどの設定が追加で必要になります.
RemixIDEについて
ブラウザの統合開発環境で,コントラクトのソースコードであるSolidityの記述が可能.
コントラクトの作成からデプロイまでを一括で行うことができる.
ローカルで編集したsolidityコードのアップロードして編集することも可能.
ブラウザのキャッシュに編集データが残るため,キャッシュクリアすると戻せない.
編集したデータは一応ローカルにダウンロードしておくと良い
準備するもの
MetaMaskの拡張機能のインストール
インストールしてウォレットの作成まで進める.
firefox版とchrome版の2種類があるが,chrome版を推奨.
firefox版だと所持しているNFTの画像がうまく表示されなかったりする..
sepoliaテストネットへの接続
MetaMaskの接続先をテストネットに切り替える.
- MetaMaskの拡張機能をクリック
- 「ローカルテストネットワークを表示」をオンにする
- Sepoliaをクリック
テストネットにコントラクトをデプロイする際は,接続するネットの通貨を所持している必要がある.
通貨はfausetと呼ばれるサイトで配布されている.
fausetなどテストネットについては以下の記事でまとめた.
NFTを作るまで
1. RemixIDEでsolidtyのコードを書く
まずは,コントラクトをsolidtyで作成する.
とはいえ,RemixIDEを利用すると大枠をほとんど作成してくれる.
以下のようにソースコードが生成される.
// 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」を選択する.
画像のように,左側のタブに緑のアイコンが付いたらコンパイルが成功する.
「Auto compile」にチェックを入れておくと,
solファイルを編集するたびに自動でコンパイルしてくれる.
特に理由がなければチェックを入れておくと便利.
次にデプロイする.
3.の作業で,Deployボタンの右側に入れるウォレットアドレスは,コントラクトのオーナーとなるアドレスです.
特にsolファイルを触らない限り,NFTの発行ができるのはオーナーのみ(onlyOwner)になるので,間違えないように注意してください.
ここで,確認を押すとトランザクションが発行されて,
コントラクトがテストネットにデプロイされる.
3. NFTを発行する
NFTの発行は,コントラクトの操作(トランザクション)を通して行う.
同じくデプロイのタブの下に「Deployed Contracts」がある.
クリックすると,コントラクトの関数一覧が表示される.
その中で,「safemint」という関数でNFTを発行する
safemintのタブを押すと,to と tokenIDを指定するボックスが出現する.
to は NFTの所有者となるウォレットアドレスを入力し,
tokenID は NFTのIDを入力する(0以上の整数).
記入したらtransactボタンを押す.
コントラクト発行時と同様に,MetaMaskの拡張機能が開いて確認をクリックする.
すると,safemintが実行される.
4. MetaMask・OpenSeaで確認する
まず検索するために,デプロイしたコントラクトのアドレスをコピーする.
OpenSea で確認
テストネット用のOpenSeaを開く.
(本番用のOpenSeaでは確認できないので注意)
先ほどコピーしたコントラクトアドレスで検索すると,
デプロイしたコントラクトが出てくる.
tokenURIなど適切な画像のパスをコントラクトに設定することで,
画像の表示が可能となる.
MetaMaskで確認
MetaMaskの拡張機能のボタンをクリックしてNFTのタブをクリックした後,
画面下部の「NFTのインポート」をクリックする.
「NFTのインポート」の画面で,
アドレスにデプロイしたコントラクトアドレス,
IDに,safemintで入力したIDを入力してインポートを押す.
インポートに成功すると,NFTタブに取得したNFTが表示される.
まとめ
本記事ではRemix IDEを使用してEthereumのテストネットにおいてERC721に基づいたNFT(Non-Fungible Token)を作成する最低限の手順を紹介しました.
RemixIDEとMetaMaskを用いてコントラクトのデプロイ・NFTの発行を実施して,
作成したNFTをOpenSeaとMetaMaskから取得を確認した.
画像の登録など,NFTの拡張機能については今回の記事では触れませんでしたが、
必要に応じてTokenURIなどの設定が必要になる.