Make EVM state and execution queryable.

Run smart contract calls against real or modified blockchain state.

Each simulation runs in the Ethereum Virtual Machine (EVM). Analyze its inputs, result, state changes, and execution evidence as queryable tables.

1 ETH baseline

$2,403.50 / ETH

32 ETH selected

$2,385.60 / ETH

Impact vs 1 ETH

74.5 bps

Price impact by trade size

Each bar is one independent simulation. Impact is how far its average price falls below the 1 ETH result.

Price impact versus the 1 ETH result across 32 trade sizesEach bar shows how far the average execution price falls below the 1 ETH simulation at the same finalized state, in basis points. Use Left, Right, Home, and End to select a trade size.

Selected input

32 ETH

Observed output

76,339 USDC

Execution gas

130,153

Execution status

SUCCESS

Succeeded

Saved resultEvidence complete
Execution ID

Net effect

  • Simulated sender · ETH balanceΔ −32 ETH
  • Simulated sender · USDC balanceΔ +76,339.129571 USDC

Program call

SenderSimulated senderTargetRouter02

Native value sent

Chain
Ethereum Mainnet
Chain ID
Block
Block hash
Steps
Total EVM execution gas
Transaction gas estimate
Gas status
Complete Program

Candidate key

  1. #0balanceSimulated starting balanceexact trade size funded

These overrides define the simulated world. They are inputs to this execution, not observations of upstream chain truth.

  • · ETH balance

  • · USDC

  • Native call valuecommitted

    Router02 WETH

    ETH · exact native base-unit claim · frame · log

  • Native call valuecommitted

    Simulated sender Router02

    ETH · exact native base-unit claim · frame · log

  • Decoded logcommitted

    Router02 Uniswap V2 Pair

    WETH · · frame · log

  • Decoded logcommitted

    Uniswap V2 Pair Simulated sender

    USDC · · frame · log

Step execute_callRouter02SUCCESS

fromSimulated sender· Native value sent· Total EVM execution gas· Transaction gas estimate

  1. callRouter02.swapExactETHForTokens
    SUCCEEDED
    Inclusive frame gasfrom Simulated senderFrame message value

    1. callUniswap V2 Pair.getReserves
      SUCCEEDED
      Inclusive frame gasfrom Router02Frame message value

    2. callWETH.deposit
      SUCCEEDED
      Inclusive frame gasfrom Router02Frame message value

    3. callWETH.transfer
      SUCCEEDED
      Inclusive frame gasfrom Router02Frame message value

    4. callUniswap V2 Pair.swap
      SUCCEEDED
      Inclusive frame gasfrom Router02Frame message value

      1. callUSDC.transfer
        SUCCEEDED
        Inclusive frame gasfrom Uniswap V2 PairFrame message value

        1. delegatecallUSDC.transfer
          SUCCEEDED
          Inclusive frame gasfrom Uniswap V2 Pairvia USDC implementationFrame message value

      2. callUSDC.balanceOf
        SUCCEEDED
        Inclusive frame gasfrom Uniswap V2 PairFrame message value

        1. delegatecallUSDC.balanceOf
          SUCCEEDED
          Inclusive frame gasfrom Uniswap V2 Pairvia USDC implementationFrame message value

      3. callWETH.balanceOf
        SUCCEEDED
        Inclusive frame gasfrom Uniswap V2 PairFrame message value

WITH anchor AS (
  SELECT pin($client, 'finalized') AS client
),
executions AS (
  SELECT
    e.execution_id,
    e.candidate_key,
    e.status
  FROM run((
    SELECT
      a.client,
      amount_in_raw::VARCHAR AS candidate_key,
      program(
        [assume_native_balance($sender, amount_in_raw, 'exact trade size funded')],
        [execute_contract(
          $sender,
          $router,
          amount_in_raw,
          500000, -- Simulation ceiling; this is not a transaction gas limit.
          $router_abi,
          'swapExactETHForTokens',
          0,
          [$weth, $usdc],
          $sender,
          9999999999 -- Far-future deadline for simulation only; never broadcast.
        )]
      ) AS program,
      [
        observation_fact($sender, 'Simulated sender'),
        observation_fact($router, 'Router02'),
        observation_fact($usdc, 'USDC'),
        observe('ETH', native_balance($sender)),
        observe('USDC', read_contract($usdc, $erc20_abi, 'balanceOf', $sender))
      ] AS observations
    FROM (
      SELECT
        candidate_index * $trade_size_step_wei AS amount_in_raw
      FROM range(1, 33) AS sizes(candidate_index)
    )
    CROSS JOIN anchor AS a
  )) AS e
)
SELECT
  format_ether(r.candidate_key::UINT256) AS amount_in_eth,
  format_units(o.delta_magnitude, 6) AS amount_out_usdc,
  format_units(
    muldiv(
      o.delta_magnitude,
      parse_ether('1'),
      r.candidate_key::UINT256
    ),
    6
  ) AS average_price_usdc_per_eth,
  execution_evidence(r.execution_id) AS execution_evidence
FROM executions AS r
LEFT JOIN evm.execution_observation_pairs AS o
  ON o.execution_id = r.execution_id
 AND o.observation_key = 'USDC'
 AND r.status = 'success'
 AND o.delta > 0::INT512
ORDER BY r.candidate_key::UINT256;
#
amount_in_ethVARCHAR
amount_out_usdcVARCHAR
average_price_usdc_per_ethVARCHAR
execution_evidenceEXECUTION_EVIDENCE
1
1
2403.501788
2403.501788
2
2
4805.840093
2402.920046
3
3
7207.015759
2402.338586
4
4
9607.02963
2401.757407
5
5
12005.882549
2401.176509
6
6
14403.575358
2400.595893
7
7
16800.108899
2400.015557
8
8
19195.484011
2399.435501

Compare 12 monthly quotes with one quote for the same total input.

Run a set of quotes against historical Ethereum blocks, then filter, aggregate, or join the returned rows in the notebook.

Monthly quotes
1.04291 WETH
12 × 200 USDC · Nov ’25–Oct ’26
Day-one quote
0.62330 WETH
2,400 USDC · Nov 1, 2025
Quote difference
+0.41962 WETH
+67.3% versus day one

This compares historical quote outputs, not actual trades. Gas costs are not included.

WETH quoted each month

WETH quoted each monthA zero-baseline bar chart of the WETH returned by each historical monthly USDC quote.

Monthly quotes overtake the day-one quote in Jun ’26

Monthly total1.04291 WETHDay-one quote0.62330 WETH
Monthly quotes overtake the day-one quote in Jun ’26The solid line shows cumulative WETH from the monthly quotes. The dashed horizontal line shows the complete day-one quote for the same total USDC input. The highlighted point marks the first observed date when the monthly total exceeds it.

Working on an EVM execution or analysis workflow?

Tell me how you handle it today.

hello@determica.com