validators

package
v1.22.41 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: 12 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrUnknownValidator = errors.New("unknown validator")
	ErrWeightOverflow   = errors.New("weight overflowed")
)

Functions

func AggregatePublicKeys added in v1.21.3

func AggregatePublicKeys(vdrs []*CanonicalValidator) (*bls.PublicKey, error)

AggregatePublicKeys returns the public key of the provided validators.

Invariant: All of the public keys in [vdrs] are valid.

func NewManager

func NewManager() *manager

NewManager creates a new validator manager

func SumWeight added in v1.21.3

func SumWeight(vdrs []*CanonicalValidator) (uint64, error)

SumWeight returns the total weight of the provided validators.

Types

type CanonicalValidator added in v1.21.3

type CanonicalValidator struct {
	PublicKey      *bls.PublicKey
	PublicKeyBytes []byte // Uncompressed bytes for canonical ordering
	Weight         uint64
	NodeIDs        []ids.NodeID // Can have multiple NodeIDs with same public key
}

CanonicalValidator represents a single validator with BLS public key in canonical form

func FilterValidators added in v1.21.3

func FilterValidators(
	indices set.Bits,
	vdrs []*CanonicalValidator,
) ([]*CanonicalValidator, error)

FilterValidators returns the validators in [vdrs] whose bit is set to 1 in [indices].

Returns an error if [indices] references an unknown validator.

func (*CanonicalValidator) Compare added in v1.21.3

func (v *CanonicalValidator) Compare(o *CanonicalValidator) int

Compare implements utils.Sortable for canonical ordering

type CanonicalValidatorSet added in v1.21.3

type CanonicalValidatorSet struct {
	// Validators slice in canonical ordering of the validators that has public key
	Validators []*CanonicalValidator
	// The total weight of all the validators, including the ones that doesn't have a public key
	TotalWeight uint64
}

CanonicalValidatorSet represents a validator set in canonical ordering

func FlattenValidatorSet added in v1.21.3

func FlattenValidatorSet(vdrSet map[ids.NodeID]*GetValidatorOutput) (CanonicalValidatorSet, error)

FlattenValidatorSet converts the provided [vdrSet] into a canonical ordering. Also returns the total weight of the validator set.

type Connector

type Connector interface {
	Connected(ctx context.Context, nodeID ids.NodeID, nodeVersion *version.Application) error
	Disconnected(ctx context.Context, nodeID ids.NodeID) error
}

Connector handles validator connections

type GetValidatorOutput

type GetValidatorOutput struct {
	NodeID         ids.NodeID
	PublicKey      []byte // BLS public key (classical)
	RingtailPubKey []byte // Ringtail public key (post-quantum)
	Light          uint64
	Weight         uint64 // Alias for Light for backward compatibility
	TxID           ids.ID // Transaction ID that added this validator
}

GetValidatorOutput provides validator information

type Manager

type Manager interface {
	GetValidators(netID ids.ID) (Set, error)
	GetValidator(netID ids.ID, nodeID ids.NodeID) (*GetValidatorOutput, bool)
	GetLight(netID ids.ID, nodeID ids.NodeID) uint64
	GetWeight(netID ids.ID, nodeID ids.NodeID) uint64 // Deprecated: use GetLight
	TotalLight(netID ids.ID) (uint64, error)
	TotalWeight(netID ids.ID) (uint64, error) // Deprecated: use TotalLight

	// Mutable operations
	AddStaker(netID ids.ID, nodeID ids.NodeID, publicKey []byte, txID ids.ID, light uint64) error
	AddWeight(netID ids.ID, nodeID ids.NodeID, light uint64) error
	RemoveWeight(netID ids.ID, nodeID ids.NodeID, light uint64) error
	NumNets() int

	// Additional utility methods
	Count(netID ids.ID) int
	NumValidators(netID ids.ID) int // Alias for Count
	Sample(netID ids.ID, size int) ([]ids.NodeID, error)
	GetValidatorIDs(netID ids.ID) []ids.NodeID
	SubsetWeight(netID ids.ID, nodeIDs set.Set[ids.NodeID]) (uint64, error)
	GetMap(netID ids.ID) map[ids.NodeID]*GetValidatorOutput
	RegisterCallbackListener(listener ManagerCallbackListener)
	RegisterSetCallbackListener(netID ids.ID, listener SetCallbackListener)
}

Manager manages validator sets

type ManagerCallbackListener

type ManagerCallbackListener interface {
	OnValidatorAdded(netID ids.ID, nodeID ids.NodeID, light uint64)
	OnValidatorRemoved(netID ids.ID, nodeID ids.NodeID, light uint64)
	OnValidatorLightChanged(netID ids.ID, nodeID ids.NodeID, oldLight, newLight uint64)
}

ManagerCallbackListener listens to manager changes

type Set

type Set interface {
	Has(ids.NodeID) bool
	Len() int
	List() []Validator
	Light() uint64
	Sample(size int) ([]ids.NodeID, error)
}

Set represents a set of validators

type SetCallbackListener

type SetCallbackListener interface {
	OnValidatorAdded(nodeID ids.NodeID, light uint64)
	OnValidatorRemoved(nodeID ids.NodeID, light uint64)
	OnValidatorLightChanged(nodeID ids.NodeID, oldLight, newLight uint64)
}

SetCallbackListener listens to validator set changes

type Sortable added in v1.22.26

type Sortable[T any] interface {
	Compare(T) int
}

Sortable is a type that can be compared to another element of the same type.

type State

type State interface {
	GetValidatorSet(ctx context.Context, height uint64, netID ids.ID) (map[ids.NodeID]*GetValidatorOutput, error)
	GetCurrentValidators(ctx context.Context, height uint64, netID ids.ID) (map[ids.NodeID]*GetValidatorOutput, error)
	GetCurrentHeight(ctx context.Context) (uint64, error)

	// GetWarpValidatorSets returns Warp validator sets for the requested heights and netIDs.
	// Returns a map of netID -> height -> WarpSet containing BLS-enabled validators.
	GetWarpValidatorSets(ctx context.Context, heights []uint64, netIDs []ids.ID) (map[ids.ID]map[uint64]*WarpSet, error)

	// GetWarpValidatorSet returns the Warp validator set for a specific height and netID.
	// Returns a WarpSet containing validators with BLS public keys for Warp signing.
	GetWarpValidatorSet(ctx context.Context, height uint64, netID ids.ID) (*WarpSet, error)
}

State provides validator state management

type Validator

type Validator interface {
	ID() ids.NodeID
	Light() uint64
}

Validator represents a validator

type ValidatorImpl

type ValidatorImpl struct {
	NodeID   ids.NodeID
	LightVal uint64
}

ValidatorImpl is a concrete implementation of Validator

func (*ValidatorImpl) ID

func (v *ValidatorImpl) ID() ids.NodeID

ID returns the node ID

func (*ValidatorImpl) Light

func (v *ValidatorImpl) Light() uint64

Light returns the validator light

type WarpSet added in v1.21.3

type WarpSet struct {
	Height     uint64
	Validators map[ids.NodeID]*WarpValidator
}

WarpSet represents a set of Warp validators at a specific height

type WarpValidator added in v1.21.3

type WarpValidator struct {
	NodeID         ids.NodeID
	PublicKey      []byte // BLS public key for Warp signing (classical)
	RingtailPubKey []byte // Ringtail public key (post-quantum)
	Weight         uint64
}

WarpValidator represents a Warp validator with BLS and Ringtail keys

Directories

Path Synopsis
Package uptime provides uptime calculation functionality
Package uptime provides uptime calculation functionality
uptimemock
Package uptimemock provides mock implementations for uptime tracking
Package uptimemock provides mock implementations for uptime tracking
Package validatorsmock is a generated GoMock package.
Package validatorsmock is a generated GoMock package.

Jump to

Keyboard shortcuts

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