NFT初心者がthirdwebでNFTをMintやClimeしてみた話(2023/11/23版)
1.前置き
皆様、こんばんポン。ぐうほです。
語尾を変えましたポン。
ほそぼそとNFTのMint、Listのやり方をまとめているのですが、XをめぐっているとthirdwebというNFTを発行するサービスがあるそうで。
「独自コントラクト」という仕組みで、NFTを発行できる、、、ということですが、細かいことは後にして触っていきます。
そして触ってみると、さまざまな「規格」でつくれる、、、そうなのですが、意図して何かを選びたいものもないので、
流れるままに操作したら出来上がった「ERC721A」規格のNFT発行、出品の手順をまとめて、、いたら脆弱性が発生したようで急遽ロックをかけることに
ひとまず流れを見てもらえたらいいなと思います、ポン
2.このページの目的
thirdwebでのNFTを出品する!
(いろいろもがいたのですが、今回は出品にOpenSeaを利用、、)
3.このページに向いてる人
とりあえず持っているアート作品(画像ファイル)をthirdwebで販売したい!
4.用意するもの(前提条件)
■WindowsPCにてChromeを利用
■MetaMaskのアカウント、ウォレット
■出品にかかる手数料分のETH(仮想通貨)
■出品したい画像データ
5.手を動かしてみる
(1)ウォレットの接続、アカウント新規登録
■まずは以下URLからthirdwebにアクセスします。
■リンク先の[Contracts]をクリック
![](https://assets.st-note.com/img/1699799876446-KxVupHOG4Q.png?width=1200)
■右上の[Connect Wallet]をクリック
![](https://assets.st-note.com/img/1699801736713-r6QyUkrLxs.png?width=1200)
■別ウィンドウが開くので[MetaMask]をクリック
![](https://assets.st-note.com/img/1699801750949-p1NqPEyTaN.png?width=1200)
■MetaMaskからどのウォレットを接続するか?のメッセージが表示されるので、①接続したいウォレットをクリックし、②[次へ]をクリック
![](https://assets.st-note.com/img/1699801819777-O3Q39ADjwW.png?width=1200)
■MetaMaskをthirdwebに接続するか?のメッセージが表示されるので[接続]をクリック
![](https://assets.st-note.com/img/1699801838972-tt3E9qnfnK.png)
■接続の認証により、MetaMaskでサインイン可能になるので[Sign in]をクリック
![](https://assets.st-note.com/img/1699801926222-kM1mv7IrJy.png?width=1200)
■MataMaskから署名を求められるので[署名]をクリック
![](https://assets.st-note.com/img/1699801783150-yg3E5MbKmw.png?width=1200)
■続いてthirdwebのアカウント作成画面に遷移するので、以下項目を入力
①登録するメールアドレス
②アカウントの名前
その後、③をクリックする。
![](https://assets.st-note.com/img/1699801801509-oAlEKQdbCU.png?width=1200)
■本人確認用の認証コード入力を求められるので、入力したら[Confirm]をクリック
コードは先ほど入力した①のメールアドレスに届きます。
![](https://assets.st-note.com/img/1699801954409-oGyf3pRaTm.png?width=1200)
以下のようなメールが届きます。
![](https://assets.st-note.com/img/1699801960872-Llh7NDZofz.png?width=1200)
■カード情報の入力画面に遷移したら[I'll do this later]をクリックしてスキップします。
(おそらくthirdweb内のサービスでカード決済を使うことで利用できることがあるからだと思いますが、ここで登録しなくてもNFTのMintなどはできました。)
![](https://assets.st-note.com/img/1699801968389-HvTEiv2R8Y.png?width=1200)
■画面右上が自分のウォレットアドレスが表示されるようになったので、完了です!
![](https://assets.st-note.com/img/1699801973092-H9dE6iwPTw.png?width=1200)
※最近、新機能でローカライゼーションが日本語に対応したとのことで触ってみました!
[Wallets] → [Connect]の順にクリックすると、以下画面になるので「Localization」から[Japanese]をクリック
![](https://assets.st-note.com/img/1700396447011-QWUD6U0lOb.png?width=1200)
すると、接続の仕方を選択する箇所が、一部日本語で表示されるようになりました!
ただ他の個所、画面は特に日本語に変わってはいなかったですね、、、
なのでこれからの仕様変更に期待です!
![](https://assets.st-note.com/img/1700396590473-3cHhXvR7kz.png?width=1200)
(2)Contractの新規作成
以下のURLから、thirdwebのダッシュボードにアクセスする。
https://thirdweb.com/dashboard
![](https://assets.st-note.com/img/1700397132792-gBTme2pxbz.png?width=1200)
■[Explore]をクリックする。
![](https://assets.st-note.com/img/1700397203287-gpn8Sj513C.png?width=1200)
■Explore画面に遷移したら、[NFT Drop]をクリック
![](https://assets.st-note.com/img/1700397267328-y2EDqWs7nN.png?width=1200)
■画面が遷移するので[Deploy now]をクリック
![](https://assets.st-note.com/img/1700397443150-hn5x4AXo8l.png?width=1200)
■Contractの作成画面に遷移するので、各項目を入力していきます。
(コレクション、、のような、発行するNFTに適用されるルール決め、みたいなものなので、まだNFTではないです!)
![](https://assets.st-note.com/img/1700397463946-l788q5IQ6W.png?width=1200)
■入力個所は主に7か所でしたので、以下のように入力。
①Contractのサムネイル画像
②Contractの名前(グループの名前みたいなもの)
③Contractに紐づく文字列(好きな通し名みたいなもの)
④Contractの説明
⑤2次販売時のロイヤリティ(購入者が、さらに別の人に販売したときにもらえる金額、1ETHで販売されたら0.1ETHもらえます)
⑥プラットフォーム手数料(よくわからないけど、、購入者の手数料を増やすようなものだと思うので、0%のままでOK)
⑦販売する仮想通貨の種類
もろもろ入力したら、⑧の[Deploy Now]をクリック
![](https://assets.st-note.com/img/1700405025773-sfTZqDkV1E.png?width=1200)
そうすると、処理が走るので、待ち、、、
![](https://assets.st-note.com/img/1700405053053-VJj6YlrNiv.png?width=1200)
■MetaMaskから、Contract作成のためのガス台を要求されるので、問題なければ[確認]をクリック。
ただし、今回はガス台が高かったので、Polygonネットワークに変えようと思います。(ガス代が問題なければ
![](https://assets.st-note.com/img/1700405123336-zmCbgVR80a.png)
■Contract作成画面の⑦をクリック
![](https://assets.st-note.com/img/1701014279041-OlR5EdG8sx.png)
■ネットワーク選択画面に遷移するので今回は[Polygon Mainnet]をクリック
![](https://assets.st-note.com/img/1700739712858-sqpnJelXjd.png)
■MetaMaskから、ネットワーク切り替え確認メッセージが表示されるので[ネットワークを切り替える]をクリック
![](https://assets.st-note.com/img/1700739773208-mNM6x6eXid.png)
⑦が選択したネットワークに変更したことを確認したら、[Deploy Now]をクリック
![](https://assets.st-note.com/img/1700739961520-bDZsJ0C6as.png?width=1200)
■MetaMaskから、Contract作成のためのガス台を要求されるので、問題なければ[確認]をクリック。
![](https://assets.st-note.com/img/1700740094819-Fd0fEi0dxh.png)
するとぐるぐると処理がすすみ、、、
![](https://assets.st-note.com/img/1700740141421-BYzK3zdBaD.png?width=1200)
■再度MetaMaskから処理を進めていいか、署名のリクエストを求められるので、①表示されている画面を一番下にスクロールして、②[署名]をクリック
![](https://assets.st-note.com/img/1700740251800-lscNOU9Z5B.png)
すると、処理が問題なく成功した旨のメッセージが出ました!
![](https://assets.st-note.com/img/1700740280959-F6smqEn4UA.png)
■設定したContract画面に遷移します。
![](https://assets.st-note.com/img/1700740376267-OU0gVj2xI9.png?width=1200)
(3)NFTをMint
■Contract画面の「Contract checklist」の進捗を見ると②の項目(初めのNFTをアップロードして)を求められているようなので[NFTs tab]をクリック
![](https://assets.st-note.com/img/1700740567847-aiszUiJUz1.png?width=1200)
■NFTsの画面に遷移するので、[Single Upload]をクリック
![](https://assets.st-note.com/img/1700741109283-NDruFhMI7C.png?width=1200)
■NFTのミント画面が出ました!入力していきます。
![](https://assets.st-note.com/img/1700741546928-2n9YZa1pb2.png?width=1200)
■Mintするために以下各項目を埋めていきます。
①NFTの名前
②NFT化したいデータ
→クリックするとデータ選択画面が出て、選択状態でも以下のようにサムネイルは出てこないので注意。
③NFTの説明
④NFTの属性
→左枠は「項目名」、右枠は「値」になります。もしキャラクターに年齢を20歳と設定してるならば左枠は「age」、右枠は「20」と入力できるかと
⑤その他NFTに紐づける内容
→任意でしたので、入力はスキップしました。
もろもろを入力したら⑥をクリック
![](https://assets.st-note.com/img/1702210363118-cZ0ynGY5xi.png?width=1200)
■Mintのためのガス代を求められるので、価格に問題なければ[確認]をクリック
![](https://assets.st-note.com/img/1700741538099-5TzcZh1JSm.png)
■設定したNFTが画面にできました!
![](https://assets.st-note.com/img/1700741694065-KbfNf80sPK.png?width=1200)
■上記画面のサムネイルをクリックすると、NFTの詳細が出てきます。
ただ、Ownerを見ると0x0000…000と、どのウォレットにも紐づいていないので、まだデータとしてはどこにも存在していない?様子。
![](https://assets.st-note.com/img/1700741928054-dOZIZtKAsZ.png?width=1200)
■checklistに戻るとまだ途中、、Claim(直訳すると請求?)という処理が必要な様子、、
[Claim Conditions tab]をクリックして、Claimしていきます!
![](https://assets.st-note.com/img/1700741903595-iFiv3TLss2.png?width=1200)
(4)NFTのClaim設定、実施
■「Claim Conditions」画面に遷移して、[Add Phase]をクリック
![](https://assets.st-note.com/img/1700743638984-Vi7n8IUg9Y.png?width=1200)
■クリックすると「どんな形でClaimできるようにする?」の選択肢が出てくるので、自分に合うものをさらにクリック。
(こちらはだれの手に渡ってもいいので、Publicにしました。)
おそらく以下のような意味かな、、
・Public → どんな人でも対象
・Public (With Allowlist)→ どんな人でも対象かつ、事前送付先に決めた人も対象
・Allowlist Only → 事前送付先を決めた人のみ対象
・Only Owner → NFTのオーナーのみ可能。
![](https://assets.st-note.com/img/1700743812036-NUqUN6TGIn.png)
■Public用のClaim設定項目が表示されたため、入力していきます。
![](https://assets.st-note.com/img/1700743835448-5AwGolT8rJ.png?width=1200)
■各項目を以下のように入力
①Claim設定の名前
②Claim開始日時
③NFTの発行上限数
④NFTをClaimするために必要な価格(数字)
⑤価格に対する通貨名
⑥1walletに対し、発行できる上限数
![](https://assets.st-note.com/img/1700743991352-gj70yDJf5o.png?width=1200)
⑤の通貨は選択式で、いっぱいでてきます。
![](https://assets.st-note.com/img/1700744005982-CpjUVv1b6m.png)
■内容に問題がなければ、入力画面下部の[Save Phases]をクリック
![](https://assets.st-note.com/img/1700744031435-ODEvv7UEJF.png?width=1200)
するとぐるぐると回り、、
![](https://assets.st-note.com/img/1700744040913-Y4S1elRRBk.png)
■Claim設定のために、ガス代が要求されるので、価格に問題なければ[確認]をクリック
![](https://assets.st-note.com/img/1700744082402-t6FOpSu4Am.png)
■設定した内容が表示されました!
![](https://assets.st-note.com/img/1700744131031-DjY4ZaweSD.png?width=1200)
成功メッセージも確認
![](https://assets.st-note.com/img/1700744115821-XQhl5iGZe5.png)
しかし、表示しなおすとなぜか未設定状態になってしまって、その後ずっと待ちましたが、設定したものが出てくることありませんでした、、、バグ?
![](https://assets.st-note.com/img/1700744768325-Ax6MandTrD.png?width=1200)
仕方ないので、改めて設定しなおします。
![](https://assets.st-note.com/img/1700744811830-EEDRz6M9Nz.png?width=1200)
改めて成功処理を確認。
![](https://assets.st-note.com/img/1700744856305-sR0hJ3EfDr.png?width=1200)
■しばらく時間を置くと、ちゃんと再設定した側のClaim設定が表示されました!
![](https://assets.st-note.com/img/1700744867772-HkGBzbtK4L.png?width=1200)
■Claim設定が完了したので、さっそくClaimしてみます!
![](https://assets.st-note.com/img/1700749131617-z41sV0FCqD.png?width=1200)
■NFTをClaimする画面が表示されるので
To Address →NFTを送付したいウォレットアドレス
Amount → NFT発行数
を入れてみて、[Claim NFT]をクリック
![](https://assets.st-note.com/img/1700749093550-PKTJc0Hed0.png?width=1200)
■Claim処理のために、設定したClaim実施価格を要求されました。
ということは、Claim設定画面を極力安くすればいいのか、、?とおもいつつとりあえずは[確認]をクリック
もしかしたら、第3者にClaimできる設定がどこかにあるかもなのですが、見つけられず、、、ううむ
![](https://assets.st-note.com/img/1700749219305-bWLESzbgwj.png)
■NFTの画面でOwnerが、こちらのウォレットアドレスになりました!
![](https://assets.st-note.com/img/1700749602487-Vus5P1GSsq.png?width=1200)
■ウォレットアドレスに入ったということは、OpenSeaでも見れるのでは、、?とおもい、アクセスして確認してみるとぱっと見みえます!https://opensea.io/account
![](https://assets.st-note.com/img/1701008207273-HXIgU8ZAQG.png?width=1200)
■自分が作ったNFTが見れるCreatedの画面でもNFTを確認できました!
Mintはうまくいってるみたいですね。
![](https://assets.st-note.com/img/1701008262250-tqWPQlIRQH.png?width=1200)
開くとこんな感じ、thirdwebで確認できますね。
NFTの詳細も見てみるために、赤枠個所をクリックします。
![](https://assets.st-note.com/img/1701008323030-wNjPGdqAlB.png?width=1200)
(5)NFTをList(OpenSeaで)
■とりあえずやれる方法で出品までしてみよう!
ということで、NFTの詳細画面から[List for sale]をクリック
![](https://assets.st-note.com/img/1701008373775-AyxgqwdvLC.png?width=1200)
■List for sale画面に遷移するので、とりあえず何も考えず「2MATICで販売」することだけ設定して、画面下部の[Complete listing]をクリック
![](https://assets.st-note.com/img/1701008479499-ane6tNOFtL.png?width=1200)
■すると処理が走り、対象のNFTに対してアクセスと送金許可を求められるので[確認]をクリック
![](https://assets.st-note.com/img/1701008584172-rSPpZ3QEna.png?width=1200)
■おそらく、OpenSeaとは別のサービス(thirdweb)で発行したNFTに対し、アクセス許可の承認しようとしてるよ!大丈夫!?というメッセージが出てくるので、問題なく[承認]をクリック
![](https://assets.st-note.com/img/1701008641038-5vQAY71gXT.png)
■署名のリクエストも表示されるので、①スクロールを一番下まで動かして②[署名]をクリック
![](https://assets.st-note.com/img/1701008729488-WpJnK0De74.png)
■Listが完了しました![View Listing]をクリックしてList画面に遷移してみます。
![](https://assets.st-note.com/img/1701008792270-ZkbSag1A3R.png?width=1200)
■NFTを所有しているウォレットを紐づけたままだと、所有者向け画面になってしまうので、紐づけを外してアクセスすると購入画面が見れたので、出品できました!
https://opensea.io/assets/matic/0x728e07eedf6cc7e6fe8c0b874e6aa34f630f8e65/0
![](https://assets.st-note.com/img/1701009128007-LFvXRBSgY6.png?width=1200)
(6)脆弱性が発生したので、緩和ツールを使う
Xを見ていると、どうも2023/11/22以前のコントラクトに重大な脆弱性が発生したとの情報が舞い込んできました、、、!(以下は公式の表明)
ぎりぎり11/19に操作開始したものの、日をまたいで作業していたので、どうなのか、、?
でも念のため何かあってはよくないので公式がやってほしいとする作業をやってみます。
■上記アドレスにアクセスすると、ぬわー、っと英語が書かれているので、、まずは日本語表記に変えちゃいます。
![](https://assets.st-note.com/img/1702223129263-glWxI8u6no.png?width=1200)
■日本語表記にして読んでいくと、脆弱性の緩和ツールが以下URLで使える様子なので、アクセスしてみます。
https://mitigate.thirdweb.com/
![](https://assets.st-note.com/img/1702223226860-MiYW8rLZJK.png?width=1200)
■アクセスすると、ウォレットの接続が必要なようなので、ツールを使うことの了承のためにチェックを入れて、[Connect Wallet]をクリック
![](https://assets.st-note.com/img/1702223301011-Loma716JJW.png?width=1200)
■Connect画面が表示されるので、[Connecta wallet]をクリック
![](https://assets.st-note.com/img/1702223410811-powh6vBYz3.png)
MetaMaskをクリックして
![](https://assets.st-note.com/img/1702223918672-BF1clLXRCu.png)
ぐるぐると処理が始まるとともに、MetaMaskからウォレットの接続要求が来るので、今回NFTをMintしたアドレスを選択して、[次へをクリック]
![](https://assets.st-note.com/img/1702223958173-yPgzBKLASl.png?width=1200)
■接続を求められるので、[接続をクリック]
![](https://assets.st-note.com/img/1702224023194-2D5BvyFdXx.png)
■その後画面が変わり、Contractに脆弱性がないか確認が走った結果画面をみると、、問題なさそうでした!
ロックをかける必要がある場合、「Action」欄にロックをかけるボタンが出てくるそうです。
![](https://assets.st-note.com/img/1702224074495-nLRy6mhlIm.png?width=1200)
公式もYoutube(以下URL)で、当ツールの流れを説明してくれてました。
見るとわかりやすいですね。
https://www.youtube.com/watch?v=kYy6uDmIQQA
(7)やってみた感想
今までやったOpenSeaやFoundationより、
なんとなく設定が多かったり、、、
うまく途中の処理がうまくいかなかったり、、、、
脆弱性が発見されたり、、、
色々ありましたが、何とかこぎつけました!
ただ、Claimはたぶんほかの人でもやる方法がありそうなので、もう少し調べて手順をまとめたいな、、ポン
でもとってもべんきょうになりました!