RPC method

eth_call on Hyperliquid

Supported on SwiftNodes

Everything below was measured on 2026-10-13 by calling eth_call on Hyperliquid 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 Hyperliquid: what we measured

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

What this means on Hyperliquid

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/hyperliquid?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/hyperliquid?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 Hyperliquid)
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 HYPE
await client.call({ account: sender, to, data, stateOverride: [{ address: sender, balance: 10n * 10n ** 18n }] });

Other methods on Hyperliquid

eth_call on other chains

Frequently asked questions

Does Hyperliquid support eth_call?

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

Is Multicall3 deployed on Hyperliquid?

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

Does eth_call support state overrides on Hyperliquid?

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

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

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