dregg · chain explorer

Cells, turns, and receipt chains.

This is not a block explorer. dregg's history is not a line of blocks holding transactions — it is cells that own state, turns that exercise an attenuable proof-carrying token over that state, and the receipt each turn leaves on its agent's chain. Blocks exist, but as a leaderless DAG (a blocklace) whose job is ordering, not accounting. Everything below is read from one node's public API and labeled with what it actually establishes.

connecting…

What this node is GET /status · /api/node/producer

Read this first. It is the part a normal explorer has no place for: which executor actually produced the committed state, how much of the effect vocabulary that covers, and whether every turn is being proven. A green row further down means nothing without it.

reading…

What has happened GET /api/events

The committed-event log: one entry per turn the node committed, with the effects it applied and a typed proof status. This is the broadest "what happened" feed the node offers — broader than the receipt chain below, which only records turns that went through the cipherclerk. Where the two disagree, both are shown rather than the flattering one.

reading…

Owned state GET /api/cells

A cell is the unit of owned state: a balance, a nonce, a capability table, optionally a program that constrains what may be done to it, optionally a delegate. There are no accounts and no contracts — a cell is both.

reading…

Receipt chains GET /api/receipts

A turn leaves a receipt, and each receipt names the agent's previous receipt — so history is one chain per agent, not one global list. Receipts are grouped by agent below and the link is checked in your browser: a receipt whose previous_receipt_hash does not equal the preceding receipt's receipt_hash is marked as a break, not quietly rendered as another row.

reading…

What the node commits to GET /api/receipts/index/head

One root over the whole receipt log, signed by this node. The root binds the log: alter a receipt, drop one, append one, or swap two, and the root moves — so a head the node has served is a claim it cannot quietly walk back. What it is not is a committee's word. It is one node's signature over its own log, and whether that log is anchored to anything a quorum pinned is reported separately below, because those two are routinely read as one.

reading…

The blocklace GET /api/blocklace/blocks

Not a chain — a DAG. Each block names a set of predecessors, and most blocks on an idle node are heartbeats carrying no turn at all. That is why the node reports two different heights, and why calling either one "the block height" would be wrong.

reading…

Attested roots GET /api/federation/roots

A quorum-attested ledger root is a commitment to the whole ledger at some height — not a block, and not a list of what changed. Each row is one such commitment with the signature count the node holds for it. This is the anchor the cell check at the bottom of the page compares against, which is why an empty table here is worth reading: it means a proof can still be folded, but it is anchored to nothing.

reading…

Check a cell for yourself GET /api/cell/{id}/proof

The whole product is that claims are checkable, so this pane does the checking in your browser — it folds the ledger root from the returned leaves with its own BLAKE3 (/explorer/blake3.js), and reports what each check does and does not establish. Nothing here takes the node's word for a match.

Every panel above is a rendering of one public node route, reachable as raw JSON in a second tab. If a rendering here disagrees with that JSON, the rendering is wrong.