13-Thumbnail_Image.png

thirdwebでの WhitelistMint / PreMint / PublicMint のやり方 - Claim Conditionsの知見とともに

NFTの配布では、一般にWhitelistMINT(WLMint)、PreMint、PublicMintといった配布方式があります。それらをthirdwebでどう実現していくかを説明していきます。
公開日2022.09.10
更新日2022.09.12

はじめに

NFTのMINTには
  • WhitelistMint (WL Mint)
  • PreMint
  • PublicMint
といったさまざまなMINT形式があります。
それらをthirdwebをつかってどう実現していくかを説明します。

thirdwebの使い方について

この記事では、thirdwebの基本的な使い方、MINTサイトの作成方法、画像のアップロード方法については解説していません。
thirdwebの一機能であるClaim Conditionのみ説明していきます。
それらを知りたい方は下記記事を参照ください。
thirdwebの使い方- 独自コントラクトの作成と「NFTのMINTサイト」の作り方を紹介

本題

前提知識: Claim Conditionについて

thirdwebには、Claim Condition という設定項目があります。
「いつ」「誰に」「いくらで」「何回」NFTを発行できるのか?を設定することができます。
13_001.png
この設定は複数登録することができます。
これにより、Whitelistのみの期間、Premintの期間、PublicMintの期間、といった運用を行うことができます。
期日が最も遅いものかつ設定期間より現在が後のものが優先され、発動する仕組みとなっています。
各設定項目の詳細
ざっくり設定項目は下記の通りです。
13_003.png
なおこれらの情報はコントラクトに保存されます。
そのため、俗にいう「貫通」の心配もありません。 「貫通」とは、コントラクトを直接叩くと各種制限を無視して実行できてしまう事象のことを指します。Webサイトでは各種制限を効かせているが、コントラクトでは制限を効かせていないので、直接コントラクトを叩けばそれら制限を無視できる、といった事象です。 制限の例として挙げられるのはWhitelistのウォレットリストなどです。
また、Claim Conditionは後で変更することも可能です。何か設定を間違えたり変えたい場合に役立ちます。

よくある販売期間を設定した例

まず画像で見ていただいた方がわかりやすいので、
  • WhitelistMint (WL Mint)
  • PreMint
  • PublicMint
を設定したパラメータのスクリーンショットを紹介します。
13_002.png
このように、複数販売期間を設定できます。それぞれのConditionで日時やウォレットの状態に合わせて、いつ何枚うるか、という販売コンディションを設定できます。
次からは、それぞれのフェーズでClaim Conditionにどんな設定していったのかを見ていきましょう。

Whitelist Mintの実現方法

Whitelist Mintのやりかたについて説明します。
まずClaim Conditionsにアクセスし「Add Additional Claim Phase」を押下し、Claim Phaseを新たに作成します。この段階では反映されていません。

whitelistをアップロードする

「Who can claim NFTs during this phase?」という項目で「Only specific wallets」を選択します。
13_004.png
CSVをアップロードする枠がでてきます。ここにホワイトリストとして登録するwallet群をcsvにまとめてアップロードします。
13_005.png
アップロードするCSVのサンプルは用意されているので、ここからダウンロードします。
13_006.png
ウォレットごとに発行できるMINTの上限数を設定することができます。上限を設定したくない場合は、列ごと消去するか、あるいは0を入力すればOKです。
13_007.png
CSVアップロードするとこのような表示となります。
13_008.png
確認し間違っていた場合はResetすることも可能です。
ホワイトリストを設定したら、他のパラメータ等を設定していきます。
  • When will this phase start? ... いつからWhitelistMintが実行可能か
  • How many NFTs will you drop in this phase? ... この期間でトータル何枚までMINT可能
  • How much do you want to charge to claim each NFT? ... いくらでMINTするのか

whitelistを利用する場合の注意点

whitelistを利用する場合、他のパラメータの挙動が異なります。
How many NFTs can be claimed per transaction?
この設定項目が無視され、whitelistに設定したmaxClaimableが優先されます。 例えばこの欄に「2」と設定していて、whitelistでは「5」としていた場合、後者が適応される挙動となっています。
How many seconds do wallets have to wait in-between claiming?
こちらは自動的に「Unlimited」扱いとなります。 whitelistに記述されたwalletは、一回のみのトランザクションしか許可されません。
How many NFTs will you drop in this phase?
期間においてのNFT最大発行枚数です。こちらは文字通り変化ありません。 whitelistの数字がこの値をオーバーしていたとしても、この制約が最優先されます。

PreMintの実現方法

Premintの設定は、thirdwebに特段の設定項目はありません。 正確にいうと、特に特別な設定をする必要はありません。
一般に、Premintは特定の人しか知られないような形式のURLにて、知っている人のみでMINTするものとなります。
URLは一般に知らせない。けどコントラクト上は誰でもMINTできる、という形式となります。そうした場合、コントラクト上ではアドレスさえ知っていれば誰でもMINTできる、という設定となるのが普通となるため、thirdweb上で何か特殊な設定をする必要は特にありません。 (そのためDAOやコミュニティの運用を、工夫する必要があります。)
ただPremint期間のみの「上限枚数」の設定やその期間の価格を設定することが可能です。

一人当たりの発行枚数を限定したい。

これはthirdweb上ではできません。 一度のトランザクションでMINTできるNFT数は限定できるものの、複数のトランザクションにまたがるトータルの発行数を指定することはできません。
ただ「1回しかMINTできない」という条件であれば設定できます。
その場合は下記のように設定します。
13_009.png
これは
  • 1回しかMINTできない」
  • その1回のMINTの上限を100枚とする
という意味をもちます。 ユーザーは一回のトランザクションで100枚未満だった場合はどうなるか、ですが、残りの枚数をMINTする権限を失うことになる、というのが答えです。
ただこの点は1つのClaim Conditions内、でありますので、次のPublicMint等のClaimConditionでそのウォレットに購入権利があれば、再度請求することはできます。

Premintでも限定したい 

Premint期間と謳っているものの、ウォレットを限定したい場合は、前述のwhitelist Mintの手法を用いて実施するのが良いでしょう。
他の限定手法としては、Webサイト側にパスワード認証をかけるとか、Discord側参加者のみMintできるといった作りをすることはできます。
ですが、コントラクトを制限しない限り直接叩けてしまえば発行できてしまうので、俗にいう「貫通」が発生してしまいます。あまりこのやり方は本質的ではなく、費用対効果もあまりよくないです。自分の場合はコスパが良くないと思うので、見送ります。(なので方法も割愛します。)

PublicMint

PublicMintもPremint同様、thirdwebで特段特別な設定をする必要はありません。 論点としては「いつから販売するかの期間」「価格」あたりでしょうか。 この期間ですべてのNFTをMINTしきるか、どうかも論点に加えておくと良いと考えます。
13_010.png

販売停止期間

何某かの理由で一時的に販売停止期間を設定したい場合は、販売したいNFTの量を0にすることで設定できます。
13_011.png

ClaimConditionの細かいTips

「When will this phase start?」はローカルタイムゾーン

タイムゾーンを日本(Asia/Tokyo等)に設定している場合は日本時間となります。 PC/OS/ブラウザの設定を引き継ぐようですので確認しましょう。
テストネット上でデプロイして自分の設定を把握しておくと一番いいです。

whitelistを利用する場合はパラメータの挙動が変わる。

whitelistMINTの設定でも説明しましたが、こちらでも取り上げたいので再掲します。whitelistを利用する場合、下記のパラメータに注意してください。 
How many NFTs can be claimed per transaction?
この設定項目が無視され、whitelistに設定したmaxClaimableが優先されます。 例えばこの欄に「2」と設定していて、whitelistでは「5」としていた場合、後者が適応される挙動となっています。
How many seconds do wallets have to wait in-between claiming?
こちらは自動的に「Unlimited」扱いとなります。 whitelistに記述されたwalletは、一回のみのトランザクションしか許可されません。
How many NFTs will you drop in this phase?
期間においてのNFT最大発行枚数です。こちらは文字通り変化ありません。 whitelistの数字がこの値をオーバーしていたとしても、この制約が最優先されます。

まとめ

  • thirdwebはclaim conditionにて、「いつ」「誰に」「いくらで」「何回」NFTを発行できるのか?を設定できる。
  • 複数のclaim conditionを作ることで、さまざまな販売期間を設定できる。
  • whitelistを設定できる。
  • premintは特にコントラクト上で設定する必要はない。
  • public mintも同様。
  • whitelistの時はパラメータの挙動が微妙に変わるので注意
以上となります。

💖 いいね!役になったなと思ったら

twitterフォローお願いします。

twitterにてweb3周辺ツールの情報発信をしていますので、よろしければフォローお願いします。 https://twitter.com/hanz0chang

サービスの事前登録お願いします。

また、上記手順をもっとラクにする「web3generator」なるサービスを開発しています。よろしければ事前登録をしてリリース情報を受け取ってください。お役に立てるかもしれません🙏

NFTサイト作成の依頼

直接NFTのサイトの作成を依頼したいというオーダーを承っておりますので、お声がけください。 細かい点は要相談でございますが、手っ取り早くMINTサイトの構築が可能です。
依頼フォーム
執筆者の簡単なプロフィール
Webのキャンペーンサイトのプランナー業務から、 Webサービス/ネイティブアプリ/メディアの企画・運営、 またWebサービスの開発業務までの職種を経験してきた者です。Fintech案件を始め様々なDXプロジェクトに関わってまいりました。
現在はフリーランスエンジニアとして、SaaSプロダクトやWeb3プロダクトに関わっています。 ざっくり、Ruby / Ruby on Rails / Typescript / React.js / AWS / Azure / Figma あたりの技術やソフトウェアを用い、プロダクトの実装に関わっています。
スキルセットや人材特徴の詳細はトップページに記載しています。 よろしければご参考ください。
picture
hanzochang
代表取締役 半澤勇大
慶應義塾大学卒業後、AOI Pro.にてWebプランナーとして勤務。ナショナルクライアントのキャンペーンサイトの企画・演出を担当。その後開発会社に創業メンバーとして参加。Fintech案件や大手企業のDXプロジェクトに関わり、その後個人事業主として独立。2023年にWeb3に特化した開発会社として法人化。

2017年ごろより匿名アカウントでCryptoの調査等を行い、ブロックチェーンメディアやSNSでビットコイン論文等の図解等を発信。
hanzochangはフリーランスのエンジニアです
スキルセットや特徴は下記よりご確認いただけます
fixed
© 2023 hanzochang