Files
zeekay 0b69203adb fix(testnet,mainnet): drop dead dexConfig precompile + content-hash genesis guard
CRITICAL-2 (brick-on-roll): node v1.30.27/28 removed the 0x9010 DEX
precompile; its config key `dexConfig` is no longer registered, so the
C-Chain upgrade parser rejects it with "unknown precompile config:
dexConfig" -> C-Chain VM init fails -> network brick. Remove the dead
dexConfig activation from both live luxd-startup ConfigMaps and the
testnet-dex chain config. 0x9999 (the live DEX settlement precompile) is
config-free (dated fork), so no key is added. All valid keys kept
(deadZero/dead/deadFull, routerConfig, fhe, ...). Verified against the
v1.30.28 registry (luxfi/precompile v0.5.55): dexConfig was the ONLY
rejected key; cleaned set (17 entries) parses via
extras.UpgradeConfig.UnmarshalJSON.

HIGH-3 (stale-DB crash-loop / fork): the testnet genesis-wipe guard
hashed only a hardcoded base64/gzip-header prefix
("H4sICJJeD2oAA2dlbmVzaXMuanNvbgDU"), not the decoded genesis -> a real
genesis change can leave the prefix-hash unchanged (misfire). Rewrite it
to hash the DECODED genesis content (sha256 of /data/genesis.json),
fail-closed. Mainnet had NO genesis guard at all; add the equivalent,
made production-safe: first guarded boot ADOPTS existing chain state
(never wipes), steady state preserves, and only a verified
recorded-vs-current content mismatch (a deliberate relaunch) triggers a
wipe — and the wipe never deletes the freshly written genesis.json.

Files:
- k8s/lux-mainnet/luxd-startup.yaml: drop dexConfig; add content-hash guard
- k8s/lux-testnet/luxd-startup.yaml: drop dexConfig; guard now hashes decoded genesis
- chain-configs/testnet-dex.json: drop dead dexConfig block (keep routerConfig)

Do NOT reboot testnet/mainnet — gated on the full red re-verify.
2026-07-26 15:46:00 -07:00
..