CI/CD / render (push) Waiting to run
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]>
249 lines
7.2 KiB
YAML
249 lines
7.2 KiB
YAML
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
|