feat: bake all 10 primary letter-chains into mainnet/testnet/devnet/localnet genesis

Every primary network now ships all 10 chain shards (X, C, D, Q, A, B, T, Z, G, K).
Each chain spawns at startup with zero post-launch CreateBlockchainTx — chain set
is fully data-driven by which shards the operator ships.

Per-letter EVM chainIds locked at 96369 + 100*Δ_from_C (mainnet base) with the
familiar testnet=-1 / devnet=+1 triple inherited from C-Chain:

  C 96369/96368/96370   D 96469/96468/96470   Q 96569/96568/96570
  A 96669/96668/96670   B 96769/96768/96770   T 96869/96868/96870
  Z 96969/96968/96970   G 97069/97068/97070   K 97169/97168/97170

Localnet uses a parallel 31337 + 110*Δ series.

F-Chain ≡ T-Chain (threshold FHE) and M-Chain ≡ K-Chain (KMS-MPC) wired in via
builder alias lists — letter taxonomy decomplected from canonical VM IDs.

Each shard carries:
  - chainId / networkId / timestamp (chain identity at boot)
  - vm + description (operator transparency)
  - per-VM seed extras (DEX fee config, T-Chain DKG params, B-Chain signer set,
    Q-Chain pq scheme pin, K-Chain MPC topology — all empty/default initial state)

Contract locked by configs.TestGetGenesis_AllPrimaryChainsBakedIn — every primary
network must ship all 10 letter-chain shards. Removing a chain on any network is
now a load-bearing test edit, not a silent operator switch.

Mainnet C-Chain invariants preserved: chainId=96369, genesisHash unchanged,
stateRoot=0x2d1cedac…, warp precompile in alloc, warpConfig.blockTimestamp=
1730446786, treasury 2T LUX.
This commit is contained in:
Hanzo AI
2026-05-19 11:23:16 -07:00
parent ae1c52b32a
commit 2259308ffd
39 changed files with 637 additions and 39 deletions
+35
View File
@@ -74,6 +74,41 @@ If genesis hash drifts → check `cChainGenesis` in `genesis.json` is the litera
| Devnet | 3 | 96370 | `0x53fe8be293555d20de41847f96081f4e8beca1ee2c206999ffbf7c70e497cf43` | 2T LUX |
| Local | 1337 | 1337 | - | 2T LUX |
### Primary-Network Letter Chains (all baked into genesis)
Every primary network ships **all 10 letter-chain shards**, so every chain
spawns at startup — no post-launch `CreateBlockchainTx` required. The shard
schema is `{x,c,d,q,a,b,t,z,g,k}chain.json` (P-Chain is implicit; it is the
primary network and carries the validator set + chain registry).
Letter aliases (LP-134 user-facing naming): **F-Chain ≡ T-Chain** (threshold
FHE encrypted compute), **M-Chain ≡ K-Chain** (KMS + MPC topology). The
canonical letter on disk and in VM IDs is T / K; F / M are aliases registered
on the same VM IDs (`builder.TChainAliases`, `builder.KChainAliases`).
| Letter | VM | Mainnet | Testnet | Devnet | Localnet |
|--------|--------------|---------|---------|--------|----------|
| X | XVM (UTXO) | — | — | — | — |
| C | EVM | 96369 | 96368 | 96370 | 31337 |
| D | DexVM | 96469 | 96468 | 96470 | 31447 |
| Q | QuantumVM | 96569 | 96568 | 96570 | 31557 |
| A | AIVM | 96669 | 96668 | 96670 | 31667 |
| B | BridgeVM | 96769 | 96768 | 96770 | 31777 |
| T (=F) | ThresholdVM | 96869 | 96868 | 96870 | 31887 |
| Z | ZKVM | 96969 | 96968 | 96970 | 31997 |
| G | GraphVM | 97069 | 97068 | 97070 | 32107 |
| K (=M) | KeyVM | 97169 | 97168 | 97170 | 32217 |
Pattern: each letter's mainnet ID is `96369 + 100*Δ_from_C`; testnet = mainnet-1,
devnet = mainnet+1 (mirrors the C-Chain triple). Localnet uses a separate
`31337 + 110*Δ` series. All 36 EVM chain IDs are pairwise distinct so a
misrouted transaction cannot be replayed against the wrong chain.
The contract that every primary network ships all 10 shards is locked by
`configs.TestGetGenesis_AllPrimaryChainsBakedIn` — removing a chain on
mainnet/testnet/devnet/localnet is now a load-bearing test edit, not a
silent operator switch.
### L2 Chains
| Chain | Mainnet ID | Testnet ID | Devnet ID | Treasury |
+11 -4
View File
@@ -54,14 +54,21 @@ var (
AChainAliases = []string{"A", "ai", "aivm"}
// BChainAliases are the default aliases for the B-Chain (Bridge)
BChainAliases = []string{"B", "bridge", "bridgevm"}
// TChainAliases are the default aliases for the T-Chain (Threshold)
TChainAliases = []string{"T", "threshold", "thresholdvm"}
// TChainAliases are the default aliases for the T-Chain (Threshold-FHE).
// "F" / "fhe" alias the threshold-FHE chain since this is the
// encrypted-compute chain in conceptual letter-chain taxonomy
// (LP-134 / "F-Chain" in user-facing docs). The on-disk shard
// stays tchain.json — letter is decomplected from product name.
TChainAliases = []string{"T", "threshold", "thresholdvm", "F", "fhe", "fhevm"}
// ZChainAliases are the default aliases for the Z-Chain (ZK)
ZChainAliases = []string{"Z", "zk", "zkvm"}
// GChainAliases are the default aliases for the G-Chain (Graph)
GChainAliases = []string{"G", "graph", "graphvm"}
// KChainAliases are the default aliases for the K-Chain (KMS)
KChainAliases = []string{"K", "kms", "kmsvm"}
// KChainAliases are the default aliases for the K-Chain (KMS / MPC).
// "M" / "mpc" alias the KMS chain since this is the MPC-topology
// chain in conceptual letter-chain taxonomy (LP-134 / "M-Chain"
// in user-facing docs). The on-disk shard stays kchain.json.
KChainAliases = []string{"K", "kms", "kmsvm", "M", "mpc", "mpcvm"}
// VMAliases are the default aliases for VMs
VMAliases = map[ids.ID][]string{
+120
View File
@@ -141,3 +141,123 @@ func networkIDFromName(t *testing.T, name string) uint32 {
return 0
}
}
// TestGetGenesis_AllPrimaryChainsBakedIn locks the contract that every
// primary network (mainnet, testnet, devnet, localnet) ships ALL 10
// primary-network chain shards baked into its genesis. This means the
// chains spawn at network startup with NO post-launch CreateBlockchainTx —
// chain set is fully data-driven by which shards are committed.
//
// The 10 primary-network chains, in canonical order:
//
// X XVM exchange / UTXO asset
// C EVM contracts
// D DexVM decentralized exchange (CLOB + AMM + perps)
// Q QuantumVM post-quantum consensus (Quasar / ML-DSA / ML-KEM)
// A AIVM AI verification / attestation
// B BridgeVM cross-chain bridge (MPC signing)
// T ThresholdVM threshold FHE encrypted compute (LP-?? F-chain semantic)
// Z ZKVM zero-knowledge proofs / private state
// G GraphVM graph database
// K KeyVM KMS — MPC topology (LP-?? M-chain semantic)
//
// P-Chain is the primary network itself and carries the validator set + chain
// registry; it has no shard slot because it isn't a CreateChainTx entry.
//
// If a future genesis intentionally needs to omit a chain (e.g. a P+X-only
// Liquidity-shape L1), that's a NEW config-tree, not a regression on the
// canonical Lux primary networks. Editing this test to drop a chain on
// mainnet/testnet/devnet is a load-bearing decision — bring it to design
// review.
func TestGetGenesis_AllPrimaryChainsBakedIn(t *testing.T) {
required := []string{
"xChainGenesis",
"cChainGenesis",
"dChainGenesis",
"qChainGenesis",
"aChainGenesis",
"bChainGenesis",
"tChainGenesis",
"zChainGenesis",
"gChainGenesis",
"kChainGenesis",
}
for _, name := range []string{"mainnet", "testnet", "devnet", "localnet"} {
t.Run(name, func(t *testing.T) {
data, err := GetGenesis(networkIDFromName(t, name))
if err != nil {
t.Fatalf("GetGenesis(%s): %v", name, err)
}
var m map[string]any
if err := json.Unmarshal(data, &m); err != nil {
t.Fatalf("parse %s: %v", name, err)
}
for _, field := range required {
got, _ := m[field].(string)
if got == "" {
t.Fatalf("%s: required chain field %q is empty — primary network must ship every letter-chain shard", name, field)
}
}
})
}
}
// TestPrimaryChainShards_PerChainCanonicalChainID locks the canonical
// per-letter EVM chainId scheme so any drift between the network configs
// is caught at test time. Pattern:
//
// letter base = 96369 + 100*(idx_in_alphabet_relative_to_C)
// per-network offset: testnet = base-1, devnet = base+1 (mirrors C-Chain)
//
// This produces:
//
// C(96369/96368/96370), D(96469/96468/96470), Q(96569/96568/96570),
// A(96669/96668/96670), B(96769/96768/96770), T(96869/96868/96870),
// Z(96969/96968/96970), G(97069/97068/97070), K(97169/97168/97170)
//
// Each ID is unique across {network × letter} so a misrouted tx cannot
// be replayed against the wrong chain.
func TestPrimaryChainShards_PerChainCanonicalChainID(t *testing.T) {
want := map[string]map[string]int{
"mainnet": {
"d": 96469, "q": 96569, "a": 96669, "b": 96769,
"t": 96869, "z": 96969, "g": 97069, "k": 97169,
},
"testnet": {
"d": 96468, "q": 96568, "a": 96668, "b": 96768,
"t": 96868, "z": 96968, "g": 97068, "k": 97168,
},
"devnet": {
"d": 96470, "q": 96570, "a": 96670, "b": 96770,
"t": 96870, "z": 96970, "g": 97070, "k": 97170,
},
"localnet": {
"d": 31447, "q": 31557, "a": 31667, "b": 31777,
"t": 31887, "z": 31997, "g": 32107, "k": 32217,
},
}
for net, byLetter := range want {
net := net
t.Run(net, func(t *testing.T) {
for letter, wantID := range byLetter {
path := filepath.Join("..", "configs", net, letter+"chain.json")
data, err := os.ReadFile(path)
if err != nil {
t.Fatalf("%s/%schain.json: %v", net, letter, err)
}
var shard map[string]any
if err := json.Unmarshal(data, &shard); err != nil {
t.Fatalf("%s/%schain.json parse: %v", net, letter, err)
}
// chainId is stored as a JSON number → unmarshals to float64
gotF, ok := shard["chainId"].(float64)
if !ok {
t.Fatalf("%s/%schain.json: chainId missing or wrong type, got %T", net, letter, shard["chainId"])
}
if int(gotF) != wantID {
t.Fatalf("%s/%schain.json: chainId got %d want %d", net, letter, int(gotF), wantID)
}
}
})
}
}
+10 -1
View File
@@ -1 +1,10 @@
{"version":1,"message":"Lux Chain Genesis"}
{
"chainId": 96670,
"description": "AI verification + attestation",
"message": "Lux A-Chain Genesis",
"name": "A-Chain",
"networkId": 3,
"timestamp": 1730531602,
"version": 1,
"vm": "AIVM"
}
+12 -1
View File
@@ -1 +1,12 @@
{"version":1,"message":"Lux Chain Genesis"}
{
"chainId": 96770,
"description": "Cross-chain bridge + MPC signing",
"initialSigners": [],
"message": "Lux B-Chain Genesis",
"name": "B-Chain",
"networkId": 3,
"signerThreshold": 0,
"timestamp": 1730531602,
"version": 1,
"vm": "BridgeVM"
}
+17 -1
View File
@@ -1 +1,17 @@
{"version":1,"message":"Lux Chain Genesis"}
{
"chainId": 96470,
"description": "Decentralized Exchange \u2014 native CLOB + AMM + perpetuals",
"feeConfig": {
"makerFeeBps": 2,
"takerFeeBps": 5
},
"liquidityPools": [],
"message": "Lux D-Chain Genesis",
"name": "D-Chain",
"networkId": 3,
"perpetualMarkets": [],
"timestamp": 1730531602,
"tradingPairs": [],
"version": 1,
"vm": "DexVM"
}
+10 -1
View File
@@ -1 +1,10 @@
{"version":1,"message":"Lux Chain Genesis"}
{
"chainId": 97070,
"description": "Graph database (GraphQL/Dgraph)",
"message": "Lux G-Chain Genesis",
"name": "G-Chain",
"networkId": 3,
"timestamp": 1730531602,
"version": 1,
"vm": "GraphVM"
}
File diff suppressed because one or more lines are too long
+17 -1
View File
@@ -1 +1,17 @@
{"version":1,"message":"Lux Chain Genesis"}
{
"aliases": [
"M",
"mpc",
"mpcvm"
],
"chainId": 97170,
"description": "KMS \u2014 MPC key management + threshold sigs",
"message": "Lux K-Chain Genesis",
"mpcParties": 10,
"mpcThreshold": 7,
"name": "K-Chain",
"networkId": 3,
"timestamp": 1730531602,
"version": 1,
"vm": "KeyVM"
}
+12 -1
View File
@@ -1 +1,12 @@
{"version":1,"message":"Lux Chain Genesis"}
{
"chainId": 96570,
"description": "Post-quantum consensus + signatures (Quasar)",
"kemScheme": "mlkem768",
"message": "Lux Q-Chain Genesis",
"name": "Q-Chain",
"networkId": 3,
"signatureScheme": "mldsa65",
"timestamp": 1730531602,
"version": 1,
"vm": "QuantumVM"
}
+19 -1
View File
@@ -1 +1,19 @@
{"version":1,"message":"Lux Chain Genesis"}
{
"aliases": [
"F",
"fhe",
"fhevm"
],
"chainId": 96870,
"description": "Threshold FHE encrypted compute (ring N=1024 q=12289)",
"dkgParties": 10,
"dkgThreshold": 7,
"message": "Lux T-Chain Genesis",
"name": "T-Chain",
"networkId": 3,
"ringDegreeN": 1024,
"ringModulusQ": 12289,
"timestamp": 1730531602,
"version": 1,
"vm": "ThresholdVM"
}
+10 -1
View File
@@ -1 +1,10 @@
{"version":1,"message":"Lux Chain Genesis"}
{
"chainId": 96970,
"description": "Zero-knowledge proofs + private state",
"message": "Lux Z-Chain Genesis",
"name": "Z-Chain",
"networkId": 3,
"timestamp": 1730531602,
"version": 1,
"vm": "ZKVM"
}
+10
View File
@@ -0,0 +1,10 @@
{
"chainId": 31667,
"description": "AI verification + attestation",
"message": "Lux A-Chain Genesis",
"name": "A-Chain",
"networkId": 1337,
"timestamp": 1735689600,
"version": 1,
"vm": "AIVM"
}
+12
View File
@@ -0,0 +1,12 @@
{
"chainId": 31777,
"description": "Cross-chain bridge + MPC signing",
"initialSigners": [],
"message": "Lux B-Chain Genesis",
"name": "B-Chain",
"networkId": 1337,
"signerThreshold": 0,
"timestamp": 1735689600,
"version": 1,
"vm": "BridgeVM"
}
+17
View File
@@ -0,0 +1,17 @@
{
"chainId": 31447,
"description": "Decentralized Exchange \u2014 native CLOB + AMM + perpetuals",
"feeConfig": {
"makerFeeBps": 2,
"takerFeeBps": 5
},
"liquidityPools": [],
"message": "Lux D-Chain Genesis",
"name": "D-Chain",
"networkId": 1337,
"perpetualMarkets": [],
"timestamp": 1735689600,
"tradingPairs": [],
"version": 1,
"vm": "DexVM"
}
+10
View File
@@ -0,0 +1,10 @@
{
"chainId": 32107,
"description": "Graph database (GraphQL/Dgraph)",
"message": "Lux G-Chain Genesis",
"name": "G-Chain",
"networkId": 1337,
"timestamp": 1735689600,
"version": 1,
"vm": "GraphVM"
}
File diff suppressed because one or more lines are too long
+17
View File
@@ -0,0 +1,17 @@
{
"aliases": [
"M",
"mpc",
"mpcvm"
],
"chainId": 32217,
"description": "KMS \u2014 MPC key management + threshold sigs",
"message": "Lux K-Chain Genesis",
"mpcParties": 10,
"mpcThreshold": 7,
"name": "K-Chain",
"networkId": 1337,
"timestamp": 1735689600,
"version": 1,
"vm": "KeyVM"
}
+12 -1
View File
@@ -1 +1,12 @@
{"version":1,"message":"Lux Chain Genesis"}
{
"chainId": 31557,
"description": "Post-quantum consensus + signatures (Quasar)",
"kemScheme": "mlkem768",
"message": "Lux Q-Chain Genesis",
"name": "Q-Chain",
"networkId": 1337,
"signatureScheme": "mldsa65",
"timestamp": 1735689600,
"version": 1,
"vm": "QuantumVM"
}
+19
View File
@@ -0,0 +1,19 @@
{
"aliases": [
"F",
"fhe",
"fhevm"
],
"chainId": 31887,
"description": "Threshold FHE encrypted compute (ring N=1024 q=12289)",
"dkgParties": 10,
"dkgThreshold": 7,
"message": "Lux T-Chain Genesis",
"name": "T-Chain",
"networkId": 1337,
"ringDegreeN": 1024,
"ringModulusQ": 12289,
"timestamp": 1735689600,
"version": 1,
"vm": "ThresholdVM"
}
+10 -1
View File
@@ -1 +1,10 @@
{"version":1,"message":"Lux Chain Genesis"}
{
"chainId": 31997,
"description": "Zero-knowledge proofs + private state",
"message": "Lux Z-Chain Genesis",
"name": "Z-Chain",
"networkId": 1337,
"timestamp": 1735689600,
"version": 1,
"vm": "ZKVM"
}
+10 -1
View File
@@ -1 +1,10 @@
{"version":1,"message":"Lux Chain Genesis"}
{
"chainId": 96669,
"description": "AI verification + attestation",
"message": "Lux A-Chain Genesis",
"name": "A-Chain",
"networkId": 1,
"timestamp": 1730446786,
"version": 1,
"vm": "AIVM"
}
+12 -1
View File
@@ -1 +1,12 @@
{"version":1,"message":"Lux Chain Genesis"}
{
"chainId": 96769,
"description": "Cross-chain bridge + MPC signing",
"initialSigners": [],
"message": "Lux B-Chain Genesis",
"name": "B-Chain",
"networkId": 1,
"signerThreshold": 0,
"timestamp": 1730446786,
"version": 1,
"vm": "BridgeVM"
}
+17 -1
View File
@@ -1 +1,17 @@
{"version":1,"message":"Lux Chain Genesis"}
{
"chainId": 96469,
"description": "Decentralized Exchange \u2014 native CLOB + AMM + perpetuals",
"feeConfig": {
"makerFeeBps": 2,
"takerFeeBps": 5
},
"liquidityPools": [],
"message": "Lux D-Chain Genesis",
"name": "D-Chain",
"networkId": 1,
"perpetualMarkets": [],
"timestamp": 1730446786,
"tradingPairs": [],
"version": 1,
"vm": "DexVM"
}
+10 -1
View File
@@ -1 +1,10 @@
{"version":1,"message":"Lux Chain Genesis"}
{
"chainId": 97069,
"description": "Graph database (GraphQL/Dgraph)",
"message": "Lux G-Chain Genesis",
"name": "G-Chain",
"networkId": 1,
"timestamp": 1730446786,
"version": 1,
"vm": "GraphVM"
}
+10 -3
View File
@@ -1,4 +1,5 @@
{
"aChainGenesis": "{\n \"chainId\": 96669,\n \"description\": \"AI verification + attestation\",\n \"message\": \"Lux A-Chain Genesis\",\n \"name\": \"A-Chain\",\n \"networkId\": 1,\n \"timestamp\": 1730446786,\n \"version\": 1,\n \"vm\": \"AIVM\"\n}",
"allocations": [
{
"ethAddr": "0x9011e888251ab053b7bd1cdb598db4f9ded94714",
@@ -40701,7 +40702,10 @@
]
}
],
"cChainGenesis": "{\"alloc\":{\"0200000000000000000000000000000000000005\":{\"balance\":\"0x0\",\"code\":\"0x01\",\"nonce\":\"0x1\"},\"0x9011E888251AB053B7bD1cdB598Db4f9DEd94714\":{\"balance\":\"0x193e5939a08ce9dbd480000000\"}},\"baseFeePerGas\":\"0x5d21dba00\",\"coinbase\":\"0x0000000000000000000000000000000000000000\",\"config\":{\"arrowGlacierBlock\":0,\"berlinBlock\":0,\"blobSchedule\":{\"cancun\":{\"baseFeeUpdateFraction\":3338477,\"max\":6,\"target\":3}},\"byzantiumBlock\":0,\"cancunTime\":253399622400,\"chainId\":96369,\"constantinopleBlock\":0,\"eip150Block\":0,\"eip155Block\":0,\"eip158Block\":0,\"evmTimestamp\":0,\"feeConfig\":{\"baseFeeChangeDenominator\":36,\"blockGasCostStep\":200000,\"gasLimit\":1000000000,\"maxBlockGasCost\":1000000,\"minBaseFee\":25000000000,\"minBlockGasCost\":0,\"targetBlockRate\":2,\"targetGas\":500000000},\"grayGlacierBlock\":0,\"homesteadBlock\":0,\"istanbulBlock\":0,\"londonBlock\":0,\"mergeNetsplitBlock\":0,\"muirGlacierBlock\":0,\"petersburgBlock\":0,\"shanghaiTime\":253399622400,\"terminalTotalDifficulty\":0,\"warpConfig\":{\"blockTimestamp\":1730446786,\"quorumNumerator\":67,\"requirePrimaryNetworkSigners\":false}},\"difficulty\":\"0x0\",\"extraData\":\"0x\",\"gasLimit\":\"0xb71b00\",\"gasUsed\":\"0x0\",\"genesisHash\":\"0x3f4fa2a0b0ce089f52bf0ae9199c75ffdd76ecafc987794050cb0d286f1ec61e\",\"mixHash\":\"0x0000000000000000000000000000000000000000000000000000000000000000\",\"nonce\":\"0x0\",\"number\":\"0x0\",\"parentHash\":\"0x0000000000000000000000000000000000000000000000000000000000000000\",\"skipPostMergeFields\":true,\"stateRoot\":\"0x2d1cedac263020c5c56ef962f6abe0da1f5217bdc6468f8c9258a0ea23699e80\",\"timestamp\":\"0x672485c2\"}",
"bChainGenesis": "{\n \"chainId\": 96769,\n \"description\": \"Cross-chain bridge + MPC signing\",\n \"initialSigners\": [],\n \"message\": \"Lux B-Chain Genesis\",\n \"name\": \"B-Chain\",\n \"networkId\": 1,\n \"signerThreshold\": 0,\n \"timestamp\": 1730446786,\n \"version\": 1,\n \"vm\": \"BridgeVM\"\n}",
"cChainGenesis": "{\n \"alloc\": {\n \"0200000000000000000000000000000000000005\": {\n \"balance\": \"0x0\",\n \"code\": \"0x01\",\n \"nonce\": \"0x1\"\n },\n \"0x9011E888251AB053B7bD1cdB598Db4f9DEd94714\": {\n \"balance\": \"0x193e5939a08ce9dbd480000000\"\n }\n },\n \"baseFeePerGas\": \"0x5d21dba00\",\n \"coinbase\": \"0x0000000000000000000000000000000000000000\",\n \"config\": {\n \"arrowGlacierBlock\": 0,\n \"berlinBlock\": 0,\n \"blobSchedule\": {\n \"cancun\": {\n \"baseFeeUpdateFraction\": 3338477,\n \"max\": 6,\n \"target\": 3\n }\n },\n \"byzantiumBlock\": 0,\n \"cancunTime\": 0,\n \"chainId\": 96369,\n \"constantinopleBlock\": 0,\n \"eip150Block\": 0,\n \"eip155Block\": 0,\n \"eip158Block\": 0,\n \"evmTimestamp\": 0,\n \"feeConfig\": {\n \"baseFeeChangeDenominator\": 36,\n \"blockGasCostStep\": 200000,\n \"gasLimit\": 1000000000,\n \"maxBlockGasCost\": 1000000,\n \"minBaseFee\": 25000000000,\n \"minBlockGasCost\": 0,\n \"targetBlockRate\": 2,\n \"targetGas\": 500000000\n },\n \"grayGlacierBlock\": 0,\n \"homesteadBlock\": 0,\n \"istanbulBlock\": 0,\n \"londonBlock\": 0,\n \"mergeNetsplitBlock\": 0,\n \"muirGlacierBlock\": 0,\n \"petersburgBlock\": 0,\n \"shanghaiTime\": 0,\n \"terminalTotalDifficulty\": 0,\n \"warpConfig\": {\n \"blockTimestamp\": 1730446786,\n \"quorumNumerator\": 67,\n \"requirePrimaryNetworkSigners\": false\n }\n },\n \"difficulty\": \"0x0\",\n \"extraData\": \"0x\",\n \"gasLimit\": \"0xb71b00\",\n \"gasUsed\": \"0x0\",\n \"genesisHash\": \"0x3f4fa2a0b0ce089f52bf0ae9199c75ffdd76ecafc987794050cb0d286f1ec61e\",\n \"mixHash\": \"0x0000000000000000000000000000000000000000000000000000000000000000\",\n \"nonce\": \"0x0\",\n \"number\": \"0x0\",\n \"parentHash\": \"0x0000000000000000000000000000000000000000000000000000000000000000\",\n \"skipPostMergeFields\": true,\n \"stateRoot\": \"0x2d1cedac263020c5c56ef962f6abe0da1f5217bdc6468f8c9258a0ea23699e80\",\n \"timestamp\": \"0x672485c2\"\n}",
"dChainGenesis": "{\n \"chainId\": 96469,\n \"description\": \"Decentralized Exchange \\u2014 native CLOB + AMM + perpetuals\",\n \"feeConfig\": {\n \"makerFeeBps\": 2,\n \"takerFeeBps\": 5\n },\n \"liquidityPools\": [],\n \"message\": \"Lux D-Chain Genesis\",\n \"name\": \"D-Chain\",\n \"networkId\": 1,\n \"perpetualMarkets\": [],\n \"timestamp\": 1730446786,\n \"tradingPairs\": [],\n \"version\": 1,\n \"vm\": \"DexVM\"\n}",
"gChainGenesis": "{\n \"chainId\": 97069,\n \"description\": \"Graph database (GraphQL/Dgraph)\",\n \"message\": \"Lux G-Chain Genesis\",\n \"name\": \"G-Chain\",\n \"networkId\": 1,\n \"timestamp\": 1730446786,\n \"version\": 1,\n \"vm\": \"GraphVM\"\n}",
"initialStakeDuration": 31536000,
"initialStakeDurationOffset": 5400,
"initialStakedFunds": [
@@ -40738,13 +40742,16 @@
"rewardAddress": "P-lux15953qfaga3w5txjmr0fl4clu37kak0ah4gjprr"
}
],
"kChainGenesis": "{\n \"aliases\": [\n \"M\",\n \"mpc\",\n \"mpcvm\"\n ],\n \"chainId\": 97169,\n \"description\": \"KMS \\u2014 MPC key management + threshold sigs\",\n \"message\": \"Lux K-Chain Genesis\",\n \"mpcParties\": 10,\n \"mpcThreshold\": 7,\n \"name\": \"K-Chain\",\n \"networkId\": 1,\n \"timestamp\": 1730446786,\n \"version\": 1,\n \"vm\": \"KeyVM\"\n}",
"message": "Lux et Libertas",
"networkID": 1,
"qChainGenesis": "{\"version\":1,\"message\":\"Lux Chain Genesis\"}",
"qChainGenesis": "{\n \"chainId\": 96569,\n \"description\": \"Post-quantum consensus + signatures (Quasar)\",\n \"kemScheme\": \"mlkem768\",\n \"message\": \"Lux Q-Chain Genesis\",\n \"name\": \"Q-Chain\",\n \"networkId\": 1,\n \"signatureScheme\": \"mldsa65\",\n \"timestamp\": 1730446786,\n \"version\": 1,\n \"vm\": \"QuantumVM\"\n}",
"securityProfile": {
"profileHashHex": "cf3f2cd7b54cfc2cb88b741f38514c58aef7f7184379c7ea454e16c3e54f7d5b04aaafd3817db676d96099e1c2e1fd1c",
"profileID": 1
},
"startTime": 1775506037,
"zChainGenesis": "{\"version\":1,\"message\":\"Lux Chain Genesis\"}"
"tChainGenesis": "{\n \"aliases\": [\n \"F\",\n \"fhe\",\n \"fhevm\"\n ],\n \"chainId\": 96869,\n \"description\": \"Threshold FHE encrypted compute (ring N=1024 q=12289)\",\n \"dkgParties\": 10,\n \"dkgThreshold\": 7,\n \"message\": \"Lux T-Chain Genesis\",\n \"name\": \"T-Chain\",\n \"networkId\": 1,\n \"ringDegreeN\": 1024,\n \"ringModulusQ\": 12289,\n \"timestamp\": 1730446786,\n \"version\": 1,\n \"vm\": \"ThresholdVM\"\n}",
"xChainGenesis": "{\"symbol\":\"LUX\",\"name\":\"Lux\",\"denomination\":9}",
"zChainGenesis": "{\n \"chainId\": 96969,\n \"description\": \"Zero-knowledge proofs + private state\",\n \"message\": \"Lux Z-Chain Genesis\",\n \"name\": \"Z-Chain\",\n \"networkId\": 1,\n \"timestamp\": 1730446786,\n \"version\": 1,\n \"vm\": \"ZKVM\"\n}"
}
+17 -1
View File
@@ -1 +1,17 @@
{"version":1,"message":"Lux Chain Genesis"}
{
"aliases": [
"M",
"mpc",
"mpcvm"
],
"chainId": 97169,
"description": "KMS \u2014 MPC key management + threshold sigs",
"message": "Lux K-Chain Genesis",
"mpcParties": 10,
"mpcThreshold": 7,
"name": "K-Chain",
"networkId": 1,
"timestamp": 1730446786,
"version": 1,
"vm": "KeyVM"
}
+12 -1
View File
@@ -1 +1,12 @@
{"version":1,"message":"Lux Chain Genesis"}
{
"chainId": 96569,
"description": "Post-quantum consensus + signatures (Quasar)",
"kemScheme": "mlkem768",
"message": "Lux Q-Chain Genesis",
"name": "Q-Chain",
"networkId": 1,
"signatureScheme": "mldsa65",
"timestamp": 1730446786,
"version": 1,
"vm": "QuantumVM"
}
+19 -1
View File
@@ -1 +1,19 @@
{"version":1,"message":"Lux Chain Genesis"}
{
"aliases": [
"F",
"fhe",
"fhevm"
],
"chainId": 96869,
"description": "Threshold FHE encrypted compute (ring N=1024 q=12289)",
"dkgParties": 10,
"dkgThreshold": 7,
"message": "Lux T-Chain Genesis",
"name": "T-Chain",
"networkId": 1,
"ringDegreeN": 1024,
"ringModulusQ": 12289,
"timestamp": 1730446786,
"version": 1,
"vm": "ThresholdVM"
}
+10 -1
View File
@@ -1 +1,10 @@
{"version":1,"message":"Lux Chain Genesis"}
{
"chainId": 96969,
"description": "Zero-knowledge proofs + private state",
"message": "Lux Z-Chain Genesis",
"name": "Z-Chain",
"networkId": 1,
"timestamp": 1730446786,
"version": 1,
"vm": "ZKVM"
}
+10 -1
View File
@@ -1 +1,10 @@
{"version":1,"message":"Lux Chain Genesis"}
{
"chainId": 96668,
"description": "AI verification + attestation",
"message": "Lux A-Chain Genesis",
"name": "A-Chain",
"networkId": 2,
"timestamp": 1730531602,
"version": 1,
"vm": "AIVM"
}
+12 -1
View File
@@ -1 +1,12 @@
{"version":1,"message":"Lux Chain Genesis"}
{
"chainId": 96768,
"description": "Cross-chain bridge + MPC signing",
"initialSigners": [],
"message": "Lux B-Chain Genesis",
"name": "B-Chain",
"networkId": 2,
"signerThreshold": 0,
"timestamp": 1730531602,
"version": 1,
"vm": "BridgeVM"
}
+17 -1
View File
@@ -1 +1,17 @@
{"version":1,"message":"Lux Chain Genesis"}
{
"chainId": 96468,
"description": "Decentralized Exchange \u2014 native CLOB + AMM + perpetuals",
"feeConfig": {
"makerFeeBps": 2,
"takerFeeBps": 5
},
"liquidityPools": [],
"message": "Lux D-Chain Genesis",
"name": "D-Chain",
"networkId": 2,
"perpetualMarkets": [],
"timestamp": 1730531602,
"tradingPairs": [],
"version": 1,
"vm": "DexVM"
}
+10 -1
View File
@@ -1 +1,10 @@
{"version":1,"message":"Lux Chain Genesis"}
{
"chainId": 97068,
"description": "Graph database (GraphQL/Dgraph)",
"message": "Lux G-Chain Genesis",
"name": "G-Chain",
"networkId": 2,
"timestamp": 1730531602,
"version": 1,
"vm": "GraphVM"
}
+11 -2
View File
@@ -1,4 +1,5 @@
{
"aChainGenesis": "{\n \"chainId\": 96668,\n \"description\": \"AI verification + attestation\",\n \"message\": \"Lux A-Chain Genesis\",\n \"name\": \"A-Chain\",\n \"networkId\": 2,\n \"timestamp\": 1730531602,\n \"version\": 1,\n \"vm\": \"AIVM\"\n}",
"allocations": [
{
"ethAddr": "0xf785fa547ae9ccf3d3ca5362762a347a4c41051a",
@@ -6058,7 +6059,10 @@
]
}
],
"cChainGenesis": "{\"config\":{\"chainId\":2,\"homesteadBlock\":0,\"eip150Block\":0,\"eip155Block\":0,\"eip158Block\":0,\"byzantiumBlock\":0,\"constantinopleBlock\":0,\"petersburgBlock\":0,\"istanbulBlock\":0,\"muirGlacierBlock\":0,\"berlinBlock\":0,\"londonBlock\":0,\"feeConfig\":{\"gasLimit\":12000000,\"targetBlockRate\":2,\"minBaseFee\":25000000000,\"targetGas\":60000000,\"baseFeeChangeDenominator\":36,\"minBlockGasCost\":0,\"maxBlockGasCost\":1000000,\"blockGasCostStep\":200000}},\"nonce\":\"0x0\",\"timestamp\":\"0x6a069b33\",\"extraData\":\"0x\",\"gasLimit\":\"0xb71b00\",\"difficulty\":\"0x0\",\"mixHash\":\"0x0000000000000000000000000000000000000000000000000000000000000000\",\"coinbase\":\"0x0000000000000000000000000000000000000000\",\"alloc\":{\"0x9011E888251AB053B7bD1cdB598Db4f9DEd94714\":{\"balance\":\"0x193e5939a08ce9dbd480000000\"}},\"number\":\"0x0\",\"gasUsed\":\"0x0\",\"parentHash\":\"0x0000000000000000000000000000000000000000000000000000000000000000\"}",
"bChainGenesis": "{\n \"chainId\": 96768,\n \"description\": \"Cross-chain bridge + MPC signing\",\n \"initialSigners\": [],\n \"message\": \"Lux B-Chain Genesis\",\n \"name\": \"B-Chain\",\n \"networkId\": 2,\n \"signerThreshold\": 0,\n \"timestamp\": 1730531602,\n \"version\": 1,\n \"vm\": \"BridgeVM\"\n}",
"cChainGenesis": "{\n \"alloc\": {\n \"0200000000000000000000000000000000000005\": {\n \"balance\": \"0x0\",\n \"code\": \"0x01\",\n \"nonce\": \"0x1\"\n },\n \"9011E888251AB053B7bD1cdB598Db4f9DEd94714\": {\n \"balance\": \"0x193e5939a08ce9dbd480000000\"\n }\n },\n \"baseFeePerGas\": \"0x5d21dba00\",\n \"coinbase\": \"0x0000000000000000000000000000000000000000\",\n \"config\": {\n \"arrowGlacierBlock\": 0,\n \"berlinBlock\": 0,\n \"byzantiumBlock\": 0,\n \"cancunTime\": 0,\n \"chainId\": 96368,\n \"constantinopleBlock\": 0,\n \"eip150Block\": 0,\n \"eip155Block\": 0,\n \"eip158Block\": 0,\n \"evmTimestamp\": 0,\n \"feeConfig\": {\n \"baseFeeChangeDenominator\": 36,\n \"blockGasCostStep\": 200000,\n \"gasLimit\": 1000000000,\n \"maxBlockGasCost\": 1000000,\n \"minBaseFee\": 25000000000,\n \"minBlockGasCost\": 0,\n \"targetBlockRate\": 2,\n \"targetGas\": 500000000\n },\n \"grayGlacierBlock\": 0,\n \"homesteadBlock\": 0,\n \"istanbulBlock\": 0,\n \"londonBlock\": 0,\n \"mergeNetsplitBlock\": 0,\n \"muirGlacierBlock\": 0,\n \"petersburgBlock\": 0,\n \"shanghaiTime\": 0,\n \"terminalTotalDifficulty\": 0,\n \"warpConfig\": {\n \"blockTimestamp\": 0,\n \"quorumNumerator\": 67,\n \"requirePrimaryNetworkSigners\": false\n }\n },\n \"difficulty\": \"0x0\",\n \"extraData\": \"0x\",\n \"gasLimit\": \"0x3b9aca00\",\n \"gasUsed\": \"0x0\",\n \"genesisHash\": \"0x1c5fe37764b8bc146dc88bc1c2e0259cd8369b07a06439bcfa1782b5d4fb0995\",\n \"mixHash\": \"0x0000000000000000000000000000000000000000000000000000000000000000\",\n \"nonce\": \"0x0\",\n \"number\": \"0x0\",\n \"parentHash\": \"0x0000000000000000000000000000000000000000000000000000000000000000\",\n \"stateRoot\": \"0x2d1cedac263020c5c56ef962f6abe0da1f5217bdc6468f8c9258a0ea23699e80\",\n \"timestamp\": \"0x67259912\"\n}",
"dChainGenesis": "{\n \"chainId\": 96468,\n \"description\": \"Decentralized Exchange \\u2014 native CLOB + AMM + perpetuals\",\n \"feeConfig\": {\n \"makerFeeBps\": 2,\n \"takerFeeBps\": 5\n },\n \"liquidityPools\": [],\n \"message\": \"Lux D-Chain Genesis\",\n \"name\": \"D-Chain\",\n \"networkId\": 2,\n \"perpetualMarkets\": [],\n \"timestamp\": 1730531602,\n \"tradingPairs\": [],\n \"version\": 1,\n \"vm\": \"DexVM\"\n}",
"gChainGenesis": "{\n \"chainId\": 97068,\n \"description\": \"Graph database (GraphQL/Dgraph)\",\n \"message\": \"Lux G-Chain Genesis\",\n \"name\": \"G-Chain\",\n \"networkId\": 2,\n \"timestamp\": 1730531602,\n \"version\": 1,\n \"vm\": \"GraphVM\"\n}",
"initialStakeDuration": 31536000,
"initialStakeDurationOffset": 5400,
"initialStakedFunds": [
@@ -6095,7 +6099,12 @@
}
}
],
"kChainGenesis": "{\n \"aliases\": [\n \"M\",\n \"mpc\",\n \"mpcvm\"\n ],\n \"chainId\": 97168,\n \"description\": \"KMS \\u2014 MPC key management + threshold sigs\",\n \"message\": \"Lux K-Chain Genesis\",\n \"mpcParties\": 10,\n \"mpcThreshold\": 7,\n \"name\": \"K-Chain\",\n \"networkId\": 2,\n \"timestamp\": 1730531602,\n \"version\": 1,\n \"vm\": \"KeyVM\"\n}",
"message": "Lux et Veritas",
"networkID": 2,
"startTime": 1778814243
"qChainGenesis": "{\n \"chainId\": 96568,\n \"description\": \"Post-quantum consensus + signatures (Quasar)\",\n \"kemScheme\": \"mlkem768\",\n \"message\": \"Lux Q-Chain Genesis\",\n \"name\": \"Q-Chain\",\n \"networkId\": 2,\n \"signatureScheme\": \"mldsa65\",\n \"timestamp\": 1730531602,\n \"version\": 1,\n \"vm\": \"QuantumVM\"\n}",
"startTime": 1778814243,
"tChainGenesis": "{\n \"aliases\": [\n \"F\",\n \"fhe\",\n \"fhevm\"\n ],\n \"chainId\": 96868,\n \"description\": \"Threshold FHE encrypted compute (ring N=1024 q=12289)\",\n \"dkgParties\": 10,\n \"dkgThreshold\": 7,\n \"message\": \"Lux T-Chain Genesis\",\n \"name\": \"T-Chain\",\n \"networkId\": 2,\n \"ringDegreeN\": 1024,\n \"ringModulusQ\": 12289,\n \"timestamp\": 1730531602,\n \"version\": 1,\n \"vm\": \"ThresholdVM\"\n}",
"xChainGenesis": "{\"symbol\":\"LUX\",\"name\":\"Lux\",\"denomination\":9}",
"zChainGenesis": "{\n \"chainId\": 96968,\n \"description\": \"Zero-knowledge proofs + private state\",\n \"message\": \"Lux Z-Chain Genesis\",\n \"name\": \"Z-Chain\",\n \"networkId\": 2,\n \"timestamp\": 1730531602,\n \"version\": 1,\n \"vm\": \"ZKVM\"\n}"
}
+17 -1
View File
@@ -1 +1,17 @@
{"version":1,"message":"Lux Chain Genesis"}
{
"aliases": [
"M",
"mpc",
"mpcvm"
],
"chainId": 97168,
"description": "KMS \u2014 MPC key management + threshold sigs",
"message": "Lux K-Chain Genesis",
"mpcParties": 10,
"mpcThreshold": 7,
"name": "K-Chain",
"networkId": 2,
"timestamp": 1730531602,
"version": 1,
"vm": "KeyVM"
}
+12 -1
View File
@@ -1 +1,12 @@
{"version":1,"message":"Lux Chain Genesis"}
{
"chainId": 96568,
"description": "Post-quantum consensus + signatures (Quasar)",
"kemScheme": "mlkem768",
"message": "Lux Q-Chain Genesis",
"name": "Q-Chain",
"networkId": 2,
"signatureScheme": "mldsa65",
"timestamp": 1730531602,
"version": 1,
"vm": "QuantumVM"
}
+19 -1
View File
@@ -1 +1,19 @@
{"version":1,"message":"Lux Chain Genesis"}
{
"aliases": [
"F",
"fhe",
"fhevm"
],
"chainId": 96868,
"description": "Threshold FHE encrypted compute (ring N=1024 q=12289)",
"dkgParties": 10,
"dkgThreshold": 7,
"message": "Lux T-Chain Genesis",
"name": "T-Chain",
"networkId": 2,
"ringDegreeN": 1024,
"ringModulusQ": 12289,
"timestamp": 1730531602,
"version": 1,
"vm": "ThresholdVM"
}
+10 -1
View File
@@ -1 +1,10 @@
{"version":1,"message":"Lux Chain Genesis"}
{
"chainId": 96968,
"description": "Zero-knowledge proofs + private state",
"message": "Lux Z-Chain Genesis",
"name": "Z-Chain",
"networkId": 2,
"timestamp": 1730531602,
"version": 1,
"vm": "ZKVM"
}