メインコンテンツまでスキップ

lesson-4_NFTをgemcaseで確認しよう

🐝 gemcase で NFT を確認する

コントラクトのアドレス(Contract deployed toに続く0x..)をターミナルからコピーします。

次に、gemcase(NFT を閲覧できるサービス) に先ほどコピーしたコントラクトアドレスを含めた必要な情報を下のように打ち込んでいきます。

そしてViewボタンをクリックするとコレクションの詳細が表示されます。

私のコレクションはこのような形で表示されます。

下にスクロールすると他のコレクションが見れるのでViewボタンをクリックしてみましょう。

deploy.jsで、10個のNFTを自分用にキープしてから、3個NFTをMintしました。

したがって、表示できるNFTコレクションは、13個となっているはずです。

📝 Etherscan を使ってコントラクトを verify(検証)する

最後に、Etherscanで コントラクトの Verification(検証) を行いましょう。

この機能を使えば、あなたのSolidityプログラムを世界中の人に公開できます。

また、あなたもほかの人の書いたコードを読むことができます。

まず、Etherscanのアカウントを取得して、API Keyを取得しましょう。

アカウントをまだお持ちでない場合は、https://etherscan.io/register にアクセスして、無料のユーザーアカウントを作成してください。

アカウントが作成できたら、My Profile画面に移動してください。

API Keysタブを選択し、+ Addボタンを押したら、Create API Keyのポップアップが表示されるので、あなたのAPIに任意の名前をつけましょう。

次に、あなたが作成したAPIの横のEditボタンを選択してください。ポップアップが表示されるので、apiKeyを取得しましょう。

次に、ターミナルでpackages/contractに移動して、次のコマンドを実行してください。

Etherscanでverificationを行うために必要なツールをインストールします。

yarn add --dev @nomiclabs/hardhat-etherscan@^3.1.7

次に、packages/contractディレクトリにある.envを開きます。

YOUR ETHERSCAN apiKey HEREの部分にEtherscanから取得したapiKeyを貼り付けたら、下記のコードを.envに追加しましょう。

ETHERSCAN_API = "YOUR ETHERSCAN apiKey HERE"

最後に、contract/hardhat.config.jsを下記のように更新しましょう。

require("@nomicfoundation/hardhat-toolbox");
require("@nomiclabs/hardhat-etherscan");
require("dotenv").config();

const { API_URL, PRIVATE_KEY, ETHERSCAN_API } = process.env;

module.exports = {
solidity: "0.8.17",
defaultNetwork: "sepolia",
networks: {
sepolia: {
url: API_URL,
accounts: [PRIVATE_KEY],
},
},
etherscan: {
apiKey: ETHERSCAN_API,
},
};

これでコントラクトを検証する準備は整いました。

下記のDEPLOYED_CONTRACT_ADDRESS"BASE_TOKEN_URI"をあなたのものに更新したら、packages/contractへ移動してターミナルで実行していきましょう。

npx hardhat clean

npx hardhat verify --network sepolia DEPLOYED_CONTRACT_ADDRESS "BASE_TOKEN_URI"
  • DEPLOYED_CONTRACT_ADDRESSはあなたのコントラクトアドレスです。

  • "BASE_TOKEN_URI"は、deploy.jsに記載されているものと同一である必要があります。

私のコマンドは下記のようになります。

npx hardhat verify --network sepolia 0x94E614a7D82d9dD24CBED7607a40eBE4243491dF "ipfs://QmSvw119ALMN9SkP89Xj37jvqJik8jZrSjU5c1vgBhkhz8/"

ターミナルに、下記のような結果が表示されていることを確認してください。

Compiling 1 file with 0.8.17
Successfully submitted source code for contract
contracts/NFTCollectible.sol:NFTCollectible at 0x94E614a7D82d9dD24CBED7607a40eBE4243491dF
for verification on the block explorer. Waiting for verification result...

Successfully verified contract NFTCollectible on Etherscan.
https://sepolia.etherscan.io/address/0x94E614a7D82d9dD24CBED7607a40eBE4243491dF#code

出力されたsepolia.etherscan.ioのURLにアクセスしてみましょう。

私の URL リンク の中身は下記のように表示されます。

Contractタブの横に小さな緑のチェックマーク ✅ が表示されているでしょうか?

✅ は、ユーザーがMetaMaskを使ってし、Etherscan自体からコントラクトの機能を呼び出せるようになったということを意味します。

Contractタブの中のWrite Contractを選択して以下を試してみましょう。

  • コントラクトをデプロイするのに使用したMetaMaskアカウントに接続し、withdraw関数を呼び出します。

  • 0.03 ETHをコントラクトから自分のウォレットに転送できるはずです。

  • また、mintNFTs関数を呼び出して数枚のNFTをMintしてみましょう。

🙋‍♂️ 質問する

ここまでの作業で何かわからないことがある場合は、Discordの#polygonで質問をしてください。

ヘルプをするときのフローが円滑になるので、エラーレポートには下記の3点を記載してください ✨

1. 質問が関連しているセクション番号とレッスン番号
2. 何をしようとしていたか
3. エラー文をコピー&ペースト
4. エラー画面のスクリーンショット

Etherscanリンクを#polygonに投稿してください 😊

コミュニティであなたの成功を祝いましょう 🎉

コントラクトの検証が完了したら、次のレッスンに進みましょう 🎉