feat(chain): canonical Zoo L2 chain.yaml

Zoo is an L2 on the Lux primary network — rides Lux's validator
set via primary-network staking and does not own a sovereign
networkID. Zoo's identity surfaces through its EVM chainID + the
brand fields.

Model:
- network.parent = lux  → inherits Lux's networkID per env
- chains[*].evmChainIds.{mainnet,testnet,devnet} = {200200, 200201, 200202}
- Each chain gets its own chainID via CreateChainTx on Lux's P-chain

Per-env chainIDs sourced from
~/work/lux/genesis/configs/zoo-{env}/genesis.json — single source
of truth, no duplication in this manifest.

Lux primary L1 declares Zoo as an L2 child in its own chain.yaml.
This commit is contained in:
Hanzo AI
2026-05-30 01:17:25 -07:00
parent 701b93f048
commit 4231be6300
+84
View File
@@ -0,0 +1,84 @@
version: "1"
# Zoo L2 — child of the Lux primary network.
#
# Model:
# Zoo is an L2, not a sovereign L1. It rides Lux's validator set
# via primary-network staking. Zoo does NOT have its own
# `networkID` per env — it inherits the Lux networkID (1 / 2 / 3)
# and adds its own chain(s) via CreateChainTx on Lux's P-chain.
#
# The Zoo brand identity surfaces through the chain's evmChainID
# (and chain name + Zoo logo/domain).
#
# Per-env Zoo EVM chainIDs are sourced from
# ~/work/lux/genesis/configs/zoo-{mainnet,testnet,devnet}/genesis.json
# (config.chainId field — single source of truth).
#
# To bootstrap a Zoo chain in an env:
# CreateChainTx(networkID=<lux env>, vmID=evm, genesis=<zoo-{env}/genesis.json>)
# Returns Zoo's chainID (ids.ID); evmChainID is baked into the
# genesis blob.
network:
name: "Zoo"
slug: zoo
type: l2
# Parent IS the Lux primary L1. Zoo uses Lux's validator set;
# consensus and P-chain wire live on Lux.
parent: lux
dbType: zapdb
compression: zstd
# L2 has no per-env primary networkID — it inherits its parent's
# networkID (1/2/3 = lux mainnet/testnet/devnet). The per-env block
# below only carries L2-side knobs (image tag, RPC URL).
networks:
mainnet:
imageTag: "latest"
rpcUrl: "https://api.zoo.network"
wsUrl: "wss://api.zoo.network/ws"
snapshotInterval: 3600
testnet:
imageTag: "latest"
rpcUrl: "https://api.zoo-test.network"
snapshotInterval: 1800
devnet:
imageTag: "latest"
rpcUrl: "https://api.zoo-dev.network"
# Zoo chains. Each gets its own chainID via CreateChainTx on Lux's
# P-chain. evmChainIDs are baked into the chain's genesis blob and
# match what the lqd/luxd binary advertises for `eth_chainId`.
chains:
- name: zooEVM
vmType: evm
description: "Zoo EVM — DeAI / DeSci contract chain"
evmChainIds:
mainnet: 200200
testnet: 200201
devnet: 200202
rpcPath: "/ext/bc/zooEVM/rpc"
wsPath: "/ext/bc/zooEVM/ws"
genesisFile: "~/work/lux/genesis/configs/zoo-{env}/genesis.json"
token:
name: "Zoo"
symbol: "ZOO"
decimals: 18
brand:
displayName: "Zoo"
legalEntity: "Zoo Labs Foundation"
primaryColor: "#16A34A"
logo: "./brand/zoo.svg"
domains:
explorer: "explorer.zoo.network"
docs: "docs.zoo.ngo"
rpc: "api.zoo.network"
main: "zoo.ngo"
# Zoo inherits every Lux primary-network precompile via its parent.
# Zoo-specific precompiles (if any) go here, addressed in Zoo's own
# EVM at activation timestamps tracked per env.
precompiles: []