sendTransactions
Send a batch of transaction from a smart account.
Usage
import { smartAccountClient, simpleSmartAccount } from "./smartAccountClient"
import { pimlicoBundlerClient } from "./bundlerClient"
import { parseAbiItem, encodeFunctionData } from "viem"
const hash = await smartAccountClient.sendTransactions([
{
to: "0x0488bEE1Ec682db0F0E74AB52faFdDdEf10Af123",
data: encodeFunctionData({
abi: [parseAbiItem("function mint()")],
}),
value: 0n,
},
{
to: "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
data: "0x68656c6c6f",
value: 0n,
},
]);import { ENTRYPOINT_ADDRESS_V07, createSmartAccountClient } from "permissionless"
import { privateKeyToSimpleSmartAccount } from "permissionless/accounts"
import { createPimlicoPaymasterClient } from "permissionless/clients/pimlico"
import { createPublicClient, http } from "viem"
import { sepolia } from "viem/chains"
export const publicClient = createPublicClient({
transport: http("https://sepolia.rpc.thirdweb.com"),
})
// if using a paymaster
const paymasterClient = createPimlicoPaymasterClient({
transport: http("https://api.pimlico.io/v2/sepolia/rpc?apikey=YOUR_PIMLICO_API_KEY"),
entryPoint: ENTRYPOINT_ADDRESS_V07,
})
export const simpleSmartAccount = await privateKeyToSimpleSmartAccount(publicClient, {
privateKey: "0xPRIVATE_KEY",
factoryAddress: "0x91E60e0613810449d098b0b5Ec8b51A0FE8c8985", // simple version
entryPoint: ENTRYPOINT_ADDRESS_V07,
})
export const smartAccountClient = createSmartAccountClient({
account: simpleSmartAccount,
entryPoint: ENTRYPOINT_ADDRESS_V07,
chain: sepolia, // or whatever chain you are using
bundlerTransport: http("https://api.pimlico.io/v2/sepolia/rpc?apikey=YOUR_PIMLICO_API_KEY"),
middleware: {
sponsorUserOperation: paymasterClient.sponsorUserOperation, // if using a paymaster
},
})import { ENTRYPOINT_ADDRESS_V07, bundlerActions } from "permissionless"
import { pimlicoBundlerActions } from "permissionless/actions/pimlico"
import { createClient, http } from "viem"
import { sepolia } from "viem/chains"
export const pimlicoBundlerClient = createClient({
chain: sepolia,
transport: http("https://api.pimlico.io/v2/sepolia/rpc?apikey=YOUR_API_KEY_HERE"),
})
.extend(bundlerActions(ENTRYPOINT_ADDRESS_V07))
.extend(pimlicoBundlerActions(ENTRYPOINT_ADDRESS_V07))Returns
- Type:
Hash
The transaction hash of the mined userOperation
Parameters
Takes in an array of transaction objects with the following fields
to
- Type:
0x${string}
The transaction recipient or contract address.
data (optional)
- Type:
0x${string}
A contract hashed method call with encoded args.
value (optional)
- Type:
bigint
Value in wei sent with this transaction.
maxFeePerGas (optional)
- Type:
bigint
Total fee per gas (in wei), inclusive of maxPriorityFeePerGas. Only applies to EIP-1559 Transactions.
maxPriorityFeePerGas (optional)
- Type:
bigint
Max priority fee per gas (in wei). Only applies to EIP-1559 Transactions.
nonce (optional)
- Type:
number
Unique number identifying this transaction.
account (optional)
- Type:
SmartAccount
The Account to send the transaction from.