Documentation ¶
Index ¶
- type Core
- type Engine
- func (e *Engine) BroadcastProposal(header *flow.Header) error
- func (e *Engine) BroadcastProposalWithDelay(header *flow.Header, delay time.Duration) error
- func (e *Engine) Done() <-chan struct{}
- func (e *Engine) OnFinalizedBlock(block *model.Block)
- func (e *Engine) Process(channel channels.Channel, originID flow.Identifier, event interface{}) error
- func (e *Engine) ProcessLocal(event interface{}) error
- func (e *Engine) Ready() <-chan struct{}
- func (e *Engine) SendVote(blockID flow.Identifier, view uint64, sigData []byte, ...) error
- func (e *Engine) Submit(channel channels.Channel, originID flow.Identifier, event interface{})
- func (e *Engine) SubmitLocal(event interface{})
- func (e *Engine) WithConsensus(hot module.HotStuff) *Engine
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Core ¶ added in v0.15.0
type Core struct {
// contains filtered or unexported fields
}
Core contains the central business logic for the main consensus' compliance engine. It is responsible for handling communication for the embedded consensus algorithm. NOTE: Core is designed to be non-thread safe and cannot be used in concurrent environment user of this object needs to ensure single thread access.
func NewCore ¶ added in v0.15.0
func NewCore( log zerolog.Logger, collector module.EngineMetrics, tracer module.Tracer, mempool module.MempoolMetrics, complianceMetrics module.ComplianceMetrics, cleaner storage.Cleaner, headers storage.Headers, payloads storage.Payloads, state protocol.MutableState, pending module.PendingBlockBuffer, sync module.BlockRequester, voteAggregator hotstuff.VoteAggregator, opts ...compliance.Opt, ) (*Core, error)
NewCore instantiates the business logic for the main consensus' compliance engine.
func (*Core) OnBlockProposal ¶ added in v0.15.0
func (c *Core) OnBlockProposal(originID flow.Identifier, proposal *messages.BlockProposal, inBlockRangeResponse bool) error
OnBlockProposal handles incoming block proposals.
func (*Core) OnBlockVote ¶ added in v0.15.0
OnBlockVote handles incoming block votes.
func (*Core) ProcessFinalizedView ¶ added in v0.25.0
ProcessFinalizedView performs pruning of stale data based on finalization event removes pending blocks below the finalized view
type Engine ¶
type Engine struct {
// contains filtered or unexported fields
}
Engine is a wrapper struct for `Core` which implements consensus algorithm. Engine is responsible for handling incoming messages, queueing for processing, broadcasting proposals.
func (*Engine) BroadcastProposal ¶
BroadcastProposal will propagate a block proposal to all non-local consensus nodes. Note the header has incomplete fields, because it was converted from a hotstuff.
func (*Engine) BroadcastProposalWithDelay ¶
BroadcastProposalWithDelay will propagate a block proposal to all non-local consensus nodes. Note the header has incomplete fields, because it was converted from a hotstuff.
func (*Engine) Done ¶
func (e *Engine) Done() <-chan struct{}
Done returns a done channel that is closed once the engine has fully stopped. For the consensus engine, we wait for hotstuff to finish.
func (*Engine) OnFinalizedBlock ¶ added in v0.25.0
OnFinalizedBlock implements the `OnFinalizedBlock` callback from the `hotstuff.FinalizationConsumer` (1) Informs sealing.Core about finalization of 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) Process ¶
func (e *Engine) Process(channel channels.Channel, originID flow.Identifier, event interface{}) error
Process processes the given event from the node with the given origin ID in a blocking manner. It returns the potential processing error when done.
func (*Engine) ProcessLocal ¶
ProcessLocal processes an event originating on the local node.
func (*Engine) Ready ¶
func (e *Engine) Ready() <-chan struct{}
Ready returns a ready channel that is closed once the engine has fully started. For consensus engine, this is true once the underlying consensus algorithm has started.
func (*Engine) SendVote ¶
func (e *Engine) SendVote(blockID flow.Identifier, view uint64, sigData []byte, recipientID flow.Identifier) error
SendVote will send a vote to the desired node.
func (*Engine) Submit ¶
func (e *Engine) Submit(channel channels.Channel, originID flow.Identifier, event interface{})
Submit submits the given event from the node with the given origin ID for processing in a non-blocking manner. It returns instantly and logs a potential processing error internally when done.
func (*Engine) SubmitLocal ¶
func (e *Engine) SubmitLocal(event interface{})
SubmitLocal submits an event originating on the local node.