config: the node on bob is mainnet now, not Planck
Mainnet launched today and the node was switched to it. The observer reads whatever the node is on, so the `[[chains]]` entry pointing at 127.0.0.1:9944 had to follow it — until now the daemon was filing mainnet's blocks under the id `planck`, with Planck's genesis and PLK still attached to them. Read from the node, not assumed: `system_chain` "Quantus", genesis `0xfb5487c0…626fba`, token QTC. `mainnet = true` is asserted here rather than inferred, which is the field's whole purpose — telemetry also carries a chain calling itself "Quantus Staging Mainnet", and it is not this one. The target block time is **12 s, not the 6 s Planck used**. `TARGET_BLOCK_TIME_MS` is 12_000 in the runtime the node actually runs — checked at commit b017e642, the `0.11.1-b017e6420aa` its `system_version` reports, rather than at the tip of the chain repo. It is the denominator for every hashrate published before twenty tip samples exist, which on a chain hours old is all of them, so carrying 6.0 across would have put out a mainnet hashrate at exactly twice its true value — labelled "nominal", not broken. Planck keeps its 268 telemetry nodes and stays in the site's navigation as `no_endpoint`: still listed, no longer navigable, because authorship comes from block headers and we no longer run a node that serves Planck's. That is an ordinary state here, not an outage. Nothing about the node itself is touched by this; every command run against it was a read. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Jp6a8EDar9ueEhAxzep4V5
This commit is contained in:
23
CLAUDE.md
23
CLAUDE.md
@@ -72,9 +72,16 @@ explicit transaction to be equivalent.
|
||||
|
||||
## Facts established by measurement
|
||||
|
||||
Taken from the live Planck chain, 2026-09-04. Don't re-derive or contradict
|
||||
Taken from the live **Planck** chain, 2026-09-04. Don't re-derive or contradict
|
||||
without re-measuring.
|
||||
|
||||
**Planck is no longer the tracked chain.** Mainnet launched 2026-09-09 and the
|
||||
node on bob was switched to it; the `[[chains]]` entry followed the node, so
|
||||
`quantus` is now what that endpoint serves and Planck is telemetry-listed only.
|
||||
The decoding facts below still hold — same runtime family, same digest shape —
|
||||
but every *timing* figure was measured on Planck against a 6 s target and says
|
||||
nothing about mainnet, which targets 12 s.
|
||||
|
||||
- Header digest shape is exactly `0x06` + `706f775f` + compact `0x80` (32) +
|
||||
32-byte preimage. Genesis is the only header without one; 12/12 recent headers
|
||||
decoded.
|
||||
@@ -87,6 +94,14 @@ without re-measuring.
|
||||
factor of three between refreshes.
|
||||
- `system_properties`: `PLK`, 12 decimals, ss58 prefix 189. Genesis
|
||||
`0x4901bf5c…e65e72`.
|
||||
- Mainnet, read from bob 2026-09-09: `system_chain` "Quantus", token `QTC`, 12
|
||||
decimals, ss58 189, genesis `0xfb5487c0…626fba`. **Its target block time is
|
||||
12 s, not Planck's 6** — `TARGET_BLOCK_TIME_MS = 12_000` at commit `b017e642`,
|
||||
which is the `0.11.1-b017e6420aa` the node reports. Check the constant at the
|
||||
commit the node actually runs, not at the tip of the chain repo: this figure
|
||||
is the denominator for every hashrate shown before twenty tip samples exist,
|
||||
so getting it wrong publishes a headline that is wrong by exactly that factor
|
||||
and labelled "nominal" rather than broken.
|
||||
- The telemetry feed URL is `wss://feed-telemetry.quantus.cat/feed` — found in
|
||||
`/tmp/env-config.js` on the telemetry site, **not** the `/feed` path on the
|
||||
main host, which 404s.
|
||||
@@ -211,8 +226,8 @@ serving an empty leaderboard. Check the numbers:
|
||||
|
||||
```sh
|
||||
cargo run -p blackbeard-cli -- probe --rpc-url http://bob.hanzalova.internal:9944
|
||||
cargo run -p blackbeard-cli -- standings --chain planck
|
||||
curl -s localhost:25864/v1/chains/planck/summary | python3 -m json.tool
|
||||
cargo run -p blackbeard-cli -- standings --chain quantus
|
||||
curl -s localhost:25864/v1/chains/quantus/summary | python3 -m json.tool
|
||||
```
|
||||
|
||||
The block route degrades rather than failing, so it is worth checking both ends
|
||||
@@ -221,7 +236,7 @@ of that: a recent height should carry `difficulty`, `extrinsics` and
|
||||
difficulty to state pruning unless this observer recorded it at the time.
|
||||
|
||||
```sh
|
||||
curl -s localhost:25864/v1/chains/planck/blocks/1070000 | python3 -m json.tool
|
||||
curl -s localhost:25864/v1/chains/quantus/blocks/1000 | python3 -m json.tool
|
||||
```
|
||||
|
||||
A working deployment shows a non-null `telemetry_nodes`, `distinct_miners` above
|
||||
|
||||
@@ -72,13 +72,38 @@ max_connections = 8
|
||||
# start.
|
||||
|
||||
[[chains]]
|
||||
id = "planck"
|
||||
display_name = "Planck"
|
||||
genesis = "0x4901bf5c57fd3f9e726af399c763de6670dbdb115a91c0237e173f16eef65e72"
|
||||
id = "quantus"
|
||||
display_name = "Quantus"
|
||||
# Mainnet. Genesis read from the node itself on 2026-09-09, the day it launched:
|
||||
# `chain_getBlockHash(0)` against bob, which reports system_chain "Quantus" and
|
||||
# a QTC token. It is NOT the staging chain — that one is
|
||||
# `0xb0e90ed9f291a9194f79…` and telemetry calls it "Quantus Staging Mainnet".
|
||||
genesis = "0xfb5487c0be6ae4ade2d41d16e50465129861636c2b8d61fa94d7a19631626fba"
|
||||
# Operator-asserted, never inferred — the whole reason this field exists is that
|
||||
# a chain publishing itself as "Quantus Staging Mainnet" must not get it by
|
||||
# having "mainnet" in its name. This one is the real network.
|
||||
mainnet = true
|
||||
# Loopback: we run this node. 9944 serves HTTP and WebSocket both.
|
||||
#
|
||||
# This endpoint used to be Planck. The node was switched to mainnet on
|
||||
# 2026-09-09 and this entry followed it — the observer reads whatever the node
|
||||
# is on, so leaving the id as `planck` would have filed mainnet's blocks under
|
||||
# the testnet's name. Planck itself still has 268 nodes on telemetry, so it
|
||||
# stays in the site's navigation; it is simply no longer navigable, because
|
||||
# authorship comes from headers and we no longer hold an endpoint that serves
|
||||
# them. That is the ordinary `no_endpoint` state, not an outage.
|
||||
rpc_url = "http://127.0.0.1:9944"
|
||||
ws_url = "ws://127.0.0.1:9944"
|
||||
target_block_time_seconds = 6.0
|
||||
# TWELVE, not the 6.0 Planck used. `TARGET_BLOCK_TIME_MS` is 12_000 in the
|
||||
# runtime bob actually runs — verified at commit b017e642, which is the
|
||||
# `0.11.1-b017e6420aa` its `system_version` reports, not merely at the tip of
|
||||
# the chain repo. This is the denominator for every hashrate shown before
|
||||
# twenty tip samples exist, so carrying Planck's 6.0 over would have published
|
||||
# a mainnet hashrate exactly twice its true value, correctly labelled
|
||||
# "nominal — from target block time" and wrong.
|
||||
target_block_time_seconds = 12.0
|
||||
# The chain is hours old. These are harmless while its history is shorter than
|
||||
# the window — the warm start simply finds fewer blocks than it asks for.
|
||||
warm_start_blocks = 100800
|
||||
max_gap_fill_blocks = 5000
|
||||
|
||||
@@ -96,13 +121,12 @@ target_block_time_seconds = 6.0
|
||||
warm_start_blocks = 100800
|
||||
max_gap_fill_blocks = 5000
|
||||
|
||||
# Quantus Staging Mainnet and Quantus Dirac Testnet are listed in the nav from
|
||||
# telemetry and are NOT navigable: neither publishes an RPC endpoint we can
|
||||
# find. The pattern for the ones that do is `a1-<chain>.quantus.cat` /
|
||||
# Planck, Quantus Staging Mainnet and Quantus Dirac Testnet are listed in the
|
||||
# nav from telemetry and are NOT navigable: none publishes an RPC endpoint we
|
||||
# can find, and the one node we ran for Planck now mines mainnet. The pattern for the ones that do is `a1-<chain>.quantus.cat` /
|
||||
# `a2-<chain>.quantus.cat`; if endpoints appear for those chains, each becomes a
|
||||
# [[chains]] block like the two above and nothing else changes.
|
||||
#
|
||||
# Real mainnet has not launched. It is expected to follow a commit to
|
||||
# github.com/Quantus-Network/chain publishing a new mainnet spec, around the
|
||||
# announced 2026-09-09 TGE — "Quantus Staging Mainnet" is a staging chain and
|
||||
# deliberately not labelled `mainnet = true` here.
|
||||
# Mainnet launched on 2026-09-09 as telemetry's "Quantus", and is the
|
||||
# `[[chains]]` entry above. "Quantus Staging Mainnet" is a different, staging
|
||||
# chain and remains deliberately unlabelled.
|
||||
|
||||
@@ -134,10 +134,10 @@ minutes.
|
||||
|
||||
## A block has two addresses, and only one of them is stable
|
||||
|
||||
`#/planck/1069799` is a *position*. Because `block` is keyed on (chain, height)
|
||||
`#/quantus/1069799` is a *position*. Because `block` is keyed on (chain, height)
|
||||
and a reorg overwrites, a link to a height quietly comes to mean a different
|
||||
block the moment the chain forks there. So opening one resolves it and rewrites
|
||||
the address to `#/planck/0x…`, which names one block for good — including after
|
||||
the address to `#/quantus/0x…`, which names one block for good — including after
|
||||
it has lost, which is the only way an orphan is linkable at all.
|
||||
|
||||
The page is assembled from both sources because neither is sufficient. The node
|
||||
|
||||
Reference in New Issue
Block a user