HashLipsで作成したデータを基にthirdwebでNFTを作成する
すでに色々なサイトで記事がありますが、自分でやってみたという記録の意味でまとめてみました。
※2023/06/24時点での内容となります。
また、HashLipsで作った結果をthirdwebにアップロードできる形にするコードも最後に書いています。
作成の記録
画像とメタデータの作成
画像とメタデータはHashLipsを使って作成しています。
作成に使用したデータは、以下に登録しています。
https://github.com/two-pack/hashlips_art_engine/releases/tag/example_stick_figure_1
コントラクトの作成
まずはthidwebのサイトを開いて、Go to Dashboard からダッシュボードへ移動します。
Browse contracts を探してクリックします。 Explore からでも行けます。
コンストラクタのパラメーターを設定していきます。
まずは、Imageをクリックしてイメージ画像を設定します。
Name , Symbol , Description を順に設定していきます。
Symbol はトークンのシンボル名になります。
次にロイヤリティーと一次販売での受け取りの設定です。
- RoyaltiesのRecipient Addressに受け取るアドレス
- RoyaltiesのPercentageにロイヤリティーの割合
- Primary SalesのRecipient Addressに一次販売での収益を受け取るアドレス
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F30716%2F7b1611f4-000e-a749-8962-c3bb2e682e51.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=df047e5a6c2d47b18094d2ffd3265e6a)
最後にチェーンを選択します。今回はGoerliテストネットにデプロイします。
Deploy Now ボタンを押すとデプロイが開始されます。
以下のような画面が表示されてから、Metamaskで確認を求められます。
トランザクションが通ると、Deploying contractにチェックが入って、ダッシュボードへの追加が開始されます。ここで、Metamaskで署名が求められます。
画像とメタデータのアップロード
ダッシュボードでコントラクトを開くと、Contract checklistとして残作業が表示されています。これに従って次は画像とメタデータのアップロードを行います。
Batch Uploadボタンを押すと以下の画面になるので、用意しておいたフォルダをドロップします。
ドロップしたフォルダに入っているメタデータと画像が表示されます。
結果を確認してNextボタンを押すと以下の画面になります。
リビールの有無を選択します。
- リビールなしならReveal upon mint
- リビールありならDelayed Reveal
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F30716%2F09353254-b314-041f-4a4f-426f1a4f5a4f.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=811d12cd111da65881580fe829fd1e58)
リビールなしの場合は以下のように表示され、そのままアップロードに移ります。
リビールありの場合は、リビール画像の設定を行います。
また、最後のチェックボックスをチェックすると、CSVで指定した内容をシャッフルしてアップロードしてくれます。
Uploadボタンを押すとMetamaskで確認が求められます。
クレーム条件の設定
Claim Conditionsからクレーム条件を設定します。
Add Phaseボタンを押すと、PublicやAllowlist Onlyなど、クレームのフェーズが表示されます。ここではPublicを選択してみます。
ここで販売価格やミント数上限などを設定します。
それぞれ設定したら、Save Phasesのボタンを押します。
Metamaskで確認がでます。トランザクションが通ると設定完了です。
必要に応じて、別のフェーズも追加設定できます。
埋め込みのコードを使ってミントする
Embedからサイトに埋め込むためのコードをコピーできます。
適当なサイトに埋め込んでみた感じが以下です。
実際にミントしてみると、テストネットのOpenSeaで以下のようにミントされている事がわかります。
リビールする
リビールするには、NFTsのReveal NFTsボタンを押します。
リビールの設定をした際のパスワードを入力して、Reveal NFTsボタンを押します。
Metamaskでトランザクションを確認するとリビールが完了します。
おまけ:HashLipsのビルド結果からthirdwebのBatch Upload用のデータを作る
Batch Uploadには、画像とメタデータのCSVファイルをアップロードする必要があります。
HashLipsで画像とメタデータを作成している場合、そこからアップロードするデータを作成できると便利と考えてスクリプトを書きました。
コードは以下です。featuresブランチを使うと機能が入った状態のHashLipsを使えます。
https://github.com/two-pack/hashlips_art_engine/commit/a45bfdfb6bb00c3a07a356f5049140b8f13e0252
使用方法は、ビルドした後にexport_thirdwebスクリプトを実行します。
実行すると、buildフォルダを基にexportフォルダへ、Build Uploadでアップロード可能な状態のフォルダを作成します。
npm run build
npm run export_thirdweb
ここまで説明してきたものも、このスクリプトを使って作成しています。
2023/06/25追記
CSVファイルを作成するexport_thirdwebスクリプトについて書いていますが、
ビルドした結果のimageフォルダに_metadata.jsonを入れるだけで、imagesフォルダを使ってthirdwebにBatch Uploadできました。
なので、わざわざCSVファイルを作る必要はなかったですorz