eth_blockNumber - XDC Network RPC Method
Get the current block height on XDC Network. Essential for syncing dApps, monitoring transaction confirmations, and blockchain state tracking.
Returns the number of the most recent block on XDC Network.
Why XDC Network? Build on the enterprise-grade blockchain for trade finance with 2-second finality and ISO 20022 compliance with ISO 20022 messaging, ITFA membership, Contour Network acquisition, 801M+ transactions, and partnerships with Circle and Deutsche Telekom.
When to Use This Method
eth_blockNumber is fundamental for trade finance developers, enterprise blockchain teams, and RWA tokenization builders:
- Syncing Applications — Keep your dApp in sync with the latest XDC Network blockchain state
- Transaction Monitoring — Verify confirmations by comparing block numbers
- Event Filtering — Set the correct block range for querying logs on tokenized trade finance (Letters of Credit, Bills of Lading), cross-border payments, and real-world asset tokenization
- Health Checks — Monitor node connectivity and sync status
Request Parameters
This method accepts no parameters.
Response Body
Hexadecimal string representing the current block number
Error Responses
Code Examples
curl -X POST https://api-xdc-mainnet.n.dwellir.com/YOUR_API_KEY \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"method": "eth_blockNumber",
"params": [],
"id": 1
}'// Using fetch
const response = await fetch('https://api-xdc-mainnet.n.dwellir.com/YOUR_API_KEY', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
jsonrpc: '2.0',
method: 'eth_blockNumber',
params: [],
id: 1
})
});
const { result } = await response.json();
const blockNumber = parseInt(result, 16);
console.log('XDC Network block:', blockNumber);
// Using ethers.js
import { JsonRpcProvider } from 'ethers';
const provider = new JsonRpcProvider('https://api-xdc-mainnet.n.dwellir.com/YOUR_API_KEY');
const blockNumber = await provider.getBlockNumber();
console.log('XDC Network block:', blockNumber);import requests
def get_block_number():
response = requests.post(
'https://api-xdc-mainnet.n.dwellir.com/YOUR_API_KEY',
json={
'jsonrpc': '2.0',
'method': 'eth_blockNumber',
'params': [],
'id': 1
}
)
result = response.json()['result']
return int(result, 16)
block_number = get_block_number()
print(f'XDC Network block: {block_number}')
# Using web3.py
from web3 import Web3
w3 = Web3(Web3.HTTPProvider('https://api-xdc-mainnet.n.dwellir.com/YOUR_API_KEY'))
print(f'XDC Network block: {w3.eth.block_number}')package main
import (
"context"
"fmt"
"log"
"github.com/ethereum/go-ethereum/ethclient"
)
func main() {
client, err := ethclient.Dial("https://api-xdc-mainnet.n.dwellir.com/YOUR_API_KEY")
if err != nil {
log.Fatal(err)
}
blockNumber, err := client.BlockNumber(context.Background())
if err != nil {
log.Fatal(err)
}
fmt.Printf("XDC Network block: %d\n", blockNumber)
}Common Use Cases
1. Block Confirmation Counter
Monitor transaction confirmations on XDC Network:
async function getConfirmations(provider, txHash) {
const tx = await provider.getTransaction(txHash);
if (!tx || !tx.blockNumber) return 0;
const currentBlock = await provider.getBlockNumber();
return currentBlock - tx.blockNumber + 1;
}
// Wait for specific confirmations
async function waitForConfirmations(provider, txHash, confirmations = 6) {
let currentConfirmations = 0;
while (currentConfirmations < confirmations) {
currentConfirmations = await getConfirmations(provider, txHash);
console.log(`Confirmations: ${currentConfirmations}/${confirmations}`);
await new Promise(r => setTimeout(r, 2000));
}
return true;
}2. Event Log Filtering
Query events from recent blocks on XDC Network:
async function getRecentEvents(provider, contract, eventName, blockRange = 100) {
const currentBlock = await provider.getBlockNumber();
const fromBlock = currentBlock - blockRange;
const filter = contract.filters[eventName]();
const events = await contract.queryFilter(filter, fromBlock, currentBlock);
return events;
}3. Node Health Monitoring
Check if your XDC Network node is synced:
async function checkNodeHealth(provider) {
try {
const blockNumber = await provider.getBlockNumber();
const block = await provider.getBlock(blockNumber);
const now = Date.now() / 1000;
const blockAge = now - block.timestamp;
if (blockAge > 60) {
console.warn(`Node may be behind. Last block was ${blockAge}s ago`);
return false;
}
console.log(`Node healthy. Latest block: ${blockNumber}`);
return true;
} catch (error) {
console.error('Node unreachable:', error);
return false;
}
}Performance Optimization
Caching Strategy
Cache block numbers to reduce API calls:
class BlockNumberCache {
constructor(ttl = 2000) {
this.cache = null;
this.timestamp = 0;
this.ttl = ttl;
}
async get(provider) {
const now = Date.now();
if (this.cache && (now - this.timestamp) < this.ttl) {
return this.cache;
}
this.cache = await provider.getBlockNumber();
this.timestamp = now;
return this.cache;
}
invalidate() {
this.cache = null;
this.timestamp = 0;
}
}
const blockCache = new BlockNumberCache();Batch Requests
Combine with other calls for efficiency:
const batch = [
{ jsonrpc: '2.0', method: 'eth_blockNumber', params: [], id: 1 },
{ jsonrpc: '2.0', method: 'eth_gasPrice', params: [], id: 2 },
{ jsonrpc: '2.0', method: 'eth_chainId', params: [], id: 3 }
];
const response = await fetch('https://api-xdc-mainnet.n.dwellir.com/YOUR_API_KEY', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(batch)
});
const results = await response.json();Error Handling
Common errors and solutions:
| Error Code | Description | Solution |
|---|---|---|
| -32603 | Internal error | Retry with exponential backoff |
| -32005 | Rate limit exceeded | Implement rate limiting client-side |
| -32000 | Execution reverted | Check node sync status |
async function safeGetBlockNumber(provider, maxRetries = 3) {
for (let i = 0; i < maxRetries; i++) {
try {
return await provider.getBlockNumber();
} catch (error) {
if (error.code === -32005) {
await new Promise(r => setTimeout(r, Math.pow(2, i) * 1000));
} else if (i === maxRetries - 1) {
throw error;
}
}
}
}Related Methods
eth_getBlockByNumber— Get full block details by numbereth_getBlockByHash— Get block details by hasheth_syncing— Check if node is still syncing
XDC Network
Build on XDC Network with Dwellir's globally distributed RPC endpoints. Hybrid public/private architecture, fast finality, and institutional-grade tooling.
eth_getBlockByNumber
Retrieve complete block data by block number on XDC Network. Perfect for trade finance developers, enterprise blockchain teams, and RWA tokenization builders building on the enterprise-grade blockchain for trade finance with 2-second finality and ISO 20022 compliance.