Docs

chain_getBlockHash - Centrifuge RPC Method

Get block hash by number on Centrifuge. Essential for converting block numbers to hashes, historical queries, and blockchain navigation on the RWA tokenization platform bridging traditional finance with $1B+ Janus Henderson backing.

Returns the block hash for a given block number on Centrifuge. This is the primary method for converting block numbers into block hashes, which are required by most other chain RPC methods.

Why Centrifuge? Build on the RWA tokenization platform bridging traditional finance with $1B+ Janus Henderson backing with ERC-7540 RWA standards, multichain via Wormhole, 97% securitization cost savings, and BlockTower $220M fund integration.

When to Use This Method

chain_getBlockHash is fundamental for institutional RWA developers, asset managers, and teams tokenizing real-world assets:

  • Historical Queries — Convert block numbers to hashes for state queries at specific heights on Centrifuge
  • Block Navigation — Navigate the blockchain history for tokenized treasury funds, SME invoice financing, and institutional-grade RWA infrastructure
  • 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 Centrifuge for indexing:

JavaScript
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 Centrifuge state at a specific block height:

JavaScript
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 Centrifuge network:

JavaScript
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 CodeDescriptionSolution
-32602Invalid paramsBlock number must be a non-negative integer
-32603Internal errorNode may be syncing or block not yet available — retry with backoff
-32601Method not foundVerify the node supports this RPC method
-32005Rate limit exceededImplement client-side rate limiting