avalanche

package
v0.0.1 Latest Latest
Warning

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

Go to latest
Published: Nov 11, 2021 License: BSD-3-Clause Imports: 8 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Consensus

type Consensus interface {
	// Takes in alpha, beta1, beta2, the accepted frontier, the join statuses,
	// the mutation statuses, and the consumer statuses. If accept or reject is
	// called, the status maps should be immediately updated accordingly.
	// Assumes each element in the accepted frontier will return accepted from
	// the join status map.
	Initialize(*snow.Context, Parameters, []Vertex) error

	// Returns the parameters that describe this avalanche instance
	Parameters() Parameters

	// Returns the number of vertices processing
	NumProcessing() int

	// Returns true if the transaction is virtuous.
	// That is, no transaction has been added that conflicts with it
	IsVirtuous(snowstorm.Tx) bool

	// Adds a new decision. Assumes the dependencies have already been added.
	// Assumes that mutations don't conflict with themselves. Returns if a
	// critical error has occurred.
	Add(Vertex) error

	// VertexIssued returns true iff Vertex has been added
	VertexIssued(Vertex) bool

	// TxIssued returns true if a vertex containing this transanction has been added
	TxIssued(snowstorm.Tx) bool

	// Returns the set of transaction IDs that are virtuous but not contained in
	// any preferred vertices.
	Orphans() ids.Set

	// Returns a set of vertex IDs that were virtuous at the last update.
	Virtuous() ids.Set

	// Returns a set of vertex IDs that are preferred
	Preferences() ids.Set

	// RecordPoll collects the results of a network poll. If a result has not
	// been added, the result is dropped. Returns if a critical error has
	// occurred.
	RecordPoll(ids.UniqueBag) error

	// Quiesce returns true iff all vertices that have been added but not been accepted or rejected are rogue.
	// Note, it is possible that after returning quiesce, a new decision may be added such
	// that this instance should no longer quiesce.
	Quiesce() bool

	// Finalized returns true if all transactions that have been added have been
	// finalized. Note, it is possible that after returning finalized, a new
	// decision may be added such that this instance is no longer finalized.
	Finalized() bool

	// HealthCheck returns information about the consensus health.
	HealthCheck() (interface{}, error)
}

Consensus represents a general avalanche instance that can be used directly to process a series of partially ordered elements.

type Factory

type Factory interface {
	New() Consensus
}

Factory returns new instances of Consensus

type Parameters

type Parameters struct {
	snowball.Parameters
	Parents   int `json:"parents"`
	BatchSize int `json:"batchSize"`
}

Parameters the avalanche parameters include the snowball parameters and the optimal number of parents

func (Parameters) Valid

func (p Parameters) Valid() error

Valid returns nil if the parameters describe a valid initialization.

type TestVertex

type TestVertex struct {
	choices.TestDecidable

	ParentsV    []Vertex
	ParentsErrV error
	HeightV     uint64
	HeightErrV  error
	EpochV      uint32
	EpochErrV   error
	TxsV        []snowstorm.Tx
	TxsErrV     error
	BytesV      []byte
}

TestVertex is a useful test vertex

func (*TestVertex) Bytes

func (v *TestVertex) Bytes() []byte

Bytes implements the Vertex interface

func (*TestVertex) Epoch

func (v *TestVertex) Epoch() (uint32, error)

Epoch implements the Vertex interface

func (*TestVertex) Height

func (v *TestVertex) Height() (uint64, error)

Height implements the Vertex interface

func (*TestVertex) Parents

func (v *TestVertex) Parents() ([]Vertex, error)

Parents implements the Vertex interface

func (*TestVertex) Txs

func (v *TestVertex) Txs() ([]snowstorm.Tx, error)

Txs implements the Vertex interface

type Topological

type Topological struct {
	metrics.Metrics
	// contains filtered or unexported fields
}

Topological performs the avalanche algorithm by utilizing a topological sort of the voting results. Assumes that vertices are inserted in topological order.

func (*Topological) Add

func (ta *Topological) Add(vtx Vertex) error

Add implements the Avalanche interface

func (*Topological) Finalized

func (ta *Topological) Finalized() bool

Finalized implements the Avalanche interface

func (*Topological) HealthCheck

func (ta *Topological) HealthCheck() (interface{}, error)

HealthCheck returns information about the consensus health.

func (*Topological) Initialize

func (ta *Topological) Initialize(
	ctx *snow.Context,
	params Parameters,
	frontier []Vertex,
) error

Initialize implements the Avalanche interface

func (*Topological) IsVirtuous

func (ta *Topological) IsVirtuous(tx snowstorm.Tx) bool

IsVirtuous implements the Avalanche interface

func (*Topological) NumProcessing

func (ta *Topological) NumProcessing() int

NumProcessing implements the Avalanche interface

func (*Topological) Orphans

func (ta *Topological) Orphans() ids.Set

Orphans implements the Avalanche interface

func (*Topological) Parameters

func (ta *Topological) Parameters() Parameters

Parameters implements the Avalanche interface

func (*Topological) Preferences

func (ta *Topological) Preferences() ids.Set

Preferences implements the Avalanche interface

func (*Topological) Quiesce

func (ta *Topological) Quiesce() bool

Quiesce implements the Avalanche interface

func (*Topological) RecordPoll

func (ta *Topological) RecordPoll(responses ids.UniqueBag) error

RecordPoll implements the Avalanche interface

func (*Topological) TxIssued

func (ta *Topological) TxIssued(tx snowstorm.Tx) bool

TxIssued implements the Avalanche interface

func (*Topological) VertexIssued

func (ta *Topological) VertexIssued(vtx Vertex) bool

VertexIssued implements the Avalanche interface

func (*Topological) Virtuous

func (ta *Topological) Virtuous() ids.Set

Virtuous implements the Avalanche interface

type TopologicalFactory

type TopologicalFactory struct{}

TopologicalFactory implements Factory by returning a topological struct

func (TopologicalFactory) New

New implements Factory

type Vertex

type Vertex interface {
	choices.Decidable

	// Returns the vertices this vertex depends on
	Parents() ([]Vertex, error)

	// Returns the height of this vertex. A vertex's height is defined by one
	// greater than the maximum height of the parents.
	Height() (uint64, error)

	// Returns the epoch this vertex was issued in.
	Epoch() (uint32, error)

	// Returns a series of state transitions to be performed on acceptance
	Txs() ([]snowstorm.Tx, error)

	// Returns the binary representation of this vertex
	Bytes() []byte
}

Vertex is a collection of multiple transactions tied to other vertices

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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