thirdwebで、宝箱を開けるとFT, NFTを取得できるPackコントラクトを作ってみよう。
こんにちは、CryptoGamesのユウキです。
本日は、こちらの記事をもとに、Packコントラクトを作ってみたいと思います。
宝箱を開けると、ランダムでERC20やERC1155を取得することができます。
なお、ERC721で行うことも可能です。
では、やっていきましょう。
1 ERC20を作成する
では、まずthirdwebを使って、ERC20を作りましょう。
まずは、thirdwebのExplorerのページに行きます。
「Token」を選択します。
「Deploy Now」を選択
名前などのメタデータを設定して、「Deploy Now」
では、トークンをミントしていきましょう。「Mint」を選択
今回は「100」で設定し、「Mint Tokens」
このように、ミントされました。
2 ERC1155を作成する
では、宝箱を開けた時に出てくる、ERC1155も作っていきましょう。
「Edition」を選択
「Deploy Now」を選択
メタデータを設定して、「Deploy Now」
「Mint」を選択
こちらのアイテムと数量をそれぞれ設定していきます。
https://blog.thirdweb.com/guides/create-an-nft-lootbox/
なお、個数などは違う値でも大丈夫ですが、その場合、コードも修正が必要なので、最初はこの数字のままやるのが簡単だと思います。
下のようにして、8つのアイテムをミントしていきます。
なお、私の場合は何度かエラーが発生しました。
相関関係はわかりませんが、Nameに空白を入れないで実行したところ、うまくいきました。
このようにして、ミントができていきます。
3 コードを準備する
では、ERC20とERC1155の準備ができたので、コードを作成していきましょう。
こちらをGit cloneします。
下のようになりました。
続いて、yarn installを行います。
次に、「.env」に秘密鍵を設定します。
必ず「.gitignore」にも忘れずに、「.env」を設定します。
4 Packコントラクトをデプロイする
では、Packコントラクトをデプロイします。
「primary_sale_recipient」を自分のウォレットアドレスに変えた上で、次のコマンドで実施します。
node ./scripts/deployPack.mjs
これにより、表示されているのが、Packコントラクトのコントラクトアドレスです。
5 Packコントラクト使い方を見てみる
ではどのように使われているか見てみましょう。
その前に、下のようなパースエラーが出ているかもしれません。
その場合は、下のようにして修正ができると思います。
{
"extends": ["next", "next/core-web-vitals", "prettier", "next/babel"]
}
では、コードを見てみましょう。
まずは8~10行目を先ほど作ったコントラクトアドレスに変更します。
そして、16行目あたりから、ERC20,ERC1155がPackコントラクトのアドレスに対して、承認(setApprovalForAll)を行っています。
これにより、Packコントラクトがトランスファーができるようになっています。
また、Packを作成する際に、このように、ERC20,ERC1155を設定しています。
数量を変えた場合はこの辺りも変えていきます。
なお、create関数は公式で、次のように確認することができます。
https://portal.thirdweb.com/typescript/sdk.pack.create
下のように、ERC721も扱えそうですね。
https://portal.thirdweb.com/typescript/sdk.pack.create
では、中の確認ができたので、次のようにして、パックを作っていきます。
node ./scripts/bundleTokens.mjs
下のように、できたようです。
6 ページの表示を確認する
では、うまく実行されるか見ていきたいと思います。
「useContract」をPackコントラクトのアドレスに変更します。
そして、useOwnedNFTsでNFTを取得しています。
なお、実際の使い方はこのように公式からも確認できます。
まだ、ベータ版のようですね。
https://portal.thirdweb.com/react/react.useownednfts#useownednfts-function
下の箇所のコントラクトアドレスもPackコントラクトのアドレスに変更します。
また、Packを開けるためにopen関数が使われています。
このように使われています。
https://portal.thirdweb.com/typescript/sdk.pack.open
7 実際の動きを確認する
では、yarn devをして、実際に動かしてみましょう。
このように、表示されていました。
なお、実施前にメタマスクのパスワードを入力し、ロックを解除している状態にしておく必要があります。
では、宝箱を開けるために、「Open」を押します。
反映されないときは、下のように、処理が失敗していないかも確認してみてください。
うまくいけば、このように中身が出てきます。
なお、これにより、開けたPackはバーンされます。
今回は以上です。
ぜひやってみてください。
Discussion