Sato Hub

Answered from live records · 2026-09-15

What happens when Sato Swap simulates a transaction?

It runs the transaction against a node first: a route that reverts is withheld with the decoded reason, while a revert on your own missing approval is reported as a precondition instead, as of 2026-09-15.

The four simulation lanes and the three outcomes that get confused. A simulation is a reading at a block, not a promise about the next one: state moves, and a transaction that simulated cleanly can still revert when it lands.

Lane or outcomeWhat it does
evm_rpcKeyless. eth_call at latest state from the taker, then eth_estimateGas, each inside a bounded deadline. A revert is decoded where the venue returned a standard Error(string) or Panic(uint256) payload.
alchemyalchemy_simulateExecution, only where a key is configured and the chain has a published host. It returns asset changes, so it yields a real expected output. Inert and unmentioned without the key.
solana_rpcsimulateTransaction over a public RPC against the venue's unsigned transaction. It returns logs and units consumed rather than an output amount, and the result says so instead of inventing one.
noneNo lane could run, and the REASON is always given — “we did not check” and “we checked and it is clean” must never look alike. Under a policy that requires a simulation this is rule E7 and the transaction is withheld.
A revert in the routeRule E4. The transaction is withheld and the decoded revert reason travels with the refusal.
A revert on YOUR allowanceNot a fault in the route. It is re-run against a state where the approval exists; where that is not possible, rule E9 returns the transaction with the precondition named — which approval, to which spender, for how much — and says plainly that the route itself was not simulated. Withholding on this would withhold every wallet's first swap, since a wallet cannot approve a router it was never handed.
The output amountNot decoded on the keyless EVM lane. A router's return data is usually not a plain output amount, and printing “output not simulated” beats printing a number decoded by guessing at an ABI.

How this was answered

simulateSwap() in lib/swap/simulate.ts and decideOnSimulation() in lib/swap/execute.ts: the four lanes, the two refusal rules (E4, E7) and the one precondition (E9) that is deliberately not a refusal.

Every answer on this page is produced by one named function over Sato Hub's live records on the date shown. Nothing is typed by hand, no figure is carried over from a previous day, and an answer with nothing behind it says unknown rather than zero. The Sato Score measures how open, active and verifiable a project is — it is not a safety, quality or returns grade.

Go deeper

More questions

Sources — the projects' own repositories and docs

Cite this page

Sato Hub. "What happens when Sato Swap simulates a transaction?." Sato Hub, updated 2026-09-15, accessed 2026-09-16. https://satohub.ai/answers/what-happens-when-sato-swap-simulates-a-transaction

Data last refreshed 2026-09-15; this page is rebuilt daily. Citations carry the date so a reader can tell which snapshot a claim came from. Catalog data is licensed CC-BY-4.0 and the machine-readable copy is linked in the page's Dataset metadata.