eth_blockNumber on zkSync Era
Everything below was measured on 2026-10-13 by calling eth_blockNumber on zkSync Era through the same endpoint customers use, and is re-measured weekly.
What eth_blockNumber does
Returns the number of the most recent block the node has, as a hex string. It is the cheapest way to tell whether a node is keeping up and the usual starting point for polling a chain.
eth_blockNumber on zkSync Era: what we measured
| Head block when measured | 72,465,360 (0x451bbd0) |
|---|---|
| Age of that block when read | 7 s |
| Average block time (last 1,000 blocks) | 4.7 s |
| "safe" behind the head | 176 blocks (about 14 min) |
| "finalized" behind the head | 16,904 blocks (about 22.3 hours) |
What this means for polling
With 4.7 s blocks, polling more often than every 5 seconds mostly returns the same number and spends requests for nothing. viem's default polling interval of 4 seconds is about right on zkSync Era.
The number eth_blockNumber returns is the newest block, which can still change in a reorg. On zkSync Era, "finalized" was 16,904 blocks (about 22.3 hours) behind it and "safe" 176 blocks behind. Use eth_getBlockByNumber("finalized") when you need a height that will not change.
Example request
curl -s https://rpc.swiftnodes.io/rpc/zksync?key=YOUR_API_KEY \
-X POST -H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"eth_blockNumber","params":[]}'import { createPublicClient, http } from "viem";
const client = createPublicClient({
transport: http("https://rpc.swiftnodes.io/rpc/zksync?key=YOUR_API_KEY"),
});
const head = await client.getBlockNumber(); // bigint
// Follow the chain: poll about once per block (4.7 s on zkSync Era)
const unwatch = client.watchBlockNumber({
pollingInterval: 4747,
onBlockNumber: (n) => console.log("new head", n),
});Other methods on zkSync Era
- eth_chainIdSupported
- eth_getBalanceSupported
- eth_getBlockByNumberSupported
- eth_getTransactionByHashSupported
- eth_getTransactionReceiptSupported
- eth_callSupported
- eth_estimateGasNot measured
- eth_gasPriceSupported
- eth_maxPriorityFeePerGasSupported
- eth_sendRawTransactionSupported
- eth_getTransactionCountSupported
- eth_getCodeSupported
- eth_subscribeSupported
- eth_getLogsSupported
- eth_getBlockReceiptsSupported
- eth_feeHistorySupported
- eth_getProofNot available
- eth_createAccessListNot available
- debug_traceCallSupported
- trace_blockNot available
- trace_transactionNot available
eth_blockNumber on other chains
- Ethereum
- Base
- Arbitrum
- Optimism
- Polygon
- BNB Smart Chain
- Avalanche
- Sonic
- Linea
- Scroll
- Blast
- Mantle
- Gnosis
- Celo
- Berachain
- Monad
- 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 zkSync Era support eth_blockNumber?
Yes. eth_blockNumber answered on the SwiftNodes zkSync Era endpoint when our weekly probe called it through the customer path (2026-10-13).
How fast are blocks on zkSync Era?
About 4.7 s per block, averaged over recent blocks (measured 2026-10-13).
How often should I poll eth_blockNumber on zkSync Era?
About once per block, every 4.7 s. Faster polling mostly returns the same number.
zkSync Era endpoints, live block height and WebSocket status are on the zkSync Era RPC page.
One key covers every chain we serve, and SwiftNodes has a free tier.