RPC method

eth_getBalance on Abstract

Supported on SwiftNodes

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

The zero address held 0.348666 ETH on Abstract 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 Abstract and not another network.

Passing a block as {"blockHash": ...} (EIP-1898) failed on Abstract: "Unknown block". Pass the block number in hex instead.

Balances at blocks older than about 1,000,000 blocks need historical state. Add &archive=1 to the URL to route those reads to archive nodes.

Unitwei of ETH (1 ETH = 10^18 wei)
Balance of 0x0000…0000 (zero address)0.348666 ETH
Balance of 0x…dEaD (burn address)0 ETH
Block given by hash (EIP-1898)rejected: Unknown block
History on default routingabout the last 1,000,000 blocks
Older blocks (archive=1)available on paid plans

Example request

curl -s https://rpc.swiftnodes.io/rpc/abstract?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/abstract?key=YOUR_API_KEY"),
});

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

// At a past block (older than the default window: add &archive=1 to the URL)
const then = await client.getBalance({ address: "0x000000000000000000000000000000000000dEaD", blockNumber: 87545212n });

// Many balances in one request: Multicall3 is deployed on Abstract
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 Abstract

eth_getBalance on other chains

Frequently asked questions

Does Abstract support eth_getBalance?

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

What unit does eth_getBalance return on Abstract?

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

Can I get historical balances on Abstract?

Default routing keeps about 1,000,000 blocks of state. Older balances work with &archive=1 on paid plans.

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

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