Overview
A calldata request goes through four stages before it comes back to you. None of them involve a contract of ours.1. The catalogue
Every instrument is a row: protocol, chain, underlying token, yield token, decimals, and a recipe naming its protocol shape. Listing a new market means adding a row — no deployment, no on-chain registration, no upgrade. A row whoserecipe is null is visible to the data endpoints but not executable; asking for its
calldata returns 501.
2. Recipes
A recipe knows how one protocol shape is entered and exited. Three are served today:
Because the account is the caller, the exit paths need no third-party authorisation: Comet’s
allow manager dance only exists for a contract acting on someone’s behalf, and no contract acts
on yours here.
Recipes read the market at the pinned quote block, so share prices, exchange rates and available
liquidity come from the same block the bundle is simulated against.
3. Swap legs
Ask to deposit USDC into a market whose underlying is EURC and the bundle grows a swap in front of the deposit; withdraw from it into USDC and the swap lands after the withdrawal. Routes are pinned per underlying — a venue (Uniswap V3 or V4) and a fee tier — and an unpinned token is refused rather than routed through whatever pool happens to exist. Two guards sit on the quote:- Par check. A USD-stable pair priced more than 100 bps below par is refused.
- Impact check. Any other swap is compared against a reference quote at a thousandth of the size; more than 100 bps of impact is refused.
expiresAt, a minOut floor written into the calldata, and a
leftovers entry bounding the dust the exact-output swap can leave behind. A bundle without one
carries none of those: there is nothing to expire.
4. The simulation pass
This is the part that makes a bundle worth signing. Every bundle is executed witheth_simulateV1 at quoteBlock — all calls, in order, in one
block, as the requesting account — through a wallet-neutral executor: a bytecode shim
state-overridden onto the account so the batch runs exactly as a smart account would run it, with
no assumption about which wallet you use, and no router, paymaster or 4337 machinery in the way.
- The account’s token balances are overridden to satisfy
requires, so a bundle can be built for an account that has not been funded yet. That is whatassumedBalances: truemeans — the calls work; whether the account holds the tokens is still yours to check. expectedOutis the account’s output-token balance after minus before. It is a measurement, not a model.- A bundle that reverts, or that produces no output tokens, is never returned. You get a
400. - Bundles are bounded: at most 32 calls, 128 KiB of calldata, and every call on one chain.
5. Signing and sending
The bundle is an EIP-5792-shaped batch of{to, value, data}. A smart account wraps it into one
user operation — atomic, with its own nonce and its own paymaster — which is the execution the
simulation actually modelled. An EOA sends the calls in order and waits for each receipt.
1Tx does not sign, bundle, sponsor or relay. See the
execution model for the wallet and gas rules in full.
Cross-chain deposits
A cross-chain deposit is two bundles on two chains, with Circle’s attestation between them. Two properties follow fromdestinationCaller being your own account: nobody else can redeem the
burn, and no relayer is needed. 1Tx never holds the funds in flight and cannot strand them.
Build the destination bundle after the mint, not at proposal time — its size depends on the
fee Circle actually charged, and its simulation is pinned to a block where the funds exist.
Levered loops
A loop is the same envelope, with the turns hard-coded: borrow, swap, re-supply, repeated until the requested leverage is reached, all in one batch. Because the whole thing is simulated atomically, the position it reports — collateral, debt, health factor, depeg buffer — is read back from the simulated block rather than projected. See the Loops API.What 1Tx never does
Never custodies
No contract of ours appears in any bundle. Approvals go to the protocol, not to us.
Never signs
Keys stay in your wallet. We return calls; you decide whether they are sent.
Never sponsors gas
Your bundler and your ERC-20 paymaster, paid in USDC out of your own account.
Never relays
Cross-chain redemption is callable only by your account.
Next steps
Instruments
How an instrument is identified and what its id encodes
Atomic Bundles
What atomicity buys you, and where it stops
Execution Model
Smart accounts, USDC gas, CCTP
Calldata API
Parameters, response fields, errors