beluga: wire L3 to run zooai/node (replace luxd stopgap) (#5)
* beluga: wire L3 to run zooai/node (replace luxd stopgap)
Make the Beluga L3 (chainId 420420) a real thinking-chain instead of an
inert luxd subnet stub. The zoo-chain validators tracked beluga under
ghcr.io/luxfi/node (luxd) — a bare subnet runtime with no Zoo EVM and no
AI precompiles, so beluga could never instantiate (blockchainID empty).
Switch the zoo-chain ZooNetwork image to ghcr.io/zooai/node (zood), which
self-installs the Zoo EVM (AI/FHE/PQ/ZK precompiles, incl. the 0x0303
deterministic in-consensus inference precompile and the 0x0304 aivmbridge
that settles Tier-2 Proof-of-Thought to the Lux A-Chain), Zoo DEX and Zoo
FHE VM plugins at startup.
- base/network.yaml + zoo-{devnet,testnet,mainnet}/network-patch.yaml:
image ghcr.io/luxfi/node -> ghcr.io/zooai/node.
- zoo-{devnet,testnet,mainnet}/statefulset-patch.yaml: command ./luxd ->
zood (zood wraps luxfi/node, identical config.BuildFlagSet, so all flags
apply verbatim). Beluga's blockchainID is appended to --track-chains
once the CreateChainTx mints it on the Zoo primary network.
- base/beluga.yaml: enrich the ZooChain CR with vmId (Zoo EVM
2n2njofjYvece8gZWCNnc1mqkcqfW6kbrhPRZPVzwxrSQrQ4gE) and
genesisConfigMap (beluga-genesis), per the operator ZooChainSpec.
- base/kustomization.yaml: configMapGenerator beluga-genesis from
k8s/base/beluga/{genesis.json,config.json} (stable name, no hash).
- k8s/base/beluga/: deployed copy of the canonical genesis+config
(evmChainId 420420, BLG gas, precompile-upgrade activations at ts 0).
Image tags are floating `latest` only on devnet; testnet/mainnet pin the
immutable CI semver. The live rollout (restarts the L2 validators) is a
gated prod step performed after the ghcr.io/zooai/node image is verified.
* beluga: pin zood image to immutable sha-371ea17-amd64-node
ghcr.io/zooai/node built CGO-free (hermetic vendored build, digest
sha256:12e8244d…) and published. Pin the operator ZooChain CR image off the
floating 'latest' to the immutable build SHA per prod policy.
* beluga: pin devnet+testnet zood image to sha-371ea17-amd64-node (consistency)
* beluga(devnet): image is operator-derived from the ZooNetwork CR, not the patch
Per 'one and only one way, operator-derived': the zood image comes solely from
k8s/base/network.yaml (the ZooNetwork CR); the operator renders it. The patch
asserts only the luxd CLI flags the operator wrongly passes as ZOO_* env.
* beluga: pin zood image to clean semver 0.2.0 (not the sha hash)
Proper semver for all image pins — ghcr.io/zooai/node:0.2.0 (digest 12e8244d,
same build), not sha-371ea17-amd64-node. The ZooNetwork CR is the single source;
the operator renders it onto the StatefulSet.
This commit is contained in:
+18
-1
@@ -23,8 +23,25 @@ metadata:
|
||||
spec:
|
||||
# EVM chainID for the Beluga L3 (also pinned in blg-token.yaml).
|
||||
chainId: 420420
|
||||
# Parent validator cluster (ZooNetwork) that tracks this chain.
|
||||
# Parent validator cluster (ZooNetwork) that tracks this chain. zoo-chain
|
||||
# runs zooai/node (zood) — the Zoo EVM it self-installs carries the AI/FHE/
|
||||
# PQ/ZK precompiles, incl. the deterministic in-consensus inference
|
||||
# precompile at 0x0300…0003 (the "0x0303" thinking precompile, Tier-1) and
|
||||
# the aivmbridge at 0x0300…0004 that settles Tier-2 Proof-of-Thought to the
|
||||
# Lux A-Chain (AIVM). Without zooai/node this CR is just a luxd subnet stub.
|
||||
networkRef: zoo-chain
|
||||
# Zoo EVM VM ID — the VM the validators instantiate this chain under. This is
|
||||
# the plugin zood self-installs (vm.EVMID in zooai/node), distinct from the
|
||||
# built-in C-Chain EVM. luxd alone cannot serve this chain.
|
||||
vmId: 2n2njofjYvece8gZWCNnc1mqkcqfW6kbrhPRZPVzwxrSQrQ4gE
|
||||
# Genesis (evmChainId 420420, BLG gas, AI/FHE/PQ/ZK precompile-upgrade
|
||||
# activations at blockTimestamp 0) — generated by configMapGenerator from
|
||||
# k8s/base/beluga/genesis.json (see base/kustomization.yaml).
|
||||
genesisConfigMap: beluga-genesis
|
||||
# blockchainId is stamped by the operator once the CreateChainTx that mints
|
||||
# the Beluga blockchain on the Zoo primary network lands and its ID is added
|
||||
# to the validators' TRACK_CHAINS. Empty until then (chain registered, not
|
||||
# yet instantiated).
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
|
||||
@@ -0,0 +1,58 @@
|
||||
{
|
||||
"chain": {
|
||||
"name": "Beluga",
|
||||
"type": "l3",
|
||||
"parent": "zoo",
|
||||
"parentChainId": 200200,
|
||||
"evmChainId": 420420,
|
||||
"networkId": 1,
|
||||
"coin": "BLG",
|
||||
"coinName": "BELUGA",
|
||||
"decimals": 18
|
||||
},
|
||||
"block": {
|
||||
"targetRate": 2,
|
||||
"gasLimit": 15000000,
|
||||
"maxBlockGasCost": 1000000
|
||||
},
|
||||
"fees": {
|
||||
"minBaseFee": 25000000000,
|
||||
"baseFeeChangeDenominator": 48,
|
||||
"targetGas": 50000000
|
||||
},
|
||||
"precompiles": {
|
||||
"ai": true,
|
||||
"inference": true,
|
||||
"aivmbridge": true,
|
||||
"fhe": true,
|
||||
"pq": true,
|
||||
"dex": false,
|
||||
"zk": true
|
||||
},
|
||||
"ai": {
|
||||
"tier1": {
|
||||
"precompile": "0x0300000000000000000000000000000000000003",
|
||||
"mode": "deterministic-int8",
|
||||
"model": "zen-nano/Qwen3-0.6B"
|
||||
},
|
||||
"tier2": {
|
||||
"precompile": "0x0300000000000000000000000000000000000004",
|
||||
"settlement": "proof-of-thought",
|
||||
"chain": "lux-a-chain-aivm"
|
||||
}
|
||||
},
|
||||
"supply": {
|
||||
"total": "100000000000000000000000000",
|
||||
"safe": "60000000000000000000000000",
|
||||
"inferencePool": "20000000000000000000000000",
|
||||
"trainingBounties": "10000000000000000000000000",
|
||||
"lpSeeding": "10000000000000000000000000"
|
||||
},
|
||||
"genesis": {
|
||||
"file": "genesis.json",
|
||||
"safeAddress": "0xBe106a0000000000000000000000000000000001",
|
||||
"inferencePoolAddress": "0xBe106a0000000000000000000000000000000002",
|
||||
"trainingBountiesAddress": "0xBe106a0000000000000000000000000000000003",
|
||||
"lpSeedingAddress": "0xBe106a0000000000000000000000000000000004"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,82 @@
|
||||
{
|
||||
"config": {
|
||||
"chainId": 420420,
|
||||
"homesteadBlock": 0,
|
||||
"eip150Block": 0,
|
||||
"eip155Block": 0,
|
||||
"eip158Block": 0,
|
||||
"byzantiumBlock": 0,
|
||||
"constantinopleBlock": 0,
|
||||
"petersburgBlock": 0,
|
||||
"istanbulBlock": 0,
|
||||
"muirGlacierBlock": 0,
|
||||
"berlinBlock": 0,
|
||||
"londonBlock": 0,
|
||||
"arrowGlacierBlock": 0,
|
||||
"grayGlacierBlock": 0,
|
||||
"mergeNetsplitBlock": 0,
|
||||
"shanghaiTime": 0,
|
||||
"cancunTime": 0,
|
||||
"blobSchedule": {
|
||||
"cancun": {"target": 3, "max": 6, "baseFeeUpdateFraction": 3338477}
|
||||
},
|
||||
"terminalTotalDifficulty": 0,
|
||||
"chainEVMTimestamp": 0,
|
||||
"durangoTimestamp": 0,
|
||||
"etnaTimestamp": 253399622400,
|
||||
"feeConfig": {
|
||||
"gasLimit": 15000000,
|
||||
"targetBlockRate": 2,
|
||||
"minBaseFee": 25000000000,
|
||||
"targetGas": 50000000,
|
||||
"baseFeeChangeDenominator": 48,
|
||||
"minBlockGasCost": 0,
|
||||
"maxBlockGasCost": 1000000,
|
||||
"blockGasCostStep": 200000
|
||||
},
|
||||
"warpConfig": {
|
||||
"blockTimestamp": 0,
|
||||
"quorumNumerator": 67,
|
||||
"requirePrimaryNetworkSigners": false
|
||||
},
|
||||
"aiInferenceConfig": {
|
||||
"blockTimestamp": 0
|
||||
},
|
||||
"aivmBridgeConfig": {
|
||||
"blockTimestamp": 0
|
||||
},
|
||||
"aiMiningConfig": {
|
||||
"blockTimestamp": 0
|
||||
},
|
||||
"fheConfig": {
|
||||
"blockTimestamp": 0
|
||||
},
|
||||
"zkConfig": {
|
||||
"blockTimestamp": 0
|
||||
}
|
||||
},
|
||||
"alloc": {
|
||||
"Be106a0000000000000000000000000000000001": {
|
||||
"balance": "0x31a17e847807b1bc000000"
|
||||
},
|
||||
"Be106a0000000000000000000000000000000002": {
|
||||
"balance": "0x108b2a2c28029094000000"
|
||||
},
|
||||
"Be106a0000000000000000000000000000000003": {
|
||||
"balance": "0x84595161401484a000000"
|
||||
},
|
||||
"Be106a0000000000000000000000000000000004": {
|
||||
"balance": "0x84595161401484a000000"
|
||||
}
|
||||
},
|
||||
"nonce": "0x0",
|
||||
"timestamp": "0x0",
|
||||
"extraData": "0x42454c554741",
|
||||
"gasLimit": "0xe4e1c0",
|
||||
"difficulty": "0x0",
|
||||
"mixHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
|
||||
"coinbase": "0x0000000000000000000000000000000000000000",
|
||||
"number": "0x0",
|
||||
"gasUsed": "0x0",
|
||||
"parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000"
|
||||
}
|
||||
@@ -28,3 +28,18 @@ labels:
|
||||
- pairs:
|
||||
app.kubernetes.io/part-of: zoo
|
||||
includeSelectors: false
|
||||
|
||||
# Beluga L3 genesis + config → ConfigMap consumed by the beluga ZooChain CR
|
||||
# (spec.genesisConfigMap). The validators (zooai/node) load genesis.json when
|
||||
# the Zoo EVM instantiates chain 420420. Source of truth is zooai/node/beluga
|
||||
# and zooai/genesis/beluga — these are the deployed copies.
|
||||
configMapGenerator:
|
||||
- name: beluga-genesis
|
||||
files:
|
||||
- genesis.json=beluga/genesis.json
|
||||
- config.json=beluga/config.json
|
||||
|
||||
# Keep a stable ConfigMap name (no content-hash suffix) so the ZooChain CR's
|
||||
# static genesisConfigMap reference resolves.
|
||||
generatorOptions:
|
||||
disableNameSuffixHash: true
|
||||
|
||||
+11
-2
@@ -20,9 +20,18 @@ metadata:
|
||||
spec:
|
||||
networkId: 1
|
||||
validators: 0
|
||||
# zooai/node (zood) — the Zoo Network node. Replaces the ghcr.io/luxfi/node
|
||||
# (luxd) stopgap: luxd is a bare subnet runtime with no Zoo EVM and no AI
|
||||
# precompiles, so it could only ever track Beluga as an inert subnet stub.
|
||||
# zood self-installs the Zoo EVM (AI/FHE/PQ/ZK precompiles, incl. the 0x0303
|
||||
# in-consensus inference precompile + the 0x0304 aivmbridge), Zoo DEX and Zoo
|
||||
# FHE VMs at startup, so the validators can actually instantiate the Beluga
|
||||
# L3 (chainId 420420) and the Zoo L2 EVM (200200) as real chains.
|
||||
# Tag is pinned to an immutable ghcr.io/zooai/node semver by CI (hanzo.yml →
|
||||
# hanzoai/ci); overlays pin the live tag. NEVER a floating tag in prod.
|
||||
image:
|
||||
repository: ghcr.io/luxfi/node
|
||||
tag: v1.30.40
|
||||
repository: ghcr.io/zooai/node
|
||||
tag: 0.2.0
|
||||
pullPolicy: IfNotPresent
|
||||
storage:
|
||||
storageClass: do-block-storage
|
||||
|
||||
@@ -10,9 +10,14 @@ metadata:
|
||||
spec:
|
||||
networkId: 3
|
||||
validators: 1
|
||||
# zooai/node (zood) — Zoo EVM + AI precompiles (0x0303 inference, 0x0304
|
||||
# aivmbridge). devnet is the lowest-risk place to bring Beluga up as a real
|
||||
# L3 (1 fresh validator, no live L2 traffic). Floating `latest` is acceptable
|
||||
# ONLY on devnet; testnet/mainnet pin the immutable CI semver. See
|
||||
# statefulset-patch.yaml (./luxd -> zood).
|
||||
image:
|
||||
repository: ghcr.io/luxfi/node
|
||||
tag: v1.30.40
|
||||
repository: ghcr.io/zooai/node
|
||||
tag: 0.2.0
|
||||
pullPolicy: IfNotPresent
|
||||
resources:
|
||||
cpuRequest: "200m"
|
||||
|
||||
@@ -1,9 +1,17 @@
|
||||
# luxd flag injection for the operator-rendered zoo-chain StatefulSet.
|
||||
# See k8s/zoo-mainnet/statefulset-patch.yaml for the full rationale: luxd ignores
|
||||
# ZOO_* env for these settings, so --http-host=0.0.0.0 (etc.) must be passed as
|
||||
# CLI flags or the kubelet liveness probe can't reach /ext/health and the node
|
||||
# restart-loops. devnet = Lux primary networkId 3, 1 validator, sybil protection
|
||||
# off (networkId 3 convention), tracks the "zoo" chain alias.
|
||||
# Node flag injection for the operator-rendered zoo-chain StatefulSet.
|
||||
# See k8s/zoo-mainnet/statefulset-patch.yaml for the full rationale: the node
|
||||
# ignores ZOO_* env for these settings, so --http-host=0.0.0.0 (etc.) must be
|
||||
# passed as CLI flags or the kubelet liveness probe can't reach /ext/health and
|
||||
# the node restart-loops. devnet = Lux primary networkId 3, 1 validator, sybil
|
||||
# protection off (networkId 3 convention).
|
||||
#
|
||||
# command is `zood` (zooai/node), not `./luxd` — same luxfi/node flag set plus
|
||||
# zood self-installs the Zoo EVM/DEX/FHE plugins (incl. the 0x0303 inference +
|
||||
# 0x0304 aivmbridge precompiles). devnet is the lowest-risk place to bring up
|
||||
# Beluga as a real L3: a single fresh validator, no live L2 traffic. Once zood's
|
||||
# `zood bootstrap` (or an operator-driven CreateChainTx) mints the Beluga
|
||||
# blockchain (chainId 420420) on the Lux devnet P-chain, add
|
||||
# --track-chains=<BELUGA_BLOCKCHAIN_ID> here.
|
||||
apiVersion: apps/v1
|
||||
kind: StatefulSet
|
||||
metadata:
|
||||
@@ -13,14 +21,21 @@ spec:
|
||||
spec:
|
||||
containers:
|
||||
- name: zoo-node
|
||||
command: ["./luxd"]
|
||||
# IMAGE IS OPERATOR-DERIVED — it comes from the ZooNetwork CR
|
||||
# (k8s/base/network.yaml image.repository+tag), one source of truth. The
|
||||
# operator renders it onto the StatefulSet. If a live StatefulSet predates
|
||||
# an image change, delete it so the operator recreates it from the CR
|
||||
# (it does not re-render an existing pod template). Only the luxd CLI
|
||||
# flags below are asserted here — the operator passes them as ZOO_* env,
|
||||
# which the node ignores (the clean fix is to make the operator emit these
|
||||
# flags, like the Go lux operator does).
|
||||
command: ["zood"]
|
||||
args:
|
||||
- --http-host=0.0.0.0
|
||||
- --http-allowed-hosts=*
|
||||
- --network-id=3
|
||||
- --sybil-protection-enabled=false
|
||||
# No --track-chains: the devnet Zoo EVM chain (200202) is not yet
|
||||
# created on the Lux devnet P-chain, and luxd rejects the bare "zoo"
|
||||
# alias ("input string is smaller than the checksum size"). This single
|
||||
# validator runs the primary network; add --track-chains=<blockchainID>
|
||||
# here once the devnet chain exists.
|
||||
# --track-chains is added once the Beluga blockchain (chainId 420420) is
|
||||
# created on the Lux devnet P-chain (zood bootstrap). Bare aliases are
|
||||
# rejected by the node ("input string is smaller than the checksum
|
||||
# size"), so only a real blockchainID goes here.
|
||||
|
||||
@@ -13,9 +13,16 @@ metadata:
|
||||
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/luxfi/node
|
||||
tag: v1.30.40
|
||||
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 /
|
||||
|
||||
@@ -1,17 +1,23 @@
|
||||
# luxd flag injection for the operator-rendered zoo-chain StatefulSet.
|
||||
# Node flag injection for the operator-rendered zoo-chain StatefulSet.
|
||||
#
|
||||
# The Rust zoo-operator builds the StatefulSet from the ZooNetwork CR and passes
|
||||
# config as ZOO_* env vars. luxd (the ghcr.io/luxfi/node image, CMD ["./luxd"])
|
||||
# does NOT read its http-host / bootstrap / track-chains settings from ZOO_* env
|
||||
# — only from real CLI flags. Without --http-host=0.0.0.0 luxd binds the HTTP /
|
||||
# health API to 127.0.0.1, so the kubelet liveness probe (which hits the pod IP)
|
||||
# can never reach /ext/health: the node boots, passes its internal check, then
|
||||
# gets SIGTERM'd ~90s in when the probe fails 3x — an endless restart loop.
|
||||
# config as ZOO_* env vars. The node binary does NOT read its http-host /
|
||||
# bootstrap / track-chains settings from ZOO_* env — only from real CLI flags.
|
||||
# Without --http-host=0.0.0.0 it binds the HTTP / health API to 127.0.0.1, so the
|
||||
# kubelet liveness probe (which hits the pod IP) can never reach /ext/health: the
|
||||
# node boots, passes its internal check, then gets SIGTERM'd ~90s in when the
|
||||
# probe fails 3x — an endless restart loop.
|
||||
#
|
||||
# This strategic-merge patch sets command+args directly so luxd gets the flags.
|
||||
# The operator does not re-render an existing StatefulSet's pod template (it only
|
||||
# checks progress), so these flags persist across reconciles. mainnet = Lux
|
||||
# primary networkId 1, 5 validators, Zoo EVM chain 4HBM17czc7zFQMPrd9CVZ6YbABm1jecf99iwvFw8Gbo6gFaU3.
|
||||
# This strategic-merge patch sets command+args directly so the node gets the
|
||||
# flags. The operator does not re-render an existing StatefulSet's pod template
|
||||
# (it only checks progress), so these flags persist across reconciles. mainnet =
|
||||
# Lux primary networkId 1, 5 validators, Zoo EVM chain
|
||||
# 4HBM17czc7zFQMPrd9CVZ6YbABm1jecf99iwvFw8Gbo6gFaU3.
|
||||
#
|
||||
# command is `zood` (the zooai/node binary on PATH), NOT `./luxd`: with the
|
||||
# image now ghcr.io/zooai/node, the entrypoint binary is zood, which wraps
|
||||
# luxfi/node and parses the IDENTICAL flag set (config.BuildFlagSet) plus
|
||||
# self-installs the Zoo EVM/DEX/FHE plugins — so the same flags apply verbatim.
|
||||
apiVersion: apps/v1
|
||||
kind: StatefulSet
|
||||
metadata:
|
||||
@@ -21,7 +27,7 @@ spec:
|
||||
spec:
|
||||
containers:
|
||||
- name: zoo-node
|
||||
command: ["./luxd"]
|
||||
command: ["zood"]
|
||||
args:
|
||||
- --http-host=0.0.0.0
|
||||
- --http-allowed-hosts=*
|
||||
@@ -29,4 +35,9 @@ spec:
|
||||
- --sybil-protection-enabled=true
|
||||
- --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
|
||||
# Beluga's blockchainID (chainId 420420) is appended here once the
|
||||
# CreateChainTx that mints it on the Zoo primary network lands:
|
||||
# --track-chains=4HBM17czc7zFQMPrd9CVZ6YbABm1jecf99iwvFw8Gbo6gFaU3,<BELUGA_BLOCKCHAIN_ID>
|
||||
# Until then we track only the Zoo L2 EVM (200200) so the live L2 is
|
||||
# never disrupted by a half-wired L3.
|
||||
- --track-chains=4HBM17czc7zFQMPrd9CVZ6YbABm1jecf99iwvFw8Gbo6gFaU3
|
||||
|
||||
@@ -12,9 +12,13 @@ metadata:
|
||||
spec:
|
||||
networkId: 2
|
||||
validators: 3
|
||||
# zooai/node (zood) — Zoo EVM + AI precompiles (0x0303 inference, 0x0304
|
||||
# aivmbridge) so Beluga runs as a real L3. Pin the immutable CI semver in
|
||||
# prod; gated rollout (restarts the 3 testnet validators). See
|
||||
# statefulset-patch.yaml (./luxd -> zood).
|
||||
image:
|
||||
repository: ghcr.io/luxfi/node
|
||||
tag: v1.30.40
|
||||
repository: ghcr.io/zooai/node
|
||||
tag: 0.2.0
|
||||
pullPolicy: IfNotPresent
|
||||
resources:
|
||||
cpuRequest: "1"
|
||||
|
||||
@@ -1,9 +1,12 @@
|
||||
# luxd flag injection for the operator-rendered zoo-chain StatefulSet.
|
||||
# See k8s/zoo-mainnet/statefulset-patch.yaml for the full rationale: luxd ignores
|
||||
# ZOO_* env for these settings, so --http-host=0.0.0.0 (etc.) must be passed as
|
||||
# CLI flags or the kubelet liveness probe can't reach /ext/health and the node
|
||||
# restart-loops. testnet = Lux primary networkId 2, 3 validators, Zoo testnet EVM
|
||||
# chain c3PrgGAAoJXz8RgNAw3j7dSUjUiHVk3mtTneYfr7GvZRxmTPH.
|
||||
# Node flag injection for the operator-rendered zoo-chain StatefulSet.
|
||||
# See k8s/zoo-mainnet/statefulset-patch.yaml for the full rationale: the node
|
||||
# ignores ZOO_* env for these settings, so --http-host=0.0.0.0 (etc.) must be
|
||||
# passed as CLI flags or the kubelet liveness probe can't reach /ext/health and
|
||||
# the node restart-loops. testnet = Lux primary networkId 2, 3 validators, Zoo
|
||||
# testnet EVM chain c3PrgGAAoJXz8RgNAw3j7dSUjUiHVk3mtTneYfr7GvZRxmTPH.
|
||||
# command is `zood` (zooai/node), not `./luxd` — same luxfi/node flag set,
|
||||
# plus zood self-installs the Zoo EVM/DEX/FHE plugins. Beluga's blockchainID is
|
||||
# appended to --track-chains once minted on the Zoo testnet primary network.
|
||||
apiVersion: apps/v1
|
||||
kind: StatefulSet
|
||||
metadata:
|
||||
@@ -13,7 +16,7 @@ spec:
|
||||
spec:
|
||||
containers:
|
||||
- name: zoo-node
|
||||
command: ["./luxd"]
|
||||
command: ["zood"]
|
||||
args:
|
||||
- --http-host=0.0.0.0
|
||||
- --http-allowed-hosts=*
|
||||
|
||||
@@ -78,10 +78,16 @@ services:
|
||||
updatedAt: ""
|
||||
|
||||
# ---- Chain-side services (run alongside Lux L1 validators) ----
|
||||
# zoo-node = the zooai/node (zood) image. NOTE: the validator image itself
|
||||
# flows through the ZooNetwork CR (k8s/base/network.yaml spec.image), since
|
||||
# the validators are the operator-rendered zoo-chain StatefulSet — not a
|
||||
# Deployment. This row tracks the canonical image name for Renovate/CI.
|
||||
# Image name is ghcr.io/zooai/node (matches hanzo.yml + the zooai/node repo,
|
||||
# one <org>/<app> per the registry convention) — not the old zoo-node alias.
|
||||
zoo-node:
|
||||
repo: zooai/node
|
||||
appType: backend
|
||||
image: ghcr.io/zooai/zoo-node:0.1.0
|
||||
image: ghcr.io/zooai/node:0.1.0
|
||||
sha: ""
|
||||
updatedAt: ""
|
||||
|
||||
|
||||
Reference in New Issue
Block a user