From 2cb8f1cf21f9c42e93a5b25b0feaadaa58071fde Mon Sep 17 00:00:00 2001 From: rob thijssen Date: Wed, 9 Sep 2026 12:07:21 +0300 Subject: [PATCH] config: the node on bob is mainnet now, not Planck MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 Claude-Session: https://claude.ai/code/session_01Jp6a8EDar9ueEhAxzep4V5 --- CLAUDE.md | 23 +++++++++++++++--- asset/config/config.toml.tmpl | 46 ++++++++++++++++++++++++++--------- readme.md | 4 +-- 3 files changed, 56 insertions(+), 17 deletions(-) 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