chain_getHeader - Moonbeam RPC Method
Get block header on Moonbeam. Lightweight alternative to chain_getBlock for reading block metadata, parent hash, and state root on the cross-chain connected EVM platform on Polkadot with $65M+ TVL and 100+ projects.
Returns the block header for a given hash on Moonbeam. This is a lightweight alternative to chain_getBlock when you only need header metadata without extrinsic data.
Why Moonbeam? Build on the cross-chain connected EVM platform on Polkadot with $65M+ TVL and 100+ projects with full EVM compatibility on Polkadot, native XCM cross-chain messaging, 10K+ TPS, 24% staking APR, and $0.015 transaction costs.
When to Use This Method
chain_getHeader is ideal for cross-chain dApp developers, Polkadot builders, and teams requiring multi-chain interoperability:
- Lightweight Queries — Get block metadata without downloading full extrinsic data on Moonbeam
- Chain Synchronization — Track block production and monitor chain progress for cross-chain DeFi, multi-chain dApps, and Ethereum-to-Polkadot bridging via XCM, Axelar, LayerZero, and Wormhole
- 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 Moonbeam:
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 Moonbeam 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 Moonbeam 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 Moonbeam. Essential for confirmed state queries, exchange integrations, and applications requiring irreversible finality on the cross-chain connected EVM platform on Polkadot with $65M+ TVL and 100+ projects.
chain_subscribeNewHeads
Subscribe to new block headers on Moonbeam. Real-time WebSocket notifications for every new block as it is produced — essential for monitoring, indexing, and event-driven applications on the cross-chain connected EVM platform on Polkadot with $65M+ TVL and 100+ projects.