Sending Transaction (non-telegram)

AA0xGasless Module

Step 1: Creating the Transaction

After initializing the SDK, you can create a transaction object using the UserOperationCallData interface. This object represents the transaction you want to send. Here's an example:

import { 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 transaction: 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)
};

In this code:

  • We import the UserOperationCallData interface to define the structure of the transaction object.

  • transaction is an object that contains the target (recipient's Ethereum address), data (transaction data in hexadecimal format), and an optional value field for the transaction amount in wei.

Step 2: Send the Transaction using sendUserOp

Now that you have the transaction object, you can send it as a user operation using the sendUserOp method provided by the SDK. This method returns both the user operation hash (userOpHash) and the transaction hash (transactionHash).

try {
    const { userOpHash, transactionHash } = await client.sendUserOp(transaction);
    console.log('UserOp Hash:', userOpHash);
    console.log('Transaction Hash:', txHash);
    console.log('Transaction sent successfully');
} catch (error) {
    console.error('Transaction failed:', error);
}

In this code:

  • The await client.sendUserOp(transaction) call sends the transaction as a user operation and returns an object containing both the userOpHash and transactionHash.

  • The userOpHash is the hash of the user operation, and transactionHash is the hash of the underlying transaction.

  • Both hashes are logged to the console for your reference.

With these steps, you can successfully send a transaction and capture both the user operation hash and the transaction hash using the 0xGasless AA SDK.

Last updated