mirror of
https://github.com/luxfi/chains.git
synced 2026-09-24 00:26:00 +00:00
29b808095cfb4c48b6836551007617b615d51d2b
The Z-Chain is DEFINITIVELY strict-PQ (shielded settlement on the canonical Lux strict-PQ profile), but the switches were inert: the default ZConfig omitted StrictPQ (->false) and RegisterZKPrecompiles had ZERO callers. Task 1 — drive BOTH switches from the single ZConfig.StrictPQ field: - Default ZConfig now pins StrictPQ=true + ProofSystem='stark' (the only system accepted under strict-PQ). A genesis with no explicit ZConfig yields a strict-PQ chain; a permissive deployment MUST set StrictPQ=false explicitly. - VM.Initialize now calls precompiles.RegisterZKPrecompiles(reg, config. StrictPQ) — same bit. On strict-PQ the classical Groth16 (0x80) / PLONK (0x81) verifiers are NOT registered (fail-closed by absence); only STARK/FRI (0x82) + the fail-closed stubs exist. Added VM.ZKPrecompiles() / VM.StrictPQ() accessors. LOW (Red) — TestStrictPQ_RealBN254VKLoadErrors drove a test-local mirror (reapplyStrictPQVKGuard), not the production loadVerifyingKeys. Added a config path (ZConfig.VerifyingKeys) to supply real keys in-memory; the test now drives the REAL NewProofVerifier->loadVerifyingKeys and asserts the strict-PQ real-bn254-VK guard fires there. Deleted the mirror. Tests (a)(c): default Z-Chain is strict-PQ + registers strictPQ=true; classical 0x80/0x81 absent, 0x82 present; a groth16 shielded proof is REFUSED before reaching bn254; explicit StrictPQ=false flips both switches in lockstep (profile-driven, not hardcoded); real-VK guard via the production loader; non-strict chain still accepts a real bn254 VK.
Lux Chains
Independent VM plugin binaries for the Lux Network.
Each directory builds to a standalone binary that the Lux node loads as a plugin via --plugin-dir.
Build
make # build all VMs
make evm # build one VM
make test # test all
Install
lpm install evm
lpm install dexvm
Or copy binaries to ~/.lux/plugins/<vmid>.
VMs
| VM | Chain | Purpose |
|---|---|---|
| evm | C-Chain | EVM smart contracts |
| dexvm | D-Chain | Decentralized exchange |
| aivm | A-Chain | AI/ML inference |
| bridgevm | B-Chain | Cross-chain bridge |
| graphvm | G-Chain | GraphQL data layer |
| identityvm | I-Chain | Decentralized identity |
| keyvm | K-Chain | Key management |
| oraclevm | O-Chain | Oracle/off-chain data |
| quantumvm | Q-Chain | Post-quantum consensus signing (Pulsar) |
| relayvm | R-Chain | Cross-chain relay |
| servicenodevm | S-Chain | Service node registry |
| teleportvm | T-Chain | Unified teleport (bridge + relay + oracle) |
| thresholdvm (MPC) | M-Chain | MPC ceremonies (CGGMP21, FROST, Pulsar-general) — bridge custody for external wallets |
| thresholdvm (FHE) | F-Chain | FHE compute + TFHE bootstrap-key generation (encrypted EVM) |
| zkvm | Z-Chain | Groth16 over BLS12-381 (rolls N × ML-DSA-65 sigs into 192-byte proof) |
Languages
Go
98.2%
C
1.7%
Shell
0.1%