Documentation
¶
Overview ¶
Package quasar provides hybrid quantum-safe consensus finality.
Overview ¶
Quasar is the gravitational center of Lux consensus, binding P-Chain (BLS signatures) and Q-Chain (Corona post-quantum threshold) into unified hybrid finality across all Lux networks.
Architecture ¶
All validators maintain both keypairs:
- BLS keypair: Aggregate signatures (classical, fast)
- Corona keypair: Threshold signatures (post-quantum, 2-round)
Both signature paths run in parallel:
Block arrives
|
+-- BLS PATH ----------+-- CORONA PATH --------+
| All validators | Round 1: commitments |
| sign with BLS | Round 2: partials |
| Aggregate (96B) | Combine threshold sig |
+----------------------+-------------------------+
|
HYBRID PROOF
BLS + Corona combined
|
QUANTUM FINALITY
Vote Flow ¶
Validators cast votes (wire format: Chits) for proposed blocks. The Quasar engine collects these votes and produces finality proofs when:
- 2/3+ validator weight signed via BLS
- t-of-n validators completed Corona threshold signing
Signature Types ¶
The package defines several signature types:
- SignatureTypeBLS: Classical BLS signatures
- SignatureTypeCorona: Post-quantum threshold
- SignatureTypeQuasar: Hybrid combining both
- SignatureTypeMLDSA: ML-DSA fallback
Components ¶
Quasar: Main consensus hub coordinating both signature paths.
CoronaCoordinator: Manages the 2-round threshold signing protocol for post-quantum security.
QuantumFinality: Represents a block that achieved hybrid finality with both BLS and Corona proofs.
Package quasar provides GPU-accelerated NTT operations for Corona consensus. This uses the unified lux/accel package for GPU acceleration of lattice operations in the Corona threshold signature protocol.
GPU acceleration provides 40x+ speedup for NTT operations on Apple Silicon and NVIDIA GPUs via the accel library (Metal/CUDA/CPU backends).
Architecture:
luxcpp/accel (C++ GPU) → lux/accel (Go CGO) → Quasar consensus
This enables consistent GPU acceleration across:
- Corona threshold signatures
- ML-DSA post-quantum signatures
- FHE operations (via luxcpp/fhe which reuses luxcpp/lattice)
Index ¶
- Variables
- type BLSSignature
- type BLSWork
- type BlockVerifyResult
- type BlockVerifyWork
- type Config
- type ConfigBuilder
- func (b *ConfigBuilder) Build() (Config, error)
- func (b *ConfigBuilder) MustBuild() Config
- func (b *ConfigBuilder) WithAlpha(alpha float64) *ConfigBuilder
- func (b *ConfigBuilder) WithBeta(virtuous, rogue int) *ConfigBuilder
- func (b *ConfigBuilder) WithFinalityChannelSize(size int) *ConfigBuilder
- func (b *ConfigBuilder) WithK(k int) *ConfigBuilder
- func (b *ConfigBuilder) WithNumParties(n int) *ConfigBuilder
- func (b *ConfigBuilder) WithPollInterval(d time.Duration) *ConfigBuilder
- func (b *ConfigBuilder) WithQueryTimeout(d time.Duration) *ConfigBuilder
- func (b *ConfigBuilder) WithQuorum(num, denom uint64) *ConfigBuilder
- func (b *ConfigBuilder) WithThreshold(threshold int) *ConfigBuilder
- type CoreParams
- type CoronaConfig
- type CoronaCoordinator
- func (rc *CoronaCoordinator) Initialize(validators []ids.NodeID) error
- func (rc *CoronaCoordinator) IsInitialized() bool
- func (rc *CoronaCoordinator) NumParties() int
- func (rc *CoronaCoordinator) Sign(msg []byte) (Signature, error)
- func (rc *CoronaCoordinator) Stats() CoronaStats
- func (rc *CoronaCoordinator) Threshold() int
- func (rc *CoronaCoordinator) Verify(msg []byte, sig Signature) bool
- type CoronaSignature
- type CoronaStats
- type CoronaWork
- type FinalityEvent
- type FinalityProof
- type GPUVerifyPipeline
- type MLDSAWork
- type NTTAccelerator
- func (g *NTTAccelerator) Backend() string
- func (g *NTTAccelerator) BatchNTTForward(r *ring.Ring, polys []ring.Poly) error
- func (g *NTTAccelerator) BatchNTTInverse(r *ring.Ring, polys []ring.Poly) error
- func (g *NTTAccelerator) ClearCache()
- func (g *NTTAccelerator) IsEnabled() bool
- func (g *NTTAccelerator) NTTForward(r *ring.Ring, poly ring.Poly) error
- func (g *NTTAccelerator) NTTInverse(r *ring.Ring, poly ring.Poly) error
- func (g *NTTAccelerator) PolyMul(r *ring.Ring, a, b, out ring.Poly) error
- func (g *NTTAccelerator) Stats() NTTStats
- type NTTOptions
- type NTTStats
- type PChainProvider
- type PipelineStats
- type QuantumFinality
- type QuantumSignerFallback
- type Quasar
- func (q *Quasar) CheckQuorum(signerWeight, totalWeight uint64) bool
- func (q *Quasar) ConnectCorona(rc *CoronaCoordinator)
- func (q *Quasar) ConnectPChain(p PChainProvider)
- func (q *Quasar) ConnectQuantumFallback(f QuantumSignerFallback)
- func (q *Quasar) CreateMessage(event FinalityEvent) []byte
- func (q *Quasar) GetConfig() (threshold int, quorumNum, quorumDen uint64)
- func (q *Quasar) GetCore() *quasar.Quasar
- func (q *Quasar) GetCorona() *CoronaCoordinator
- func (q *Quasar) GetFinality(blockID ids.ID) (*QuantumFinality, bool)
- func (q *Quasar) GetFinalized(blockID ids.ID) (*QuantumFinality, bool)
- func (q *Quasar) InitializeCorona(validators []ids.NodeID) error
- func (q *Quasar) IsRunning() bool
- func (q *Quasar) SetFinalized(blockID ids.ID, finality *QuantumFinality)
- func (q *Quasar) Start(ctx context.Context) error
- func (q *Quasar) Stats() QuasarStats
- func (q *Quasar) Stop()
- func (q *Quasar) Subscribe() <-chan *QuantumFinality
- func (q *Quasar) TotalWeight(validators []ValidatorState) uint64
- func (q *Quasar) Verify(finality *QuantumFinality) error
- type QuasarSignature
- type QuasarSigner
- type QuasarStats
- type QuorumParams
- type RuntimeConfig
- type Signature
- type SignatureType
- type Signer
- type ThresholdParams
- type ThresholdSigner
- type ValidatorInfo
- type ValidatorState
- type Verifier
- type ZKWork
Constants ¶
This section is empty.
Variables ¶
var ( ErrInvalidK = errors.New("K must be positive") ErrInvalidAlpha = errors.New("alpha must be in (0, 1]") ErrInvalidBeta = errors.New("beta must be positive and <= K") ErrInvalidThreshold = errors.New("threshold must be >= 2 and <= parties") ErrInvalidQuorum = errors.New("quorum numerator must be <= denominator") ErrInvalidTimeout = errors.New("timeout must be positive") ErrInvalidInterval = errors.New("polling interval must be positive") )
Configuration errors
var ( ErrBLSSizeMismatch = errors.New("BLS batch size mismatch: messages, signatures, and pubkeys must have equal length") ErrCoronaSizeMismatch = errors.New("Corona batch size mismatch: messages, signatures, and pubkeys must have equal length") ErrZKSizeMismatch = errors.New("ZK batch size mismatch: scalars and bases must have equal length") ErrMLDSASizeMismatch = errors.New("ML-DSA batch size mismatch: messages, signatures, and pubkeys must have equal length") )
var ( ErrQuasarNotStarted = errors.New("quasar not started") ErrPChainNotConnected = errors.New("P-Chain not connected") ErrQChainNotConnected = errors.New("Q-Chain not connected") ErrCoronaNotConnected = errors.New("Corona coordinator not connected") ErrInsufficientWeight = errors.New("insufficient validator weight") ErrInsufficientSigners = errors.New("insufficient Corona signers") ErrFinalityFailed = errors.New("hybrid finality verification failed") ErrBLSFailed = errors.New("BLS aggregation failed") ErrCoronaFailed = errors.New("Corona threshold signing failed") )
Functions ¶
This section is empty.
Types ¶
type BLSSignature ¶ added in v1.16.56
type BLSSignature struct {
// contains filtered or unexported fields
}
BLSSignature represents an aggregated BLS signature (node-specific)
func NewBLSSignature ¶ added in v1.16.56
func NewBLSSignature(sig []byte, signers []ids.NodeID) *BLSSignature
func (*BLSSignature) Bytes ¶ added in v1.16.56
func (s *BLSSignature) Bytes() []byte
func (*BLSSignature) Signers ¶ added in v1.16.56
func (s *BLSSignature) Signers() []ids.NodeID
func (*BLSSignature) Type ¶ added in v1.16.56
func (s *BLSSignature) Type() SignatureType
type BLSWork ¶ added in v1.24.12
type BLSWork struct {
Messages [][]byte // [N, msg_len]
Signatures [][]byte // [N, 96] G2 points
PubKeys [][]byte // [N, 48] G1 points
}
BLSWork holds a batch of BLS signatures to verify.
type BlockVerifyResult ¶ added in v1.24.12
type BlockVerifyResult struct {
BLSValid []bool
CoronaValid []bool
ZKValid bool
MLDSAValid []bool
GPUUsed bool
BLSTime time.Duration
CoronaTime time.Duration
ZKTime time.Duration
MLDSATime time.Duration
TotalTime time.Duration
}
BlockVerifyResult contains verification results for all batch types.
type BlockVerifyWork ¶ added in v1.24.12
type BlockVerifyWork struct {
BLS *BLSWork
Corona *CoronaWork
ZK *ZKWork
MLDSA *MLDSAWork
}
BlockVerifyWork contains all verification batches for a single block.
type Config ¶ added in v1.22.79
type Config struct {
Core CoreParams
Threshold ThresholdParams
Quorum QuorumParams
Runtime RuntimeConfig
}
Config is the complete Quasar consensus configuration. Use ConfigBuilder for fluent construction.
func DefaultConfig ¶ added in v1.22.79
func DefaultConfig() Config
DefaultConfig returns a production-ready configuration. Call DefaultConfig().WithNumParties(n) to set validator count.
type ConfigBuilder ¶ added in v1.22.79
type ConfigBuilder struct {
// contains filtered or unexported fields
}
ConfigBuilder enables fluent Config construction with validation.
func NewConfigBuilder ¶ added in v1.22.79
func NewConfigBuilder() *ConfigBuilder
NewConfigBuilder creates a builder starting from defaults.
func (*ConfigBuilder) Build ¶ added in v1.22.79
func (b *ConfigBuilder) Build() (Config, error)
Build validates and returns the configuration.
func (*ConfigBuilder) MustBuild ¶ added in v1.22.79
func (b *ConfigBuilder) MustBuild() Config
MustBuild validates and returns the configuration, panicking on error. Use only in tests or when configuration is known to be valid.
func (*ConfigBuilder) WithAlpha ¶ added in v1.22.79
func (b *ConfigBuilder) WithAlpha(alpha float64) *ConfigBuilder
WithAlpha sets the quorum fraction.
func (*ConfigBuilder) WithBeta ¶ added in v1.22.79
func (b *ConfigBuilder) WithBeta(virtuous, rogue int) *ConfigBuilder
WithBeta sets both BetaVirtuous and BetaRogue.
func (*ConfigBuilder) WithFinalityChannelSize ¶ added in v1.22.79
func (b *ConfigBuilder) WithFinalityChannelSize(size int) *ConfigBuilder
WithFinalityChannelSize sets the finality channel buffer size.
func (*ConfigBuilder) WithK ¶ added in v1.22.79
func (b *ConfigBuilder) WithK(k int) *ConfigBuilder
WithK sets the sample size.
func (*ConfigBuilder) WithNumParties ¶ added in v1.22.79
func (b *ConfigBuilder) WithNumParties(n int) *ConfigBuilder
WithNumParties sets the validator count and computes 2/3+1 threshold.
func (*ConfigBuilder) WithPollInterval ¶ added in v1.22.79
func (b *ConfigBuilder) WithPollInterval(d time.Duration) *ConfigBuilder
WithPollInterval sets the polling interval.
func (*ConfigBuilder) WithQueryTimeout ¶ added in v1.22.79
func (b *ConfigBuilder) WithQueryTimeout(d time.Duration) *ConfigBuilder
WithQueryTimeout sets the query timeout.
func (*ConfigBuilder) WithQuorum ¶ added in v1.22.79
func (b *ConfigBuilder) WithQuorum(num, denom uint64) *ConfigBuilder
WithQuorum sets the quorum fraction as numerator/denominator.
func (*ConfigBuilder) WithThreshold ¶ added in v1.22.79
func (b *ConfigBuilder) WithThreshold(threshold int) *ConfigBuilder
WithThreshold sets an explicit threshold (overrides default 2/3+1).
type CoreParams ¶ added in v1.22.79
type CoreParams struct {
// K is the sample size for each consensus query round.
// Typical values: 20-25 for production networks.
K int
// Alpha is the quorum threshold as a fraction of K.
// A response is accepted if >= ceil(K * Alpha) validators agree.
// Must be in (0.5, 1] for Byzantine fault tolerance.
// Typical value: 0.8 (80% of sample must agree).
Alpha float64
// BetaVirtuous is the number of consecutive successful polls
// required to finalize a virtuous (non-conflicting) decision.
// Higher values increase latency but improve consistency.
// Typical value: 15-20.
BetaVirtuous int
// BetaRogue is the number of consecutive successful polls
// required to finalize a rogue (conflicting) decision.
// Should be >= BetaVirtuous.
// Typical value: 20-25.
BetaRogue int
}
CoreParams defines the fundamental Lux consensus parameters. These are protocol-critical and must match across all validators.
func DefaultCoreParams ¶ added in v1.22.79
func DefaultCoreParams() CoreParams
DefaultCoreParams returns production-ready core parameters.
func (CoreParams) AlphaThreshold ¶ added in v1.22.79
func (p CoreParams) AlphaThreshold() int
AlphaThreshold returns the minimum agreements needed for quorum.
func (CoreParams) Validate ¶ added in v1.22.79
func (p CoreParams) Validate() error
Validate checks CoreParams invariants.
type CoronaConfig ¶ added in v1.26.19
CoronaConfig holds configuration for Corona threshold signatures
type CoronaCoordinator ¶ added in v1.26.19
type CoronaCoordinator struct {
// contains filtered or unexported fields
}
CoronaCoordinator manages the threshold signing protocol.
Sign/Verify are fail-closed without initialized lattice keys. Operations return errors unless properly initialized with key material, or explicitly created via NewTestCoronaCoordinator for tests.
func NewCoronaCoordinator ¶ added in v1.26.19
func NewCoronaCoordinator(log log.Logger, config CoronaConfig) (*CoronaCoordinator, error)
NewCoronaCoordinator creates a new Corona coordinator. Sign and Verify will fail until real lattice key material is loaded.
func NewTestCoronaCoordinator ¶ added in v1.26.19
func NewTestCoronaCoordinator(log log.Logger, config CoronaConfig) (*CoronaCoordinator, error)
NewTestCoronaCoordinator creates a Corona coordinator for testing. The test coordinator uses deterministic stub signatures that are NOT cryptographically secure.
func (*CoronaCoordinator) Initialize ¶ added in v1.26.19
func (rc *CoronaCoordinator) Initialize(validators []ids.NodeID) error
func (*CoronaCoordinator) IsInitialized ¶ added in v1.26.19
func (rc *CoronaCoordinator) IsInitialized() bool
func (*CoronaCoordinator) NumParties ¶ added in v1.26.19
func (rc *CoronaCoordinator) NumParties() int
NumParties returns the number of parties in the threshold scheme
func (*CoronaCoordinator) Sign ¶ added in v1.26.19
func (rc *CoronaCoordinator) Sign(msg []byte) (Signature, error)
func (*CoronaCoordinator) Stats ¶ added in v1.26.19
func (rc *CoronaCoordinator) Stats() CoronaStats
func (*CoronaCoordinator) Threshold ¶ added in v1.26.19
func (rc *CoronaCoordinator) Threshold() int
Threshold returns the threshold required for signing
type CoronaSignature ¶ added in v1.26.19
type CoronaSignature struct {
// contains filtered or unexported fields
}
CoronaSignature represents a threshold Corona signature
func NewCoronaSignature ¶ added in v1.26.19
func NewCoronaSignature(sig []byte, signers []ids.NodeID) *CoronaSignature
NewCoronaSignature creates a new Corona signature
func (*CoronaSignature) Bytes ¶ added in v1.26.19
func (s *CoronaSignature) Bytes() []byte
func (*CoronaSignature) Signers ¶ added in v1.26.19
func (s *CoronaSignature) Signers() []ids.NodeID
func (*CoronaSignature) Type ¶ added in v1.26.19
func (s *CoronaSignature) Type() SignatureType
type CoronaStats ¶ added in v1.26.19
CoronaStats contains statistics about the Corona coordinator
type CoronaWork ¶ added in v1.26.19
type CoronaWork struct {
Messages [][]byte // [N, msg_len]
Signatures [][]byte // [N, sig_len] threshold sigs
PubKeys [][]byte // [N, pk_len] ring public keys
}
CoronaWork holds a batch of Corona threshold signatures to verify.
type FinalityEvent ¶ added in v1.16.56
type FinalityEvent struct {
Height uint64
BlockID ids.ID
Validators []ValidatorState
Timestamp time.Time
}
FinalityEvent represents a P-Chain finality event
type FinalityProof ¶ added in v1.16.56
type FinalityProof struct {
BlockID ids.ID
Height uint64
Signature Signature
TotalWeight uint64
SignerWeight uint64
}
FinalityProof represents proof of block finality
type GPUVerifyPipeline ¶ added in v1.24.12
type GPUVerifyPipeline struct {
// contains filtered or unexported fields
}
GPUVerifyPipeline fuses multiple cryptographic verification operations into a single GPU session, sharing GPU memory across all verification types.
Instead of sequential: BLS verify -> Corona verify -> ZK verify -> ML-DSA verify GPU pipeline: one session, parallel streams, shared memory allocation
This is the ML-DSA rollup pattern:
- BLS aggregate signature (classical fast path)
- Corona threshold signature (PQ safe path)
- ZK rollup batch proof (state transition validity)
- N x ML-DSA signatures (per-tx PQ signatures)
All execute on GPU in parallel using separate compute streams within one session.
func NewGPUVerifyPipeline ¶ added in v1.24.12
func NewGPUVerifyPipeline() *GPUVerifyPipeline
NewGPUVerifyPipeline creates a new fused GPU verification pipeline.
func (*GPUVerifyPipeline) Stats ¶ added in v1.24.12
func (p *GPUVerifyPipeline) Stats() PipelineStats
Stats returns pipeline statistics.
func (*GPUVerifyPipeline) VerifyBlock ¶ added in v1.24.12
func (p *GPUVerifyPipeline) VerifyBlock(work *BlockVerifyWork) (*BlockVerifyResult, error)
VerifyBlock dispatches all verification work for a block through the GPU pipeline. Falls back to CPU verification when no GPU is available.
type MLDSAWork ¶ added in v1.24.12
type MLDSAWork struct {
Messages [][]byte // [N, msg_len]
Signatures [][]byte // [N, 3293] Dilithium3
PubKeys [][]byte // [N, 1952] Dilithium3
}
MLDSAWork holds a batch of ML-DSA (Dilithium) signatures to verify.
type NTTAccelerator ¶ added in v1.22.84
type NTTAccelerator struct {
// contains filtered or unexported fields
}
NTTAccelerator provides GPU-accelerated NTT operations for Corona. It uses the unified lux/accel package for Metal/CUDA/CPU backends.
func GetNTTAccelerator ¶ added in v1.22.84
func GetNTTAccelerator() (*NTTAccelerator, error)
GetNTTAccelerator returns the global NTT accelerator instance. The accelerator is lazily initialized on first call.
func NewNTTAccelerator ¶ added in v1.22.84
func NewNTTAccelerator() (*NTTAccelerator, error)
NewNTTAccelerator creates a new NTT accelerator with GPU support. It auto-detects available GPU backends (Metal on macOS, CUDA on Linux).
func NewNTTAcceleratorWithOptions ¶ added in v1.22.84
func NewNTTAcceleratorWithOptions(opts NTTOptions) (*NTTAccelerator, error)
NewNTTAcceleratorWithOptions creates a new NTT accelerator with custom options. If options are zero-valued, it uses the global GPU config.
func (*NTTAccelerator) Backend ¶ added in v1.22.84
func (g *NTTAccelerator) Backend() string
Backend returns the name of the active GPU backend.
func (*NTTAccelerator) BatchNTTForward ¶ added in v1.22.84
BatchNTTForward performs forward NTT on multiple polynomials in parallel. This is the primary use case for GPU acceleration - batch operations.
func (*NTTAccelerator) BatchNTTInverse ¶ added in v1.22.84
BatchNTTInverse performs inverse NTT on multiple polynomials in parallel.
func (*NTTAccelerator) ClearCache ¶ added in v1.22.84
func (g *NTTAccelerator) ClearCache()
ClearCache is a no-op in the accel-based implementation. The accel library manages its own caching internally.
func (*NTTAccelerator) IsEnabled ¶ added in v1.22.84
func (g *NTTAccelerator) IsEnabled() bool
IsEnabled returns whether GPU acceleration is available.
func (*NTTAccelerator) NTTForward ¶ added in v1.22.84
NTTForward performs forward NTT on a polynomial using GPU acceleration. Falls back to CPU if GPU is not available.
func (*NTTAccelerator) NTTInverse ¶ added in v1.22.84
NTTInverse performs inverse NTT on a polynomial using GPU acceleration. Falls back to CPU if GPU is not available.
func (*NTTAccelerator) PolyMul ¶ added in v1.22.84
PolyMul performs polynomial multiplication using GPU-accelerated NTT. This multiplies polynomials a and b, storing result in out.
func (*NTTAccelerator) Stats ¶ added in v1.22.84
func (g *NTTAccelerator) Stats() NTTStats
Stats returns current NTT accelerator statistics.
type NTTOptions ¶ added in v1.22.84
type NTTOptions struct {
// Enabled controls whether GPU acceleration is used
Enabled bool
// Backend specifies which GPU backend to use: "auto", "metal", "cuda", "cpu"
Backend string
// DeviceIndex specifies which GPU device to use
DeviceIndex int
}
NTTOptions holds options for creating an NTT accelerator.
type PChainProvider ¶ added in v1.16.56
type PChainProvider interface {
GetFinalizedHeight() uint64
GetValidators(height uint64) ([]ValidatorState, error)
SubscribeFinality() <-chan FinalityEvent
}
PChainProvider provides P-Chain state and finality events
type PipelineStats ¶ added in v1.24.12
type PipelineStats struct {
GPUVerifies uint64
CPUVerifies uint64
GPUTimeNs uint64
CPUTimeNs uint64
}
PipelineStats contains pipeline verification statistics.
type QuantumFinality ¶ added in v1.16.56
type QuantumFinality struct {
BlockID ids.ID
PChainHeight uint64
QChainHeight uint64
BLSProof []byte // Aggregated BLS signature (96 bytes)
CoronaProof []byte // Serialized Corona threshold signature
SignerBitset []byte // Which validators signed BLS
CoronaSigners []ids.NodeID // Which validators participated in Corona
TotalWeight uint64
SignerWeight uint64
BLSLatency time.Duration
CoronaLatency time.Duration
Timestamp time.Time
}
QuantumFinality represents a block that achieved hybrid quantum finality
type QuantumSignerFallback ¶ added in v1.16.56
QuantumSignerFallback provides fallback single-signer quantum signatures
type Quasar ¶ added in v1.16.56
type Quasar struct {
// contains filtered or unexported fields
}
Quasar binds P-Chain and Q-Chain consensus into hybrid quantum finality
func (*Quasar) CheckQuorum ¶ added in v1.16.56
CheckQuorum verifies quorum is met (exported for testing)
func (*Quasar) ConnectCorona ¶ added in v1.26.19
func (q *Quasar) ConnectCorona(rc *CoronaCoordinator)
ConnectCorona connects the Corona threshold coordinator
func (*Quasar) ConnectPChain ¶ added in v1.16.56
func (q *Quasar) ConnectPChain(p PChainProvider)
ConnectPChain connects the P-Chain finality provider
func (*Quasar) ConnectQuantumFallback ¶ added in v1.16.56
func (q *Quasar) ConnectQuantumFallback(f QuantumSignerFallback)
ConnectQuantumFallback connects the quantum signer fallback
func (*Quasar) CreateMessage ¶ added in v1.16.56
func (q *Quasar) CreateMessage(event FinalityEvent) []byte
CreateMessage creates the finality message to sign (exported for testing)
func (*Quasar) GetConfig ¶ added in v1.16.56
GetConfig returns quorum configuration (exported for testing)
func (*Quasar) GetCorona ¶ added in v1.26.19
func (q *Quasar) GetCorona() *CoronaCoordinator
GetCorona returns the Corona coordinator
func (*Quasar) GetFinality ¶ added in v1.16.56
func (q *Quasar) GetFinality(blockID ids.ID) (*QuantumFinality, bool)
GetFinality returns finality for a block
func (*Quasar) GetFinalized ¶ added in v1.16.56
func (q *Quasar) GetFinalized(blockID ids.ID) (*QuantumFinality, bool)
GetFinalized retrieves a finality record (exported for testing)
func (*Quasar) InitializeCorona ¶ added in v1.26.19
InitializeCorona initializes the Corona coordinator with validators
func (*Quasar) IsRunning ¶ added in v1.16.56
IsRunning returns whether the Quasar is currently running (exported for testing)
func (*Quasar) SetFinalized ¶ added in v1.16.56
func (q *Quasar) SetFinalized(blockID ids.ID, finality *QuantumFinality)
SetFinalized adds a finality record (exported for testing/benchmarking)
func (*Quasar) Stats ¶ added in v1.16.56
func (q *Quasar) Stats() QuasarStats
Stats returns quasar statistics
func (*Quasar) Subscribe ¶ added in v1.16.56
func (q *Quasar) Subscribe() <-chan *QuantumFinality
Subscribe returns channel for finality events
func (*Quasar) TotalWeight ¶ added in v1.16.56
func (q *Quasar) TotalWeight(validators []ValidatorState) uint64
TotalWeight calculates total validator weight (exported for testing)
func (*Quasar) Verify ¶ added in v1.16.56
func (q *Quasar) Verify(finality *QuantumFinality) error
Verify verifies a hybrid finality proof. Both BLS and Corona proofs are REQUIRED - no fallback mode. This ensures quantum-safe consensus for Q-Chain validators.
type QuasarSignature ¶ added in v1.22.80
type QuasarSignature struct {
// contains filtered or unexported fields
}
QuasarSignature combines BLS and Corona signatures for P/Q security
func NewQuasarSignature ¶ added in v1.22.80
func NewQuasarSignature(bls *BLSSignature, corona *CoronaSignature) *QuasarSignature
func (*QuasarSignature) BLS ¶ added in v1.22.80
func (s *QuasarSignature) BLS() *BLSSignature
func (*QuasarSignature) Bytes ¶ added in v1.22.80
func (s *QuasarSignature) Bytes() []byte
func (*QuasarSignature) Corona ¶ added in v1.26.19
func (s *QuasarSignature) Corona() *CoronaSignature
func (*QuasarSignature) Signers ¶ added in v1.22.80
func (s *QuasarSignature) Signers() []ids.NodeID
func (*QuasarSignature) Type ¶ added in v1.22.80
func (s *QuasarSignature) Type() SignatureType
type QuasarSigner ¶ added in v1.22.80
type QuasarSigner interface {
Signer
// SignQuasar signs with both BLS and Corona in parallel
SignQuasar(msg []byte) (*QuasarSignature, error)
// VerifyQuasar verifies both BLS and Corona signatures
VerifyQuasar(msg []byte, sig *QuasarSignature) bool
}
QuasarSigner combines classical and post-quantum signers
type QuasarStats ¶ added in v1.16.56
type QuasarStats struct {
PChainHeight uint64
QChainHeight uint64
FinalizedBlocks int
Threshold int
QuorumNum uint64
QuorumDen uint64
Running bool
CoronaParties int
CoronaThreshold int
CoronaReady bool
}
QuasarStats contains quasar statistics
type QuorumParams ¶ added in v1.22.79
type QuorumParams struct {
// Numerator and Denominator define the minimum weight fraction.
// Quorum is met when SignerWeight/TotalWeight >= Numerator/Denominator.
// For BFT: typically 2/3 (Numerator=2, Denominator=3).
Numerator uint64
Denominator uint64
}
QuorumParams defines weight-based quorum requirements.
func DefaultQuorumParams ¶ added in v1.22.79
func DefaultQuorumParams() QuorumParams
DefaultQuorumParams returns 2/3 quorum (67% of weight required).
func (QuorumParams) IsMet ¶ added in v1.22.79
func (p QuorumParams) IsMet(signerWeight, totalWeight uint64) bool
IsMet returns true if signerWeight meets quorum given totalWeight.
func (QuorumParams) RequiredWeight ¶ added in v1.22.79
func (p QuorumParams) RequiredWeight(totalWeight uint64) uint64
RequiredWeight returns minimum weight needed for quorum given totalWeight.
func (QuorumParams) Validate ¶ added in v1.22.79
func (p QuorumParams) Validate() error
Validate checks QuorumParams invariants.
type RuntimeConfig ¶ added in v1.22.79
type RuntimeConfig struct {
// PollInterval is the delay between consensus query rounds.
// Lower values decrease latency but increase network load.
// Typical value: 100-500ms.
PollInterval time.Duration
// QueryTimeout is the maximum time to wait for query responses.
// Must be > PollInterval.
// Typical value: 2-5s.
QueryTimeout time.Duration
// FinalityChannelSize is the buffer size for the finality event channel.
FinalityChannelSize int
// MaxConcurrentQueries limits parallel outstanding queries.
// 0 means unlimited.
MaxConcurrentQueries int
}
RuntimeConfig holds tunable runtime parameters. These affect performance and liveness but not consensus safety.
func DefaultRuntimeConfig ¶ added in v1.22.79
func DefaultRuntimeConfig() RuntimeConfig
DefaultRuntimeConfig returns production-ready runtime configuration.
func (RuntimeConfig) Validate ¶ added in v1.22.79
func (c RuntimeConfig) Validate() error
Validate checks RuntimeConfig invariants.
type Signature ¶ added in v1.16.56
type Signature interface {
Bytes() []byte
Type() SignatureType
Signers() []ids.NodeID
}
Signature is the interface for all signature types
type SignatureType ¶ added in v1.16.56
type SignatureType uint8
SignatureType identifies the signature algorithm used
const ( SignatureTypeBLS SignatureType = iota SignatureTypeCorona SignatureTypeQuasar // Hybrid BLS + Corona SignatureTypeMLDSA )
type ThresholdParams ¶ added in v1.22.79
type ThresholdParams struct {
// NumParties is the total number of signing parties (validators).
// Must be >= 3 for threshold signatures.
NumParties int
// Threshold is the minimum signers required (t in t-of-n).
// For BFT: typically 2/3 + 1.
// Must be >= 2 and <= NumParties.
Threshold int
}
ThresholdParams defines t-of-n threshold signature configuration.
func DefaultThresholdParams ¶ added in v1.22.79
func DefaultThresholdParams(numParties int) ThresholdParams
DefaultThresholdParams returns 2/3+1 threshold for n parties.
func (ThresholdParams) Validate ¶ added in v1.22.79
func (p ThresholdParams) Validate() error
Validate checks ThresholdParams invariants.
type ThresholdSigner ¶ added in v1.16.56
ThresholdSigner extends Signer for threshold signature schemes
type ValidatorInfo ¶ added in v1.16.56
ValidatorInfo contains validator information for consensus
type ValidatorState ¶ added in v1.16.56
type ValidatorState struct {
NodeID ids.NodeID
Weight uint64
BLSPubKey []byte // BLS public key for aggregate signatures
CoronaKey []byte // Corona public key share for threshold sigs
Active bool
}
ValidatorState represents a validator's current state Each validator has BOTH BLS and Corona keys