Embed the mainnet chain spec: --chain mainnet - #695
Merged
Conversation
node/src/chain-specs/mainnet.json is the mainnet.json asset of release
v1.0.0-gm (genesis runtime = srtool wasm sha256 a308b485..., genesis hash
0xfb5487c0be6ae4ade2d41d16e50465129861636c2b8d61fa94d7a19631626fba) with
the seven a{1..7}-p2p-mainnet.quantus.com bootnodes filled in. bootNodes
sits outside genesis, so the genesis object is byte-identical to the
released file and the hash is unchanged.
Operators can now run --chain mainnet instead of passing the file. The
chain id is the same, so nodes started on v0.11.1 with --chain ./mainnet.json
keep their database.
illuzen
approved these changes
Sep 9, 2026
n13
commented
Sep 9, 2026
n13
left a comment
Collaborator
Author
There was a problem hiding this comment.
Reviewer model: GPT 5.6 Sol
Verdict (advisory): Approve
No blocking findings. The mainnet loader arm follows the repository's documented chain-spec workflow, and the embedded spec preserves the released chain identity.
Validation:
- Reviewed the complete
f5828f0b...b8682608diff and the surroundingload_spec/chain-spec generation paths. - Downloaded the
v1.0.0-gmmainnet.jsonrelease asset and confirmed every field except the intentionally populatedbootNodesarray is identical. The genesis object is identical, the embedded runtime hashes to the publisheda308b485...f80ded, and an existing v0.11.1 node parsed and round-tripped the file unchanged. - Started that node from the PR's spec: it reproduced genesis
0xfb5487c0be6ae4ade2d41d16e50465129861636c2b8d61fa94d7a19631626fba, bootstrapped, synchronized to the live tip, and retained chain idmainnet. git diff --check, the pinnedscripts/fmt.sh --all -- --check, and Taplo passed. Exact-head CI formatting, strict Clippy, rustdoc, dependency cooldown, and feature-gate checks are green; the Linux/macOS test matrix was still running when reviewed.
Non-blocking operational note: six advertised bootnode identities connected during the smoke test; a4-p2p-mainnet.quantus.com:30333 timed out in the point-in-time check, while the redundant set still reached seven peers and fully synchronized.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
node/src/chain-specs/mainnet.json: themainnet.jsonasset of release v1.0.0-gm with the sevena{1..7}-p2p-mainnet.quantus.combootnodes filled in.bootNodessits outsidegenesis, so the genesis object is byte-identical to the released file and the genesis hash is unchanged:0xfb5487c0be6ae4ade2d41d16e50465129861636c2b8d61fa94d7a19631626fba."mainnet"arm toload_specinnode/src/command.rs, so operators run--chain mainnetinstead of passing the file (docs/CHAINSPEC_CREATION.mdstep 3).a308b485…f80ded, spec_version 152). The chain id is unchanged, so nodes started on v0.11.1 with--chain ./mainnet.jsonkeep their database when they switch.Intended to ship as the node-only
v1.0.0release.Test plan
jq -cS .genesissha256 identical between the release asset and the new file;bootNodeslength 7.cargo build --release -p quantus-node, thenbuild-spec --chain mainnet --rawround-trips with the same genesis object and seven bootnodes.quantus-node --chain mainnet --tmpagainst the live network: logsInitialized genesis block 0xfb5487c0…626fba,chain_getBlockHash(0)returns the same,system_healthshows 7 peers within a minute, and the node was syncing (best block 4904 at the time).