quasar

package
v1.22.61 Latest Latest
Warning

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

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

Documentation

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