RPC method

eth_getBalance on Story

Supported on SwiftNodes

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

What eth_getBalance does

Returns an account's balance of the chain's native token in wei (the smallest unit, 10^-18), at a given block. It works for contracts as well as wallets; ERC-20 balances need eth_call to the token's balanceOf instead.

eth_getBalance on Story: what we measured

The zero address held 912,423,257 DATA on Story when we measured. On most chains a zero-address balance is funds sent there by mistake or burned; either way it differs from chain to chain, so reading it is a quick sanity test that your client is talking to Story and not another network.

You can pin a read to an exact block with {"blockHash": "0x..."} (EIP-1898). Unlike a block number, a hash fails loudly if that block was reorganised away.

Balances at blocks older than about 64 blocks need historical state. Archive routing did not measure as available for this chain.

Unitwei of DATA (1 DATA = 10^18 wei)
Balance of 0x0000…0000 (zero address)912,423,257 DATA
Balance of 0x…dEaD (burn address)12.72 DATA
Block given by hash (EIP-1898)accepted
History on default routingabout the last 64 blocks
Older blocks (archive=1)not measured as available

Example request

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

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

const wei = await client.getBalance({ address: "0x000000000000000000000000000000000000dEaD" });
console.log(formatEther(wei), "DATA");

// At a past block
const then = await client.getBalance({ address: "0x000000000000000000000000000000000000dEaD", blockNumber: 23299079n });

// Many balances in one request: Multicall3 is deployed on Story
const balances = await client.multicall({
  contracts: addresses.map((a) => ({ address: "0xcA11bde05977b3631167028862bE2a173976CA11", abi: [{ name: "getEthBalance", type: "function", stateMutability: "view", inputs: [{ type: "address" }], outputs: [{ type: "uint256" }] }], functionName: "getEthBalance", args: [a] })),
});

Other methods on Story

eth_getBalance on other chains

Frequently asked questions

Does Story support eth_getBalance?

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

What unit does eth_getBalance return on Story?

Wei of DATA, as a hex string: divide by 10^18 for DATA. viem's formatEther does this.

Can I get historical balances on Story?

Default routing keeps about 64 blocks of state. Older balances did not measure as available.

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

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