nova

package
v1.14.2 Latest Latest
Warning

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

Go to latest
Published: Aug 2, 2025 License: BSD-3-Clause Imports: 6 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type BroadcastFinalizer

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

BroadcastFinalizer implements network-wide finality broadcasting (Previously part of Avalanche's finalization mechanism)

The broadcast finalizer creates "nova explosions" - when a vertex achieves local finality, it broadcasts this achievement across the network, creating a cascade of finality confirmations.

func NewBroadcastFinalizer

func NewBroadcastFinalizer(nodeID ids.NodeID, validators set.Set[ids.NodeID], params Parameters) *BroadcastFinalizer

NewBroadcastFinalizer creates a new broadcast finalizer

func (*BroadcastFinalizer) BroadcastFinality

func (b *BroadcastFinalizer) BroadcastFinality(ctx context.Context, vertexID ids.ID) error

BroadcastFinality broadcasts finality to network peers

func (*BroadcastFinalizer) GetFinalityStatus

func (b *BroadcastFinalizer) GetFinalityStatus(vertexID ids.ID) FinalityStatus

GetFinalityStatus returns finality status of a vertex

func (*BroadcastFinalizer) GetNovaFrontier

func (b *BroadcastFinalizer) GetNovaFrontier() set.Set[ids.ID]

GetNovaFrontier returns the current nova frontier

func (*BroadcastFinalizer) HealthCheck

func (b *BroadcastFinalizer) HealthCheck(ctx context.Context) (Health, error)

HealthCheck returns finalizer health

func (*BroadcastFinalizer) PruneFrontier

func (b *BroadcastFinalizer) PruneFrontier(before time.Time) int

PruneFrontier removes old vertices from the frontier

func (*BroadcastFinalizer) ReceiveFinality

func (b *BroadcastFinalizer) ReceiveFinality(ctx context.Context, vertexID ids.ID, nodeID ids.NodeID) error

ReceiveFinality processes finality announcement from peer

func (*BroadcastFinalizer) RecordFinalization

func (b *BroadcastFinalizer) RecordFinalization(ctx context.Context, vertexID ids.ID) error

RecordFinalization records local finalization of a vertex

func (*BroadcastFinalizer) RegisterVertex

func (b *BroadcastFinalizer) RegisterVertex(ctx context.Context, vertexID ids.ID, dependencies []ids.ID) error

RegisterVertex registers a vertex for finality tracking

type FinalityStatus

type FinalityStatus struct {
	VertexID        ids.ID
	LocalFinality   bool                // Locally finalized
	NetworkFinality bool                // Network-wide finality achieved
	NovaTime        time.Time           // When nova event occurred
	Confirmations   int                 // Number of peer confirmations
	Dependencies    []ids.ID            // Required dependencies
	Witnesses       set.Set[ids.NodeID] // Nodes that confirmed finality
}

FinalityStatus represents the finality state of a vertex

func (*FinalityStatus) IsNova

func (f *FinalityStatus) IsNova() bool

IsNova returns true if the vertex has achieved nova state

type Finalizer

type Finalizer interface {
	// RegisterVertex registers a vertex for finality tracking
	RegisterVertex(ctx context.Context, vertexID ids.ID, dependencies []ids.ID) error

	// RecordFinalization records local finalization of a vertex
	RecordFinalization(ctx context.Context, vertexID ids.ID) error

	// BroadcastFinality broadcasts finality to network peers
	BroadcastFinality(ctx context.Context, vertexID ids.ID) error

	// ReceiveFinality processes finality announcement from peer
	ReceiveFinality(ctx context.Context, vertexID ids.ID, nodeID ids.NodeID) error

	// GetFinalityStatus returns finality status of a vertex
	GetFinalityStatus(vertexID ids.ID) FinalityStatus

	// GetNovaFrontier returns the current nova frontier
	GetNovaFrontier() set.Set[ids.ID]

	// HealthCheck returns finalizer health
	HealthCheck(ctx context.Context) (Health, error)
}

Finalizer represents nova-based DAG finalization (Previously part of Avalanche consensus finalization)

Nova represents the bright explosion of finality - when consensus is achieved across the network, vertices experience a "nova" event that irreversibly commits them to the chain's history.

type Health

type Health struct {
	Healthy          bool
	NovaRate         float64 // Nova events per second
	PendingVertices  int     // Vertices awaiting nova
	LastNovaTime     time.Time
	NetworkCoherence float64 // Network-wide finality coherence
}

Health represents nova finalizer health

type NovaEvent

type NovaEvent struct {
	VertexID   ids.ID
	NovaTime   time.Time
	Witnesses  []ids.NodeID
	NovaHeight uint64 // Height at which nova occurred
	NovaScore  uint64 // Consensus score at nova
}

NovaEvent represents a finality explosion event

type NovaMetrics

type NovaMetrics struct {
	NovaEvents         uint64
	LocalFinalizations uint64
	BroadcastsSent     uint64
	BroadcastsRecvd    uint64
	AverageNovaTime    time.Duration // Time from local to network finality
}

NovaMetrics tracks nova finalization performance

type Parameters

type Parameters struct {
	QuorumThreshold  float64       // Fraction of validators needed for nova
	BroadcastTimeout time.Duration // Timeout for broadcast confirmations
	RetryInterval    time.Duration // Interval between broadcast retries
	MaxRetries       int           // Maximum broadcast retries
}

Parameters configures the broadcast finalizer

Jump to

Keyboard shortcuts

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