Queried by: developers
The Big Picture
Allows contracts to access historical block hashes (limited history, typically 256 blocks).
Use Cases
- Access historical block hashes
- Implement BLOCKHASH opcode
Purpose & Usage
Purpose
Historical block hash lookup for EVM opcode BLOCKHASH.
Common Query Patterns
- Query hash by block number
Query Keys
| # | Name | Type | Description |
|---|---|---|---|
| 1 | blockNumber block raw: key1 | [u64; 4] [4] | key1 ([u64; 4]) |
Stored Value
value (H256)
Code Examples
import { createClient, Binary } from "polkadot-api";
import { getWsProvider } from "polkadot-api/ws";
import { sub } from "@polkadot-api/descriptors"; // generated by: npx papi add sub -w wss://entrypoint-finney.opentensor.ai:443
const client = createClient(getWsProvider("wss://entrypoint-finney.opentensor.ai:443"));
const api = client.getTypedApi(sub);
// Query BlockHash storage
const key1 = [0n, 0n, 0n, 0n] as [bigint, bigint, bigint, bigint];
const result = await api.query.Ethereum.BlockHash.getValue(key1);
console.log("BlockHash:", result);Version History
v210 block 4,345,556 Added
v213–v215 · runtime versions skipped on chain (never deployed)
v216 block 4,510,996 Internal re-bind
v235–v237 · runtime versions skipped on chain (never deployed)
v238 block 4,936,550 Internal re-bind
v278–v289 · runtime versions skipped on chain (never deployed)
v290 block 5,947,548 Internal re-bind
v307–v314 · runtime versions skipped on chain (never deployed)
v315 block 6,414,634 Internal re-bind
v316–v319 · runtime versions skipped on chain (never deployed)
v320 block 6,523,566 Internal re-bind
v327–v333 · runtime versions skipped on chain (never deployed)
v334 block 6,811,690 Internal re-bind
v353–v360 · runtime versions skipped on chain (never deployed)
v361 block 7,063,679 Internal re-bind
v394–v400 · runtime versions skipped on chain (never deployed)
v401 block 8,036,576 Internal re-bind Current
Runtime Info
- Pallet
- Ethereum
- Storage Kind
- Map
- First Version
- v210
- Current Version
- v411