quasar

package
v1.22.79 Latest Latest
Warning

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

Go to latest
Published: Jan 2, 2026 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 (
	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

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

func (Config) Validate added in v1.22.79

func (c Config) Validate() error

Validate checks all configuration invariants.

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

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

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