Skip to main content

The rule

1tx builds calls. Your wallet executes them. We hold no keys, take no custody, sponsor no gas and operate no relayer. Every call in every bundle targets a lending protocol, a DEX router or Circle’s TokenMessengerV2 — never an address we control. That is not a policy note; it shapes the API. Bundles are wallet-neutral by construction, and the simulation that validates them deliberately assumes nothing about which wallet you use.

Accounts

Smart account (recommended)

An ERC-4337 account on EntryPoint v0.7. The bundle lands as one atomic user operation, gas is paid in USDC, and the account never needs native tokens on any chain.

EOA (supported, weaker)

Works for plain deposits and withdrawals if calls are sent in order, each receipt awaited. No atomicity, and gas must be paid in the chain’s native token.
A smart account is what the bundles are designed for. Some things only work there:
  • Atomicity — the property the simulation proves is a property of the batch, and only a batch sender gets it.
  • Loops — a dozen interdependent calls whose intermediate states are never meant to be observable. Sending them one at a time is not a supported way to open a levered position.
  • Cross-chain redemption plus deposit in one operation — receive the mint and put it to work in the same atomic step, so a failing deposit leaves the CCTP nonce unused.
  • Gas in USDC — no native-token balance to maintain on four chains.

Gas: paid in USDC, by you

An ERC-20 paymaster charges gas in USDC out of the account’s own balance. Pimlico’s singleton paymaster and Circle Paymaster both work; the choice, the bundler and the account are yours. Three things follow, and they matter when sizing a deposit:
A paymaster reserves an upper bound on what it may take, not the eventual cost — gas limits plus an execution penalty and postOp gas, at maxFeePerGas, converted at its USDC exchange rate. A deposit sized to the account’s entire USDC balance leaves nothing for that bound and the operation fails. Size deposits to balance minus the maximum charge, roughly a USDC per chain in practice, and keep that reserve rather than sweeping it.
The paymaster needs a USDC allowance. When you cannot confirm the existing allowance is enough, prepend the approve to the batch: a redundant approve costs a few thousand gas, a missing one reverts the whole operation after paying for it. An allowance you could not read counts as zero.
A chain with no ERC-20 paymaster is still scorable — you can read its instruments and compare their yields — but it is not executable from an account with no native gas, and there is no relayer fallback. Treat paymaster coverage as part of whether a chain is reachable.
gasUsed in a bundle’s simulation block is the cost of the protocol calls alone. Your wallet’s own overhead — validation, the paymaster’s postOp — sits on top of it and only your bundler can quote it.

Cross-chain: CCTP V2, no relayer

destinationCaller is your own account. Only you can redeem the burn — nobody can front-run it, and nobody, us included, can relay it on your behalf. That is why no relayer exists in this design rather than being an omission. Rules that follow:
  • Build the destination bundle only after the attestation is ready, sized to the amount that survived Circle’s fee. Never at proposal time.
  • Redeem and deposit in the same operation. If the deposit reverts, the redemption reverts with it, the CCTP nonce stays unused, and the destination side can simply be rebuilt.
  • A source burn is observed, never resent. A destination operation is reconciled before any retry. A burn that cannot be matched to its attestation is terminal and is never redeemed automatically.
  • Fast versus standard is minFinalityThreshold: 1000 settles in seconds against Circle’s allowance for a quoted fee, 2000 waits for hard finality. The bridge calldata endpoint quotes maxFee for the route you ask for.

Supported chains

Next steps

Calldata API

Instrument and bridge bundles

Atomic Bundles

What the batch guarantees

Integration Guides

Smart account, EOA or agent

Chains API

Live chain and CCTP configuration