Skip to content

Ethereum method

eth_call

Executes a contract call against the current state without creating a transaction.

moderateModerate: reads state or executes code, but over a bounded range.Primary specification (opens in a new tab)

How each provider handles it

This method has not been measured in this window.

It is scheduled but no observation has landed yet.

What it does

This runs EVM bytecode. The node loads the contract, executes the call in a sandbox against the state at the requested block, and returns whatever the function returns — all without touching the mempool, spending gas, or changing anything.

It is the workhorse of every dapp read path. Token balances, pool reserves, oracle prices and allowance checks are all `eth_call` underneath, which makes its latency the single biggest contributor to how fast an application feels.

Parameters

transactionObjectrequired
The call. to is required; from, gas, gasPrice, value and input are optional.
blockQUANTITY | TAGrequired
A block number in hex, or one of latest, earliest, pending, safe, finalized.Default: none — most clients accept latest, but the parameter is not optional in the specification and some providers reject the call without it

Returns

DATA — the ABI-encoded return value, as hex.

Try it

Runnable as written, against a keyless public endpoint. Nothing here needs an API key.

Request

curl -s https://ethereum-rpc.publicnode.com \
  -H 'content-type: application/json' \
  -d '{"jsonrpc":"2.0","method":"eth_call","params":[{"to":"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48","input":"0x70a0823100000000000000000000000028c6c06298d514db089934071355e5743bf21d60"},"latest"],"id":1}'

As JSON-RPC

{
  "jsonrpc": "2.0",
  "method": "eth_call",
  "params": [
    {
      "to": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
      "input": "0x70a0823100000000000000000000000028c6c06298d514db089934071355e5743bf21d60"
    },
    "latest"
  ],
  "id": 1
}

Response

{
  "id": 1,
  "jsonrpc": "2.0",
  "result": "0x0000000000000000000000000000000000000000000000000000004a817c8000"
}

Things that bite

  • The input above is balanceOf(address) — selector 0x70a08231 followed by the address left-padded to 32 bytes. Every ABI-encoded call has this shape.
  • A revert comes back as a JSON-RPC error, not as an empty result. Providers differ in how much of the revert reason they return, and some return none at all.
  • input replaced data in the specification. Most nodes still accept data, but not all, and the ones that do not fail in a way that reads like the contract is missing.

Why it is measured

It is the only method here that exercises the execution path rather than a plain lookup. A provider can be fast at reading state and slow at running it, and nothing else on this platform would show that.

Called every 120 seconds per endpoint, with jitter so the fleet does not hit a provider in lockstep.

24h window · generated 2026-08-24 15:47:13 UTC · 0 providers