(保存版)10,000種類のジェネレイティブNFTの作り方(追記) コントラクト作成時にNFTができるようにしたい
こんにちは、CryptoGamesの高橋です。
↓弊社はこんな事業とかやっています。
本日、こちらの10,000種類のジェネレイティブNFTの作り方を記載しました。
これを読んだ方から、「一括で全てミントするのはどうするの?」というご質問をいただきました。
確かに一つ一つミントするのは現実的ではないなと思いましたので、そのやり方について記載します。
なお、上の記事でRemix上にコードを貼り付けたという状態からスタートします。
0 どういうことをやりたいか
まずは、今回やりたいこととして、コントラクトを作った瞬間、作った人のアドレスに全てのNFTが保存されているという状態を作りたいと思います。
コントラクトを作った後に1個1個NFTをミントするのは大変ですし、一括でできたとしても、その一手間が発生しますね。
1 コンストラクタを見てみよう
コントラクト作成時に最初に一度だけやってくれる処理がコンストラクタでした。
つまり、今回はこのコンストラクタを使えば良さそうですね。
このピンクのところです。
現在やっていることは簡単に説明しますと
①ERC721(_name, _symbol)
⇨コントラクトに名前とシンボルを設定して!
②setBaseURI(_initBaseURI)
⇨メタデータを設定して!(NFTの名前とか画像とか)
③setNotRevealedURI(_initNotRevealedUri)
⇨隠したい「?」みたいなメタデータを設定して!
(今回使ってないですが、おそらくこんな感じです)
といった感じです。
ということは、ここに「全部をミントして!」という命令を書けば良さそうですね。
2 ミントのファンクションを見てみよう
ここでは細かいところは省略しますが、お伝えしたい部分としては
同じ「ミント」という機能でもこのコントラクトと別のコントラクトは違いますよー。
ということです。
ちなみに私が使いなれているミントは
①何を(どのトークンIDを)
②誰に
ミントするかを設定します。
そして、所有者でないとミントができないようになっています。
では今回のミント機能を見てみましょう。(細かい説明はしないので、軽い気持ちで。。)
最初のこの部分で、このミントに必要なのは、「いくつミントするか」の個数だけであることがわかりました。(「誰に」はいらない)
そして、所有者でなくてもミントをすることができる代わりに、ミントにはお金がかかるという仕様になっていそうです。
3 コンストラクタにミントを書いてみよう
長くなってしまいましたが、コンストラクタにミントを書けば良さそうです。そしてミントに必要なのはミントをする数だけのようです。(「誰に」はいらない)
そのため、こんな風に書いてみました。
追記したのは1255行目だけです。
mint(maxSupply);
1241行目で「maxSupply」は上限の50でしたので、50個ミントしてくださいということになります。
また、やや別件ですが、一人がミントできる上限数が1242行目の「maxMintAmount」で規定されていましたので、こちらも50個にしました。
4 デプロイして、OpenSeaで見てみましょう
あとのコンパイル、デプロイ、OpenSeaでの確認方法は前回の記事と全く同じですので省略します。
ちなみにデプロイの際はRinkebyになっているかなど、十分ご注意くださいね。
OpenSeaのテストネットでの結果がこちらです。
https://testnets.opensea.io/collection/purpleeye-constructor-test
手動でミントを行うことなく、コントラクトの作成と同時にNFTが作成されました。
これで今回は以上となります。
よかったらやってみてください。
サポートをしていただけたらすごく嬉しいです😄 いただけたサポートを励みに、これからもコツコツ頑張っていきます😊