Open3
thirdwebのNFT Dropのスマートコントラクトを読んでみる
![shogosu](https://res.cloudinary.com/zenn/image/fetch/s--5m_DElmp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_70/https://storage.googleapis.com/zenn-user-upload/avatar/bd5aef7382.jpeg)
NFT Dropは、ERC721Aを使用したNFTのコレクションをリリースするために用意されたスマートコントラクト =pre-build contract。
要件がシンプルなNFTコレクションであれば、ノーコードでNFTを発行できる。
ドキュメント:https://portal.thirdweb.com/pre-built-contracts/nft-drop
![shogosu](https://res.cloudinary.com/zenn/image/fetch/s--5m_DElmp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_70/https://storage.googleapis.com/zenn-user-upload/avatar/bd5aef7382.jpeg)
実際のスマートコントラクトを読んでいく
![shogosu](https://res.cloudinary.com/zenn/image/fetch/s--5m_DElmp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_70/https://storage.googleapis.com/zenn-user-upload/avatar/bd5aef7382.jpeg)
maxTotalSupply について
変数とセッター関数、Eventが用意されている。
初期化されていないのでデフォルト値は 0
になる。
セッター関数はadmin roleのみが実行できる。
maxTotalSupply
は ミント(mint, claim)する前に実行される _beforeClaim
関数の中で使用されており、ミントができるかどうかの判断で使われている。
maxTotalSupply
が 0
以外に設定されている場合は、すでにミントされた数と、これからミントする数とを比較しているが、 maxTotalSupply
がデフォルトの 0
の場合は、いくらでもミントできる、ということになる。
ただし Claim Conditions
といういわゆるアローリストの設定をしている場合は、そちらの条件が適用される(はず)。ここは別途ソースを探して読む必要あり。