Skip to content

Back to the catalog

ERC draft: Independent Simulation Result for (STVA)
ethresear.chthread

ERC draft: Independent Simulation Result for (STVA)

ERC draft "Independent Simulation Result" (STVA) defines a canonical, content-addressed SimulationResult (success, gasUsed, returnData, stateDiffHash, logsHash, snapshotId, resultHash) that any wallet, hardware device or verifier can recompute from the same VerificationPayload and state snapshot. It targets compromised-frontend and UI/calldata-mismatch attacks, and defines Basic, Standard and Strict compliance levels. Open questions are stateDiff encoding, prestate proofs and binding to capability tokens.

TL;DR Proposes a standard hashed simulation result that hardware wallets and verifiers can re-execute independently to reject blind-signing mismatches.
Document

What it is

ERC draft "Independent Simulation Result" (Standards Track, status Draft, created 30 October 2026) is posted by @MATOBOYCRYPTO65 on ethresear.ch for the STVA proposal. It standardizes how a transaction simulation is encoded and hashed, so a wallet, hardware device, second machine or third-party verifier can recompute the same result from the same inputs. The stated aim is to close the UI/calldata mismatch class of attacks, since a simulation served by a compromised frontend is worthless.

How it works

Inputs are the full preimage of the transaction (UserOperation or SafeTx, including every field that enters the hash), a block/state root or Merkle proofs of the relevant state, and optional overrides.

The output is a SimulationResult. The reference struct has success, gasUsed, returnData, stateDiffHash, logsHash, snapshotId (block hash or state root), resultHash and an optional derivedSummary. The prose spec also lists structured balanceChanges and tokenTransfers, simulatorId/version, and semanticEffects, preferably recomputed from ERC-7730-style descriptors. These are not in the reference struct.

The canonical hash is either keccak256(abi.encode(SimulationResult)) or a domain-separated EIP-712 hash. The draft does not pick one. The result hash is meant to be bound into signatures and Scoped Capability Tokens, and simulation is meant to be required before high-privilege authority transitions.

What to do

The compliance levels are the part an implementer can act on:

  • Basic: any simulator.
  • Standard: multi-node consensus on the state root.
  • Strict: local revm/EVM execution plus Merkle proofs of prestate.

One normative requirement is stated: a hardware offline verifier MUST be able to re-execute, or re-verify proofs, and reject on mismatch.

Caveats

  • The draft is early and asks for feedback. It gives no test vectors, no encoding rules for stateDiff, and no reference implementation.
  • Open points are full versus hash-only stateDiff (size trade-off), required prestate proofs versus a trusted RPC with multi-node consensus, and how tightly to bind the result into the VerificationPayload and capabilities.
  • Basic compliance accepts any simulator, so it adds no independence by itself. The page does not say how a verifier treats derivedSummary when it is only claimed and not recomputed.

Technologies named here

  • revm
  • Ethereum
  • Safe
  • ERC-7730 descriptors

Standards and laws named here

  • EIP-712
  • ERC-4337
  • ERC-7730

Techniques named here

  • Blind signing
  • Domain-separated EIP-712 hashing
  • Independent transaction simulation
  • Merkle proofs of prestate
  • Multi-node consensus on state root
  • UI/calldata mismatch

Concepts named here

  • Authority lifecycle
  • Canonical, content-addressed simulation result
  • Compliance levels
  • Scoped Capability Tokens
  • UI/calldata mismatch attacks