mirror of
https://github.com/luxfi/genesis.git
synced 2026-07-27 04:11:41 +00:00
b81715a57aa6c4bf1394fd613cbe37f79d96ec1b
The legacy T-Chain conflated two orthogonal threshold primitives on one
ThresholdVM substrate. LP-134 decomplects them into two distinct
primary-network chains, both served by the shared ThresholdVM library:
F-Chain (F/fhe/fhevm) — threshold FHE, confidential compute / off-EVM
threshold DECRYPT. ThresholdVM in FHE mode.
M-Chain (M/mpc/mpcvm) — threshold MPC, CGGMP21/FROST bridge-custody
SIGNING. ThresholdVM in MPC mode. EVM verify
surface = 0x0800..02 (FROST) + 0x0800..03
(CGGMP21), verify-only, ceremony off-EVM.
Forward-only: tchain.json is retired on all 4 nets (T was never bootstrapped
with live state — a clean 404 forward-split, no state migration). F-Chain
occupies T's vacated shard slot (same VM, keeps Z/G/K byte-stable); M-Chain
is appended. Fresh non-colliding chainIds at the next free indices 9/10
(F: 97269/97268/97270/32327, M: 97369/97368/97370/32437); T's 96869-series
is not recycled.
K-Chain decomplect ("K stays keyvm" per LP-134): the M/mpc/mpcvm aliases and
MPC params were erroneously carried on the KeyVM shard (the "mpc->K backwards"
wiring). Moved them to M-Chain; kchain.json is now pure KMS key management.
Chain-level wiring (one way, data-driven by shard presence):
- pkg/genesis: ConfigOutput/Config gain FChainGenesis (T's slot) +
MChainGenesis; TChainGenesis removed.
- configs.go chainSet/primaryChainShardFiles/slots + config.go
optionalChainShards: tchain.json -> fchain.json, append mchain.json.
- builder: F and M both map to constants.ThresholdVMID (shared substrate)
and are disambiguated in Aliases() by CreateChainTx.BlockchainName.
- chain_mapping role taxonomy: RoleThreshold("T") retired -> RoleFHE("F")
+ RoleMPC("M"); RoleKMS unchanged. (Canonical native FChainID/MChainID
await a luxfi/ids change; the closed P/C/X/Q/A/B/T/Z/G/I/K/D set is
out of scope here. Active path pins EVM chainIds in the shards.)
Tests: chain_shards_test updated to 11 chains + new F/M chainIds; builder
emits 11 chains; new lp134_split_test asserts the decomplect invariants
(F is FHE-only, M is MPC-only, K is KMS-only, no alias collision across
{F,M,K}, tchain.json retired). go build/vet/test green (GOWORK=off).
Lux Network Genesis Configurations
This repository contains the canonical genesis configurations for all Lux networks.
Directory Structure
genesis/
├── mainnet/ # LUX Mainnet (Chain ID: 96369)
│ ├── cchain.json # C-Chain genesis (EVM compatible)
│ ├── pchain.json # P-Chain genesis (ProtocolVM)
│ ├── xchain.json # X-Chain genesis (Exchange chain)
│ ├── network.json # Network configuration
│ └── genesis.json # Full network genesis
├── testnet/ # LUX Testnet (Chain ID: 96368)
│ ├── cchain.json # C-Chain genesis (EVM compatible)
│ └── genesis.json # Full testnet genesis
├── devnet/ # LUX Devnet (Chain ID: 96367) - Fast iteration network
│ └── cchain.json # C-Chain genesis (EVM compatible)
├── local/ # Local development network (Chain ID: 1337)
│ ├── cchain.json # C-Chain genesis (EVM compatible)
│ └── genesis.json # Local network genesis
├── bootstrappers.json # Network bootstrapper nodes
└── checkpoints.json # Network checkpoints
Mainnet C-Chain Genesis
The mainnet C-Chain was initialized with a single genesis allocation:
| Address | Balance |
|---|---|
0x9011e888251ab053b7bd1cdb598db4f9ded94714 |
2,000,000,000,000,000,000,000,000,000,000 wei (2T LUX) |
Key Parameters
- Chain ID: 96369
- Gas Limit: 30,000,000 (0x1C9C380)
- Min Base Fee: 25 gwei
- Block Rate: 2 seconds
Network IDs
| Network | Chain ID | Network ID | Purpose |
|---|---|---|---|
| LUX Mainnet | 96369 | 96369 | Production network |
| LUX Testnet | 96368 | 96368 | Public test network |
| LUX Devnet | 96367 | 3 | Fast iteration dev network |
| Local | 1337 | 1337 | Local development |
Network Configurations
Mainnet (96369)
- Block Rate: 2 seconds
- Gas Limit: 30M
- Min Base Fee: 25 gwei
- Genesis Account:
0x9011...with 2T LUX
Testnet (96368)
- Block Rate: 2 seconds
- Gas Limit: 12M
- Min Base Fee: 25 gwei
- Genesis Account:
0x9011...with 2T LUX (same as mainnet)
Devnet (96367)
- Block Rate: 1 second (faster)
- Gas Limit: 20M
- Min Base Fee: 1 gwei (cheaper)
- Genesis Account:
0x9011...with 2T LUX - All upgrades enabled at genesis (Shanghai, Cancun, etc.)
Local (1337)
- Block Rate: 1 second
- Gas Limit: 15M
- Min Base Fee: 1 gwei
- Genesis Account:
0x9011...with 2T LUX - All upgrades enabled at genesis
Usage
These genesis files are used by:
luxdnode for network initializationcorethfor C-Chain configuration- Block explorers for genesis block verification
- Migration tools for state reconstruction
RPC Endpoints
- Mainnet:
http://localhost:9630/ext/bc/C/rpc - Testnet:
http://localhost:9630/ext/bc/C/rpc(testnet node) - Devnet:
http://localhost:9630/ext/bc/C/rpc(devnet node)
Genesis Account
All networks use the same production genesis account:
| Account | Balance | Networks |
|---|---|---|
0x9011e888251ab053b7bd1cdb598db4f9ded94714 |
2T LUX | All networks |
State Data & RLP Exports
Blockchain state exports and RLP-encoded blocks are maintained in a separate repository:
Repository: github.com/luxfi/state
Available Data
| Network | Chain ID | Blocks | RLP Location |
|---|---|---|---|
| Lux Mainnet | 96369 | 1,082,780 | rlp/lux-mainnet/lux-mainnet-96369.rlp |
| Lux Testnet | 96368 | 219 | rlp/lux-testnet/lux-testnet-96368.rlp |
| Zoo Mainnet | 200200 | 799 | rlp/zoo-mainnet/zoo-mainnet-200200.rlp |
| Zoo Testnet | 200201 | 85 | rlp/zoo-testnet/zoo-testnet-200201.rlp |
Import Workflow
# Clone repos
git clone https://github.com/luxfi/genesis
git clone https://github.com/luxfi/state
# Initialize with genesis
geth init --datadir /path/to/db genesis/mainnet/cchain.json
# Import blocks from state repo
geth import --datadir /path/to/db state/rlp/lux-mainnet/lux-mainnet-96369.rlp
Source Data
The state repo also contains:
pebbledb/- Original SubnetEVM PebbleDB databasesdocs/- State verification and recovery documentationpkg/- Go tools for archaeology, bridge, and scanning
Description
Lux Network genesis for Mainnet, Testnet, Devnet, Local/Custom.
20 MiB
Languages
Go
96.6%
Python
3%
Makefile
0.4%