eth_getBlockByNumber - Immutable RPC Method
Retrieve complete block data by block number on Immutable. Perfect for AAA game studios, indie game developers, and NFT gaming teams seeking enforceable royalties building on the gaming-optimized zkEVM with 660+ games, 5.5M+ Passport signups, and $40M TVL.
Returns information about a block by block number on Immutable.
Why Immutable? Build on the gaming-optimized zkEVM with 660+ games, 5.5M+ Passport signups, and $40M TVL with first EVM chain with enforceable royalties, Polygon zkEVM technology, $2B+ ecosystem funding, and Agglayer cross-chain liquidity.
Use Cases
The eth_getBlockByNumber method is essential for:
- Block explorers - Display complete block information
- Transaction indexers - Process all transactions in a block
- Analytics platforms - Analyze blockchain data for Web3 gaming (Gods Unchained, RavenQuest), gaming NFTs with enforced royalties, and cross-chain game assets
- Timestamp verification - Get block timestamps for time-based logic
Request Parameters
Block number in hex, or "latest", "earliest", "pending", "safe", "finalized"
If true, returns full transaction objects; if false, returns transaction hashes
Response Body
Block number
32-byte block hash
32-byte parent block hash
Unix timestamp
Total gas used by all transactions
Maximum gas allowed in block
Array of transaction objects or hashes
Base fee per gas (EIP-1559)
Code Examples
curl -X POST https://api-immutable-zkevm-mainnet.n.dwellir.com/YOUR_API_KEY \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"method": "eth_getBlockByNumber",
"params": ["latest", false],
"id": 1
}'import { JsonRpcProvider } from 'ethers';
const provider = new JsonRpcProvider('https://api-immutable-zkevm-mainnet.n.dwellir.com/YOUR_API_KEY');
// Get latest block
const block = await provider.getBlock('latest');
console.log('Block number:', block.number);
console.log('Timestamp:', new Date(block.timestamp * 1000));
console.log('Transactions:', block.transactions.length);
// Get block with full transactions
const blockWithTxs = await provider.getBlock('latest', true);
for (const tx of blockWithTxs.prefetchedTransactions) {
console.log('Transaction:', tx.hash);
}from web3 import Web3
w3 = Web3(Web3.HTTPProvider('https://api-immutable-zkevm-mainnet.n.dwellir.com/YOUR_API_KEY'))
# Get latest block
block = w3.eth.get_block('latest')
print(f'Block number: {block.number}')
print(f'Timestamp: {block.timestamp}')
print(f'Transactions: {len(block.transactions)}')
# Get block with full transactions
block_full = w3.eth.get_block('latest', full_transactions=True)
for tx in block_full.transactions:
print(f'Transaction: {tx.hash.hex()}')package main
import (
"context"
"fmt"
"log"
"math/big"
"github.com/ethereum/go-ethereum/ethclient"
)
func main() {
client, err := ethclient.Dial("https://api-immutable-zkevm-mainnet.n.dwellir.com/YOUR_API_KEY")
if err != nil {
log.Fatal(err)
}
// Get latest block
block, err := client.BlockByNumber(context.Background(), nil)
if err != nil {
log.Fatal(err)
}
fmt.Printf("Block number: %d\n", block.Number().Uint64())
fmt.Printf("Timestamp: %d\n", block.Time())
fmt.Printf("Transactions: %d\n", len(block.Transactions()))
}Error Handling
| Error Code | Message | Description |
|---|---|---|
| -32602 | Invalid params | Invalid block number or parameter format |
| -32000 | Block not found | Block does not exist |
Related Methods
eth_blockNumber- Get latest block numbereth_getBlockByHash- Get block by hasheth_getTransactionByHash- Get transaction details
eth_blockNumber
Get the current block height on Immutable. Essential for syncing dApps, monitoring transaction confirmations, and blockchain state tracking.
eth_getBlockByHash
Retrieve complete block data by block hash on Immutable. Essential for AAA game studios, indie game developers, and NFT gaming teams seeking enforceable royalties building on the gaming-optimized zkEVM with 660+ games, 5.5M+ Passport signups, and $40M TVL.