Documentation ¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Hashable ¶
type Hashable interface { fmt.Stringer comparable Bytes() []byte }
A chain-agnostic generic interface to represent the following native types on various chains: PublicKey, Address, Account, BlockHash, TxHash
type Head ¶ added in v2.2.0
type Head[BLOCK_HASH Hashable] interface { // BlockNumber is the head's block number BlockNumber() int64 // ChainLength returns the length of the chain followed by recursively looking up parents ChainLength() uint32 // EarliestInChain traverses through parents until it finds the earliest one EarliestHeadInChain() Head[BLOCK_HASH] // Hash is the head's block hash BlockHash() BLOCK_HASH // Parent is the head's parent block GetParent() Head[BLOCK_HASH] // HashAtHeight returns the hash of the block at the given height, if it is in the chain. // If not in chain, returns the zero hash HashAtHeight(blockNum int64) BLOCK_HASH }
Head provides access to a chain's head, as needed by the TxManager. This is a generic interface which ALL chains will implement.
type HeadBroadcaster ¶ added in v2.3.0
type HeadBroadcaster[H Head[BLOCK_HASH], BLOCK_HASH Hashable] interface { services.ServiceCtx BroadcastNewLongestChain(H) HeadBroadcasterRegistry[H, BLOCK_HASH] }
type HeadBroadcasterRegistry ¶ added in v2.3.0
type HeadBroadcasterRegistry[H Head[BLOCK_HASH], BLOCK_HASH Hashable] interface { Subscribe(callback HeadTrackable[H, BLOCK_HASH]) (currentLongestChain H, unsubscribe func()) }
type HeadListener ¶ added in v2.3.0
type HeadListener[H Head[BLOCK_HASH], BLOCK_HASH Hashable] interface { // ListenForNewHeads kicks off the listen loop (not thread safe) // done() must be executed upon leaving ListenForNewHeads() ListenForNewHeads(handleNewHead NewHeadHandler[H, BLOCK_HASH], done func()) // ReceivingHeads returns true if the listener is receiving heads (thread safe) ReceivingHeads() bool // Connected returns true if the listener is connected (thread safe) Connected() bool // HealthReport returns report of errors within HeadListener HealthReport() map[string]error }
HeadListener is a chain agnostic interface that manages connection of Client that receives heads from the blockchain node
type HeadSaver ¶ added in v2.2.0
type HeadSaver[H Head[BLOCK_HASH], BLOCK_HASH Hashable] interface { // Save updates the latest block number, if indeed the latest, and persists // this number in case of reboot. Save(ctx context.Context, head H) error // Load loads latest EvmHeadTrackerHistoryDepth heads, returns the latest chain. Load(ctx context.Context) (H, error) // LatestChain returns the block header with the highest number that has been seen, or nil. LatestChain() H // Chain returns a head for the specified hash, or nil. Chain(hash BLOCK_HASH) H }
HeadSaver is an chain agnostic interface for saving and loading heads Different chains will instantiate generic HeadSaver type with their native Head and BlockHash types.
type HeadTrackable ¶ added in v2.3.0
type HeadTrackable[H Head[BLOCK_HASH], BLOCK_HASH Hashable] interface { OnNewLongestChain(ctx context.Context, head H) }
HeadTrackable is implemented by the core txm, to be able to receive head events from any chain. Chain implementations should notify head events to the core txm via this interface.
type NewHeadHandler ¶ added in v2.3.0
type NewHeadHandler[H Head[BLOCK_HASH], BLOCK_HASH Hashable] func(ctx context.Context, header H) error
NewHeadHandler is a callback that handles incoming heads
type Subscription ¶ added in v2.3.0
type Subscription interface { // Unsubscribe cancels the sending of events to the data channel // and closes the error channel. Unsubscribe() // Err returns the subscription error channel. The error channel receives // a value if there is an issue with the subscription (e.g. the network connection // delivering the events has been closed). Only one value will ever be sent. // The error channel is closed by Unsubscribe. Err() <-chan error }