【完全保存版】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」コントラクトを作ります。
このコントラクトからスマートウォレットが作れます。
「Deploy now」を選択します。
また、下のように、「Multicall-able」という特徴も書かれています。
これにより、トランザクションをまとめて処理できます。
「Deploy now」を選択します。
(今回、saltについては触れません。)
このように、コントラクトができました。
3 .envファイルの作成
次に、「.env.example」をコピーし、「.env」を作ります。
中に、ウォレットの秘密鍵と、thirdwebのAPIキーの秘密鍵を入れます。
thirdwebのAPIキーの作り方が不明な場合は、こちらをご参照ください。
4 依存関係のインストール
次に、依存関係をインストールします。
cd smart-wallet-batch-tx-script
yarn install
5 実行してみる
準備ができたので、「yarn start」をしてみます。
yarn start
こちらが、ローカルウォレットです。
ここに多少のGoerliを送付します。
では、もう一度、「yarn start」を実行してみます。
下のように、ERC20とEdition NFTのバランス(残高)が増えています。
これでクレームが行われたことがわかります。
実際に、トランザクションを確認すると、下のようにうまく行っていました。
2 コードを見てみよう
では、コードを見てみましょう。
1 ローカルウォレットの作成
「LoacalWalletNode」を使って、新しい、ローカルウォレットを作成しています。
ローカルウォレットについては、こちらをご参照ください。
「encryptedJSON」「privateKey」「mnemonic」という3つのフォーマットがサポートされています。
2 ローカルウォレットデータの格納ファイル
ちなみに、このデータは、「wallet.json」に格納されています。
3 パスワードの設定
次に、「loadOrCreate」を使って、パスワードを設定します。
すでに作られている場合は、データを読み取ります。
こちらをご参照ください。
4 ウォレットアドレスの取得
次に、ウォレットアドレスを取得しています。
こちらもご参照ください。
5 スマートウォレットの作成
次に、スマートウォレットを作るためのオブジェクトを作っています。
チェーンやファクトリーアドレスなどの情報を必要としています。
公式はこちらです。
その上で、「SmartWallet」を作成しています。
こちらになります。
6 ローカルウォレットの接続
その上で、ローカルウォレットを通じて接続しています。
この辺りもご参照ください。
7 SDKの取得
次に、トランザクションを実行するためのSDKを「fromWallet」を使って取得しています。
こちらもご参照ください。
8 コントラクトとの接続
こちらで、コントラクトに接続しています。
こちらをご参照ください。
現在の残高を取得して、表示しています。
9 prepareの実施
次に、「prepare」を行っています。
こちらは、トランザクションをコントロールするなどの目的で行われます。
今回は、それを配列に格納しています。
こちらの公式が良いと思います。
トランザクションを実行する前に、推定のガスコストを取得したり、うまくいくかのシミュレートをしています。
10 バッチ処理の実行
そして、バッチの実行を行っています。
これにより、まとめたトランザクションを一括で実行しています。
こちらをご参照ください。
11 トランザクションハッシュの取得
最後に、トランザクションハッシュを取得しています。
こちらもご参照ください。
今回は以上です。