Docs

chain_getHeader - Mythos RPC Method

Get block header on Mythos. Lightweight alternative to chain_getBlock for reading block metadata, parent hash, and state root on the gaming blockchain powering FIFA Rivals and NFL Rivals with World ID verification.

Returns the block header for a given hash on Mythos. This is a lightweight alternative to chain_getBlock when you only need header metadata without extrinsic data.

Why Mythos? Build on the gaming blockchain powering FIFA Rivals and NFL Rivals with World ID verification with World ID proof-of-humanity, Polkadot security, Snowbridge cross-chain bridge, and 1M+ downloads per title.

When to Use This Method

chain_getHeader is ideal for game studios, player-driven economy builders, and teams requiring verified human-only gameplay:

  • Lightweight Queries — Get block metadata without downloading full extrinsic data on Mythos
  • Chain Synchronization — Track block production and monitor chain progress for AAA gaming (FIFA Rivals, NFL Rivals, Pudgy Party), player-owned economies, and bot-resistant matchmaking
  • Parent Chain Navigation — Follow parentHash links to traverse the chain backwards
  • State Verification — Use stateRoot and extrinsicsRoot for Merkle proof verification

Code Examples

Common Use Cases

1. Block Time Calculator

Estimate block production rate on Mythos:

JavaScript
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 Mythos chain using parent hashes:

JavaScript
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 Mythos block production without downloading full blocks:

JavaScript
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 CodeDescriptionSolution
-32602Invalid paramsVerify block hash is valid hex with 0x prefix
-32603Internal errorNode may be syncing — retry with backoff
-32601Method not foundVerify the node supports this RPC method
-32005Rate limit exceededImplement client-side rate limiting