Solidity と TypeScript とHardhat とnft.storage とOpenZeppelin を使って、NFT を作成して、OpenSea で確認してみました。
https://github.com/edo1z/hardhat1
.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*****
.env
の NFT_STORAGE_API_KEY
に書きます。scripts/storage.ts
は、上記を参考にしたコードです。下記を実行することで、storage.ts
が実行されます。> npx hardhat run scripts/storage.ts
https://ipfs.io/ipfs/****/metadata.json
という URL が表示されますので、.env
の METADATA_URI
にその URL をコピペします。ERC721URIStorage
だと、mint 時に tokenURI を個別に指定できますので、ちょうどよいかなと思いました。contracts/NftStorage.sol
になります。hardhat.config.ts
で network の設定ができます。Polygon の設定はここ が参考になります。.env
に書いておきます。MATIC_TEST_URL
に書きます。PRIVATE_KEY_MATIC_TEST
に書きます。MATIC_TEST_URL=https://rpc-mumbai.maticvigil.com
PRIVATE_KEY_MATIC_TEST=*****
.env
のMINT_ADDRESS
に書きます。test/deploy-nft-and-mint-test.ts
でデプロイと mint を一緒に実行してみました。> npx hardhat test --network mumbai