> ## Documentation Index
> Fetch the complete documentation index at: https://docs.base.org/llms.txt
> Use this file to discover all available pages before exploring further.

# eth_simulateV1

> Simulates one or more transaction bundles against the current pre-confirmed Flashblock state. Only available on Flashblocks endpoints.

Simulates one or more transaction bundles against the current pre-confirmed Flashblock state. Supports state overrides, multi-block simulation, and optional transfer tracing.

<Info>
  Only available on Flashblocks endpoints: `https://mainnet.base.org` / `https://sepolia.base.org`.
</Info>

## Parameters

<ParamField body="simulationPayload" type="object" required>
  The simulation configuration.

  <Expandable title="Simulation payload fields">
    <ParamField body="blockStateCalls" type="array" required>
      Array of block state call objects. Each object represents one simulated block.

      <Expandable title="Block state call fields">
        <ParamField body="calls" type="array">
          Array of transaction call objects to simulate within this block.
        </ParamField>

        <ParamField body="stateOverrides" type="object">
          Per-address state overrides applied before simulation (e.g., balance, nonce, code, storage). Optional.
        </ParamField>

        <ParamField body="blockOverrides" type="object">
          Block-level overrides (e.g., `number`, `timestamp`). Optional.
        </ParamField>
      </Expandable>
    </ParamField>

    <ParamField body="traceTransfers" type="boolean">
      If `true`, ETH transfer events are included as logs in the result. Defaults to `false`.
    </ParamField>

    <ParamField body="validation" type="boolean">
      If `true`, transaction validation (nonce, balance) is enforced. Defaults to `false`.
    </ParamField>
  </Expandable>
</ParamField>

<ParamField body="blockParameter" type="string" required>
  Use `"pending"` to simulate against the current Flashblock state.
</ParamField>

## Returns

<ResponseField name="result" type="array">
  Array of simulated block results, one per entry in `blockStateCalls`. Each entry is a full block object with a `calls` field embedded alongside standard block fields.

  <Expandable title="Block result fields">
    <ResponseField name="number" type="string">Simulated block number (hex).</ResponseField>
    <ResponseField name="hash" type="string">Simulated block hash.</ResponseField>
    <ResponseField name="parentHash" type="string">Parent block hash.</ResponseField>
    <ResponseField name="timestamp" type="string">Block timestamp (hex).</ResponseField>
    <ResponseField name="gasLimit" type="string">Gas limit (hex).</ResponseField>
    <ResponseField name="gasUsed" type="string">Total gas used by the simulated calls (hex).</ResponseField>
    <ResponseField name="baseFeePerGas" type="string">Base fee per gas (hex).</ResponseField>
    <ResponseField name="stateRoot" type="string">Always `"0x000...000"` — simulation does not commit state to the trie.</ResponseField>

    <ResponseField name="calls" type="array">
      Array of individual call results.

      <Expandable title="Call result fields">
        <ResponseField name="status" type="string">`"0x1"` for success, `"0x0"` for failure.</ResponseField>
        <ResponseField name="gasUsed" type="string">Gas used as a hexadecimal integer.</ResponseField>
        <ResponseField name="returnData" type="string">Hex-encoded return data.</ResponseField>
        <ResponseField name="logs" type="array">Logs emitted (including ETH transfer logs if `traceTransfers` is `true`).</ResponseField>
        <ResponseField name="error" type="string">Revert reason if the call failed. Optional.</ResponseField>
      </Expandable>
    </ResponseField>
  </Expandable>
</ResponseField>

## Example

<CodeGroup>
  ```bash cURL theme={null}
  curl https://sepolia.base.org \
    -X POST \
    -H "Content-Type: application/json" \
    -d '{
      "jsonrpc": "2.0",
      "method": "eth_simulateV1",
      "params": [
        {
          "blockStateCalls": [
            {
              "calls": [{"to": "0x...", "data": "0x..."}],
              "stateOverrides": {}
            }
          ],
          "traceTransfers": true,
          "validation": true
        },
        "pending"
      ],
      "id": 1
    }'
  ```

  ```json Response theme={null}
  {
    "jsonrpc": "2.0",
    "id": 1,
    "result": [
      {
        "baseFeePerGas": "0x0",
        "blobGasUsed": "0x39d0",
        "calls": [
          {
            "gasUsed": "0x5208",
            "logs": [],
            "returnData": "0x",
            "status": "0x1"
          }
        ],
        "difficulty": "0x0",
        "excessBlobGas": "0x0",
        "extraData": "0x01000000640000000500000000004c4b40",
        "gasLimit": "0x17d78400",
        "gasUsed": "0x5208",
        "hash": "0x2f2f692821995e39653f63164b2d5d0e0bba66c86c2a199fd3009c0b9906c7b0",
        "logsBloom": "0x000...000",
        "miner": "0x4200000000000000000000000000000000000011",
        "mixHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
        "nonce": "0x0000000000000000",
        "number": "0x2c31c49",
        "parentBeaconBlockRoot": "0x64e625f8bc74f78539f962aa09d522c63576ff6ad57170c668882d99e669ef52",
        "parentHash": "0x9653660afa4fca3976a21d42ebf849c337e9840993f050fee3affc673a573bf8",
        "receiptsRoot": "0xf78dfb743fbd92ade140711c8bbc542b5e307f0ab7984eff35d751969fe57efa",
        "requestsHash": "0xe3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
        "sha3Uncles": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
        "size": "0x2a6",
        "stateRoot": "0x0000000000000000000000000000000000000000000000000000000000000000",
        "timestamp": "0x6a10957f",
        "transactions": [
          "0xa401668a06b038c488c1abc013676dfe63fc645d182ece34d8b3f40f45689279"
        ],
        "transactionsRoot": "0x0b1328c457d7a8108ea9f2559142890491b680fdb691720b3d0c857c3d11002c",
        "uncles": [],
        "withdrawals": [],
        "withdrawalsRoot": "0x0000000000000000000000000000000000000000000000000000000000000000"
      }
    ]
  }
  ```
</CodeGroup>
