Files

57 lines
3.2 KiB
YAML

# Canonical chain aliases for lux-mainnet luxd validators.
# Loaded by luxd via --chain-aliases-file (see luxd-startup.yaml).
#
# PROPOSED 2026-06-28 — owner-gated, NOT yet applied to lux-mainnet.
# luxd runs the LUX primary network ONLY (P/X/C + lux-native A/B/D/G/K/Q/T/Z).
# Per brand_sovereign_node_one_way each brand runs its OWN sovereign node —
# luxd does NOT host brand L2 EVMs. The hanzo/pars/spc/osage entries below were
# PHANTOM: dangling aliases pointing at blockchain IDs that were NEVER created
# via CreateChainTx. Direct ground truth (NOT the gateway cache the prior
# "reconciled to live P-Chain values" comment trusted):
# - platform.getBlockchains on luxd-0:9630 returns ONLY the 10 lux-native
# chains (P/X/C/A/B/D/G/K/Q/T/Z) — none of these 5 brand IDs.
# - /data/chainData/network-1 holds ONLY those 10 + P — ZERO brand block data.
# So they generate isBootstrapped=false (dangling) and /v1/chain/{brand}/rpc 404.
# Dropping them removes the dead advertising and the gateway-404 confusion.
#
# ZOO IS KEPT (do NOT blanket-drop): mainnet zoo (chainId 200200) is a REAL
# chain — it had live history (h=799 via RLP import) and its chaindata is
# restorable. Its canonical home is the sovereign node zood
# (github.com/zooai/node) per zoo_sovereign_zood_not_luxd_chain. The zoo alias
# stays here as restore-pending so routing intent is preserved; when zood
# serves zoo, repoint zoo routing to api.zoo.network and remove this alias.
# (zoo currently has ZERO data on luxd too — the alias is dangling until
# restored — but it is intentionally retained pending the zood bringup.)
#
# MECHANISM (verified 2026-06-28): mainnet luxd does NOT mount this CM — the STS
# mounts only data/startup-script/staking-keys. The LIVE alias source is the
# PERSISTENT /data/configs/chains/aliases.json on each pod's PVC (currently
# hanzo=2Tdhxq…/zoo=tQzPnAp…/pars=SsbCrV3…/spc=yJ9tBV…/osage=2FtVpr… — a FOURTH
# distinct id set, vs this CM's RHuUsL…/4HBM17…, the devnet manifest's 2Jtt431M…,
# and devnet-live fKXPhd… — proving non-materialization). Mainnet startup does
# NOT wipe /data, so the file is retained across restarts. Applying this CM alone
# is a NO-OP until startup is re-wired to mount+install it.
#
# APPLY (owner-gated), pick ONE:
# (A) Re-wire (recommended): add a chain-aliases CM volume+mount + install line
# to the mainnet STS like lux-devnet, making THIS CM the single source.
# (B) Direct (minimal): on each pod set the persistent file to lux-primary-only
# (keep zoo: `printf '{"<live-zoo-id>":["zoo"]}' > /data/configs/chains/aliases.json`).
# THEN roll ONE pod at a time, wait Ready + isBootstrapped(C)=true before the
# next, so the other 4 hold quorum. MAINNET pods are sybil-protected: NEVER wipe
# /data/db. No operator manages lux-mainnet (scaled 0/0) — direct STS/file ops
# are not reverted.
apiVersion: v1
kind: ConfigMap
metadata:
name: chain-aliases
namespace: lux-mainnet
annotations:
lux.network/chain-aliases-policy: "lux-primary-only + zoo restore-pending (zood)"
lux.network/brands-dropped-at: "PROPOSED-2026-06-28"
data:
aliases.json: |
{
"4HBM17czc7zFQMPrd9CVZ6YbABm1jecf99iwvFw8Gbo6gFaU3": ["zoo"]
}