Files
zeekayandHanzo AI 15131f6af4
CI/CD / render (push) Waiting to run
chain letters are lowercase
The primary-network chains answer to either case; one spelling beats two.
/v1/chain/c/rpc, /v1/chain/p, /v1/chain/x across the estate.

Co-authored-by: Hanzo AI <[email protected]>
2026-09-08 15:23:20 -07:00

249 lines
7.2 KiB
YAML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
version: "1"
# Lux primary L1 — the sovereign Lux Network.
#
# Hosts L2 children (Hanzo, Zoo) that opt in to Lux's validator set
# via primary-network staking. Each L2 lives under its own brand
# universe (~/work/hanzo/universe, ~/work/zoo/universe) and declares
# `network.parent: lux` in its own chain.yaml.
#
# Model:
# Network (this file's `network` block) IS the sovereign primary L1.
# Chains live under it (the `chains` list). All chains share the
# same Lux validator set and the same networkID per env.
#
# CreateNetworkTx → networkID (1 / 2 / 3 per env)
# CreateChainTx(networkID, vmID, genesis) × N → primary chains
#
# This is the canonical template; sovereign-L1 forks copy this shape:
# a regulated securities L1 adds EVM / DEX / FHE chain set
# pars adds parsEVM / DEX / FHE + SessionVM
# osage same 3-chain shape
# spc single-EVM-chain shape
# L2 forks (Hanzo, Zoo) declare `network.parent: lux` and ride the
# Lux validator set; they don't redefine `networks[*].validators`.
network:
name: "Lux"
slug: lux
type: l1
# Parent is null — Lux is the sovereign primary L1.
parent: null
validators: 21
dbType: zapdb
compression: zstd
# Per-env primary networkID (uint32). Each env is its own sovereign
# Lux Network with its own validator set. The networkID is the
# on-wire identifier — same number across every chain in that env.
#
# `networkID` ≠ `evmChainID`. They are distinct fields at distinct
# scopes:
# - networkID (uint32) : validator-network / P2P handshake / P-Chain
# wire / `--network-id` flag
# - evmChainID (uint64): EIP-155 / EVM tx signing / `eth_chainId` /
# MetaMask
#
# Lux keeps them deliberately separated (mainnet networkID=1, C-Chain
# evmChainID=96369) — single-brand forks (Pars, Osage, and other
# sovereign-L1 tenants) pick the same number for both by convention;
# Lux does not.
#
# Source of truth for the per-env numbers:
# lux/genesis/configs/{mainnet,testnet,devnet}/network.json
# lux/genesis/configs/{mainnet,testnet,devnet}/*chain.json
networks:
# networkID: validator-wire / P2P / --network-id flag (uint32)
# primaryEvmChainID: EIP-155 chainID of the C-chain (uint64)
# Lux KEEPS THEM DISTINCT — a sovereign-L1 brand fork collapses them to one
# ID per env per L1.
mainnet:
networkID: 1
primaryEvmChainID: 96369
httpPort: 9630
stakingPort: 9631
genesisFile: ../genesis/configs/mainnet/genesis.json
rpcUrl: https://api.lux.network
wsUrl: wss://api.lux.network/ws
imageTag: latest
snapshotInterval: 3600
testnet:
networkID: 2
primaryEvmChainID: 96368
httpPort: 9640
stakingPort: 9641
genesisFile: ../genesis/configs/testnet/genesis.json
rpcUrl: https://api.lux-test.network
imageTag: latest
snapshotInterval: 1800
devnet:
networkID: 3
primaryEvmChainID: 96367
httpPort: 9650
stakingPort: 9651
genesisFile: ../genesis/configs/devnet/genesis.json
rpcUrl: https://api.lux-dev.network
imageTag: latest
localnet:
networkID: 1337
primaryEvmChainID: 31337
httpPort: 9660
stakingPort: 9661
genesisFile: ../genesis/configs/localnet/genesis.json
rpcUrl: http://127.0.0.1:9660/v1/chain/c/rpc
imageTag: latest
# Runtime template — what the `lux` CLI expands to derive every path
# from (brand, env). Tokens: {name} {env} {networkID} {httpPort}.
runtime:
dataDirTemplate: "~/.lux/{name}-{env}"
snapshotDir: "~/work/lux/snapshots"
snapshotNameTemplate: "{networkID}-{name}-{env}-with-contracts"
serviceLabelTemplate: "ai.lux.{name}.{env}"
logLevel: info
# Chains under the Lux primary network. Each gets its own chainID
# (ids.ID, output of CreateChainTx). EVM-flavor chains also carry
# an evmChainID (EIP-155). All chains share the Lux validator set.
#
# Minimum required for a Lux primary is P + Q + Z (per
# ~/work/lux/consensus and the PQZ design). Everything else is opt-in
# but ships in stock mainnet/testnet/devnet today.
chains:
- name: P
vmType: pvm
description: "Platform — validator + L1/chain registry"
genesisFile: "./genesis/configs/{env}/pchain.json"
- name: X
vmType: xvm
description: "Asset transfer — UTXO chain"
genesisFile: "./genesis/configs/{env}/xchain.json"
- name: C
vmType: evm
description: "Contract — primary EVM"
evmChainIds:
mainnet: 96369
testnet: 96368
devnet: 96367
rpcPath: "/v1/chain/c/rpc"
wsPath: "/v1/chain/c/ws"
genesisFile: "./genesis/configs/{env}/cchain.json"
- name: Q
vmType: qvm
description: "Quantum — Quasar PQ consensus rollup"
evmChainIds:
mainnet: 96569
testnet: 96568
devnet: 96570
genesisFile: "./genesis/configs/{env}/qchain.json"
- name: Z
vmType: zvm
description: "Zero-knowledge / rollup substrate"
evmChainIds:
mainnet: 96969
testnet: 96968
devnet: 96970
genesisFile: "./genesis/configs/{env}/zchain.json"
- name: A
vmType: aivm
description: "AI — verification + attestation"
evmChainIds:
mainnet: 96669
testnet: 96668
devnet: 96670
genesisFile: "./genesis/configs/{env}/achain.json"
- name: B
vmType: bridgevm
description: "Bridge"
evmChainIds:
mainnet: 96769
testnet: 96768
devnet: 96770
genesisFile: "./genesis/configs/{env}/bchain.json"
- name: D
vmType: dexvm
description: "DEX — orderbook + matching"
evmChainIds:
mainnet: 96469
testnet: 96468
devnet: 96470
genesisFile: "./genesis/configs/{env}/dchain.json"
- name: G
vmType: graphvm
description: "Graph — indexer / GraphQL"
evmChainIds:
mainnet: 97069
testnet: 97068
devnet: 97070
genesisFile: "./genesis/configs/{env}/gchain.json"
- name: K
vmType: keyvm
description: "Key — KMS / MPC key registry"
evmChainIds:
mainnet: 97169
testnet: 97168
devnet: 97170
genesisFile: "./genesis/configs/{env}/kchain.json"
- name: T
vmType: thresholdvm
description: "Threshold — MPC/FROST/CGGMP ceremonies"
evmChainIds:
mainnet: 96869
testnet: 96868
devnet: 96870
genesisFile: "./genesis/configs/{env}/tchain.json"
token:
name: "Lux"
symbol: "LUX"
decimals: 9
supply: "1000000000000000000000000000"
brand:
displayName: "Lux"
legalEntity: "Lux Industries Inc."
primaryColor: "#000000"
logo: "./brand/lux.svg"
domains:
explorer: "explorer.lux.network"
docs: "docs.lux.network"
rpc: "api.lux.network"
# L2 children that opt into Lux's validator set via primary-network
# staking. Each L2 lives in its own universe and declares
# `network.parent: lux`. Listed here for inventory only — the
# canonical spec for each L2 is in its own brand universe.
children:
- name: hanzo
type: l2
repo: github.com/hanzoai/universe
- name: zoo
type: l2
repo: github.com/zooai/universe
precompiles:
- name: cggmp21Verify
blockTimestamp: 0
- name: frostVerify
blockTimestamp: 0
- name: coronaThreshold
blockTimestamp: 0
- name: mldsaVerify
blockTimestamp: 0
- name: slhdsaVerify
blockTimestamp: 0
- name: mlkemEncap
blockTimestamp: 0
- name: blake3Config
blockTimestamp: 0