Documentation ¶
Index ¶
- type Consensus
- type Factory
- type Parameters
- type TestVertex
- type Topological
- func (ta *Topological) Add(vtx Vertex) error
- func (ta *Topological) Finalized() bool
- func (ta *Topological) HealthCheck() (interface{}, error)
- func (ta *Topological) Initialize(ctx *snow.ConsensusContext, params Parameters, frontier []Vertex) error
- func (ta *Topological) IsVirtuous(tx snowstorm.Tx) bool
- func (ta *Topological) NumProcessing() int
- func (ta *Topological) Orphans() ids.Set
- func (ta *Topological) Parameters() Parameters
- func (ta *Topological) Preferences() ids.Set
- func (ta *Topological) Quiesce() bool
- func (ta *Topological) RecordPoll(responses ids.UniqueBag) error
- func (ta *Topological) TxIssued(tx snowstorm.Tx) bool
- func (ta *Topological) VertexIssued(vtx Vertex) bool
- func (ta *Topological) Virtuous() ids.Set
- type TopologicalFactory
- type Vertex
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.ConsensusContext, 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 is guaranteed to return true if the instance is finalized. It // may, but doesn't need to, return true if all processing vertices are // rogue. It must return false if there is a virtuous vertex that is still // processing. 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 WhitelistV ids.Set WhitelistIsV bool WhitelistErrV error HeightV uint64 HeightErrV 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) 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
type Topological ¶
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.ConsensusContext, 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
type Vertex ¶
type Vertex interface { choices.Decidable snowstorm.Whitelister // 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 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