chain_getHeader - XX Network RPC Method
Get block header on XX Network. Lightweight alternative to chain_getBlock for reading block metadata, parent hash, and state root on a privacy-focused decentralized messaging and payment platform.
Returns the block header for a given hash on XX Network. This is a lightweight alternative to chain_getBlock when you only need header metadata without extrinsic data.
Why XX Network? Build on a privacy-focused decentralized messaging and payment platform with quantum-resistant cryptography and metadata privacy through cMix.
When to Use This Method
chain_getHeader is ideal for XX Network developers building privacy-preserving applications:
- Lightweight Queries — Get block metadata without downloading full extrinsic data on XX Network
- Chain Synchronization — Track block production and monitor chain progress for secure messaging, private payments, and quantum-resistant cryptography
- Parent Chain Navigation — Follow
parentHashlinks to traverse the chain backwards - State Verification — Use
stateRootandextrinsicsRootfor Merkle proof verification
Code Examples
Common Use Cases
1. Block Time Calculator
Estimate block production rate on XX Network:
async function estimateBlockTime(api, sampleSize = 10) {
const latestHeader = await api.rpc.chain.getHeader();
const latestNumber = latestHeader.number.toNumber();
const oldHash = await api.rpc.chain.getBlockHash(latestNumber - sampleSize);
const oldHeader = await api.rpc.chain.getHeader(oldHash);
// Use timestamp from block digests or timestamp pallet
const latestTimestamp = await api.query.timestamp.now();
const apiAt = await api.at(oldHash);
const oldTimestamp = await apiAt.query.timestamp.now();
const timeDiff = latestTimestamp.toNumber() - oldTimestamp.toNumber();
const avgBlockTime = timeDiff / sampleSize;
console.log(`Average block time: ${avgBlockTime / 1000}s over ${sampleSize} blocks`);
return avgBlockTime;
}2. Chain Traversal
Walk backwards through the XX Network chain using parent hashes:
async function walkChain(api, startHash, depth = 5) {
let currentHash = startHash || (await api.rpc.chain.getBlockHash());
const headers = [];
for (let i = 0; i < depth; i++) {
const header = await api.rpc.chain.getHeader(currentHash);
headers.push({
number: header.number.toNumber(),
hash: currentHash.toString(),
parentHash: header.parentHash.toHex()
});
currentHash = header.parentHash;
}
return headers;
}3. Lightweight Block Monitor
Monitor XX Network block production without downloading full blocks:
async function monitorBlocks(api, callback) {
let lastNumber = 0;
setInterval(async () => {
const header = await api.rpc.chain.getHeader();
const number = header.number.toNumber();
if (number > lastNumber) {
console.log(`New block #${number}`);
callback(header);
lastNumber = number;
}
}, 3000);
}Error Handling
| Error Code | Description | Solution |
|---|---|---|
| -32602 | Invalid params | Verify block hash is valid hex with 0x prefix |
| -32603 | Internal error | Node may be syncing — retry with backoff |
| -32601 | Method not found | Verify the node supports this RPC method |
| -32005 | Rate limit exceeded | Implement client-side rate limiting |
Related Methods
chain_getBlock— Get full block with extrinsicschain_getBlockHash— Get block hash by numberchain_subscribeNewHeads— Subscribe to new block headers in real timechain_subscribeFinalizedHeads— Subscribe to finalized block headers
chain_getFinalizedHead
Get the finalized block hash on XX Network. Essential for confirmed state queries, exchange integrations, and applications requiring irreversible finality on a privacy-focused decentralized messaging and payment platform.
chain_subscribeNewHeads
Subscribe to new block headers on XX Network. Real-time WebSocket notifications for every new block as it is produced — essential for monitoring, indexing, and event-driven applications on a privacy-focused decentralized messaging and payment platform.