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 (Ringtail post-quantum threshold) into unified hybrid finality across all Lux networks.
Architecture ¶
All validators maintain both keypairs:
- BLS keypair: Aggregate signatures (classical, fast)
- Ringtail keypair: Threshold signatures (post-quantum, 2-round)
Both signature paths run in parallel:
Block arrives
|
+-- BLS PATH ----------+-- RINGTAIL PATH --------+
| All validators | Round 1: commitments |
| sign with BLS | Round 2: partials |
| Aggregate (96B) | Combine threshold sig |
+----------------------+-------------------------+
|
HYBRID PROOF
BLS + Ringtail 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 Ringtail threshold signing
Signature Types ¶
The package defines several signature types:
- SignatureTypeBLS: Classical BLS signatures
- SignatureTypeRingtail: Post-quantum threshold
- SignatureTypeQuasar: Hybrid combining both
- SignatureTypeMLDSA: ML-DSA fallback
Components ¶
Quasar: Main consensus hub coordinating both signature paths.
RingtailCoordinator: Manages the 2-round threshold signing protocol for post-quantum security.
QuantumFinality: Represents a block that achieved hybrid finality with both BLS and Ringtail proofs.
Package quasar provides GPU-accelerated NTT operations for Ringtail consensus. This uses the unified lux/accel package for GPU acceleration of lattice operations in the Ringtail 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:
- Ringtail threshold signatures
- ML-DSA post-quantum signatures
- FHE operations (via luxcpp/fhe which reuses luxcpp/lattice)
Index ¶
- Variables
- type BLSSignature
- 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 FinalityEvent
- type FinalityProof
- 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 QuantumFinality
- type QuantumSignerFallback
- type Quasar
- func (q *Quasar) CheckQuorum(signerWeight, totalWeight uint64) bool
- func (q *Quasar) ConnectPChain(p PChainProvider)
- func (q *Quasar) ConnectQuantumFallback(f QuantumSignerFallback)
- func (q *Quasar) ConnectRingtail(rc *RingtailCoordinator)
- 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) GetFinality(blockID ids.ID) (*QuantumFinality, bool)
- func (q *Quasar) GetFinalized(blockID ids.ID) (*QuantumFinality, bool)
- func (q *Quasar) GetRingtail() *RingtailCoordinator
- func (q *Quasar) InitializeRingtail(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 RingtailConfig
- type RingtailCoordinator
- func (rc *RingtailCoordinator) Initialize(validators []ids.NodeID) error
- func (rc *RingtailCoordinator) IsInitialized() bool
- func (rc *RingtailCoordinator) NumParties() int
- func (rc *RingtailCoordinator) Sign(msg []byte) (Signature, error)
- func (rc *RingtailCoordinator) Stats() RingtailStats
- func (rc *RingtailCoordinator) Threshold() int
- func (rc *RingtailCoordinator) Verify(msg []byte, sig Signature) bool
- type RingtailSignature
- type RingtailStats
- type RuntimeConfig
- type Signature
- type SignatureType
- type Signer
- type ThresholdParams
- type ThresholdSigner
- type ValidatorInfo
- type ValidatorState
- type Verifier
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 ( ErrQuasarNotStarted = errors.New("quasar not started") ErrPChainNotConnected = errors.New("P-Chain not connected") ErrQChainNotConnected = errors.New("Q-Chain not connected") ErrRingtailNotConnected = errors.New("Ringtail coordinator not connected") ErrInsufficientWeight = errors.New("insufficient validator weight") ErrInsufficientSigners = errors.New("insufficient Ringtail signers") ErrFinalityFailed = errors.New("hybrid finality verification failed") ErrBLSFailed = errors.New("BLS aggregation failed") ErrRingtailFailed = errors.New("Ringtail 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 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 Snow 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 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 NTTAccelerator ¶ added in v1.22.84
type NTTAccelerator struct {
// contains filtered or unexported fields
}
NTTAccelerator provides GPU-accelerated NTT operations for Ringtail. 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 QuantumFinality ¶ added in v1.16.56
type QuantumFinality struct {
BlockID ids.ID
PChainHeight uint64
QChainHeight uint64
BLSProof []byte // Aggregated BLS signature (96 bytes)
RingtailProof []byte // Serialized Ringtail threshold signature
SignerBitset []byte // Which validators signed BLS
RingtailSigners []ids.NodeID // Which validators participated in Ringtail
TotalWeight uint64
SignerWeight uint64
BLSLatency time.Duration
RingtailLatency 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) 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) ConnectRingtail ¶ added in v1.16.56
func (q *Quasar) ConnectRingtail(rc *RingtailCoordinator)
ConnectRingtail connects the Ringtail threshold coordinator
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) 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) GetRingtail ¶ added in v1.16.56
func (q *Quasar) GetRingtail() *RingtailCoordinator
GetRingtail returns the Ringtail coordinator
func (*Quasar) InitializeRingtail ¶ added in v1.16.56
InitializeRingtail initializes the Ringtail 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 Ringtail 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 Ringtail signatures for P/Q security
func NewQuasarSignature ¶ added in v1.22.80
func NewQuasarSignature(bls *BLSSignature, ringtail *RingtailSignature) *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) Ringtail ¶ added in v1.22.80
func (s *QuasarSignature) Ringtail() *RingtailSignature
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 Ringtail in parallel
SignQuasar(msg []byte) (*QuasarSignature, error)
// VerifyQuasar verifies both BLS and Ringtail 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
RingtailParties int
RingtailThreshold int
RingtailReady 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 RingtailConfig ¶ added in v1.16.56
RingtailConfig holds configuration for Ringtail threshold signatures
type RingtailCoordinator ¶ added in v1.16.56
type RingtailCoordinator struct {
// contains filtered or unexported fields
}
RingtailCoordinator manages the threshold signing protocol
func NewRingtailCoordinator ¶ added in v1.16.56
func NewRingtailCoordinator(log log.Logger, config RingtailConfig) (*RingtailCoordinator, error)
NewRingtailCoordinator creates a new Ringtail coordinator
func (*RingtailCoordinator) Initialize ¶ added in v1.16.56
func (rc *RingtailCoordinator) Initialize(validators []ids.NodeID) error
func (*RingtailCoordinator) IsInitialized ¶ added in v1.16.56
func (rc *RingtailCoordinator) IsInitialized() bool
func (*RingtailCoordinator) NumParties ¶ added in v1.16.56
func (rc *RingtailCoordinator) NumParties() int
NumParties returns the number of parties in the threshold scheme
func (*RingtailCoordinator) Sign ¶ added in v1.16.56
func (rc *RingtailCoordinator) Sign(msg []byte) (Signature, error)
func (*RingtailCoordinator) Stats ¶ added in v1.16.56
func (rc *RingtailCoordinator) Stats() RingtailStats
func (*RingtailCoordinator) Threshold ¶ added in v1.16.56
func (rc *RingtailCoordinator) Threshold() int
Threshold returns the threshold required for signing
type RingtailSignature ¶ added in v1.16.56
type RingtailSignature struct {
// contains filtered or unexported fields
}
RingtailSignature represents a threshold Ringtail signature
func NewRingtailSignature ¶ added in v1.16.56
func NewRingtailSignature(sig []byte, signers []ids.NodeID) *RingtailSignature
NewRingtailSignature creates a new Ringtail signature
func (*RingtailSignature) Bytes ¶ added in v1.16.56
func (s *RingtailSignature) Bytes() []byte
func (*RingtailSignature) Signers ¶ added in v1.16.56
func (s *RingtailSignature) Signers() []ids.NodeID
func (*RingtailSignature) Type ¶ added in v1.16.56
func (s *RingtailSignature) Type() SignatureType
type RingtailStats ¶ added in v1.16.56
RingtailStats contains statistics about the Ringtail coordinator
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 SignatureTypeRingtail SignatureTypeQuasar // Hybrid BLS + Ringtail 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
RingtailKey []byte // Ringtail public key share for threshold sigs
Active bool
}
ValidatorState represents a validator's current state Each validator has BOTH BLS and Ringtail keys