Atomic settlement.
Every action commits as one transaction on Sui. If any step fails, the whole thing reverts, so you never land in a half-done state.
One transaction
Borrow, swap, repay. Three Move calls share inputs and commit at a single point.
The whole sequence
commits together.
Atomic means all-or-nothing. Either the entire sequence commits, or it reverts as if it never ran. There is no in-between to get stuck in.
Commit or revert
The sequence either lands in full or rolls back as if it never started.
Nothing stranded
No half-filled swaps, no orphaned borrows, no funds stuck between steps.
Never half-exposed
An agent cannot leave you mid-flight between two calls. It is one move.
Programmable
transactions.
A programmable transaction block composes Move calls into a single transaction. Outputs flow into the next call, and there is exactly one commit point.
- composeMove calls into one txSeveral protocol calls become a single transaction the chain runs together.
- flowOutputs feed inputsA value returned by one call passes straight into the next, on-chain.
- commitA single pointIt all settles at once. If any call aborts, the block aborts.
let tx = ptb(); let borrowed = tx.move_call(vault::borrow, [1000_USDC]); let out = tx.move_call(cetus::swap, [borrowed, min]); tx.move_call(vault::repay, [out]); tx.commit(); // all of it, or none
Make the last step
fail.
Borrow, swap, repay, in one block. Toggle the repay to fail and watch the whole sequence revert. Nothing moves.
Boundaries that hold.
Atomic settlement pairs with typed allowances: the grant says what may happen, and the block makes it happen whole or not at all.
Says what may happen
The allowance names the venue, the action, the asset and the ceiling before a block is ever built.
Makes the answer binding
There is no partial spend to argue about afterwards — the sequence either happened or it did not.
The worst case is a number
A capped grant plus an all-or-nothing block means the most this can cost you is the figure you wrote.
Stops between blocks
Pull the grant and the next block never starts. Nothing is left half-applied while you decide.
It always settles
cleanly.
Half-done is the state this design removes. Whatever your agent composes, the chain keeps all of it or none of it.
