NFTを作ってみた

edo1z

edo1z

Posted on December 14, 2021

NFTを作ってみた

SolidityとTypeScriptとHardhatnft.storageOpenZeppelinを使って、NFTを作成して、OpenSeaで確認してみました。


ソースコード

https://github.com/web3ten0/hardhat1


.envの作成

.env をこのリポジトリのルートに作成して、下記を入力します。

NFT_STORAGE_API_KEY = *****
METADATA_URI = https://ipfs.io/ipfs/*****/metadata.json
MATIC_TEST_URL=https://rpc-mumbai.maticvigil.com
PRIVATE_KEY_MATIC_TEST=*****
MINT_ADDRESS = 0x*****
Enter fullscreen mode Exit fullscreen mode

画像とmetadata.jsonの作成・アップロード

  • hoge.jpgを作成して、このリポジトリのルートに置いておきます。
  • nft.storageにアカウントを作成して、API KEYを、.envNFT_STORAGE_API_KEY に書きます。
  • net.storageのgithubにnode.js用のサンプルがありますので、これを参考に、hoge.jpgをIPFSにアップして、metadata.jsonを作成し、URIを取得します。
  • このリポジトリの scripts/storage.ts は、上記を参考にしたコードです。下記を実行することで、storage.ts が実行されます。
> npx hardhat run scripts/storage.ts
Enter fullscreen mode Exit fullscreen mode
  • 実行後に、https://ipfs.io/ipfs/****/metadata.json というURLが表示されますので、.envMETADATA_URI にそのURLをコピペします。

NFTコントラクトの作成

  • コントラクトは、ここにあるコードをほぼコピペしました。
  • ERC721URIStorage だと、mint時にtokenURIを個別に指定できますので、ちょうどよいかなと思いました。
  • このリポジトリの contracts/NftStorage.sol になります。

networkの設定

  • 今回は、Polygonのテストネット(mumbai)にデプロイしてみました。
  • hardhat.config.tsでnetworkの設定ができます。Polygonの設定はここが参考になります。
  • URLとprivate keyが必要なので、.envに書いておきます。
    • URLは、下記のように MATIC_TEST_URL に書きます。
    • プライベートキーはMetaMaskから取得したりして、下記のように、 PRIVATE_KEY_MATIC_TEST に書きます。
    • また、アカウントにはmumbaiのmaticが必要です。ない場合は、ここから貰えます。
MATIC_TEST_URL=https://rpc-mumbai.maticvigil.com
PRIVATE_KEY_MATIC_TEST=*****
Enter fullscreen mode Exit fullscreen mode

コントラクトのデプロイとmint

  • mint時にNFTを送信するアドレスを、.envMINT_ADDRESSに書きます。
  • 今回は、test/deploy-nft-and-mint-test.tsでデプロイとmintを一緒に実行してみました。
  • 下記コマンドを実行すると、Polygonのmumbaiにコントラクトがデプロイされて、その後mintされます。
> npx hardhat test --network mumbai
Enter fullscreen mode Exit fullscreen mode
💖 💪 🙅 🚩
edo1z
edo1z

Posted on December 14, 2021

Join Our Newsletter. No Spam, Only the good stuff.

Sign up to receive the latest update from our blog.

Related

NFTを作ってみた
solidity NFTを作ってみた

December 14, 2021