RPC method

eth_call on X Layer

Supported on SwiftNodes

Everything below was measured on 2026-10-13 by calling eth_call on X Layer through the same endpoint customers use, and is re-measured weekly.

What eth_call does

Executes a call against a block's state without creating a transaction, and returns the output bytes. Every contract read (balanceOf, quotes, view functions) is an eth_call. It costs nothing on-chain but still runs the EVM on the node.

eth_call on X Layer: what we measured

Multicall3 at 0xcA11…CA11deployed (3,808 bytes)
block.number seen inside a call73,127,767
eth_blockNumber at the same time73,127,741
State override (third parameter)supported
Call with gas 0xffffffffffffffffaccepted (capped by the node)
Block given by hash (EIP-1898)accepted

What this means on X Layer

State overrides work: you can replace an account's code, balance or storage for one call. That lets you simulate a transaction from an address with no funds, or test a contract change before deploying it.

Multicall3 is deployed at the standard address, so viem's client.multicall and ethers' multicall helpers batch many reads into one eth_call here without configuration.

Example request

curl -s https://rpc.swiftnodes.io/rpc/xlayer?key=YOUR_API_KEY \
  -X POST -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"eth_call","params":[{"to":"0xcA11bde05977b3631167028862bE2a173976CA11","data":"0x42cbb15c"},"latest"]}'
import { createPublicClient, erc20Abi, http } from "viem";

const client = createPublicClient({
  transport: http("https://rpc.swiftnodes.io/rpc/xlayer?key=YOUR_API_KEY"),
});

const balance = await client.readContract({
  address: token, abi: erc20Abi, functionName: "balanceOf", args: [owner],
});

// Many reads in one eth_call (Multicall3 is deployed on X Layer)
const [name, symbol, supply] = await client.multicall({
  contracts: ["name", "symbol", "totalSupply"].map((functionName) => ({ address: token, abi: erc20Abi, functionName })),
  allowFailure: false,
});

// Simulate with a state override: pretend the sender holds 10 OKB
await client.call({ account: sender, to, data, stateOverride: [{ address: sender, balance: 10n * 10n ** 18n }] });

Other methods on X Layer

eth_call on other chains

Frequently asked questions

Does X Layer support eth_call?

Yes. eth_call answered on the SwiftNodes X Layer endpoint when our weekly probe called it through the customer path (2026-10-13).

Is Multicall3 deployed on X Layer?

Yes, at 0xcA11bde05977b3631167028862bE2a173976CA11 (3,808 bytes of code, checked 2026-10-13).

Does eth_call support state overrides on X Layer?

Yes. The third parameter accepts code, balance and storage overrides.

X Layer endpoints, live block height and WebSocket status are on the X Layer RPC page.

One key covers every chain we serve, and SwiftNodes has a free tier.