thirdwebで「Bundlr」を使用して、Arweaveに保管した画像でNFTを作成してみよう
こんにちは、CryptoGamesのユウキです。
今回は、こちらの記事を元にして、「Bundlr」を使って、画像をArweaveに保管し、NFTを作成する方法を見ていきます。
なお、今回は、solanaで行っていきます。
solanaのテスト用トークンの取得などは、こちらをご確認ください。
1.コードの準備を行う
まずは、下のように、git clone を行います。

「yarn install」、もしくは「npm install」で依存関係を入れます。

「.env」ファイルに秘密鍵を設定します。

「.gitignore」ファイルに「.env」が設定されていることを確認します。

2.ミントファイルを設定する
1) SDKの初期化を行う
では、ミントファイルを見ていきましょう。
まずは、「.env」の環境変数を取得し、「fromPrivateKey関数」を実行しています。

こちらの公式にあるように、ネットワークとプライベートキーを渡しています。

https://portal.thirdweb.com/solana-sdk/sdk.thirdwebsdk.fromprivatekey#thirdwebsdkfromprivatekey-method
2) コントラクトを作成する
では、コントラクトを作成していきましょう。
メタデータを設定の上、「createNFTDrop関数」でコントラクトを作成します。

下のように、コントラクトアドレスを取得しています。

https://portal.thirdweb.com/solana-sdk/sdk.deployer.createnftdrop#deployercreatenftdrop-method
3) Bundlrにアップデートを行う
下のように、Bundlrを初期化して、アップロードを行なっています。
なお、「node2」を用いることで、「100kB」を上限に無料で実施しています。

なお、「image」フォルダの中身はこちらになります。

こちらにあるように、初期化を行なっています。

https://docs.bundlr.network/docs/client/js
そして、こちらにあるように、アップロードを行なっています。

https://docs.bundlr.network/docs/client/js
4) lazyMintを行う
では、コントラクトができたので、lazyMintを行っていきましょう。
なお、lazyMintとは、ミントを行わずに、画像などのメタデータを設定することです。
このようにメタデータを入れます

getNFTDrop関数でNFTDropを取得し、lazyMintを行なっています。

なお、getNFTDrop関数はこちらになります。

https://portal.thirdweb.com/solana-sdk/sdk.thirdwebsdk.getnftdrop#thirdwebsdkgetnftdrop-method
3.処理を実行する
では、こちらで処理を実行してみます。
npx ts-node mint.ts
下のように実行されました。

下の、<program-address>の部分に今回できたものを入れて、遷移します。
https://thirdweb.com/sol-devnet/<program-address>
下のように、画像が反映されていることが確認できました。

今回は以上です。
最後までありがとうございました。
Discussion