— Network · Base Sepolia · chain 84532

The protocol,
read from the chain

Every figure on this page comes out of the deployed contracts. None of them is typed in, cached from a spreadsheet, or inferred from what the node logs. The reads are eth_call, which the chain answers without a transaction, without gas and without an account — so this page needs no key, holds no key, and cannot move the protocol.

The panel was written with the address book when the site was built, then re-read in your browser. If the endpoint is unreachable you still see real figures and an honest label saying when they were taken — a status page that goes blank when a public node is busy is not a status page.

— Live state

What the contracts say right now

Nine views on three contracts. The ceiling and the liability are the protocol's output; everything else is the state that produces them.

written at build timeread from https://sepolia.base.org at block 51 121 485, 2026-10-28T00:09:29.154Z

Current epoch
71 002
Head block
51 121 485
Advanced to epoch
70 815the chain's clock is at 71 002 — the gap is epochs nobody called advance() for
Aggregate ceiling, wad
0Ztakora.aggregateCeiling()
Aggregate liability, wad
0Ztakora.aggregateLiability()
Bonded verifier stake, wad
140 100 000 000 000the stake a quorum is measured against
Required bond, wad
37 393 598 585 1521.2× the largest committed ceiling
Settlement
open · 0blocked by a shortfall, and its size
Epoch geometry, blocks
720 / 240 / 240epoch / commit window / reveal window
Quorum
666667 ppmof bonded stake; three equal bonds means all three verifiers
Grace, blocks
20slack before a phase is declared missed
Required evidence classes
100b1010 — a bit set means that class must be live
Per book, as the chain had it. These four columns are the protocol's whole output: the line, what is outstanding against it, the freeboard between, and whether the issuer can still mint.
IssuerCeiling, wadLiability, wadHeadroom, wadVerdict
0xe143…6b10000inside

api/status.js re-reads every figure above from the endpoint named in the bar, decoding the replies with the same module this page was built with. If it cannot answer, the panel keeps the numbers it was built with and says so: a page that goes blank because a public node is having a day tells you nothing about the chain or about itself.

— The clock

What those two epoch numbers mean

The chain's clock, and the contract's

currentEpoch() is block.number ÷ blocksPerEpoch. It moves whether or not anyone is watching. epochStarted() is the last epoch the contract was told it had entered, by anyone calling advance() — a call that is not privileged, because nothing about it is discretionary.

When those two numbers differ, the network is not broken: it is unattended. Every epoch in the gap is an epoch in which no book was recomputed, so a mint in that window was judged against a line drawn earlier. That is the failure mode §05 of the specification is designed around — evidence decays, and the decay is arithmetic rather than a committee noticing.

The window inside the epoch

  • Commit — verifiers post a blind hash. 240 blocks.
  • Reveal — the same verifiers post the values behind those hashes. 240 blocks.
  • Settle — the aggregator's pack is checked against the reveals and the line is written to storage. 240 blocks.
  • Grace — 20 blocks of slack before a phase is declared missed, so a slow block does not become a slashed verifier.

Nothing here is scheduled on wall-clock time. A verifier cannot choose which Tuesday it benefits from by withholding a reveal, because there is no Tuesday in the protocol.

A ceiling of 0 is not an error and it is not a bug in this page. The ceiling is computed from attested collateral, and an epoch with no quorate attestation has no attested collateral: the honest answer is zero, and the contract refuses every mint above it — which is the mechanism working, not failing. What has kept this deployment at zero is the cost of a transaction on an OP Stack testnet against a faucet-funded treasury; the arithmetic, and what it would take to close one epoch, is on the operator page.

— Endpoints

Take the numbers yourself

The panel is a convenience. The JSON it reads and the chain it reads are both available to anything you would rather trust.

EndpointWhat you get
./api/statusEvery figure above, as JSON, cached for 20 seconds, refreshed by the page
./data/deployment.jsonAddresses, selectors, code sizes, creation transactions and the build-time read
./data/abi/The eight interfaces, so any tool can derive the selectors rather than copy them
https://sepolia.base.orgThe chain. The page never asks you to take its word for anything
curl -s https://demo.ztakora.com/api/status | jq .
# { "ok": true, "headBlock": 51010101, "epoch": "70847",
#   "aggregateCeiling": "0", "aggregateLiability": "0",
#   "totalBonded": "140100000000000", "requiredBond": "37393598585152",
#   "settlementBlocked": { "blocked": false, "outstanding": "0" },
#   "params": { "blocksPerEpoch": "720", "quorumNum": "666667", … },
#   "errors": [] }

curl -s https://sepolia.base.org -H 'content-type: application/json' \
  -d '{"jsonrpc":"2.0","id":1,"method":"eth_call","params":[{"to":"0x95d445fad4d54e8e5f0375a75779bf79cdf4cf15","data":"0x76671808"},"latest"]}' | jq .
# the same currentEpoch() the panel shows, from the chain rather than from us

The endpoint is one file, with no dependencies and no secrets in it. Its addresses and selectors are generated into web/server/_deployment.mjs from the compiled ABI, and it decodes replies with the same module that wrote this page's build-time figures — so the two cannot drift into disagreement. What the host runs is api/status.js at the repository root: three lines that re-export that module, because a function is built from the source tree and not from the exported site.