hanzo/pars/spc/osage were dangling aliases: blockchain IDs never created via
CreateChainTx (absent from platform.getBlockchains, zero block data in
/data/chainData, no brand genesis in the P-chain genesis builder). Proof of
non-materialization: each brand mapped to a DIFFERENT id across the source
manifest, the live CM, and the CR annotations — a real CreateChainTx id is
immutable. Per brand_sovereign_node_one_way luxd hosts no brand L2 EVMs; each
brand runs its own sovereign node (zood/hanzod/parsd/...).
- lux-devnet: APPLIED + verified (luxd-0 rolled): aliases.json={}; all 11
lux-native chains (P/X/C/A/B/D/G/K/Q/T/Z) bootstrapped; brands now report
'no such alias' instead of phantom isBootstrapped=false; 0 missing-last-accepted.
- lux-testnet: PROPOSED (owner-gated) — all brands phantom, drop to {}.
- lux-mainnet: PROPOSED (owner-gated) — drop hanzo/pars/spc/osage; KEEP zoo
alias restore-pending (zoo has real restorable chaindata; canonical home is
sovereign node zood per zoo_sovereign_zood_not_luxd_chain).
47 lines
2.4 KiB
YAML
47 lines
2.4 KiB
YAML
# Canonical chain aliases for lux-testnet luxd validators.
|
|
# Loaded by luxd via --chain-aliases-file (see luxd-startup.yaml).
|
|
#
|
|
# PROPOSED 2026-06-28 — owner-gated, NOT yet applied to lux-testnet.
|
|
# 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
|
|
# (zood/hanzod/parsd/…) — luxd does NOT host brand L2 EVMs. The former
|
|
# hanzo/zoo/pars/spc entries were dangling aliases: they pointed at blockchain
|
|
# IDs that were NEVER created via CreateChainTx (absent from
|
|
# platform.getBlockchains, zero block data in /data/chainData). Proof of
|
|
# non-materialization: the "hanzo" alias mapped to a DIFFERENT id in this
|
|
# manifest (2jDUTLY5…) than in the live CM (2cPZZqV7…) — a real CreateChainTx
|
|
# id is immutable. Removing them stops luxd advertising chains it doesn't run;
|
|
# isBootstrapped(brand) then reports "no such alias" not a phantom false.
|
|
#
|
|
# zoo restore path: zoo's real chaindata is restored on its OWN sovereign node
|
|
# zood (github.com/zooai/node) per zoo_sovereign_zood_not_luxd_chain — NOT luxd.
|
|
#
|
|
# MECHANISM (verified 2026-06-28): testnet 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, written once
|
|
# and retained (testnet startup does NOT wipe /data). So applying this CM alone
|
|
# is a NO-OP until the startup is re-wired to mount+install it.
|
|
#
|
|
# APPLY (owner-gated), pick ONE:
|
|
# (A) Re-wire (recommended, decomplect): add a chain-aliases CM volume+mount to
|
|
# the testnet STS and an install line (cp /aliases/aliases.json
|
|
# /data/configs/chains/aliases.json) like lux-devnet, making THIS CM the
|
|
# single source of truth; then roll pods one at a time.
|
|
# (B) Direct (minimal): on each pod overwrite the persistent file
|
|
# `printf '{}' > /data/configs/chains/aliases.json`, then roll ONE pod at a
|
|
# time (no wipe → file persists). Keep 4/5 up for quorum.
|
|
# NEVER wipe /data on a sybil-protected pod.
|
|
#
|
|
# Mainnet counterpart: lux-mainnet/chain-aliases.yaml
|
|
apiVersion: v1
|
|
kind: ConfigMap
|
|
metadata:
|
|
name: chain-aliases
|
|
namespace: lux-testnet
|
|
annotations:
|
|
lux.network/chain-aliases-policy: "lux-primary-only (brand L2s are sovereign nodes)"
|
|
lux.network/brands-dropped-at: "PROPOSED-2026-06-28"
|
|
data:
|
|
aliases.json: |
|
|
{}
|