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

<AgentInstructions>

## Submitting Feedback

If you encounter incorrect, outdated, or confusing documentation on this page, submit feedback:

POST https://docs.chainstack.com/feedback

```json
{
  "path": "/reference/ethereum-simulatev1",
  "feedback": "Description of the issue"
}
```

Only submit feedback when you have something specific and actionable to report.

</AgentInstructions>

# eth_simulateV1 | Ethereum

Ethereum API method that enables simulation of complex transactions and state changes without modifying the blockchain. This method is particularly useful for testing and debugging smart contracts, estimating gas costs, and analyzing the potential outcomes of transactions before committing them to the network.

<Warning>
  **Data from full node only**

  Running `eth_simulateV1` will yield a full node response—i.e. only the data from the latest 128 blocks. Archive data is not supported for this call and the node will respond with `missing trie node`.
</Warning>

<Check>
  **Get your own node endpoint today**

  [Start for free](https://console.chainstack.com/) and get your app to production levels immediately. No credit card required.

  You can sign up with your GitHub, X, Google, or Microsoft account.
</Check>

## Parameters

* `object` — the simulation request object:
  * `blockStateCalls` — an array of block state call objects:
    * `blockOverrides` — (optional) an object to override block-level parameters:
      * `baseFeePerGas` — (optional) the base fee per gas for the block, encoded as hexadecimal.
    * `stateOverrides` — (optional) an object to override account states:
      * `<address>` — the address of the account to override:
        * `balance` — (optional) the balance to set for the account, encoded as hexadecimal.
    * `calls` — an array of transaction call objects:
      * `from` — the address from which the transaction is sent.
      * `to` — the address to which the transaction is directed.
      * `maxFeePerGas` — (optional) the maximum fee per gas the sender is willing to pay.
      * `value` — (optional) the value sent with the transaction, encoded as hexadecimal.
  * `validation` — (optional) a boolean indicating whether to perform validation checks.
  * `traceTransfers` — (optional) a boolean indicating whether to trace value transfers.
* `quantity or tag` — the integer block number, or the string `"latest"`, `"earliest"` or `"pending"`.

## Response

* `object` — the simulation result:
  * `blockResults` — an array of block result objects:
    * `blockNumber` — the block number of the simulated block.
    * `blockHash` — the hash of the simulated block.
    * `stateRoot` — the state root of the simulated block.
    * `receipts` — an array of transaction receipt objects for each simulated transaction.
  * `traces` — (if `traceTransfers` is true) an array of transfer trace objects.

## Use case

`eth_simulateV1` is particularly useful for developers working on complex smart contracts or DApps. It allows for the simulation of intricate transaction sequences, including multiple contract interactions and state changes, without the need to deploy contracts or spend real gas. This can be invaluable for:

* Debugging complex smart contract interactions
* Estimating gas costs for multi-step transactions
* Analyzing the potential outcomes of different transaction scenarios
* Testing contract upgrades or migrations before deployment


## OpenAPI

````yaml /openapi/ethereum_node_api/execute_transactions/eth_simulateV1.json POST /2f6d649e68c2f861fecd5b8a9e35139e
openapi: 3.0.0
info:
  title: eth_simulateV1 API
  version: 1.0.0
  description: API for simulating Ethereum transactions
servers:
  - url: https://ethereum-mainnet.core.chainstack.com
security: []
paths:
  /2f6d649e68c2f861fecd5b8a9e35139e:
    post:
      summary: eth_simulateV1
      operationId: simulateV1
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                jsonrpc:
                  type: string
                  default: '2.0'
                id:
                  type: integer
                  default: 1
                method:
                  type: string
                  default: eth_simulateV1
                params:
                  type: array
                  default:
                    - blockStateCalls:
                        - blockOverrides:
                            baseFeePerGas: '0x9'
                          stateOverrides:
                            '0xc000000000000000000000000000000000000000':
                              balance: '0x4a817c800'
                          calls:
                            - from: '0xc000000000000000000000000000000000000000'
                              to: '0xc000000000000000000000000000000000000001'
                              maxFeePerGas: '0xf'
                              value: '0x1'
                            - from: '0xc000000000000000000000000000000000000000'
                              to: '0xc000000000000000000000000000000000000002'
                              maxFeePerGas: '0xf'
                              value: '0x1'
                      validation: true
                      traceTransfers: true
                    - latest
                  items:
                    oneOf:
                      - type: object
                        properties:
                          blockStateCalls:
                            type: array
                            items:
                              type: object
                              properties:
                                blockOverrides:
                                  type: object
                                  properties:
                                    baseFeePerGas:
                                      type: string
                                stateOverrides:
                                  type: object
                                  additionalProperties:
                                    type: object
                                    properties:
                                      balance:
                                        type: string
                                calls:
                                  type: array
                                  items:
                                    type: object
                                    properties:
                                      from:
                                        type: string
                                      to:
                                        type: string
                                      maxFeePerGas:
                                        type: string
                                      value:
                                        type: string
                          validation:
                            type: boolean
                          traceTransfers:
                            type: boolean
                      - type: string
              required:
                - jsonrpc
                - id
                - method
                - params
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
                properties:
                  jsonrpc:
                    type: string
                  id:
                    type: integer
                  result:
                    type: object

````