Batch Transaction

Use Blocto SDK to Combine multiple transactions and make them atomic

Note that Blocto SDK for EVM-compatible chains is still in Beta. APIs are subject to breaking changes.

Introduction

With Blocto, you can combine multiple transactions into a single transaction for the following advantages:

  1. Save gas fee

  2. Make multiple transactions atomic, so they either all succeed or all fail

Usage

There are two ways to combine transactions:

import Web3 from 'web3';

// Use the Ethereum provider injected by Blocto app
const txHash = await bloctoSDK.ethereum.request({
  method: 'blocto_sendBatchTransaction',
  params: [
    ...web3.eth.sendTransaction.request(SOME_REQUEST).params,
    ...web3.eth.sendTransaction.request(SOME_OTHER_REQUEST).params
  ]
})

console.log(txHash) // ex: 0x12a45b...

B. Web3 Batch Request

import Web3 from 'web3';

// Use the Ethereum provider injected by Blocto app
const web3 = new Web3(bloctoSDK.ethereum);
const batch = new web3.BatchRequest();

batch.add(web3.eth.sendTransaction.request(SOME_REQUEST));
batch.add(web3.eth.sendTransaction.request(SOME_OTHER_REQUEST));

batch.execute();

Example

Step 1 - Configure Web3 and @blocto/sdk

import Web3 from "web3";
import BloctoSDK from "@blocto/sdk";

const bloctoSDK = new BloctoSDK({
  ethereum: {
    chainId: "0x5", // (required) chainId to be used
    rpc: `https://goerli.infura.io/v3/ef5a5728e2354955b562d2ffa4ae5305`, // (required for Ethereum) JSON RPC endpoint
  },
});

const web3 = new Web3(bloctoSDK.ethereum);

export { web3, bloctoSDK };

Step 2 - Send Batch Transaction

const txHash = await bloctoSDK.ethereum.request({
  method: 'blocto_sendBatchTransaction',
  params: [
    ...web3.eth.sendTransaction.request(SOME_REQUEST).params,
    ...web3.eth.sendTransaction.request(SOME_OTHER_REQUEST).params
  ]
})

console.log(txHash) // ex: 0x12a45b...

Sample

For more information about batch transactions, check out web3.js documentation.

Last updated

Change request #370: docs: add web sdk v0.5.0 ERC-4337 docs