Consensus
Quasar — Lux's leaderless, post-quantum, sub-second finality consensus
Lux Consensus
Lux runs Quasar, a leaderless DAG-native consensus engine with hybrid
classical + post-quantum finality. Each round produces a QuasarCert
that combines BLS12-381 aggregate signatures with two independent
post-quantum proof paths (Pulsar threshold + ML-DSA identity), so a
break of any single cryptographic primitive does not break finality.
Quasar Sub-Protocols
Each component owns one concern. They compose into two engine modes (linear chains and DAG chains).
| Component | Role |
|---|---|
| Photon | K-of-N committee selection by Fisher–Yates sampling weighted by Luminance (validator reputation) |
| Wave | Per-round threshold voting with FPC (Fast Probabilistic Consensus) tie-breaking |
| Focus | Confidence accumulation: β consecutive supermajority rounds yields local finality |
| Prism | DAG geometry: cuts, frontiers, uniform peer sampling |
| Horizon | DAG order theory: reachability, lowest-common-ancestor, transitive closure, skip lists |
| Flare | DAG cert / skip classification via 2f+1 quorum |
| Ray | Linear-chain finality driver (Wave + Focus + Sink) |
| Field | DAG finality driver (Wave + safe-prefix commit) |
| Nova | Linear-chain consensus mode — wraps Ray |
| Nebula | DAG consensus mode — wraps Field |
| Quasar | Threshold signing + epoch management (BLS + Pulsar + ML-DSA) |
Round flow
Linear (Nova): Photon → Wave → Focus → Ray → Sink
DAG (Nebula): Photon → Wave (per frontier vertex) → Flare → Horizon (safe prefix) → Field → Committer
QuasarCert: Hybrid Finality
Each finalized round emits a QuasarCert:
type QuasarCert struct {
BLS []byte // BLS12-381 aggregate (~48 B classical fast path)
Pulsar []byte // Pulsar/Ring-LWE 2-round threshold proof (~33 KB PQ)
MLDSAProof []byte // Z-Chain Groth16 rollup of N × ML-DSA identity sigs (~192 B)
Epoch uint64
Finality time.Time
Validators int
}| Layer | Hardness | Role | Size |
|---|---|---|---|
| BLS12-381 aggregate | Classical co-CDH | Fast path | 48 B |
| Pulsar (Ring-LWE) | Module-LWE | PQ threshold | ~33 KB |
| ML-DSA-65 → Groth16 | Module-LWE + MSIS | PQ identity rollup | ~192 B |
A QuasarCert verifies if and only if the configured layers all verify. Each layer is independently toggleable:
| Mode | Composition | Use case |
|---|---|---|
BLSOnly | BLS only | Classical fast path |
BLSPlusMLDSA | BLS + per-validator ML-DSA | Identity-bound PQ |
BLSPlusCorona | BLS + Pulsar threshold | Threshold-only PQ |
BLSPlusGroth16 | BLS + Z-Chain Groth16 rollup | Compact PQ identity |
TripleQuantum | All three layers in parallel | Full Quasar |
Selectable at runtime via the CONSENSUS_PQ_MODE env var or
config.PQMode field.
Pulsar (Threshold Layer)
The Pulsar layer is implemented by Pulsar
(github.com/luxfi/pulsar/threshold) — Lux's variant with DKG2 and the
Pulsar-SHA3 hash suite (KMAC over cSHAKE256, NIST SP 800-185).
| Parameter | Value | Meaning |
|---|---|---|
M | 8 | Module rank |
N | 7 | Min signers (threshold = 6 of 8) |
LogN | 8 | Ring degree = 256 |
Q | 0x1000000004A01 | 48-bit NTT-friendly prime |
| Security (classical / quantum) | 2^142 / 2^130 | BDGL sieving + Grover |
Measured performance (Apple M1 Max, single round)
| Mode | Sign | Aggregate | Verify | Cert | 10K certs |
|---|---|---|---|---|---|
| BLS-only | 312 µs | 8.6 ms | 714 µs | 123 B | 1.17 MB |
| BLS + ML-DSA | 369 µs | 8.5 ms | 3.4 ms | 69 KB | 665 MB |
| BLS + Pulsar | 39 ms | 3.3 s | 1.6 ms | 33 KB | 318 MB |
| Triple Quantum | 40 ms | 3.3 s | 4.3 ms | 102 KB | 981 MB |
ZAP wire protocol (zero-copy, replaces JSON-RPC for inter-node messages): single-conn 114K TPS, 50 conns + batch 1000 = 20.26M TPS.
Properties
Liveness. Round driver makes progress whenever a 2f+1 fraction of the network is reachable. No single leader.
Safety. Holds whenever fewer than f Byzantine validators participate (committee size 3f+1). The classical layer (BLS) and post-quantum layers (Pulsar / ML-DSA) sign the same payload, so an adversary that breaks one primitive still has to defeat the other layers.
PQ safety. Even an attacker with full quantum capability cannot
forge a triple-mode cert without breaking both Ring-LWE (Pulsar) and
ML-DSA simultaneously — see LP-105 §7
and ~/work/lux/proofs/quasar-cert-soundness.tex App. E for the
parameter-tightness argument.
Scalability. Per-node communication is O(k) per round (committee size, not validator-set size). Quasar scales to thousands of validators without degrading finality.
Chain assignments
| Chain | Engine | Why |
|---|---|---|
| C-Chain (EVM) | Nova (linear) | Sequential smart-contract execution |
| P-Chain (platform) | Nova (linear) | Ordered validator-set + staking transitions |
| X-Chain (UTXO) | Nebula (DAG) | High-throughput parallel asset transfers |
| Q-Chain | Pulsar 2-round threshold | PQ consensus signing for Quasar |
| M-Chain | CGGMP21 / FROST / Pulsar-general MPC | Bridge custody for external wallets, threshold signing ceremonies |
| F-Chain | TFHE bootstrap-key generation, FHE compute | Encrypted EVM, encrypted ML inference |
| Z-Chain | Groth16 over BLS12-381 | Roll N × ML-DSA-65 sigs into 192-byte proof |