Skip to main content
Shield provides a two-step security model for EVM transactions: simulate to preview outcomes, then validate to verify integrity before signing.

Transaction Flow

Simulate Phase

The simulate endpoint executes your transaction on a forked EVM state at the current block. This produces:
FieldDescription
simulationIdUUID identifying this simulation. Use it with /validate.
result.status"Success" or "Error" — whether the transaction would succeed on-chain.
result.amountOutPredicted output amounts in wei, one per tokenOut address you specified.
result.gasActual gas consumed during the simulation.
result.errorError details when the transaction would revert.
You specify tokenIn, tokenOut, and amountIn to tell Shield which token flows to track during simulation. The simulation metadata is cached for 5 minutes.

Validate Phase

The validate endpoint compares your unsigned transaction against the cached simulation. Each field is checked independently:
CheckWhat It Verifies
chainIdThe chain ID matches the simulation.
dataCalldata matches by hash — detects any modification to the transaction payload.
toTarget contract address matches (case-insensitive).
fromSender address matches (case-insensitive).
valueNative token value (in wei) matches exactly.
The valid field is true only when all individual checks pass. If any check fails, you know exactly which field was modified.

Security Model

The simulate-then-validate pattern prevents a class of attacks where transaction data is modified between the time a user reviews it and the time they sign it:
  1. Frontrunning protection — The simulated amountOut shows what the user will actually receive, not an optimistic estimate.
  2. Calldata integrity — The data field is compared by hash, so any byte-level change to the calldata is detected.
  3. Address verification — Both to and from addresses are validated, preventing contract address substitution attacks.
  4. Value integrity — The native token value is checked to prevent unauthorized ETH transfers.
The 5-minute cache window means market conditions can change between simulation and execution. The amountOut is accurate at the time of simulation but may differ slightly when the transaction is mined. Use slippage protection in your transaction calldata to account for this.

Source Agnostic

Shield does not require transactions to originate from Enso APIs. Any valid EVM transaction calldata can be simulated and validated:
  • DEX aggregators — 0x, Paraswap, Odos
  • DeFi protocols — Aave, Compound, Uniswap, Yearn
  • Custom contracts — Your own smart contract interactions
  • Multisig operations — Gnosis Safe or other multi-signature wallet transactions
  • Smart account operations — ERC-4337 UserOps via operationType: 1 (DelegateCall)
See the Third-Party Transactions guide for detailed examples.

Updated