Every ~12 seconds Ethereum finalizes a new block. Gas Core requests that block from a public RPC endpoint — eth_getBlockByNumber with full transaction objects — and rebuilds the entire grid from what the block actually contains. There is no server in between and no stored dataset; if the RPC can't be reached, the piece says so rather than fabricating a state.
Every Ethereum transaction costs at least 21,000 gas — the fixed price of the simplest possible action, moving ETH from one address to another with no contract logic attached. Gas Core uses this as its pixel: one cell = 21,000 gas of the block's capacity.
Empty cells ( off / desaturated) are capacity nobody bid for — gas that was available in the block but went unused.
Since EIP-1559, every transaction pays two separate things: a base fee, set algorithmically by the protocol and burned outright, and a priority fee (tip), set by the sender and paid to the block builder to be included sooner. The base fee is the same for every transaction in the block — it carries no information about urgency. The tip does.
Gas Core colors each cell by tip relative to that block's base fee, not by the total fee paid:
A cell reading high isn't necessarily an expensive transaction in absolute terms — it's one that paid disproportionately more than its neighbors to skip ahead. That's the signal the piece is actually built to show.
Color carries fee behavior; shape carries intent, read from the transaction's to and input fields:
Base fee isn't paid to anyone — it's removed from circulation. Gas Core totals this per block:
This number is read live in the HUD alongside the block's average tip. Together they separate the two prices in every transaction: what the protocol demanded, and what the sender chose to add.
Gas limits change over time. If a block's cell count would exceed what can render cleanly, Gas Core groups adjacent cells into one rendered cell rather than dropping resolution silently — a grouped cell is marked as aggregated, and its tooltip says so explicitly rather than presenting summary data as if it were one transaction.
Tap or hover any cell that maps to a real transaction and the piece hands you its receipt: hash, sender, recipient, value, gas used, tip paid. Nothing is pre-rendered — every number shown was read from the block at the moment it was fetched, and can be checked independently against any Ethereum block explorer.
Single self-contained HTML file. Canvas 2D for rendering, native fetch to a public JSON-RPC endpoint, an eth_subscribe("newHeads") WebSocket connection for push updates with automatic fallback to polling if the socket drops. No build step, no wallet connection required to view, no backend beyond the public RPC itself.