Files
zeekay b8f26df495 universe(test+dev): register 4 brand L2 chains on fresh primaries (closes #168)
CreateChainTx fired on testnet + devnet P-chains for all 4 brand L2 EVMs
(hanzo / zoo / spc / pars) — 8 chains total, all isBootstrapped=true on
all 3 pods per env (24/24 verified). Each chain uses the canonical EVM
plugin (vmID mgj786NP7uDwBCcq6YwThhaN8FLyybkCa4zBWTQbNgmK6k9A6) and its
own per-chain validator-network (CreateNetworkTx ID, L2-anchor pattern).
All 5 primary validators added as chain validators via
IssueAddChainValidatorTx.

EVM chain IDs match the LP-182 canonical map per (brand, env):
  hanzo: test=36962 dev=36964
  zoo  : test=200201 dev=200202
  spc  : test=36910 dev=36912
  pars : test=494950 dev=494951

Required a second wipe-and-rebootstrap of both primaries because #186's
fresh genesis funded all 50T LUX into the validator stake (zero spendable
P-chain balance for the deployer). Added a 6th allocation per genesis (a
deterministic SHA-256 deployer key — 100K LUX spendable, NOT in
initialStakedFunds). Reapplied lux-{testnet,devnet}-genesis ConfigMap,
scaled luxd StatefulSet 3→0→3, P + C re-bootstrapped in ~75s on all pods.
Snapshots from #186 retained (data-luxd-{0..2}-20260602).

Inventory committed at
k8s/lux-{test,dev}-k8s/{testnet,devnet}/chains-inventory.json (8 chains:
blockchainID + per-chain networkID + evmChainID + bootstrap timestamps).
chain-aliases ConfigMap committed for each env mapping
brand-name → blockchainID for operator + gateway convenience.

Tool used: ~/work/lux/genesis/cmd/bootstrap-chain (lux/genesis@HEAD —
adds --key-file flag) against ~/work/lux/node/wallet/network/primary
(lux/node@HEAD — fail-soft FetchState when X-Chain disabled).

Followups:
- Roll block 1 on each L2 (eth_blockNumber > 0) via heartbeat tx when
  downstream contract deploys land.
- Update lux-gateway/gateway.yaml routing for /testnet/* and /devnet/*
  paths to point at the new lux-{test,dev}-k8s namespaces (currently
  still routes to legacy lux-testnet/lux-devnet namespaces).
- Migrate ~/work/lux/keys/deployer-test-dev/private.key to KMS once
  kms-operator is deployed in test+dev clusters.
2026-06-02 13:49:37 -07:00

47 lines
1.9 KiB
YAML

# Canonical chain aliases for lux-test-k8s testnet luxd validators.
#
# Maps blockchainID → [alias names] for the 4 brand L2 EVMs registered on
# the testnet primary via CreateChainTx on 2026-06-02 (closes #168).
#
# Per-env canonical EVM chain IDs come from luxfi/genesis configs
# `lp182_chain_id_map.go::EVMChainIDFor(brand, "testnet")` — these are the
# source of truth, NOT the blockchain (CB58) IDs which are derived from
# the CreateChainTx tx ID and are env-specific opaque strings.
#
# hanzo testnet — evmChainID 36962 (0x9062)
# zoo testnet — evmChainID 200201 (0x30e09)
# spc testnet — evmChainID 36910 (0x902e)
# pars testnet — evmChainID 494950 (0x78d66)
#
# All chains registered using vmID
# mgj786NP7uDwBCcq6YwThhaN8FLyybkCa4zBWTQbNgmK6k9A6 (canonical EVM plugin).
# Each chain is anchored on its own per-chain validator-network
# (CreateNetworkTx ID), with all 5 primary validators added as chain
# validators via IssueAddChainValidatorTx.
#
# Deployer P-chain control key (BIP44 m/44'/9000'/0'/0/5 derivation, but
# in this case the deployer is a deterministic SHA-256 keyfile, NOT a
# BIP44-derived address — file lives at
# ~/work/lux/keys/deployer-test-dev/private.key):
# P-test19zc4fcupelfkue4z9wujxmu2tv9505q27ph88j
#
# Mainnet counterpart: lux-mainnet/chain-aliases.yaml (kept separate
# because mainnet chains live under different blockchainIDs).
apiVersion: v1
kind: ConfigMap
metadata:
name: chain-aliases
namespace: testnet
labels:
app.kubernetes.io/cluster: lux-test-k8s
app.kubernetes.io/env: testnet
app.kubernetes.io/name: luxd-chain-aliases
data:
aliases.json: |
{
"2Cgj3Re98MfRB44SneJcfF4K6uctP2shAZKayrLpAZenzyBH7d": ["hanzo"],
"2UHBMA2XfiB1azgNANbby9oexbMV4aQ5JMDuLPEGvMNSLB2BrN": ["zoo"],
"2uKb33jCcZWCBurRG6UYtvgKd5reycscN6yXToHjhLUWzkdXYc": ["spc"],
"WhWbGHTi8SFRjHrTYDWSxhPFgUvQW2oiwzNvHgLxEdeWVS9ca": ["pars"]
}