Sending Batch Transaction (non-telegram)
Step 1: Creating the Batch Transactions
After initializing the SDK, you can create an array of batch transactions using the BatchUserOperationCallData
interface. This array represents the transactions you want to send. Here's an example:
import { BatchUserOperationCallData, UserOperationCallData, sendUserOp } from '@0xgasless/0xgasless-aa-sdk';
import { ethers } from 'ethers';
// Replace with the contract address and ABI of the smart contract you want to interact with
const contractAddress = '0xContractAddress'; // Replace with the contract address
const contractABI = [
// Define the ABI of the contract, including function definitions
// Example: { "constant": false, "inputs": [...], "name": "functionName", "outputs": [...], "type": "function" }
];
// Create an instance of the contract
const contract = new ethers.Contract(contractAddress, contractABI);
// Specify the function you want to call and its parameters
const functionName = 'functionName'; // Replace with the name of the function you want to call
const functionParams = ['param1', 'param2']; // Replace with the function's parameters
// Encode the function call data
const functionInterface = new ethers.utils.Interface(contractABI);
const data = functionInterface.encodeFunctionData(functionName, functionParams);
// Create a transaction object
const transaction1: UserOperationCallData = {
target: '0xRecipientAddress', // Replace with the recipient's Ethereum address
data: data, // Replace with the transaction data in hexadecimal format
value: BigInt('1000000000000000000'), // Optional: Replace with the amount in wei (e.g., 1 ETH)
};
const transaction2: UserOperationCallData = {
target: '0xRecipientAddress', // Replace with the recipient's Ethereum address
data: data, // Replace with the transaction data in hexadecimal format
};
const transactions = [transaction1, transaction2]
In this code:
We import the
UserOperationCallData
interface to define the structure of the transaction object.transactions
is an object that contains the transactions withtarget
(recipient's Ethereum address),data
(transaction data in hexadecimal format), and an optionalvalue
field for the transaction amount in wei.
Step 2: Send the Batch Transactions using sendUserOpsBatch
Now that you have the transactions array, you can send it as a user operation using the sendUserOpsBatch
method provided by the SDK. This method returns the user operation hash (userOpHash
)
try {
const { userOpHash } = await client.sendUserOpsBatch(transactions);
console.log('UserOp Hash:', userOpHash);
console.log('Transaction sent successfully');
} catch (error) {
console.error('Transaction failed:', error);
}
In this code:
The
await client.sendUserOpsBatch(transactions)
call sends the multiple transactions as a user operation and returns an object containing theuserOpHash.
The
userOpHash
is the hash of the user operation.
With these steps, you can successfully send a transaction and capture user operation hash using the 0xGasless AA SDK.
Last updated