見出し画像

【完全保存版】thirdwebでトランザクションのバッチ処理を行おう!

0 はじめに

本日はthirdwebを使って、トランザクションのバッチ処理を行います。

これにより、複数のトランザクションを一度の処理で実行することができます。

こちらの記事を元にしています。

1 やってみよう

1 git clone

まずは、git clone を行います。

git clone https://github.com/thirdweb-example/smart-wallet-batch-tx-script.git

こちらのGithubです。

2 Account Factoryコントラクトを作る

今回、スマートウォレットを使用します。

それを作るための、「Account Factory」コントラクトを作ります。

このコントラクトからスマートウォレットが作れます。

https://thirdweb.com/explore

「Deploy now」を選択します。

また、下のように、「Multicall-able」という特徴も書かれています。

これにより、トランザクションをまとめて処理できます。

「Deploy now」を選択します。

(今回、saltについては触れません。)

このように、コントラクトができました。

3 .envファイルの作成

次に、「.env.example」をコピーし、「.env」を作ります。

中に、ウォレットの秘密鍵と、thirdwebのAPIキーの秘密鍵を入れます。

thirdwebAPIキーの作り方が不明な場合は、こちらをご参照ください。

4 依存関係のインストール

次に、依存関係をインストールします。

cd smart-wallet-batch-tx-script 
yarn install 

5 実行してみる

準備ができたので、「yarn start」をしてみます。

yarn start

こちらが、ローカルウォレットです。

ここに多少のGoerliを送付します。

では、もう一度、「yarn start」を実行してみます。

下のように、ERC20とEdition NFTのバランス(残高)が増えています。

これでクレームが行われたことがわかります。

実際に、トランザクションを確認すると、下のようにうまく行っていました。

https://goerli.etherscan.io/tx/0x56e5ddc3a406b2144f596a4155283eb31689cf4404fb9368e4ead94aaaa078f7

2 コードを見てみよう

では、コードを見てみましょう。

1 ローカルウォレットの作成

「LoacalWalletNode」を使って、新しい、ローカルウォレットを作成しています。

ローカルウォレットについては、こちらをご参照ください。

「encryptedJSON」「privateKey」「mnemonic」という3つのフォーマットがサポートされています。

https://portal.thirdweb.com/wallet/local-wallet#local-wallet-backup

2 ローカルウォレットデータの格納ファイル

ちなみに、このデータは、「wallet.json」に格納されています。

3 パスワードの設定

次に、「loadOrCreate」を使って、パスワードを設定します。

すでに作られている場合は、データを読み取ります。

こちらをご参照ください。

https://portal.thirdweb.com/wallet/local-wallet#loadorcreate

4 ウォレットアドレスの取得

次に、ウォレットアドレスを取得しています。

こちらもご参照ください。

https://portal.thirdweb.com/unity/wallet/getaddress

5 スマートウォレットの作成

次に、スマートウォレットを作るためのオブジェクトを作っています。

チェーンファクトリーアドレスなどの情報を必要としています。

公式はこちらです。

https://portal.thirdweb.com/smart-wallet/guides/typescript#3c-creating-the-smart-wallet

その上で、「SmartWallet」を作成しています。

こちらになります。

https://portal.thirdweb.com/wallet/smart-wallet

6 ローカルウォレットの接続

その上で、ローカルウォレットを通じて接続しています。

この辺りもご参照ください。

https://portal.thirdweb.com/smart-wallet/guides/typescript#3c-creating-the-smart-wallet

7 SDKの取得

次に、トランザクションを実行するためのSDK「fromWallet」を使って取得しています。

こちらもご参照ください。

8 コントラクトとの接続

こちらで、コントラクトに接続しています。

こちらをご参照ください。

https://portal.thirdweb.com/typescript/sdk.thirdwebsdk.smartcontract#return-value

現在の残高を取得して、表示しています。

9 prepareの実施

次に、「prepare」を行っています。

こちらは、トランザクションをコントロールするなどの目的で行われます。

今回は、それを配列に格納しています。

こちらの公式が良いと思います。

トランザクションを実行する前に、推定のガスコストを取得したり、うまくいくかのシミュレートをしています。

https://portal.thirdweb.com/typescript/sdk.smartcontract.prepare

10 バッチ処理の実行

そして、バッチの実行を行っています。

これにより、まとめたトランザクションを一括で実行しています。

こちらをご参照ください。

https://portal.thirdweb.com/wallet/smart-wallet#executebatch

11 トランザクションハッシュの取得

最後に、トランザクションハッシュを取得しています。

こちらもご参照ください。

https://docs.ethers.org/v5/api/providers/types/#providers-TransactionReceipt


今回は以上です。

いいなと思ったら応援しよう!

ユウキ
サポートをしていただけたらすごく嬉しいです😄 いただけたサポートを励みに、これからもコツコツ頑張っていきます😊