Batch Request

If you would like to queue up multiple requests and have them processed sequentially, you can use our Batch Request. Note that if the user declines one of the requests, rest of the unprocessed requests will be declined as well.

The Fortmatic X modal will pop open once batch.execute() is called and display the number of requests the user will be interacting with.

// Initialize provider
import Fortmatic from 'fortmatic';
import Web3 from 'web3';

const fm = new Fortmatic('YOUR_API_KEY');
window.web3 = new Web3(fm.getProvider());

const toAddress = '0xb159752065EA68Ef0B22249Df25864E624fec45D';
const sendValue = web3.toWei(1, 'ether'); // Convert 1 ether to wei

// Create batch
const batch = web3.createBatch();

// Get user account wallet address first
web3.eth.getAccounts((error, accounts) => {
  if (error) throw error;
  
  // Construct ether transaction params
  const txnParams = {
    from: accounts[0],
    to: toAddress,
    value: sendValue
  }

  // Add send transaction to batch
  batch.add(web3.eth.sendTransaction.request(txnParams, (error, txnHash) => {
    if (error) throw error;
    console.log(txnHash);
  }));
  
  // Add another send transaction to batch
  batch.add(web3.eth.sendTransaction.request(txnParams, (error, txnHash) => {
    if (error) throw error;
    console.log(txnHash);
  }));
});

// Send batch to provider
batch.execute();

You could also include contract call or other web3 actions like below.

// ERC20 Approve
batch.add(tokenContractInstance.approve.request(toAddress, calculatedApproveValue, {from: accounts[0]}, (error, txnHash) => {
  if (error) throw error;
  console.log(txnHash);
}));

// Web3 Get Accounts
batch.add(web3.eth.getAccounts.request((error, accounts) => {
  if (error) throw error;
  console.log(accounts);
}));

// Web3 Get Balance
batch.add(web3.eth.getBalance.request((err, balance) => {
  if (error) throw error;
  console.log(balance);
}));

Last updated