ethers.jsでNFTをミントする方法
著者: Alchemy Team
このチュートリアルでは、Ethersを使用してEthereumブロックチェーン上でNFTをミントする方法を、ethers.jsライブラリと、Part I: How to Create an NFTで作成したスマートコントラクトを使って説明します。基本的なテストのセットアップについても取り上げます。
本ガイドの完了までの推定時間: 約10分
また、NFTチュートリアルシリーズの他の記事もぜひご覧ください。
- 🌟 How to mint an NFT using Web3.js
- 👛 How to view your NFT in your mobile wallet
- 💸 How to set a price on an NFT
- 💻 NFT minter tutorial: How to create a full stack DApp
別のチュートリアルでは、Web3とOpenZeppelin contracts libraryを使ってNFTをミントする方法を学びました。今回の演習では、OpenZeppelin libraryのバージョン4と、Web3の代わりにEthers.jsというEthereumライブラリを使った別の実装方法を説明します。
また、HardhatとWaffleを使ったコントラクトのテストの基本についても取り上げます。このチュートリアルではYarnを使用していますが、好みに応じてnpm/npxを使用しても構いません。
最後に、TypeScriptを使用します。これについてはドキュメントが比較的充実しているため、ここでは取り上げません。
その他の点については、このチュートリアルはWeb3版と同じ手順で進みます。PinataやIPFSなどのツールも含めて同様です。
簡単なおさらい
おさらいですが、「NFTをミントする」とは、あなたのERC721トークンの一意のインスタンスをブロックチェーン上に公開する行為を指します。このチュートリアルは、NFTチュートリアルシリーズのPart IでRopstenネットワークにスマートコントラクトをデプロイ済みであることを前提としています。これにはEthersのインストールも含まれます。
Step 1: Solidityコントラクトを作成する
OpenZeppelinは、安全なスマートコントラクト開発のためのライブラリです。ERC20やERC721などの一般的な規格の実装をそのまま継承し、必要に応じて動作を拡張するだけで済みます。このファイルはcontracts/MyNFT.solに配置します。
Step 2: コントラクトのデプロイとNFTのミントを行うHardhatタスクを作成する
以下の内容でtasks/nft.tsファイルを作成します。
Step 3: ヘルパーを作成する
タスクの中でいくつかのヘルパーをインポートしたことに気づいたと思います。以下がそれらです。
contract.ts
env.ts
provider.ts
最後のgetProvider()関数はropstenネットワークを使用している点に注意してください。この引数は省略可能で、省略した場合は"homestead"がデフォルトとなります。ここではもちろんAlchemyを使用していますが、他にもサポートされている選択肢がいくつかあります。
wallet.ts
Step 4: テストを作成する
testディレクトリ内に、以下のファイルを作成します。なお、これらのテストは網羅的なものではありません。OpenZeppelinライブラリが提供するERC721の機能の一部のみをテストしており、より堅牢なテストを構築するための基礎を提供することを目的としています。
test/MyNFT.spec.ts (unit tests)
tasks.spec.ts (integration specs)
test-helpers.ts これには、sinon、chai、sinon-chaiを含む、インポートされたNPMライブラリが必要であることに注意してください。sinon.restore()の呼び出しは、スタブの使用のために必要です。
Step 5: 設定
こちらが、かなりシンプルなhardhat.config.tsです。
テストを実行していない場合にのみdotenvを呼び出す条件分岐に注目してください。本番環境ではこれを実行したくない場合もあるかもしれませんが、.envファイルが存在しない場合、dotenvは何も出力せずに無視するので安心してください。
タスクを実行する
これらのファイルを配置したので、hardhatを実行してタスクを確認できます(簡潔にするため、組み込みタスクは除いています)。
タスクの引数を忘れてしまった場合でも問題ありません。
テストを実行する
テストを実行するには、hardhat testを実行します。
まとめ
このチュートリアルでは、Solidityをベースとした、十分にテストされたNFTインフラの基盤を作成しました。**waffle.provider.getWallets()**で提供されるウォレットは、テストトランザクションの資金として利用できるeth残高があらかじめ用意された、ローカルの仮のHardhat Networkアカウントにリンクしています。
Alchemy Newsletter
リリース情報をいち早く受け取る
ニュースレターに登録する
Alchemyの最新のプロダクト情報とリソースをお届けします
メールアドレスを入力すると、当社のマーケティング情報およびプロダクト最新情報の受信に同意したことになります。Alchemyが受け取った情報をプライバシー通知に従って取り扱うことに同意するものとします。購読はいつでも解除できます。
関連記事

Claude Codeをオンチェーンリサーチエージェントに変える
Alchemy CLIでClaude Codeをオンチェーンリサーチエージェントに変える。適切な質問をすることで、トークンローンチ、デプロイヤーウォレット、管理者キーを追跡できる。

Cortexルーター:あらゆるリクエストに対して最速の健全なノードを選ぶ仕組み
リクエストを近くのリージョンに届けることは最低限の条件にすぎない。次にどのノードが応答するかを選ぶ処理、そここそCortexの仕事だ。

AIエージェント向けブロックチェーンインフラのベスト比較(2026年)
2026年のAIエージェント向けブロックチェーンインフラを比較:エージェントフレームワーク、エージェント対応のRPCおよびデータプロバイダー、それらを繋ぐ標準規格について解説します。