mailwal

[ethresear.ch] [Security] ERC draft: Independent Simulation Result for (STVA)

OBA research
MATOBOYCRYPTO65
October 30

Description:

A canonical, content-addressed structure that any independent party (wallet, hardware device, second machine, third-party verifier) can produce and re-verify from the exact same VerificationPayload + state snapshot.

It turns simulation from a trusted frontend service into a reproducible, machine-checkable artifact that can be bound into signatures and Scoped Capability Tokens.

Natural continuity with capability tokens (bind the result hash) and authority lifecycle (simulation is required before high-privilege authority transitions).

author: @MATOBOYCRYPTO65

discussions-to: ERC draft: Independent Simulation Result for (STVA) - ERCs - Fellowship of Ethereum Magicians

status: Draft

type: Standards Track

category: ERC

created: 2026-10-30

Abstract:

Standardizes the format, hashing, and verification of simulation results so that any compliant simulator produces identical canonical output for the same inputs. Enables “recompute on a component the UI does not control.”

Motivation:

A simulation served by a compromised frontend is worthless. Independence + canonicity closes the UI/calldata mismatch class of attacks.

Specification:

Inputs: full preimage of the transaction UserOperation SafeTx (including all fields that enter the hash), block/state root or Merkle proofs of relevant state, optional overrides.

Output (SimulationResult):

success (bool)

gasUsed

returnData logs (canonical encoding)

stateDiff (or hash of stateDiff)

balanceChanges tokenTransfers (structured)

semanticEffects (optional derived summary, preferably recomputed via ERC-7730-style descriptors)

snapshotId (block number + state root)

simulatorId version

Canonical hash: keccak256(abi.encode(SimulationResult)) or a domain-separated EIP-712 hash.

Requirement: hardware offline verifier MUST be able to re-execute (or re-verify proofs) and reject on mismatch.

Compliance: Basic (any simulator), Standard (multi-node consensus on state root), Strict (local revm/EVM execution + Merkle proofs of prestate).

Reference:

struct SimulationResult

bool success;

uint256 gasUsed;

bytes returnData;

bytes32 stateDiffHash;

bytes32 logsHash;

bytes32 snapshotId; blockHash or stateRoot

bytes32 resultHash; self-describing canonical hash

string derivedSummary; optional, claimed or recomputed

Discussion points:

Exact stateDiff encoding (full vs. hash-only for size).

Required prestate proofs vs. trusted RPC with multi-node consensus.

How tightly to bind into the VerificationPayload and capabilities.

Looking forward to feedbacks


Visit Topic to respond.

You are receiving this because you enabled mailing list mode.