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

46 lines
1.8 KiB
YAML

# Canonical chain aliases for lux-dev-k8s devnet luxd validators.
#
# Maps blockchainID → [alias names] for the 4 brand L2 EVMs registered on
# the devnet 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, "devnet")` — 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 devnet — evmChainID 36964 (0x9064)
# zoo devnet — evmChainID 200202 (0x30e0a)
# spc devnet — evmChainID 36912 (0x9030)
# pars devnet — evmChainID 494951 (0x78d67)
#
# 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 (deterministic SHA-256 keyfile at
# ~/work/lux/keys/deployer-test-dev/private.key — shared key across
# testnet+devnet, address differs by HRP):
# P-dev19zc4fcupelfkue4z9wujxmu2tv9505q20pelm6
#
# Mainnet counterpart: lux-mainnet/chain-aliases.yaml (separate because
# mainnet chains live under different blockchainIDs).
apiVersion: v1
kind: ConfigMap
metadata:
name: chain-aliases
namespace: devnet
labels:
app.kubernetes.io/cluster: lux-dev-k8s
app.kubernetes.io/env: devnet
app.kubernetes.io/name: luxd-chain-aliases
data:
aliases.json: |
{
"2gSYzcV4Jo3ATAPrsJnjhmUjPVtmMNFqEMCpDjZ2hroAtzz3Ko": ["hanzo"],
"GP4ZLRFjoTcZSmuhPvJWuvRdHC4ZhiYp5M2RSPQxc33sNjkuD": ["zoo"],
"2bgKkULQx7nuNPD5tVKfHjMiaqKbQWykwNVECKAL4EDuTmHGyE": ["spc"],
"YNcHsEAEy4tRjGi4TmEvgKXk6bykh7BSRpeCRjWJKNkYkRdB6": ["pars"]
}