Documentation ¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Core ¶
type Core struct {
// contains filtered or unexported fields
}
Core contains the central business logic for the collector clusters' compliance engine. It is responsible for handling communication for the embedded consensus algorithm. CAUTION with CONCURRENCY:
- At the moment, compliance.Core _can not_ process blocks concurrently. Callers of `OnBlockProposal` need to ensure single-threaded access.
- The only exception is calls to `ProcessFinalizedView`, which is the only concurrency-safe method of compliance.Core
func NewCore ¶
func NewCore( log zerolog.Logger, collector module.EngineMetrics, mempool module.MempoolMetrics, hotstuffMetrics module.HotstuffMetrics, collectionMetrics module.CollectionMetrics, headers storage.Headers, state clusterkv.MutableState, pending module.PendingClusterBlockBuffer, sync module.BlockRequester, validator hotstuff.Validator, hotstuff module.HotStuff, voteAggregator hotstuff.VoteAggregator, timeoutAggregator hotstuff.TimeoutAggregator, opts ...compliance.Opt, ) (*Core, error)
NewCore instantiates the business logic for the collector clusters' compliance engine.
func (*Core) OnBlockProposal ¶
func (c *Core) OnBlockProposal(originID flow.Identifier, proposal *messages.ClusterBlockProposal) error
OnBlockProposal handles incoming block proposals. No errors are expected during normal operation.
func (*Core) ProcessFinalizedBlock ¶ added in v0.29.0
ProcessFinalizedBlock performs pruning of stale data based on finalization event removes pending blocks below the finalized view
type Engine ¶
type Engine struct { *component.ComponentManager // contains filtered or unexported fields }
Engine is a wrapper struct for `Core` which implements cluster consensus algorithm. Engine is responsible for handling incoming messages, queueing for processing, broadcasting proposals. Implements collection.Compliance interface.
func (*Engine) OnClusterBlockProposal ¶ added in v0.29.0
func (e *Engine) OnClusterBlockProposal(proposal flow.Slashable[*messages.ClusterBlockProposal])
OnClusterBlockProposal feeds a new block proposal into the processing pipeline. Incoming proposals are queued and eventually dispatched by worker.
func (*Engine) OnFinalizedBlock ¶ added in v0.25.0
OnFinalizedBlock implements the `OnFinalizedBlock` callback from the `hotstuff.FinalizationConsumer` It informs compliance.Core about finalization of the respective block.
CAUTION: the input to this callback is treated as trusted; precautions should be taken that messages from external nodes cannot be considered as inputs to this function
func (*Engine) OnSyncedClusterBlock ¶ added in v0.29.0
func (e *Engine) OnSyncedClusterBlock(syncedBlock flow.Slashable[*messages.ClusterBlockProposal])
OnSyncedClusterBlock feeds a block obtained from sync proposal into the processing pipeline. Incoming proposals are queued and eventually dispatched by worker.