Files
Rob ThijssenandClaude Fable 5.1 6276a0bf98 deploy: run the node from a chain spec file with genesis assertion, bootnodes as reserved peers, raised peer limits
Mainnet launches 2026-09-10 09:09 UTC with the chain spec published as a
file before any binary embeds it. The node deploy can now run from
/etc/quantus-node/chainspec.json (CHAINSPEC_URL or the chainspec_url
input), asserts the started node's block-0 hash against EXPECTED_GENESIS
(required with a spec: it is the only defence against a look-alike), and
prints the spec id, which names <base-path>/chains/<id>/ and is what the
miner deploy must be pointed at; validate checks the miner credentials
exist under it. BOOTNODES are dialled and held as reserved peers.

The unit raises --out-peers to 32 and --in-peers to 64: bob sits at the
default cap of 40 peers today, and launch is a propagation race
(quantus/chain#1). infra-setup grants the runner the chain spec path
(applied to bob 2026-09-09).

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CBgs2nSi4H2mdh8kD8vMX5
2026-09-09 08:05:00 +03:00

36 lines
1.9 KiB
Cheetah

# Rendered by .gitea/workflows/deploy.yaml from the QUANTUS_INNER_HASH Gitea
# secret and rsynced to /etc/quantus-node/node.env (0640 root:quantus-node).
# The rendered file is never committed (generic.md §6).
#
# 32-byte wormhole preimage, 0x-prefixed — the node derives the reward address
# from it and logs that address on startup. Generated by
# script/infra-setup.sh --mint-reward-key.
QUANTUS_INNER_HASH={{QUANTUS_INNER_HASH}}
# Multiaddr other nodes should dial to reach this one, as a complete flag, or
# empty for a node with no public ingress. Behind NAT this is required — libp2p
# would otherwise advertise a 10.x address nobody outside can reach.
# Prefer a /dns4/ name over a literal address so a WAN IP change needs no
# redeploy (architecture public-dns.md uses per-site indirection names).
# --public-addr /dns4/<site-indirection-name>/tcp/30333
QUANTUS_PUBLIC_ADDR={{QUANTUS_PUBLIC_ADDR}}
# Chain spec. Deliberately configuration rather than a value baked into the unit:
# Planck is a testnet, and switching to mainnet should be one line in the
# workflow env, not an edit to a static asset. The miner credential path
# (<base-path>/chains/<chain>/) follows from the same value.
QUANTUS_CHAIN={{QUANTUS_CHAIN}}
# Bootnodes, rendered as complete flags: each address is dialled (--bootnodes)
# and held as a reserved peer (--reserved-nodes) so the connection to the
# foundation's nodes is never evicted. Empty = the spec's own bootNodes only.
QUANTUS_BOOTNODES={{QUANTUS_BOOTNODES}}
# JSON-RPC exposure. Empty = loopback only. A complete flag string opens it:
# --rpc-external --rpc-methods safe --rpc-cors all --rpc-rate-limit 300 \
# --rpc-rate-limit-whitelisted-ips 127.0.0.1/32
# `safe` still permits author_submitExtrinsic (signed, so no key exposure) and
# every state read; it blocks author_rotateKeys, system_addReservedPeer and the
# rest of the unsafe set. Never `unsafe` on a validator.
QUANTUS_RPC_EXPOSE={{QUANTUS_RPC_EXPOSE}}