Files
consensus/doc.go
zeekay 23c58f720c quasar: complete Ringtail purge — Corona (production R-LWE) + Nasua (academic upstream)
Followup to the QuasarCert field rename (commit 4c9af053). This sweeps
the remaining Ringtail identifiers and prose out of the consensus repo
entirely:

  - Identifiers (Go code):
    ringtailThreshold   → coronaThreshold      (import alias)
    ringtailGroupKey    → coronaGroupKey
    ringtailSigners     → coronaSigners
    ringtailShares      → coronaShares
    ringtailGobEncode   → coronaGobEncode
    ringtailGobDecode   → coronaGobDecode
    decodeRingtailSig   → decodeCoronaSig
    EncodeRingtailSig   → EncodeCoronaSig
    RingtailRound1{,Data,State} → CoronaRound1{,Data,State}
    RingtailGroupKey/Pub/Shares → Corona*

  - File rename:
    protocol/quasar/ringtail_gob.go → corona_gob.go

  - PQMode constants:
    PQModeRingtail            → PQModeNasua
    SigSchemeRingtailAcademic → SigSchemeNasua
    "ringtail" / "ringtail-academic" string forms → "nasua"

  - Prose & comments throughout the repo: "Ringtail" → "Corona" when
    naming the production Ring-LWE library, "Nasua" when naming the
    historical academic upstream (luxfi/nasua, formerly luxfi/ringtail).

Canonical Pulsar family taxonomy after this rename:

  Nasua  — academic R-LWE 2-round threshold sig (Boschini et al,
           ePrint 2024/1113); trusted-dealer DKG; kept as historical
           reference fork only. NOT for an open public chain.
  Corona — production Ring-LWE threshold ML-DSA (Pedersen DKG over R_q
           + proactive resharing); `github.com/luxfi/corona`. The
           Ring-LWE leg of QuasarCert.
  Pulsar — production Module-LWE threshold ML-DSA (FIPS 204
           byte-equal); `github.com/luxfi/pulsar`. The Module-LWE
           leg of QuasarCert. Pure-PQ pair = Corona + Pulsar.

Wire-format unchanged. Tests: 28/28 packages green (-short suite,
quasar 29s, integration 58s, no regressions).
2026-05-12 08:58:51 -07:00

55 lines
1.7 KiB
Go

// Copyright (C) 2019-2025, Lux Industries Inc. All rights reserved.
// See the file LICENSE for licensing terms.
/*
Package consensus provides the Quasar family of consensus protocols for the
Lux blockchain network.
# Overview
The consensus system supports two modes -- linear chain (Nova, for P-Chain and
C-Chain) and DAG (Nebula, for X-Chain) -- with optional post-quantum finality
via BLS + Corona + ML-DSA threshold signing.
# Sub-Protocols
The Quasar family comprises:
- photon: K-of-N committee selection via Fisher-Yates with luminance weighting
- wave: Per-round threshold voting with FPC (Fast Probabilistic Consensus)
- focus: Confidence accumulation (beta consecutive successes = finality)
- nova: Linear chain consensus mode (wraps ray)
- nebula: DAG consensus mode (wraps field)
- prism: DAG geometry: frontiers, cuts, uniform peer sampling
- horizon: DAG order-theory: reachability, LCA, transitive closure
- flare: DAG certificate/skip detection (2f+1 quorum)
- ray: Linear chain finality driver
- field: DAG finality driver with safe-prefix commit
- quasar: BLS + Corona + ML-DSA parallel threshold signing
# Usage
import "github.com/luxfi/consensus"
chain := consensus.NewChain(consensus.DefaultConfig())
if err := chain.Start(ctx); err != nil {
log.Fatal(err)
}
defer chain.Stop()
# Signing Modes
Each cryptographic layer is independently toggleable:
- BLS-only: fastest classical consensus (BLS12-381 threshold)
- BLS + ML-DSA: dual with PQ identity proof (FIPS 204)
- BLS + Corona: dual with PQ threshold proof (Ring-LWE)
- BLS + Corona + ML-DSA: full Quasar (all three in parallel)
# Testing
go test ./...
go test -bench=. ./bench/
*/
package consensus