# Transaction simulation: useful rehearsal with an uncertain future

Ethereum transaction simulation executes a proposed call against a selected state without publishing its effects to the chain. It can expose reverts, return values and, with tracing, likely asset changes. The result depends on the simulated sender, inputs, state and environment; later execution can differ.

Evidence: [Ethereum JSON-RPC](https://ethereum.org/en/developers/docs/apis/json-rpc/); [Geth built-in tracers](https://geth.ethereum.org/docs/developers/evm-tracing/built-in-tracers)

Canonical: https://degreesofsatoshi.com/encyclopedia/ethereum-transaction-simulation/
Published: 2026-10-02
Substantively modified: 2026-10-02
Independently verified by an automated reviewer: 2026-10-02T18:12:41.505Z
Data current through: 2026-10-02

AI-assisted research and drafting with a separate automated source-verification pass; no external expert or named human review is implied.

## Key facts

- **No publication:** eth_call executes without creating a blockchain transaction. ([Ethereum JSON-RPC](https://ethereum.org/en/developers/docs/apis/json-rpc/))
- **State:** The block parameter selects the state context for the call. ([Ethereum JSON-RPC](https://ethereum.org/en/developers/docs/apis/json-rpc/))
- **Estimate:** eth_estimateGas is an estimate, not a reserved execution allowance. ([Ethereum JSON-RPC](https://ethereum.org/en/developers/docs/apis/json-rpc/))

## Simulate the transaction you actually intend to sign

The destination, sender, value, calldata and gas context can change the result. A simulation using a different sender can miss an authorization failure or model a different balance.

Record the chain and block reference alongside the result. “Simulation succeeded” without its inputs or state is hard to reproduce.

Evidence: [Ethereum JSON-RPC](https://ethereum.org/en/developers/docs/apis/json-rpc/)

## A trace can reveal more than a return value

Tracing can show nested calls, errors and state differences depending on the tracer used. These details help explain approvals, token movements and interactions hidden behind a short method label.

A decoder still needs the correct contract and asset context. A simulated event with a familiar name is not proof that its emitter is a genuine token.

Evidence: [Geth built-in tracers](https://geth.ethereum.org/docs/developers/evm-tracing/built-in-tracers)

## The next block may have different conditions

Balances, allowances, prices, contract configuration and transaction ordering can change between simulation and inclusion. A pending-state simulation also depends on the node’s available pending transactions.

Use enforced limits such as minimum output and deadlines where the application supports them. A preview is evidence about a modeled execution, not a replacement for on-chain conditions.

Evidence: [Ethereum JSON-RPC](https://ethereum.org/en/developers/docs/apis/json-rpc/); [Fee market change for ETH 1.0 chain](https://eips.ethereum.org/EIPS/eip-1559)

## Questions

### Does simulation spend gas from my wallet?

An eth_call does not publish a transaction or debit an on-chain gas fee. The eventual signed transaction, if included, has its own execution and fee outcome.

Evidence: [Ethereum JSON-RPC](https://ethereum.org/en/developers/docs/apis/json-rpc/)

## Claims and scope

### ethereum-transaction-simulation-quick-answer

Ethereum transaction simulation executes a proposed call against a selected state without publishing its effects to the chain. It can expose reverts, return values and, with tracing, likely asset changes. The result depends on the simulated sender, inputs, state and environment; later execution can differ.

Scope: {"collection":"ethereum","dataAsOf":"2026-10-02","blockHeight":null}

### ethereum-transaction-simulation-fact-no-publication

No publication: eth_call executes without creating a blockchain transaction.

Scope: {"collection":"ethereum","dataAsOf":"2026-10-02","blockHeight":null}

### ethereum-transaction-simulation-fact-state

State: The block parameter selects the state context for the call.

Scope: {"collection":"ethereum","dataAsOf":"2026-10-02","blockHeight":null}

### ethereum-transaction-simulation-fact-estimate

Estimate: eth_estimateGas is an estimate, not a reserved execution allowance.

Scope: {"collection":"ethereum","dataAsOf":"2026-10-02","blockHeight":null}

## Sources

- [Ethereum JSON-RPC](https://ethereum.org/en/developers/docs/apis/json-rpc/) — ethereum.org contributors. RPC response fields, transaction receipts, call simulation and log filtering. Locator: eth_getTransactionByHash; eth_getTransactionReceipt; eth_call; eth_getLogs; eth_getCode; eth_estimateGas; eth_getBalance; eth_getStorageAt; eth_getTransactionCount; default block parameter. Retrieved: 2026-10-02T17:03:42.060Z.
- [Geth built-in tracers](https://geth.ethereum.org/docs/developers/evm-tracing/built-in-tracers) — Go Ethereum. Nested EVM call traces and the distinction between tracing and top-level transactions. Locator: callTracer; prestateTracer. Retrieved: 2026-10-02T17:25:58.908Z.
- [Fee market change for ETH 1.0 chain](https://eips.ethereum.org/EIPS/eip-1559) — Ethereum Improvement Proposals. Base fees, fee caps, priority fees and effective transaction gas price. Locator: Specification. Retrieved: 2026-10-02T17:03:42.151Z.

## Revision history

- 2026-10-02: First publication after primary-source research and independent automated verification.

## Cite this entry

Degrees of Satoshi editorial project. “Transaction simulation: useful rehearsal with an uncertain future.” Published 2026-10-02; updated 2026-10-02. https://degreesofsatoshi.com/encyclopedia/ethereum-transaction-simulation/
