RPC method

eth_getBlockByNumber on Tempo

Supported on SwiftNodes

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

Header fields31 (5 beyond the Ethereum set)
Transactions per block0, 1, 0, 0, 0 in five consecutive blocks
Response size, full transactions (true)2.3 KB average
Response size, hashes only (false)2.0 KB
Gas limit500,000,000
Gas used in the latest block0 (0.000% of the limit)
Base fee0.6000 gwei
Tag "safe"block 43,950,884
Tag "finalized"block 43,950,887
Tag "pending"not served (null)
Tag "earliest"block 0

What is different on Tempo

Tempo blocks carry 5 fields that Ethereum blocks do not. timestampMillis: the block timestamp in milliseconds; mainBlockGeneralGasLimit, sharedGasLimit, timestampMillisPart, consensusContext: specific to this chain's node software, not part of the Ethereum JSON-RPC specification. Strict schema validators need to allow them.

The header includes the fields added by London (EIP-1559 base fee), Shanghai (withdrawals), Cancun (EIP-4844 blob gas), Cancun (EIP-4788 beacon root), Prague (EIP-7685 requests). Code that assumes Ethereum's current header shape will parse it as is.

The "pending" tag was not served on Tempo. Code that waits for "pending" needs a fallback, such as latest minus a confirmation count.

A real Tempo block header

From block 43,950,874, as our endpoint returned it (long hex values shortened).

{
  "hash": "0x128d28b9973ee7c00c49a9bd3cab17d15521bbf78cc21e48f5efb97e5d23749b",
  "mainBlockGeneralGasLimit": "0x1c9c380",
  "sharedGasLimit": "0x0",
  "timestampMillisPart": "0x380",
  "parentHash": "0x267e24d0d61867d34b7d805f5b08961d38b62772e9fe7ed53a755f6695a6be97",
  "sha3Uncles": "0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347",
  "miner": "0x60a0fe9b96e03c688fdb540d56e562259fbb5cb6",
  "stateRoot": "0xad0048a8b5460b0f82b02e4652d88e3e51292e7ced20a1763b6f6449e24990a9",
  "transactionsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
  "receiptsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
  "logsBloom": "0x0000000000000000…(256 bytes)",
  "difficulty": "0x0",
  "number": "0x29ea31a",
  "gasLimit": "0x1dcd6500",
  "gasUsed": "0x0",
  "timestamp": "0x6ace2ae7",
  "extraData": "0x",
  "mixHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
  "nonce": "0x0000000000000000",
  "baseFeePerGas": "0x23c34600",
  "withdrawalsRoot": "0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421",
  "blobGasUsed": "0x0",
  "excessBlobGas": "0x0",
  "parentBeaconBlockRoot": "0x0000000000000000000000000000000000000000000000000000000000000000",
  "requestsHash": "0xe3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
  "consensusContext": {
    "epoch": 2034,
    "view": 16499,
    "parentView": 16498,
    "proposer": "0x8d9907ab33f22afc0a99e6158652782f1a49528ad1a1af1a8bd3477b84868aff"
  },
  "size": "0x2a3",
  "timestampMillis": "0x1a1355799d8",
  "uncles": [],
  "transactions": "0 transactions",
  "withdrawals": []
}

Example request

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

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

// With full transactions (2.3 KB on average on Tempo)
const full = await client.getBlock({ blockNumber: block.number, includeTransactions: true });

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

Other methods on Tempo

eth_getBlockByNumber on other chains

Frequently asked questions

Does Tempo support eth_getBlockByNumber?

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

How many transactions are in each Tempo block?

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

What are mainBlockGeneralGasLimit and sharedGasLimit in a Tempo block?

mainBlockGeneralGasLimit is not part of the Ethereum JSON-RPC specification; added by this chain's node software. sharedGasLimit is not part of the Ethereum JSON-RPC specification; added by this chain's node software.

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

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