Skip to main content

Transaction Simulation Tools Compared: Test Before You Sign

Transaction simulation tools compared: Tenderly, Alchemy, Foundry Anvil, and Sauce simulate. What each shows, what simulation cannot guarantee, and how to close the gap.

Written by Eco
Transaction Simulation Tools Compared: Test Before You Sign

Transaction simulation is running a blockchain transaction against real chain state without broadcasting it, so a developer or agent can see balance changes, gas, and revert reasons before signing. Tools such as the Tenderly Simulator, Alchemy's simulation methods, and Foundry's Anvil fork all do this. Simulation shows what would happen at one block; it does not promise the same result at the block where the transaction actually lands.
​

This comparison scores four tools on the criteria that matter when the transaction moves real money: what state the simulation runs against, what it reports, whether it needs keys or funds, and whether it can test multi-step bundles. It then covers the gap every simulator shares and the in-transaction checks that close it. The four tools are Tenderly, Alchemy's Transact namespace, Foundry Anvil, and the sauce simulate command from Eco's Sauce SDK.
​

Key facts at a glance:

  • Alchemy's SDK exposes 3 simulation methods: simulateAssetChanges, simulateAssetChangesBundle, and simulateExecution (Alchemy SDK).

  • Tenderly's result view includes 6 dev-mode tabs: Summary, Contracts, Events, State, Fund Flow, and Gas Profiler (Tenderly docs).

  • Anvil can fork mainnet or any EVM chain at a specific block (Foundry docs).

  • Eco's Sauce SDK, launched October 28 2026, simulates transaction programs with an assumed balance on Ethereum, Base, Arc, and Solana (Eco blog, Sauce docs).

  • EIP-5792 lets an app ask a wallet to run a batch of calls atomically when the wallet supports it, which changes what a pre-sign simulation must cover (EIP-5792).

What Is Transaction Simulation?

Transaction simulation executes a proposed transaction on a copy of current or historical chain state and reports the outcome without sending anything to the network. Results typically include token transfers, state changes, emitted events, gas used, and the revert reason if it fails. Nothing is signed or broadcast, so a failed simulation costs nothing.
​

Two families of tools exist. Hosted simulators, such as Tenderly and Alchemy, run the transaction on their infrastructure against live network state and return structured results. Local forks, such as Foundry's Anvil, copy chain state at a chosen block into a node on the developer's machine, so the developer can send transactions to it as if it were the real network.
​

Simulation is the first line of defense against the classic onchain mistakes: a wrong recipient, an amount off by a factor of a million because of decimals, or an approval left standing. Eco's guide on how to read a blockchain transaction explains the fields a simulation result reports.
​

Transaction Simulation Tools Compared

Tenderly offers a dashboard and bundles with state overrides. Alchemy offers SDK and API methods that return asset changes or decoded traces. Foundry Anvil forks any EVM chain locally at a chosen block. Sauce simulate runs a compiled transaction program with an assumed balance. None of the four needs a funded wallet to run a simulation.
​

Tool

Runs against

Reports

Multi-transaction bundles

Chains

Source

Tenderly Simulator

Live mainnet or testnet state; can override storage, fund addresses, change block context

Decoded output, gas used, events, state changes, token transfers

Yes, stateful bundles

Networks Tenderly supports

Alchemy (Transact namespace)

A chosen block on Alchemy-supported networks

Asset changes (simulateAssetChanges) or decoded traces and logs (simulateExecution)

Yes, simulateAssetChangesBundle

Networks Alchemy supports

Foundry Anvil fork

A local fork of mainnet or any EVM chain at a specific block

Whatever the developer queries: receipts, traces, balances

Yes, send any sequence to the fork

Any EVM-compatible chain

sauce simulate

The chain's current state, with an optional assumed balance

What moved, or why the program reverts

One program can compose many calls in one transaction

Ethereum, Base, Arc, Solana

The table omits pricing on purpose. Plans and limits change often; check each vendor's current pricing page before choosing.
​

How Each Simulation Tool Works

Each tool fits a different stage. Tenderly is strongest for interactive debugging and shareable results, Alchemy for programmatic checks inside an app, Anvil for test suites that need full control of a local chain, and Sauce simulate for transaction programs that compose several calls and must revert as a unit.
​

Tenderly

The Tenderly Simulator docs describe running transactions against live mainnet or testnet state without broadcasting anything. Users can simulate as any sender, override contract storage, fund addresses, and manipulate block context. Results include a gas profiler and call trace, and a simulation can be shared by public link, which helps when a reviewer must approve a transaction.
​

Alchemy

Alchemy's SDK exposes three methods in its Transact namespace: simulateAssetChanges for one transaction's asset changes, simulateAssetChangesBundle for a list simulated in sequence, and simulateExecution for decoded traces and logs. The docs note these methods do not run the transaction on the blockchain. Wallets and apps call them to show users what a transaction will do before a signature prompt.
​

Foundry Anvil

Anvil is Foundry's local Ethereum node. It runs in memory and supports forking from any EVM-compatible chain at a specific block. Because the fork is local, a test suite can impersonate accounts, set balances, and replay the same scenario repeatedly. The cost is setup: someone has to run the node and write the queries.
​

Sauce simulate

Eco's Sauce SDK compiles transaction programs written in SauceScript, a TypeScript subset. Its agent docs describe sauce_simulate running the program from the account owner against the chain's current state, listing what moved or why it reverts. The assumeBalance option gives the account a balance for that simulation only, so testing a 5 USDC payment needs no USDC. The CLI command sauce simulate prints the same outcome.
​

What's the Fastest Way to Ship New DeFi Routing Logic Without Deploying New Contracts?

Write the routing logic as a transaction program, simulate it against current state, then send it with hard bounds such as a minimum output written into the same transaction. This avoids a new contract deployment and audit per change. Simulation catches logic errors; the in-transaction bounds catch price moves between simulation and inclusion.
​

The Sauce launch post describes this loop as Eco's own practice: Sauce powers swap routing behind the Eco Routes API, and new routing and rebalancing logic ships as programs written, tested, and updated without a new custom contract per workflow. A typical cycle has four steps:

  1. Write the route: compare two pools, take the better quote, swap, and require a minimum received amount.

  2. Compile and simulate against the chain's current state with an assumed balance.

  3. Run failure cases on purpose, for example a minimum output above the best quote, and confirm the program reverts.

  4. Build the unsigned transaction and send it with the floor still in place.

Teams that keep routing in contracts can follow the same loop on an Anvil fork, but each logic change then needs a deployment. Eco's guide to how intent networks handle slippage and failure covers how bounds are set in solver-based flows.
​

Why Simulation Alone Is Not Enough

A simulation runs at one block, and the transaction lands in a later one. Prices, balances, and contract state can change in between, so a swap that simulated cleanly can fill worse or revert. Bounds written into the transaction itself, such as a minimum output, are the only checks that hold at the block where it executes.
​

Eco's Sauce security notes state the point plainly: a simulation runs on the chain's state at one block, prices move before the transaction lands, so a swap carries its own bounds, checked inside the program. The same page lists practical rules that apply to any swap, simulated by any tool:

  • minOut is the floor. Never pass 0, which sets no floor.

  • A price limit of 0 means no limit. The minimum output is then the only bound.

  • Policy checks before signing are offchain. A wallet spending policy measured by simulation reflects the chain head a moment before sending, not the inclusion block.

This is why the strongest setups pair a simulator with in-transaction requirements. The simulator answers "is the logic right?" and the requirement answers "is the outcome still acceptable when it executes?"
​

How to Read a Simulation Result Before You Sign

Read a simulation result for intent, not just success. Check the recipient, the amount in the token's smallest unit, every approval the transaction leaves behind, and the minimum output on any swap. A green result means the transaction ran; it does not mean it did what the signer wanted.
​

A five-point review catches most errors that simulators cannot flag on their own:

  1. Recipient. Compare the destination address character by character with the intended one, not just the first and last few characters.

  2. Units. USDC uses 6 decimals, so 1,000,000 base units is 1 USDC, per the Sauce security notes. A transfer of 1 unit moves one millionth of a dollar.

  3. Approvals left standing. An approval made in a successful transaction outlives it. The same Sauce notes recommend approving exactly what the next call spends and checking that the remaining allowance is zero.

  4. Price bounds. A price limit bounds the pool's price after the swap, not the price paid. The Sauce docs note that under one limit, the last unit a 1% fee pool fills costs about 1% more than the limit.

  5. Block. Note which block the simulation used. The Sauce docs state their own examples at a named block on a local fork of Base, block 53,122,981, so a reader can reproduce them.

Tenderly's shareable result links and Alchemy's asset-change output make points 1 to 3 easy to show a second reviewer. For agent workflows, the same review is the human step described in Human Approval for AI Agent Transactions.
​

Where Simulation Tools Fall Short

Simulators share three limits: they model one block, they depend on accurate state and RPC data, and they only check what the developer asks them to show. A clean simulation of the wrong recipient is still a successful transfer to the wrong recipient. Review of intent stays a human or policy job.

  • Stale state. Every tool here, as documented in November 2026, simulates at a point in time. Inclusion happens later.

  • Wrong intent passes. The Sauce docs note that a wrong recipient, an amount in the wrong unit, and a missing check all compile, and a simulation runs them as written.

  • Wallet batches. When a wallet executes an EIP-5792 batch without atomicity, calls may run sequentially with no rollback, so simulate each call and the whole batch (EIP-5792).

  • Cross-transaction effects. A simulated transaction can leave an approval behind that a later transaction uses. Alchemy's bundle method and Tenderly bundles help, but only if the bundle includes the later step.

  • Chain coverage. Sauce simulate covers Ethereum, Base, Arc, and Solana; preview chains compile and may simulate, but transaction building returns a refusal.

FAQ

These are short answers to the questions developers and operators ask most often about transaction simulation tools and what they can verify. Each answer stands on its own and points to the primary documentation used in this article, retrieved in November 2026, for readers who need the full detail.
​

Is transaction simulation free?

Local forks such as Anvil run on the developer's machine. Hosted simulators have their own plans; check current vendor pricing pages.
​

Can I simulate a transaction without a private key?

Yes. Simulation does not sign. Tenderly lets users simulate as any sender, and Sauce simulate takes an owner address and an assumed balance, per the Sauce agent docs.
​

Can I simulate several dependent transactions?

Yes. Tenderly bundles and Alchemy's simulateAssetChangesBundle run transactions in sequence. A transaction program can also compose several calls inside one transaction.
​

Does a successful simulation guarantee the transaction will succeed?

No. State can change before inclusion. Use in-transaction bounds such as a minimum output.
​

Can an AI coding agent run simulations?

Yes, through an MCP server that exposes a simulate tool. See Claude Code vs Cursor vs Codex for onchain development.
​

Sources and Methodology

Retrieved November 9 2026: Tenderly Simulator docs, Alchemy SDK Transact namespace, Foundry Anvil, and Eco's Sauce agent docs, security considerations, and launch post. No tool was benchmarked for this article and no pricing is quoted.
​

Did this answer your question?