109 lines
3.7 KiB
YAML
109 lines
3.7 KiB
YAML
# Zoo mainnet — 5 validators that join Lux mainnet primary network (networkId 1)
|
|
# and track the Zoo EVM chain (chainID 200200, blockchainID
|
|
# 4HBM17czc7zFQMPrd9CVZ6YbABm1jecf99iwvFw8Gbo6gFaU3 — looked up live
|
|
# 2026-06-10 from api.lux.network/v1/chain/p platform.getBlockchains).
|
|
#
|
|
# Bootstrap IPs and NodeIDs are the public addresses of the Lux mainnet
|
|
# validators (do-sfo3-lux-k8s, namespace lux-mainnet, LB IPs 2026-06-10).
|
|
# RLP seed for chain 200200 is loaded by luxd-rlp-import.yaml below.
|
|
apiVersion: zoo.network/v1alpha1
|
|
kind: ZooNetwork
|
|
metadata:
|
|
name: zoo-chain
|
|
spec:
|
|
networkId: 1
|
|
validators: 5
|
|
# zooai/node (zood) — replaces the ghcr.io/luxfi/node stopgap so the
|
|
# validators carry the Zoo EVM + AI precompiles (0x0303 inference, 0x0304
|
|
# aivmbridge) and can run Beluga as a real L3, not an inert luxd subnet.
|
|
# Pin to the immutable semver CI publishes (NEVER floating in prod); see the
|
|
# statefulset-patch.yaml command change (./luxd -> zood). Rollout is a gated
|
|
# prod step — it restarts the 5 live L2 validators, so apply in a window
|
|
# after the ghcr.io/zooai/node image is verified.
|
|
image:
|
|
repository: ghcr.io/zooai/node
|
|
tag: 0.2.0
|
|
pullPolicy: IfNotPresent
|
|
resources:
|
|
# requests sized to fit the zoo-nodes pool (s-4vcpu-8gb-amd, ~6.26Gi /
|
|
# ~3.8 vCPU allocatable per node); matches zoo-testnet so 5 replicas can
|
|
# co-schedule. Limits stay generous (16Gi / 8 vCPU) for mainnet headroom.
|
|
cpuRequest: "1"
|
|
cpuLimit: "8"
|
|
memoryRequest: 4Gi
|
|
memoryLimit: 16Gi
|
|
storage:
|
|
storageClass: do-block-storage
|
|
size: 200Gi
|
|
# NOTE: the Rust zoo-operator renders these config keys as ZOO_* env vars,
|
|
# but luxd does NOT read its http-host / bootstrap flags from ZOO_* env — it
|
|
# only honors real CLI flags. The flags that actually configure the node
|
|
# (--http-host=0.0.0.0, --bootstrap-ips, ...) are injected via the
|
|
# statefulset-patch.yaml strategic-merge patch below (see kustomization.yaml).
|
|
config:
|
|
BOOTSTRAP_IPS: "129.212.164.46:9631,137.184.246.133:9631,143.244.210.43:9631,143.244.210.71:9631,24.144.70.85:9631"
|
|
BOOTSTRAP_IDS: "NodeID-Mf3JfSY91oDwfBqf7rCLmhg4NDtDghw1f,NodeID-2TwSZ2oyeBK2mv7JiseEQ8m74rotDj4QR,NodeID-Ld9VFBQ9zGbd79z2vzaAqkQ3jHuqbtRpo,NodeID-8mY2fhUehN27v3LCU84BnnKEoeRfd2weC,NodeID-DwsrqSkPoE3pXWrUt9nkJ5yBycwRQ246X"
|
|
TRACK_CHAINS: "4HBM17czc7zFQMPrd9CVZ6YbABm1jecf99iwvFw8Gbo6gFaU3"
|
|
SYBIL_PROTECTION_ENABLED: "true"
|
|
---
|
|
# Zoo EVM chain status — operator just stamps status; tracking happens
|
|
# via TRACK_CHAINS env on the validator.
|
|
apiVersion: zoo.network/v1alpha1
|
|
kind: ZooChain
|
|
metadata:
|
|
name: zoo-evm
|
|
spec:
|
|
chainId: 200200
|
|
blockchainId: 4HBM17czc7zFQMPrd9CVZ6YbABm1jecf99iwvFw8Gbo6gFaU3
|
|
networkRef: zoo-chain
|
|
---
|
|
# Mainnet explorer — Lux explorer Go binary v1.2.18.
|
|
apiVersion: zoo.network/v1alpha1
|
|
kind: ZooExplorer
|
|
metadata:
|
|
name: zoo-explorer
|
|
spec:
|
|
chainRef: zoo-evm
|
|
image: ghcr.io/luxfi/explorer:1.2.18
|
|
rpcEndpoint: http://zoo-chain-rpc.zoo-mainnet.svc.cluster.local:9630/v1/chain/4HBM17czc7zFQMPrd9CVZ6YbABm1jecf99iwvFw8Gbo6gFaU3/rpc
|
|
chainName: zoo
|
|
coinSymbol: ZOO
|
|
service:
|
|
serviceType: ClusterIP
|
|
port: 8090
|
|
---
|
|
# Mainnet gateway — RPC entry point.
|
|
apiVersion: zoo.network/v1alpha1
|
|
kind: ZooGateway
|
|
metadata:
|
|
name: zoo-gateway
|
|
spec:
|
|
networkRef: zoo-chain
|
|
hosts:
|
|
- api.zoo.network
|
|
tls:
|
|
enabled: true
|
|
secretName: zoo-network-tls
|
|
---
|
|
# Single zoo-operator lives in zoo-system; per-env Deployments scale to 0.
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
metadata:
|
|
name: zoo-operator
|
|
spec:
|
|
replicas: 0
|
|
---
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
metadata:
|
|
name: zoo-bridge
|
|
spec:
|
|
replicas: 2
|
|
---
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
metadata:
|
|
name: zoo-ingress
|
|
spec:
|
|
replicas: 2
|