Appearance
System columns
The columns every row carries without your asking, read with a $ in front of the name.
| Column | Type | Holds |
|---|---|---|
$chain | chain | the row's chain |
$block | bigint | the block the row was answered at |
$blockHash | bytes32 | that block's hash |
$timestamp | datetime | that block's timestamp |
$address | address | the contract on a state row; the emitter on an event row |
$sampleAt | datetime | on a sampled row, the boundary that selected it; null otherwise |
$tx | bytes32 | the transaction hash — event rows only |
$txIndex | bigint | the transaction's index in the block — event rows only |
$logIndex | bigint | the log's index in the block — event rows only |
$event | string | the event's name — event rows only |
$topics | bytes32[] | the log's topics as the node gave them, topic0 first — event rows only |
$data | bytes | the log's undecoded data — event rows only |
A state row has the first six. An event row has all twelve.
cql
let stETH = ethereum:0xae7ab96520DE3A18E5e111B5EaAb095312D7fE84;
from stETH at time '2026-09-20'..'2026-09-23' every 1d as s
| project { chain: $chain, block: $block, time: $timestamp, day: $sampleAt, contract: $address }$block is a plain column: projecting it away changes nothing about which block a later call is answered at. Through an alias — s.$address, a.$block — a system column names one source's value when a join has put two side by side.
$storage
Not a column but a member of any address: s.$storage[slot] reads one 32-byte word of that contract's storage at the row's block. Read a storage slot.
See also
- Blocks and time —
$timestampagainst$sampleAt.