[ethresear.ch] [Security] ERC draft: Independent Simulation Result for (STVA)
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.