For the complete documentation index, see llms.txt. This page is also available as Markdown.

eth_simulateV1 - GIWA

Example code for the eth_simulateV1 JSON-RPC method. Complete guide on how to use eth_simulateV1 JSON-RPC in GetBlock Web3 documentation.

This method simulates one or more blocks of transactions against a base block, returning the resulting state changes, return values, and logs. It is used to preview multi-step interactions before broadcasting.

Parameters

Parameter
Type
Required
Description

payload

object

Yes

Simulation payload with blockStateCalls and options

blockParameter

string

Yes

Base block in hex, or "latest", "pending"

Payload Object

Field
Type
Required
Description

blockStateCalls

array

Yes

Array of block objects each containing calls and optional state overrides

validation

boolean

No

Whether to run full validation on each call

traceTransfers

boolean

No

Whether to emit synthetic transfer logs

Request

curl --location --request POST 'https://shared.ap-southeast-1.getblock.io/<ACCESS-TOKEN>/' \
--header 'Content-Type: application/json' \
--data-raw '{
    "jsonrpc": "2.0",
    "method": "eth_simulateV1",
    "params": [{ "blockStateCalls": [{ "calls": [{ "from": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045", "to": "0x4200000000000000000000000000000000000006", "data": "0x70a08231000000000000000000000000d8da6bf26964af9d7eed9e03e53415d37aa96045" }] }], "validation": true, "traceTransfers": true }, "latest"],
    "id": "getblock.io"
}'
example.js
const axios = require('axios');

const response = await axios.post('https://shared.ap-southeast-1.getblock.io/<ACCESS-TOKEN>/', {
    jsonrpc: '2.0',
    method: 'eth_simulateV1',
    params: [{ blockStateCalls: [{ calls: [{ from: '0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045', to: '0x4200000000000000000000000000000000000006', data: '0x70a08231000000000000000000000000d8da6bf26964af9d7eed9e03e53415d37aa96045' }] }], validation: true, traceTransfers: true }, 'latest'],
    id: 'getblock.io'
}, {
    headers: { 'Content-Type': 'application/json' }
});

console.log(response.data.result);
example.py
import requests

response = requests.post(
    'https://shared.ap-southeast-1.getblock.io/<ACCESS-TOKEN>/',
    headers={'Content-Type': 'application/json'},
    json={
        'jsonrpc': '2.0',
        'method': 'eth_simulateV1',
        'params': [{ 'blockStateCalls': [{ 'calls': [{ 'from': '0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045', 'to': '0x4200000000000000000000000000000000000006', 'data': '0x70a08231000000000000000000000000d8da6bf26964af9d7eed9e03e53415d37aa96045' }] }], 'validation': True, 'traceTransfers': True }, 'latest'],
        'id': 'getblock.io'
    }
)

print(response.json())

Response

Response Parameters

Parameter
Type
Description

jsonrpc

string

JSON-RPC protocol version ("2.0")

id

string

Request identifier matching the request

result

array

Per-simulated-block results with call outcomes

Use Cases

  • Bundle Preview: Simulate a sequence of calls to preview outcomes

  • State Overrides: Test calls against modified balances or storage

  • Transfer Tracing: Capture synthetic transfer logs for value flows

  • dApp Safety: Warn users about failing or unexpected results before signing

Error Handling

Error Code
Message
Description

-32602

Invalid params

Malformed simulation payload

-32000

Execution error

A simulated call failed during execution

Web3 Integration

Last updated

Was this helpful?