eth_getBalance on Monad
Everything below was measured on 2026-10-13 by calling eth_getBalance on Monad 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 Monad: what we measured
The zero address held 135,014 MON on Monad 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 Monad 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 1,000,000 blocks need historical state. Add &archive=1 to the URL to route those reads to archive nodes.
| Unit | wei of MON (1 MON = 10^18 wei) |
|---|---|
| Balance of 0x0000…0000 (zero address) | 135,014 MON |
| Balance of 0x…dEaD (burn address) | 4,991 MON |
| Block given by hash (EIP-1898) | accepted |
| History on default routing | about the last 1,000,000 blocks |
| Older blocks (archive=1) | available on paid plans |
Example request
curl -s https://rpc.swiftnodes.io/rpc/monad?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/monad?key=YOUR_API_KEY"),
});
const wei = await client.getBalance({ address: "0x000000000000000000000000000000000000dEaD" });
console.log(formatEther(wei), "MON");
// At a past block (older than the default window: add &archive=1 to the URL)
const then = await client.getBalance({ address: "0x000000000000000000000000000000000000dEaD", blockNumber: 113042817n });
// Many balances in one request: Multicall3 is deployed on Monad
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 Monad
- eth_blockNumberSupported
- eth_chainIdSupported
- eth_getBlockByNumberSupported
- eth_getTransactionByHashSupported
- eth_getTransactionReceiptSupported
- eth_callSupported
- eth_estimateGasSupported
- eth_gasPriceSupported
- eth_maxPriorityFeePerGasSupported
- eth_sendRawTransactionSupported
- eth_getTransactionCountSupported
- eth_getCodeSupported
- eth_subscribeSupported
- eth_getLogsSupported
- eth_getBlockReceiptsSupported
- eth_feeHistorySupported
- eth_getProofNot available
- eth_createAccessListSupported
- debug_traceCallNot available
- trace_blockNot available
- trace_transactionNot available
eth_getBalance on other chains
- Ethereum
- Base
- Arbitrum
- Optimism
- Polygon
- BNB Smart Chain
- Avalanche
- Sonic
- Linea
- Scroll
- zkSync Era
- Blast
- Mantle
- Gnosis
- Celo
- Berachain
- Unichain
- Kaia
- PulseChain
- World Chain
- Ronin
- Abstract
- ApeChain
- MegaETH
- Fantom
- Lisk
- Hemi
- X Layer
- BOB
- Plasma
- Fraxtal
- Zora
- Story
- Soneium
- Sei
- Hyperliquid
- Taiko
- Morph
- Ink
- Katana
- Ethereum Classic
- opBNB
- Mode
- Flare
- Core
- Chiliz
- Telos EVM
- Tempo
- Cronos
- Manta Pacific
- Shibarium
- Boba Network
- Arbitrum Nova
- Immutable zkEVM
Frequently asked questions
Does Monad support eth_getBalance?
Yes. eth_getBalance answered on the SwiftNodes Monad endpoint when our weekly probe called it through the customer path (2026-10-13).
What unit does eth_getBalance return on Monad?
Wei of MON, as a hex string: divide by 10^18 for MON. viem's formatEther does this.
Can I get historical balances on Monad?
Default routing keeps about 1,000,000 blocks of state. Older balances work with &archive=1 on paid plans.
Monad endpoints, live block height and WebSocket status are on the Monad RPC page.
One key covers every chain we serve, and SwiftNodes has a free tier.