Transaction abstraction
Every action on a Botanary account is a UserOperation, not a raw transaction - previewable before you sign, batchable, and payable in a stablecoin.
Nothing you do on Botanary is sent as a raw blockchain transaction. Every action - a send, a swap, a grant, a freeze - is built as an ERC-4337 (v0.7) UserOperation, and that shift from "raw transaction" to "operation the backend builds, you sign, and a bundler relays" is what makes previewing, batching, and flexible gas payment all possible.
Built unsigned, signed by you, relayed - never the other way around
The backend builds every operation as an UnsignedUserOp and hands it back with the userOpHash you
need to sign. It never signs on your behalf, and the bundler that submits your signed operation has
no authority over what it does - relaying is availability, not authority. See
User operations and ERC-4337
for the full envelope and relay lifecycle.
Previewed before you ever sign
Because an action is a UserOperation and not something fired blind, it can be simulated first. A preview runs an advisory policy check - your own account's rules via AgentGuard, or a delegation's policy - alongside a real simulated call, and both have to pass before you're shown something to sign. The preview is fail-closed: if either check can't complete, it reports failure rather than guessing. See Simulation for exactly what gets checked and where each decline reason comes from.
A preview is advisory - it never authorizes anything by itself. The chain still re-asserts every bound at the actual enforcement point, in validation or in execution.
One signature can cover several steps
Because an operation is built rather than sent directly, several steps can be folded into the same signed call:
- A send can batch more than one recipient into a single operation and a single signature.
- A swap that needs a token approval batches that approval and the router call together - one signature for both.
- Paying gas in USDT needs an on-chain approval too, and that's batched into the very operation it's paying for - one signature, not two. (USDC gas is the exception: it needs a second signature of its own, for the gas permit. See Gas for why.)
Fees, paid flexibly
Because every action already goes through a bundler rather than as a raw transaction, the fee doesn't have to come out of the chain's native token at all. Botanary can pay it out of a stablecoin balance you already hold instead - this is gas abstraction. The methods available to choose from are USDC (via a signed permit) and USDT (via an on-chain approval batched into the same operation); native payment, in the chain's own gas token, is always available as a fallback. Which of these you can actually pick from depends on your account and the chain you're on. See Gas for the full breakdown.
Sponsorship is the one payment method you don't choose yourself - it's used for specific flows like a testnet account's first deployment. On mainnet there's no sponsored gas, so a first deployment there pays native gas like any other operation once your account has some on hand.
Not needing the chain's native token on hand is the point of gas abstraction, and it holds wherever USDC or USDT gas is actually available for your account and chain - it isn't guaranteed on every chain for every method. Check what's offered before assuming a specific method works.
Read next
Gas
Payment methods, defaults, and what's actually available per chain.
Simulation
What gets checked in a preview, and where each decline reason comes from.
User operations
The relay boundary and how an operation is tracked to a terminal outcome.
ERC-4337
The UnsignedUserOp shape and the backend's build-then-relay contract.
Account abstraction
Your Botanary wallet is an ERC-7579 smart contract account, not an EOA - authority comes from its modules, not a single private key.
Chain abstraction
One Botanary account works across the networks Botanary supports, with a single balance view - without pooling your funds or promising automatic cross-chain execution.