manifests/{devnet,production,testnet}.yml claimed to be "source of truth for
what is deployed on lux-k8s", last edited 2026-04-20, listing tag: latest and
sha: latest per service. Nothing has read them since; the ApplicationSet reads
deploy/, and the only writer that touched them was update-image.yml, which was
sed-ing into a tree CD does not open.
manifests/safes.yaml was the one live file in there and is not a deployment
manifest at all — it is Lux's Safe topology. It moves to SAFES.yaml, beside
NETWORKS.yaml and chain.yaml, where this repo keeps its fact tables.
scripts/deploy-do.sh creates three DigitalOcean droplets, cloud-inits docker on
them and runs compose over ssh. That is the arrangement DOKS replaced.
sync-pars-universe.sh no longer copies it into the Pars bundle.
renovate.json stops matching manifests/. It still does not match deploy/, and
that is now on purpose rather than an oversight: pin.sh resolves a tag and its
digest from one registry read, and a second writer offering a bare tag would
leave the pair disagreeing — which deploys the digest.
Co-authored-by: Hanzo Dev <[email protected]>
87 lines
5.8 KiB
YAML
87 lines
5.8 KiB
YAML
# Lux governance Safe topology — canonical deterministic manifest.
|
|
#
|
|
# AUTHORITATIVE ADDRESS SOURCE: ~/work/lux/standard/deployments/org-safes/lux-96369.json
|
|
# (this file mirrors it for humans; if they ever disagree, the JSON wins).
|
|
# Reproducible from this repo via the shared, PROVEN deploy tool:
|
|
# ~/work/lux/standard/script/deploy_org_safes.sh (deploy)
|
|
# ~/work/lux/standard/script/predict_org_safes.sh (predict/verify addresses)
|
|
#
|
|
# Pattern: Safe v1.5.0 (SafeL2 singleton + SafeProxyFactory + CompatibilityFallbackHandler
|
|
# + MultiSendCallOnly). Infra deployed via the Arachnid CREATE2 deployer
|
|
# (0x4e59b44847b379578588920ca78fbf26c0b4956c, salt=0) so the suite is REPRODUCIBLE on any
|
|
# re-import; Safe proxies via createProxyWithNonce (CREATE2 salt=keccak(saltString)).
|
|
# All Safes 1/1 owner 0x9011 at bootstrap; real signers onboarded post-launch via
|
|
# https://safe.lux.network. Non-destructive: creates NEW contracts, moves NO funds.
|
|
#
|
|
# 2026-07 RECONCILIATION: the previous nonce-CREATE suite (singleton 0x286046f0,
|
|
# dao 0x51284dC2, team 0x864297c0, foundationTimelock 0x00477Dfb) was LOST on the 2026-07
|
|
# RLP re-import (0x9011 nonce advanced past the CREATE slots) — those addresses are now
|
|
# code=0 (dead). This file has been updated to the live CREATE2 suite below.
|
|
version: "1"
|
|
org: lux
|
|
chainId: 96369
|
|
rpc: https://api.lux.network/v1/chain/C/rpc
|
|
status: deployed
|
|
owner: "0x9011E888251AB053B7bD1cdB598Db4f9DEd94714" # 1/1 bootstrap owner, threshold 1
|
|
threshold: 1
|
|
deployer: "0x9011E888251AB053B7bD1cdB598Db4f9DEd94714" # lux-deployer secret (do-sfo3-lux-k8s/lux-mainnet)
|
|
foundationMinDelay: 86400
|
|
|
|
infra: # CREATE2 via Arachnid deployer (salt=0) — reproducible on re-import
|
|
create2Deployer: "0x4e59b44847b379578588920ca78fbf26c0b4956c"
|
|
singleton: "0xED96250C6cDca3B5e5F8F066Fc3e200Ebe08BA87" # SafeL2 v1.5.0
|
|
factory: "0x136d2B4F8C92acFE2506D022EdbBdc0257d43D3c" # SafeProxyFactory
|
|
fallbackHandler: "0xf53b58eF51dfA4ddE0Bc17d023e0E41d2cb38709" # CompatibilityFallbackHandler
|
|
multiSendCallOnly: "0xa617634F901c343466af794cAB9EfCfCA6D0a78f"
|
|
|
|
safes:
|
|
# STANDING RISK, measured on 96369 at block 1098197: every Safe below is threshold 1 with the
|
|
# single owner 0x9011, no modules (getModulesPaginated -> [] + sentinel), no guard (slot 0), on
|
|
# the canonical singleton 0xED96250C and handler 0xf53b58eF. One key is therefore the sole
|
|
# authority over the whole DEX and the treasury. Harden to n-of-m (add owners FIRST, then
|
|
# changeThreshold — once threshold > 1 a lone pre-validated signature reverts GS020) before launch.
|
|
dao: # a.k.a. VAULT (record: vault == daoSafe, salt lux.dao.safe.v1)
|
|
role: "Lux DAO treasury / VAULT — unified owner of the entire DEX (Path-A stateUpgrade re-owned 23 contracts; holds operational treasury; parent of child Safes)"
|
|
saltString: lux.dao.safe.v1
|
|
address: "0xE54cAf7E0C04E0eC69BE9302B97613De89745DDC"
|
|
status: deployed # live 1/1 owner 0x9011 — do NOT redeploy
|
|
gasSource: true # the ONE Safe the operating key 0x9011 is refilled from.
|
|
# Verified on-chain 2026-07-28: threshold 1, owners [0x9011],
|
|
# 0 modules, Safe nonce 3, balance 994,729,722,350.34 LUX.
|
|
daoGovernance:
|
|
role: "Lux DAO governance Safe — target of the 1T governance split from 0x9011 (PENDING owner confirmation before transfer)"
|
|
saltString: lux.dao.governance.v1
|
|
address: "0x8E29b816c6C35b13cE1ff68D33E245C2bda8ac3D"
|
|
status: deployed # do NOT redeploy; Safe nonce 0 — never invoked. Keep it that
|
|
# way: not a gas source, no ops traffic, pending the 1T split.
|
|
# Verified on-chain 2026-07-28: threshold 1, owners [0x9011],
|
|
# 0 modules, nonce 0, balance exactly 1,000,000,000,000 LUX
|
|
# (the 1T split LANDED — this Safe holds it now).
|
|
team:
|
|
role: "Lux Z/Team private Safe (team P/X + 0x9011 residual)"
|
|
saltString: lux.z.private.safe.v1
|
|
address: "0x2b61dd5E654FE16F2A40e94d11f10eFb9c76575F"
|
|
status: deployed # do NOT redeploy
|
|
|
|
foundationTimelock: # OZ TimelockController — transparent EVM-native unlock
|
|
address: "" # NOT redeployed on 96369 after the 2026-07 re-import (was 0x00477Dfb, now dead)
|
|
status: not-deployed
|
|
minDelay: 86400 # 24h
|
|
proposer: "0xE54cAf7E0C04E0eC69BE9302B97613De89745DDC" # DAO/Vault Safe schedules
|
|
canceller: "0xE54cAf7E0C04E0eC69BE9302B97613De89745DDC" # DAO/Vault Safe cancels
|
|
executor: "0x0000000000000000000000000000000000000000" # open execution after delay
|
|
admin: "0x0000000000000000000000000000000000000000" # no admin backdoor; self-administered
|
|
|
|
# C-Chain (96369) is PRESERVED from genesis (owner directive); "reboot into Safes" =
|
|
# additive deploy + on-chain consolidation (Path-A StateUpgrade), never a wipe.
|
|
deploy:
|
|
foundation:
|
|
note: "foundationTimelock is NOT currently deployed on 96369 (lost in the 2026-07 re-import); run this to (re)deploy it against the live CREATE2 suite"
|
|
command: |
|
|
ORG=lux RPC=https://api.lux.network/v1/chain/C/rpc KEY_CTX=do-sfo3-lux-k8s KEY_NS=lux-mainnet \
|
|
MODE=foundation_only DAO_SAFE=0xE54cAf7E0C04E0eC69BE9302B97613De89745DDC \
|
|
TEAM_SAFE=0x2b61dd5E654FE16F2A40e94d11f10eFb9c76575F \
|
|
SINGLETON=0xED96250C6cDca3B5e5F8F066Fc3e200Ebe08BA87 FACTORY=0x136d2B4F8C92acFE2506D022EdbBdc0257d43D3c \
|
|
HANDLER=0xf53b58eF51dfA4ddE0Bc17d023e0E41d2cb38709 MULTISEND=0xa617634F901c343466af794cAB9EfCfCA6D0a78f \
|
|
EXECUTE=yes bash ~/work/lux/standard/script/deploy_org_safes.sh
|