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