👻

thirdwebで「Bundlr」を使用して、Arweaveに保管した画像でNFTを作成してみよう

2022/12/27に公開

こんにちは、CryptoGamesのユウキです。

今回は、こちらの記事を元にして、「Bundlr」を使って、画像をArweaveに保管し、NFTを作成する方法を見ていきます。

https://blog.thirdweb.com/guides/use-bundlr-to-store-nft-images-in-an-nft-drop/

なお、今回は、solanaで行っていきます。

solanaのテスト用トークンの取得などは、こちらをご確認ください。
https://zenn.dev/yuki2020/articles/c7776592e3bda4

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