前回、無料サーバにミントサイトをアップして公開できることを確認した。
今回はジェネラティブの優先購入権であるAL(AllowList)を付与する手順を理解する。
githubからhashlipsのsolidity_smartcontractsをダウンロードする。
この中のNFT-PRESALEを参照する。
ソースを参照すると以下の記述があり、ここに対象のウォレットを保持する。
onlyWhitelistedがtrueの場合にALの限定が有効になる。
nftPerAddressLimitが1ALあたり何枚ミントできるか。
このソースの問題点
whitelistedAddressesにアドレスの配列をそのままセットしている。
取り扱うデータ量が多くなるのでガス代も高くなる。
↑のような問題はあるが、まずはこのコードでデプロイする。
コードの編集
変数追加
関数追加
mint関数は上書き
ALにウォレットがあるか確認する関数
ALウォレット入れ替え?
ALウォレットを追加関数?
デプロイ時の引数を省略
毎回デプロイ時の引数を指定するのが面倒なので、コードに埋め込んでしまう。
↑の部分を・・
のように直書きする。
これでビルドすると、デプロイ時の操作がシンプルになる。
ALのリスト作成
プログラムの
function whitelistUsers
関数にリストを引き渡す。
リストはスプレットシートなどで作成する。
["0x000", "0x001"・・・"0x00n"]のような配列を取得する。
AL貼り付け
デプロイ欄の「whitelistUsers」に作成した配列をペーストする。
「transact」ボタンでトランザクション実行
transactionログが残っていることを確認。
指定したウォレットアドレスがALに登録されているか確認
↑にウォレットアドレスを入力して「call」ボタンクリック。
登録されていれば、trueなければfalseとなる。
ここでtrueになったアドレスのみミントできる。
ただし、ALのウォレットアドレスを全て保管するのでガス代が高くつく。
コスト削減した方法を次回以降試していく。
今回は以上!