diff --git a/CLAUDE.md b/CLAUDE.md index 36e571c..cfadacc 100644 --- a/CLAUDE.md +++ b/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 diff --git a/asset/config/config.toml.tmpl b/asset/config/config.toml.tmpl index 3f899b9..7e1238c 100644 --- a/asset/config/config.toml.tmpl +++ b/asset/config/config.toml.tmpl @@ -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-.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-.quantus.cat` / # `a2-.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. diff --git a/readme.md b/readme.md index 981c910..83dbe8a 100644 --- a/readme.md +++ b/readme.md @@ -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