SolidityとTypeScriptとHardhatとnft.storageとOpenZeppelinを使って、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*****
画像とmetadata.jsonの作成・アップロード
- hoge.jpgを作成して、このリポジトリのルートに置いておきます。
-
nft.storageにアカウントを作成して、API KEYを、
.envのNFT_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
- 実行後に、
https://ipfs.io/ipfs/****/metadata.jsonというURLが表示されますので、.envのMETADATA_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が必要です。ない場合は、ここから貰えます。
- URLは、下記のように
MATIC_TEST_URL=https://rpc-mumbai.maticvigil.com
PRIVATE_KEY_MATIC_TEST=*****
コントラクトのデプロイとmint
- mint時にNFTを送信するアドレスを、
.envのMINT_ADDRESSに書きます。 - 今回は、
test/deploy-nft-and-mint-test.tsでデプロイとmintを一緒に実行してみました。 - 下記コマンドを実行すると、Polygonのmumbaiにコントラクトがデプロイされて、その後mintされます。
> npx hardhat test --network mumbai
- OpenSeaのテストネットでNFTを送信したアカウントでログインすると、NFTが表示されました。
Top comments (1)
:)