Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
var NewEvents = event.CreateGroupConstructor(func() *Events { return &Events{ BlockAdded: event.New1[TipMetadata](), } })
NewEvents creates a new Events instance.
Functions ¶
This section is empty.
Types ¶
type Events ¶
type Events struct {
// BlockAdded gets triggered when a new block was added to the TipManager.
BlockAdded *event.Event1[TipMetadata]
// Group makes the Events linkable through the central Events dictionary.
event.Group[Events, *Events]
}
Events represents events happening in the TipManager.
type TipManager ¶
type TipManager interface {
// AddBlock adds a block to the TipManager.
AddBlock(block *blocks.Block) TipMetadata
// OnBlockAdded registers a callback that is triggered whenever a new Block was added to the TipManager.
OnBlockAdded(handler func(block TipMetadata)) (unsubscribe func())
// AddSeat adds a validator seat to the tracking of the TipManager.
AddSeat(seat account.SeatIndex)
// RemoveSeat removes a validator seat from the tracking of the TipManager.
RemoveSeat(seat account.SeatIndex)
// ValidationTips returns the validation tips of the TipManager (with an optional limit).
ValidationTips(optAmount ...int) []TipMetadata
// StrongTips returns the strong tips of the TipManager (with an optional limit).
StrongTips(optAmount ...int) []TipMetadata
// WeakTips returns the weak tips of the TipManager (with an optional limit).
WeakTips(optAmount ...int) []TipMetadata
// Evict evicts a block from the TipManager.
Evict(slot iotago.SlotIndex)
// Reset resets the component to a clean state as if it was created at the last commitment.
Reset()
// Interface embeds the required methods of the module.Module.
module.Module
}
TipManager is a component that maintains a perception of the unreferenced Blocks of the Tangle.
Blocks in the TipManager can be classified to belong to a TipPool which defines how the tip selection strategy will treat them:
- StrongTipPool: The block will be referenced via strong parents. - WeakTipPool: The block will be referenced via weak parents. - DroppedTipPool: The block will be ignored by the tip selection strategy.
The TipManager itself does not classify the blocks, but rather provides a framework to do so. Blocks initially start out with an UndefinedTipPool, which causes the block to be temporarily ignored by the tip selection strategy.
The unreferenced blocks of a TipPool form the actual Tips which are used by the tip selection strategy to construct new Blocks.
type TipMetadata ¶
type TipMetadata interface {
// ID returns the identifier of the block the TipMetadata belongs to.
ID() iotago.BlockID
// Block returns the block that the TipMetadata belongs to.
Block() *blocks.Block
// TipPool exposes a variable that stores the current TipPool of the block.
TipPool() reactive.Variable[TipPool]
// IsStrongTip returns a ReadableVariable that indicates if the block is a strong tip.
IsStrongTip() reactive.ReadableVariable[bool]
// IsWeakTip returns a ReadableVariable that indicates if the block is a weak tip.
IsWeakTip() reactive.ReadableVariable[bool]
// IsOrphaned returns a ReadableVariable that indicates if the block was orphaned.
IsOrphaned() reactive.ReadableVariable[bool]
// LivenessThresholdReached exposes an event that is triggered when the liveness threshold is reached.
LivenessThresholdReached() reactive.Event
// Evicted exposes an event that is triggered when the block is evicted.
Evicted() reactive.Event
String() string
}
TipMetadata allows to access the tip related metadata and events of a block in the TipManager.
type TipPool ¶
type TipPool uint8
TipPool represents a pool of blocks that are treated in a certain way by the tip selection strategy.
const ( // UndefinedTipPool is the zero value of TipPool. UndefinedTipPool TipPool = iota // StrongTipPool represents a pool of blocks that are supposed to be referenced through strong parents. StrongTipPool // WeakTipPool represents a pool of blocks that are supposed to be referenced through weak parents. WeakTipPool // DroppedTipPool represents a pool of blocks that are supposed to be ignored by the tip selection strategy. DroppedTipPool )