chain_getBlockHash - Asset Hub RPC Method
Get block hash by number on Asset Hub. Essential for converting block numbers to hashes, historical queries, and blockchain navigation on Polkadot's system parachain managing $4.5B+ in DOT tokens, native USDC/USDT, and NFTs.
Returns the block hash for a given block number on Asset Hub. This is the primary method for converting block numbers into block hashes, which are required by most other chain RPC methods.
Why Asset Hub? Build on Polkadot's system parachain managing $4.5B+ in DOT tokens, native USDC/USDT, and NFTs with 50-90% lower fees than Relay Chain, fee payment in any supported asset, 1.5M+ accounts migrated, and trustless Ethereum bridge access.
When to Use This Method
chain_getBlockHash is fundamental for asset issuers, stablecoin integrators, and teams requiring low-cost token management on Polkadot:
- Historical Queries — Convert block numbers to hashes for state queries at specific heights on Asset Hub
- Block Navigation — Navigate the blockchain history for native stablecoin transfers (USDC, USDT), DOT staking and governance, and cross-chain asset management via XCM
- Data Indexing — Build block number-to-hash mappings for indexers and explorers
- Cross-Reference — Translate block numbers from events or logs into hashes for detailed lookups
Code Examples
Common Use Cases
1. Block Range Iterator
Iterate over a range of blocks on Asset Hub for indexing:
async function iterateBlocks(api, startBlock, endBlock) {
for (let num = startBlock; num <= endBlock; num++) {
const hash = await api.rpc.chain.getBlockHash(num);
const block = await api.rpc.chain.getBlock(hash);
console.log(`Block #${num}: ${block.block.extrinsics.length} extrinsics`);
}
}2. Historical State Query
Query Asset Hub state at a specific block height:
async function getBalanceAtBlock(api, address, blockNumber) {
const blockHash = await api.rpc.chain.getBlockHash(blockNumber);
const apiAt = await api.at(blockHash);
const account = await apiAt.query.system.account(address);
return {
blockNumber,
free: account.data.free.toString(),
reserved: account.data.reserved.toString()
};
}3. Genesis Hash Verification
Verify you are connected to the correct Asset Hub network:
async function verifyNetwork(api, expectedGenesisHash) {
const genesisHash = await api.rpc.chain.getBlockHash(0);
if (genesisHash.toHex() !== expectedGenesisHash) {
throw new Error(`Wrong network! Expected ${expectedGenesisHash}, got ${genesisHash.toHex()}`);
}
console.log('Connected to correct network');
}Error Handling
| Error Code | Description | Solution |
|---|---|---|
| -32602 | Invalid params | Block number must be a non-negative integer |
| -32603 | Internal error | Node may be syncing or block not yet available — 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 data by hashchain_getHeader— Get block header by hashchain_getFinalizedHead— Get the latest finalized block hash
chain_getBlock
Retrieve block data by hash on Asset Hub. Essential for accessing block headers and extrinsics on Polkadot's system parachain managing $4.5B+ in DOT tokens, native USDC/USDT, and NFTs.
chain_getFinalizedHead
Get the finalized block hash on Asset Hub. Essential for confirmed state queries, exchange integrations, and applications requiring irreversible finality on Polkadot's system parachain managing $4.5B+ in DOT tokens, native USDC/USDT, and NFTs.