Documentation
¶
Index ¶
- type Consensus
- type Factory
- type Parameters
- type TestVertex
- type Topological
- func (m *Topological) Accepted(id ids.ID)
- func (ta *Topological) Add(vtx Vertex) error
- func (ta *Topological) Finalized() bool
- func (ta *Topological) Initialize(ctx *snow.Context, params Parameters, frontier []Vertex) error
- func (ta *Topological) IsVirtuous(tx conflicts.Tx) (bool, error)
- func (m *Topological) Issued(id ids.ID)
- 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 (m *Topological) Rejected(id ids.ID)
- func (ta *Topological) TxIssued(tx conflicts.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.Context, Parameters, []Vertex) error
// Returns the parameters that describe this avalanche instance
Parameters() Parameters
// Returns true if the transaction is virtuous.
// That is, no transaction has been added that conflicts with it
IsVirtuous(conflicts.Tx) (bool, error)
// 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(conflicts.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
}
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, BatchSize int
}
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 ¶ added in v0.8.0
type TestVertex struct {
choices.TestDecidable
ParentsV []Vertex
ParentsErrV error
HeightV uint64
HeightErrV error
EpochV uint32
EpochErrV error
TxsV []conflicts.Tx
TxsErrV error
BytesV []byte
}
TestVertex is a useful test vertex
func (*TestVertex) Bytes ¶ added in v0.8.0
func (v *TestVertex) Bytes() []byte
Bytes implements the Vertex interface
func (*TestVertex) Epoch ¶ added in v1.0.6
func (v *TestVertex) Epoch() (uint32, error)
Epoch implements the Vertex interface
func (*TestVertex) Height ¶ added in v0.8.0
func (v *TestVertex) Height() (uint64, error)
Height implements the Vertex interface
func (*TestVertex) Parents ¶ added in v0.8.0
func (v *TestVertex) Parents() ([]Vertex, error)
Parents implements the Vertex interface
type Topological ¶
type Topological struct {
// 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) 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 conflicts.Tx) (bool, error)
IsVirtuous 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 conflicts.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
// 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() ([]conflicts.Tx, error)
// Returns the binary representation of this vertex
Bytes() []byte
}
Vertex is a collection of multiple transactions tied to other vertices