quai-node / the keepers
The Keepers
The nodes that keep Quai's chain, and the keepers who prove theirs: each one checked against the chain with a Merkle state proof, every few minutes. Nobody is listed who didn't ask to be.
reading the census…
The roll
Verified keepers only: each one passed our checks in the last few minutes, including a state proof against the chain. How we verify · how tiers work.
reading the roll…
The upgrade wave
go-quai versions as nodes announce them on the p2p network (libp2p identify), not as anyone reports them.
waiting for the census.
Become a keeper
quai-node, or one flag on stock go-quai
Any go-quai node on mainnet can report here under a tag you choose. The first login reserves the tag for its secret. Then the node has to pass our checks to appear on the roll. Two ways in:
Setup asks whether to report to the Keepers. Answer yes and choose a tag. quai-node makes the secret, keeps both in quai-node.toml (keepers_tag, keepers_secret) and opens the RPC the checks need.
quai-node setup
# or, without the questions:
quai-node setup --keepers-tag YourTagquai-node keepers status- what our checks see: logged in, passing, claimed
quai-node keepers claim- signs your tag with the node's key, once it has logged in
Add these flags. The secret is 16 to 128 characters: make it long and random, because it's what holds your tag.
--node.quaistats "YourTag:a-long-random-secret@keepers.quainode.org" --rpc.http-addr 0.0.0.0 --rpc.http-vhosts '*'
A secret: openssl rand -hex 24. A custom zone RPC port goes in the path: @keepers.quainode.org/9300.
what it takes
- ! Open TCP 9200, the cyprus1 RPC, to the internet, and forward it if you're behind a router. We verify the node by calling it.
- ! Know what you're opening. Port 9200 makes your node a public RPC: anyone can query it or send it transactions. go-quai exposes only the
net,web3andquaimodules there by default, with no admin and no wallet. - › Open the p2p port, TCP 4002 by default, so the census can find your node.
- › Open to miners? Run go-quai's stratum (
--node.stratum-enabled) and open its ports to show as a public mining endpoint: go-quai's defaults are 3333 (KawPoW), 3334 (Scrypt) and 3335 (SHA-256), and the swapped layout docs.qu.ai lists works too. We tell each algorithm from the way it answers. If you also open its API on 3336, we show the hashrate and workers it reports. That API has no login, which is why quai-node keeps it on127.0.0.1. - › Not showing up? Check your node's status with your tag and secret, or run
quai-node keepers status. go-quai's own log only saysStats login failed. - ✓ On the roll? Claim your node: one command signs with the node's p2p key and adds the second ring to your seal. The key never leaves the machine.
Uptime tiers
Steady · Reliable · Stalwart · Bedrock
Uptime is measured in 15-minute windows: a window counts as up when the node passed one of our checks in it. Windows our own checker wasn't watching don't count against anyone. Tiers are set once a day from completed UTC days, need at least half of their window observed, and each one also needs time on the roll. A monthly go-quai upgrade, a restart and a resync of 10 to 30 minutes, fits inside every tier. Only a quick one fits inside Bedrock.
| tier | on the roll | uptime | allows per month | keepers |
|---|---|---|---|---|
| State-proven | any | passes its checks now | · | · |
| Steady | 7+ days | 95.0%+ over 30 days | ~36 h down | · |
| Reliable | 30+ days | 99.0%+ over 30 days | ~7.2 h down | · |
| Stalwart | 30+ days | 99.5%+ over 30 days | ~3.6 h down | · |
| Bedrock | 90+ days | 99.9%+ over 90 days | ~43 min down | · |
The ring around a seal heats with the tier, from dim to white-hot. A second ring with a check means the keeper claimed the node.
How we verify
five checks, every few minutes, and what they can't prove
Before we accept a single stat, again on every login (about every 10 minutes), and at random times between:
- 01A real node lives at your IP. Our census must have found a live go-quai node on the Quai p2p network at the address your stats come from.
- 02Your RPC answers. We call your node's own RPC directly. Nothing you report is taken on faith.
- 03Your chain is the chain. Your head must be within 10 blocks of the canonical head, and your block at the check height must match the canonical block.
- 04Your numbers agree. The height in your stats and your RPC must line up, and your p2p node must hand us the canonical header at the check height.
- 05Your state is real. We ask for a
quai_getProofMerkle proof of a random account and storage slots at that block, and verify it ourselves against the block's state root.
- › Every check is made at a block 6 deep, six below the canonical head, one the network has settled on.
- › Our outages are ours. When our side can't decide (the canonical RPC is down or stale, or our census is still warming up after a restart), the check is inconclusive. It never counts against you: not for your status, not for your uptime.
- › One node, one tag. A node can hold only one tag on the roll.
- › A claimed tag is locked to its node. Once claimed, verification fails for any other node until the keeper claims again from the new one.
CPU, RAM and disk are whatever your node says, so we label them self-reported and never rank them. The canonical chain comes from rpc.quai.network. A sophisticated relay could still imitate a node: the p2p check raises the bar, it isn't a proof. A node that fails a check leaves the roll until it passes again. We never show a failing node publicly.
Claim your node · your node's status · run a node with quai-node.