quasar

package
v1.22.76 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 31, 2025 License: BSD-3-Clause Imports: 17 Imported by: 0

Documentation

Overview

Package quasar provides GPU-accelerated NTT operations for Ringtail consensus. This bridges the lux/lattice/gpu package to enable 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 MLX (which handles Metal/CUDA/CPU fallback automatically).

Architecture:

luxcpp/lattice (C++ GPU)  →  lux/lattice/gpu (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

Constants

This section is empty.

Variables

View Source
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")
)
View Source
var (
	ErrRingtailNotInitialized = errors.New("ringtail not initialized")
	ErrRingtailRound1Failed   = errors.New("ringtail round 1 failed")
	ErrRingtailRound2Failed   = errors.New("ringtail round 2 failed")
	ErrRingtailVerifyFailed   = errors.New("ringtail signature verification failed")
	ErrRingtailMACFailed      = errors.New("ringtail MAC verification 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

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 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 GPUNTTAccelerator added in v1.22.76

type GPUNTTAccelerator struct {
	// contains filtered or unexported fields
}

GPUNTTAccelerator provides GPU-accelerated NTT operations for Ringtail. It wraps the lux/lattice/gpu package which uses MLX for Metal/CUDA/CPU backend.

func GetGPUAccelerator added in v1.22.76

func GetGPUAccelerator() (*GPUNTTAccelerator, error)

GetGPUAccelerator returns the global GPU NTT accelerator instance. The accelerator is lazily initialized on first call.

func NewGPUNTTAccelerator added in v1.22.76

func NewGPUNTTAccelerator() (*GPUNTTAccelerator, error)

NewGPUNTTAccelerator creates a new GPU NTT accelerator. It auto-detects available GPU backends (Metal on macOS, CUDA on Linux).

func (*GPUNTTAccelerator) Backend added in v1.22.76

func (g *GPUNTTAccelerator) Backend() string

Backend returns the name of the active GPU backend.

func (*GPUNTTAccelerator) BatchNTTForward added in v1.22.76

func (g *GPUNTTAccelerator) BatchNTTForward(r *ring.Ring, polys []ring.Poly) error

BatchNTTForward performs forward NTT on multiple polynomials in parallel. This is the primary use case for GPU acceleration - batch operations.

func (*GPUNTTAccelerator) BatchNTTInverse added in v1.22.76

func (g *GPUNTTAccelerator) BatchNTTInverse(r *ring.Ring, polys []ring.Poly) error

BatchNTTInverse performs inverse NTT on multiple polynomials in parallel.

func (*GPUNTTAccelerator) ClearCache added in v1.22.76

func (g *GPUNTTAccelerator) ClearCache()

ClearCache clears the GPU NTT context cache.

func (*GPUNTTAccelerator) IsEnabled added in v1.22.76

func (g *GPUNTTAccelerator) IsEnabled() bool

IsEnabled returns whether GPU acceleration is available.

func (*GPUNTTAccelerator) NTTForward added in v1.22.76

func (g *GPUNTTAccelerator) NTTForward(r *ring.Ring, poly ring.Poly) error

NTTForward performs forward NTT on a polynomial using GPU acceleration. Falls back to CPU if GPU is not available.

func (*GPUNTTAccelerator) NTTInverse added in v1.22.76

func (g *GPUNTTAccelerator) NTTInverse(r *ring.Ring, poly ring.Poly) error

NTTInverse performs inverse NTT on a polynomial using GPU acceleration. Falls back to CPU if GPU is not available.

func (*GPUNTTAccelerator) PolyMul added in v1.22.76

func (g *GPUNTTAccelerator) PolyMul(r *ring.Ring, a, b, out ring.Poly) error

PolyMul performs polynomial multiplication using GPU-accelerated NTT. This multiplies polynomials a and b, storing result in out.

func (*GPUNTTAccelerator) Stats added in v1.22.76

func (g *GPUNTTAccelerator) Stats() GPUNTTStats

Stats returns current GPU NTT accelerator statistics.

type GPUNTTStats added in v1.22.76

type GPUNTTStats struct {
	Enabled      bool
	Backend      string
	CachedModuli int
	GPUAvailable bool
}

Stats returns GPU accelerator statistics.

type HybridSignature added in v1.16.56

type HybridSignature struct {
	// contains filtered or unexported fields
}

HybridSignature combines BLS and Ringtail signatures for hybrid P/Q security

func NewHybridSignature added in v1.16.56

func NewHybridSignature(bls *BLSSignature, ringtail *RingtailSignature) *HybridSignature

func (*HybridSignature) BLS added in v1.16.56

func (s *HybridSignature) BLS() *BLSSignature

func (*HybridSignature) Bytes added in v1.16.56

func (s *HybridSignature) Bytes() []byte

func (*HybridSignature) Ringtail added in v1.16.56

func (s *HybridSignature) Ringtail() *RingtailSignature

func (*HybridSignature) Signers added in v1.16.56

func (s *HybridSignature) Signers() []ids.NodeID

func (*HybridSignature) Type added in v1.16.56

func (s *HybridSignature) Type() SignatureType

type HybridSigner added in v1.16.56

type HybridSigner interface {
	Signer
	// SignHybrid signs with both BLS and Ringtail in parallel
	SignHybrid(msg []byte) (*HybridSignature, error)
	// VerifyHybrid verifies both BLS and Ringtail signatures
	VerifyHybrid(msg []byte, sig *HybridSignature) bool
}

HybridSigner combines classical and post-quantum signers

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

type QuantumSignerFallback interface {
	SignMessage(msg []byte) ([]byte, error)
}

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 NewQuasar added in v1.16.56

func NewQuasar(log log.Logger, threshold int, quorumNum, quorumDen uint64) (*Quasar, error)

NewQuasar creates a new Quasar consensus hub

func (*Quasar) CheckQuorum added in v1.16.56

func (q *Quasar) CheckQuorum(signerWeight, totalWeight uint64) bool

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

func (q *Quasar) GetConfig() (threshold int, quorumNum, quorumDen uint64)

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) GetHybrid added in v1.16.56

func (q *Quasar) GetHybrid() *quasar.Hybrid

GetHybrid returns the underlying hybrid engine 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

func (q *Quasar) InitializeRingtail(validators []ids.NodeID) error

InitializeRingtail initializes the Ringtail coordinator with validators

func (*Quasar) IsRunning added in v1.16.56

func (q *Quasar) IsRunning() bool

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) Start added in v1.16.56

func (q *Quasar) Start(ctx context.Context) error

Start begins the quasar consensus loop

func (*Quasar) Stats added in v1.16.56

func (q *Quasar) Stats() QuasarStats

Stats returns quasar statistics

func (*Quasar) Stop added in v1.16.56

func (q *Quasar) Stop()

Stop halts the quasar

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

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 RingtailConfig added in v1.16.56

type RingtailConfig struct {
	NumParties int // Total number of parties (validators)
	Threshold  int // Minimum signers required (typically 2/3 + 1)
}

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 threshold coordinator

func (*RingtailCoordinator) Initialize added in v1.16.56

func (rc *RingtailCoordinator) Initialize(validators []ids.NodeID) error

Initialize sets up the threshold scheme with validators (implements ThresholdSigner)

func (*RingtailCoordinator) IsInitialized added in v1.16.56

func (rc *RingtailCoordinator) IsInitialized() bool

IsInitialized implements ThresholdSigner interface

func (*RingtailCoordinator) NumParties added in v1.16.56

func (rc *RingtailCoordinator) NumParties() int

NumParties implements ThresholdSigner interface

func (*RingtailCoordinator) Sign added in v1.16.56

func (rc *RingtailCoordinator) Sign(msg []byte) (Signature, error)

Sign implements Signer interface - returns a RingtailSignature

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 implements ThresholdSigner interface

func (*RingtailCoordinator) Type added in v1.16.56

Type implements Signer interface

func (*RingtailCoordinator) Verify added in v1.16.56

func (rc *RingtailCoordinator) Verify(msg []byte, sig Signature) bool

Verify verifies a RingtailSignature

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

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

type RingtailStats struct {
	NumParties    int
	Threshold     int
	SessionID     int
	Initialized   bool
	ActiveParties int
}

Stats returns coordinator statistics

type Signature added in v1.16.56

type Signature interface {
	// Bytes returns the raw signature bytes
	Bytes() []byte
	// Type returns the signature algorithm type
	Type() SignatureType
	// Signers returns the node IDs that contributed to this signature
	Signers() []ids.NodeID
}

Signature represents a cryptographic signature in the consensus layer

type SignatureType added in v1.16.56

type SignatureType uint8

SignatureType identifies the signature algorithm

const (
	SignatureTypeBLS SignatureType = iota
	SignatureTypeRingtail
	SignatureTypeHybrid
	SignatureTypeMLDSA
)

func (SignatureType) String added in v1.16.56

func (t SignatureType) String() string

type Signer added in v1.16.56

type Signer interface {
	// Sign signs a message and returns the signature
	Sign(msg []byte) (Signature, error)
	// Type returns the signer type
	Type() SignatureType
}

Signer is the interface for signing operations

type ThresholdSigner added in v1.16.56

type ThresholdSigner interface {
	Signer
	// Threshold returns the minimum signers required
	Threshold() int
	// NumParties returns the total number of parties
	NumParties() int
	// Initialize sets up the threshold scheme with validators
	Initialize(validators []ids.NodeID) error
	// IsInitialized returns whether the signer is ready
	IsInitialized() bool
}

ThresholdSigner extends Signer for threshold signature schemes

type ValidatorInfo added in v1.16.56

type ValidatorInfo struct {
	NodeID ids.NodeID
	Weight uint64
	Active bool
}

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

type Verifier added in v1.16.56

type Verifier interface {
	// Verify verifies a signature against a message
	Verify(msg []byte, sig Signature) bool
	// Type returns the verifier type
	Type() SignatureType
}

Verifier is the interface for signature verification

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL