buildUserOperationFromTxs
Performs buildUserOperationFromTx
in batch and builds into a single,
yet to be signed UserOperation
(UO) struct. The output user operation struct
will be filled with all gas fields (and paymaster data if a paymaster is used)
based on the transactions data (to
, data
, value
, maxFeePerGas
,
maxPriorityFeePerGas
) computed using the configured ClientMiddlewares on the SmartAccountClient.
Import
import { buildUserOperationFromTxs } from "@aa-sdk/core";
Usage
import type { RpcTransactionRequest } from "viem";
import { smartAccountClient } from "./smartAccountClient";
const requests: RpcTransactionRequest[] = [
{
from, // ignored
to,
data: encodeFunctionData({
abi: ContractABI.abi,
functionName: "func",
args: [arg1, arg2, ...],
}),
},
{
from, // ignored
to,
data: encodeFunctionData({
abi: ContractABI.abi,
functionName: "func",
args: [arg1, arg2, ...],
}),
},
];
const uoStruct = await smartAccountClient.buildUserOperationFromTxs({
requests,
});
// signUserOperation signs the above unsigned user operation struct built
// using the account connected to the smart account client
const request = await smartAccountClient.signUserOperation({ uoStruct });
// You can use the BundlerAction `sendRawUserOperation` (packages/core/src/actions/bundler/sendRawUserOperation.ts)
// to send the signed user operation request to the bundler, requesting the bundler to send the signed uo to the
// EntryPoint contract pointed at by the entryPoint address parameter
const entryPointAddress = client.account.getEntryPoint().address;
const uoHash = await smartAccountClient.sendRawUserOperation({
request,
entryPoint: entryPointAddress,
});
Parameters
client
Client<TTransport, TChain, TAccount>
the smart account client to use to make RPC calls
args
BuildTransactionParameters
an object containing the requests to build as well as, the account if not hoisted, the context, the overrides, and optionally a flag to enable signing of the UO via the underlying middleware
Returns
Promise<BuildUserOperationFromTransactionsResult<TEntryPointVersion>>
a Promise containing the built user operation