RPC method

eth_getBlockByNumber on Arbitrum Nova

Supported on SwiftNodes

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

What eth_getBlockByNumber does

Returns a block by number or tag (latest, safe, finalized, pending, earliest): the header, and either the transaction hashes or the full transactions. Indexers, explorers and wallets use it to follow the chain.

eth_getBlockByNumber on Arbitrum Nova: what we measured

Header fields23 (3 beyond the Ethereum set)
Transactions per block2, 2, 2, 2, 2 in five consecutive blocks
Response size, full transactions (true)3.6 KB average
Response size, hashes only (false)1.7 KB
Gas limit1,125,899,906,842,624
Gas used in the latest block0
Base fee0.0200 gwei
Tag "safe"block 85,284,523
Tag "finalized"block 85,284,523
Tag "pending"block 85,284,524
Tag "earliest"block 0

What is different on Arbitrum Nova

Arbitrum Nova blocks carry 3 fields that Ethereum blocks do not. l1BlockNumber: the Ethereum (L1) block number the L2 block or transaction was sequenced against. On Arbitrum, the NUMBER opcode (block.number in Solidity) returns this L1 value, not the L2 block number; sendCount: the number of L2-to-L1 messages sent so far (Arbitrum outbox); sendRoot: the Merkle root of the L2-to-L1 message outbox after this block. Strict schema validators need to allow them.

The header includes the fields added by London (EIP-1559 base fee), but not those of Shanghai (withdrawals), Cancun (EIP-4844 blob gas), Cancun (EIP-4788 beacon root), Prague (EIP-7685 requests). Code that assumes Ethereum's current header shape must treat the missing ones as optional.

Asking for full transactions (second parameter true) made the response 2.1 times larger than hashes only. If you need only some transactions, fetch hashes and request those transactions or their receipts individually.

8 of the 10 transactions in those five blocks were system transactions (8 × type 0x6a, Arbitrum internal (per-block system update)). They are not user activity: filter them out when counting transactions.

The gas limit of 1,125,899,906,842,624 is not a real capacity figure. Arbitrum Nova meters gas differently and reports a placeholder, so do not use gasUsed / gasLimit as a congestion signal there.

A real Arbitrum Nova block header

From block 85,284,524, as our endpoint returned it (long hex values shortened).

{
  "baseFeePerGas": "0x1312d00",
  "difficulty": "0x1",
  "extraData": "0x779b1aa2c3a51e4ca466f2a5c56106b404747b9e56262e01851c24ab4165eb39",
  "gasLimit": "0x4000000000000",
  "gasUsed": "0x0",
  "hash": "0x0f7c0e05f37799088e487af8753ebfae316afbadbee10f169335df8450dccdd5",
  "l1BlockNumber": "0x18f87c6",
  "logsBloom": "0x0000000000000000…(256 bytes)",
  "miner": "0x0c5911d57b24fcf1dc8b2608efbae57c7098e32d",
  "mixHash": "0x000000000000e71100000000018f87c6000000000000003d0000000000000000",
  "nonce": "0x0000000000099f7c",
  "number": "0x51556ac",
  "parentHash": "0x06032f7979617391439959eee3b0574221c107b80a5e57577a035455e51b402a",
  "receiptsRoot": "0xf08cf5553e1dae52e3df19b356b8320e17c39fb055f635739c31052db5c3e45e",
  "sendCount": "0xe711",
  "sendRoot": "0x779b1aa2c3a51e4ca466f2a5c56106b404747b9e56262e01851c24ab4165eb39",
  "sha3Uncles": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
  "size": "0x3a7",
  "stateRoot": "0xbb5e6b1f7d0771a58fb4bf207734372187139559d979011685c8acae8e8939f7",
  "timestamp": "0x6ace264b",
  "transactions": "2 transactions",
  "transactionsRoot": "0xe03584fe5b464e0af817e93c1463768fca3d49c700ce9b1a39141efc0f2a1de2",
  "uncles": []
}

Example request

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

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

// Header plus transaction hashes (1.7 KB)
const block = await client.getBlock({ blockTag: "latest" });

// With full transactions (3.6 KB on average on Arbitrum Nova)
const full = await client.getBlock({ blockNumber: block.number, includeTransactions: true });
const userTxs = full.transactions.filter((t) => !["0x6a"].includes(t.typeHex));

// A block that will not be reorganised
const final = await client.getBlock({ blockTag: "finalized" });

Other methods on Arbitrum Nova

eth_getBlockByNumber on other chains

Frequently asked questions

Does Arbitrum Nova support eth_getBlockByNumber?

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

How many transactions are in each Arbitrum Nova block?

In five consecutive blocks on 2026-10-13: 2, 2, 2, 2, 2.

What are l1BlockNumber and sendCount in a Arbitrum Nova block?

l1BlockNumber is the Ethereum (L1) block number the L2 block or transaction was sequenced against. On Arbitrum, the NUMBER opcode (block.number in Solidity) returns this L1 value, not the L2 block number. sendCount is the number of L2-to-L1 messages sent so far (Arbitrum outbox).

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

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