# eth\_simulateV1

Simulates one or more transaction bundles against the current preconfirmed Flashblock state.

This method supports state overrides, block overrides, multi-block simulation, and optional ETH transfer tracing.\
\
This method will use `40` [Compute Units](https://docs.validationcloud.io/v1/about/billing).

***

### Parameters:

`params` - array containing:

1. `simulationPayload` — object - required

Configuration object for the simulation.

#### **simulationPayload fields:**

* `blockStateCalls` — array - required\
  Array of block simulation objects. Each represents a simulated block.
* `traceTransfers` — boolean - optional\
  If `true`, ETH transfers are included as logs. Defaults to `false`.
* `validation` — boolean - optional\
  If `true`, applies validation checks such as nonce and balance. Defaults to `false`.

#### **blockStateCalls object fields:**

* `calls` — array\
  List of transaction call objects to simulate
* `stateOverrides` — object - optional\
  Override account state (balance, nonce, code, storage)
* `blockOverrides` — object - optional\
  Override block-level fields (e.g. `number`, `timestamp`, `baseFeePerGas`)

#### **call object fields:**

* `from` — string - optional\
  Sender address
* `to` — string\
  Recipient address
* `maxFeePerGas` — string - optional\
  Max fee per gas (hex)
* `value` — string - optional\
  ETH value sent (hex)
* `data` — string - optional\
  Hex-encoded calldata

2. `blockParameter` — string - required

Block number, hash, or tag.

Use `"pending"` to simulate against the latest Flashblock state.

### Returns:

`array of objects` - simulated block results

Each object represents one simulated block.

#### **Block result fields:**

* `number` — string\
  Block number (hex)
* `hash` — string\
  Block hash
* `gasUsed` — string\
  Total gas used (hex)
* `baseFeePerGas` — string\
  Base fee (hex)
* `calls` — array\
  Results of each simulated call

#### **Call result fields:**

* `status` — string\
  "0x1" = success, "0x0" = failure
* `gasUsed` — string\
  Gas used (hex)
* `returnData` — string\
  Return data (hex)
* `logs` — array\
  Emitted logs (includes transfers if enabled)
* `error` — string\
  Error or revert reason (if failed)

```javascript
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": [
    {
      "number": "0x29442bb",
      "hash": "0xcefc6e6e...",
      "gasUsed": "0x79ce",
      "calls": [
        {
          "returnData": "0x00000000000000000000000000000000000000000000000000000000011420f9",
          "logs": [],
          "gasUsed": "0x79ce",
          "status": "0x1"
        }
      ]
    }
  ]
}
```

### Example Request

{% tabs %}
{% tab title="mainnet" %}

```bash
curl https://mainnet.base.validationcloud.io/v1/<YOUR_API_KEY_HERE> \
  -X POST \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "method": "eth_simulateV1",
    "params": [
      {
        "blockStateCalls": [
          {
            "calls": [
              {
                "from": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
                "to": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
                "data": "0x70a08231000000000000000000000000d8dA6BF26964aF9D7eEd9e03E53415D37aA96045"
              }
            ]
          }
        ],
        "traceTransfers": true,
        "validation": false
      },
      "pending"
    ],
    "id": 1
  }'
```

{% endtab %}

{% tab title="testnet" %}

```bash
curl https://sepolia.base.validationcloud.io/v1/<YOUR_API_KEY_HERE> \
  -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
  }'
```

{% endtab %}
{% endtabs %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.validationcloud.io/v1/base/execution-api/eth_simulatev1.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
