Help us shape the future of Go! Take the 2026 Go Developer Survey

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