今回は、thirdweb発行できるオリジナルコントラクトの使い方を解説していきます。
実際の使い方の前に、少し前置きを挟みますね
前置き
ちょこちょこ、こんな相談をクリエイターさんから受けます。
- NFTプロジェクトをやってみたいけど、エンジニアさん雇う費用がない
- 貫通などのセキュリティはバッチリしてほしい
- 正直コントラクトはなんでもいい
こういう人にオススメしたいのが、thirdwebです。
thirdwebは、エンジニアさんがいなくてもNFT発行やmintサイトが作れるサービスです。
thirdwebの標準的な機能の使い方については、下記記事をご覧ください。
一年前に比べるとthirdwebの認知度があがり、thirdwebって何?って質問は減りました。
一方で、逆にこんな質問が返ってくることが増えました。
- NFTのメタデータの書き換えができない
- 好きなギミックを追加できない
- arweaveが使えない
などなど、要するにthirdwebって予め定められたコントラクトしか使えないですよね〜って感じのやりとりです。
私もそんな印象を受けていたのですが、実際には全くそんな事はなくて、オリジナルのコントラクトをthirdwebで発行することができます。
そして、他の人が作ったコントラクトを利用することもできます。
※オリジナルのコントラクトを一から作るとなると、ノーコードでは出来ません。
そこで、今回は、thirdwebの標準機能に下記の機能を追加したコントラクトを発行してみました。
https://thirdweb.com/eggdragon.eth/Contract
- thirdwebのdashboardが使える
- ブログなどに埋め込んで使えるNFT mintサイトが利用できる
- NFTのメタデータの書き換えができる
- arweaveなど自分で用意したサーバーのメタデータが使える
- OpenSeaのCreaterFeeにも対応
作り方は簡単で、thirdwebコントラクトを継承するだけです。
今回は、一番機能が充実しているdropを継承しましたが、必要最低限のものだけをピックアップすることや、追加したいdashboardに合わせて機能を選ぶことも可能です。
※オリジナルコントラクトの発行だけだとthirdwebで発行するメリットはあまりありません。
これを使うと
- クリエイターさんだけでも、楽々NFTの発行ができる
- クリエイターさんのアカウントでコントラクトの発行ができる
- アローリストの管理もcsvで簡単にできる
- セキュリティリスクを下げることができる
セキュリティリスクについて補足をすると、どのプロジェクトよりも多くの実績を積んでいるといっても過言ではないコントラクトを利用するため、貫通などのセキュリティリスクを下げることができます。
※絶対安全というわけではありません。
理由は省きますが、アローリストの利用についてはできる限り短い期間を意識するようにしてくださいね。
ギミックに特化してコントラクトを作るだけでよくなるので、エンジニアさんにとっても便利なんです!
しかもmintサイト作るときもかなり便利なんです!
(日本語の記事が追いついてなくてすみません・・・。)
オリジナルコントラクトをthirdwebで発行してみよう
前置きが長くなりましたが、ここからは私が作ったオリジナルのコントラクトを発行したり、どうやって使うのか紹介していきたいと思います。
コントラクトの発行
まずは、コントラクトを発行していきましょう!次のURLをクリックして、thirdwebのページへいきます。
https://thirdweb.com/eggdragon.eth/Contract
右上の『Deploy Now』を押してください。
すると次のような画面が右からスクロールされるので、必要事項を記入していきます。
全て入力したら『Deploy Now』を押してコントラクトの発行を行なっていきます。
以上でコントラクトの発行は終わりです。楽ちんですよね〜
NFT発行の設定について
NFT発行の設定については通常通り行います。
詳しくは次の記事を確認してください。
Max Supplyについて
Max Supplyについては、thirdweb dashboardのメタデータで設定したメタデータ数になります。
metadataを変更してみよう
ここでは、実際にメタデータの切り替えを行っていきます。
今現在のメタデータは、thirdweb経由のipfsサーバーに保存されたデータになっております。
今回は、arweave上に保存したデータを参照していきます。
Unrevealの設定
まずは、unrevealのtokenURIを設定していきます。
thirdwebのダッシュボードにあるExplorerを押して、『setUnrevealTokenURI』を押してください。
この画面のようにunrevealに使いたいtokenURIを入力して、『Execute』を押します。
次に、『setIsCustomURI』を押して、『Excute』を押してください。
※このボタンを押すことで、thirdwebで設定したメタデータとオリジナルで設定するメタデータとを切り替えることができます。
今回のケースでは、arweaveを使用しているので、thirdwebで設定したメタデータからオリジナルで設定するメタデータへ切り替えた場合、上の画像のように切替わります。
先ほどの『setIsCustomURI』を再度押すと、thirdwebで設定したメタデータに戻ります。
このような形で、『setUnrevealTokenURI』に設定しためたでーたが反映されています。
(この画像は、OpenSeaのテストネットの画像になります)
オリジナルのメタデータの設定
次にオリジナルのメタデータの設定を行なっていきます。
『setBaseURI』を押してください。
この画面のようにメタデータに使いたいBaseURIを入力して、『Execute』を押します。
次に『reveal』を押して、『Execute』を押します。
※このreveal機能は、一度ボタンを押すとunrevealの状態に戻せない仕様になっています。
このような形でオリジナルのメタデータを設定することができます。
tokenIdについて
コントラクト側は、tokenId1からのスタートに出来ますが、thirdweb側の管理は0からのスタートになります。
そのため、若干不都合な部分が発生します。
※今回紹介したコントラクト側では、コメントアウトしています。
この画像は、thirdwebのdashboard画面になります。
準備したデータは5つになります。そのためtotal supplyは5になっています。
まだ一度もmintしていない状況ですが、Claimed Supplyがすでに1加算されています。
その後、一度だけclaimを行ったのですが、コントラクト側のスタートを1からにしているため、tokenID=1のOwnerが変更になっています。
一方で、Claimed SupplyやUnclaimed Supplyでは、1多い状態になっています(tokenID=0が計算に含まれている)
thirdwebのembed側もmint数が1多くカウントされています。
コントラクト側は、特段問題ないのですが、thirdweb側では問題が生じます。
例えば、thirdwebのembed機能を使う場合
thirdweb側では、tokenId=0がカウントされているため、4回mint(tokenId=1~4)すると5回目mintすることができません。
ここら辺は、thirdweb側の設定を調整するといい具合に設定することは可能ですが、embedの設定を変えることはできないので注意が必要です。
まとめ
今回は、thirdweb機能を残したままオリジナルのコントラクトを発行したコントラクトの使い方を紹介させていただきました。
thirdwebの『embed』機能を残すためだけに、thirdwebのNFT Dropをそのまま継承しましたが、例えば、貫通に関与するようなアローリストの部分だけを継承することも可能です。
また、今回オリジナルコントラクトの発行の仕方は説明しませんでしたが、thirdweb releaseではproxy化することもできるので、2回目以降のガス代を格段に下げることができます。
今回ご紹介させていただいたコントラクトは、当然無償で使うことができますので、ご自由にお使いください