compliance

package
v0.35.9 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 22, 2024 License: AGPL-3.0 Imports: 26 Imported by: 1

Documentation

Index

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. 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 added in v0.15.0

func NewCore(
	log zerolog.Logger,
	collector module.EngineMetrics,
	mempool module.MempoolMetrics,
	hotstuffMetrics module.HotstuffMetrics,
	complianceMetrics module.ComplianceMetrics,
	proposalViolationNotifier hotstuff.ProposalViolationConsumer,
	tracer module.Tracer,
	headers storage.Headers,
	payloads storage.Payloads,
	state protocol.ParticipantState,
	pending module.PendingBlockBuffer,
	sync module.BlockRequester,
	validator hotstuff.Validator,
	hotstuff module.HotStuff,
	voteAggregator hotstuff.VoteAggregator,
	timeoutAggregator hotstuff.TimeoutAggregator,
	config compliance.Config,
) (*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(proposal flow.Slashable[*messages.BlockProposal]) error

OnBlockProposal handles incoming block proposals. No errors are expected during normal operation. All returned exceptions are potential symptoms of internal state corruption and should be fatal.

func (*Core) ProcessFinalizedBlock added in v0.29.0

func (c *Core) ProcessFinalizedBlock(finalized *flow.Header)

ProcessFinalizedBlock performs pruning of stale data based on finalization event removes pending blocks below the finalized view

type Engine

type Engine struct {
	component.Component
	hotstuff.FinalizationConsumer
	// contains filtered or unexported fields
}

Engine is a wrapper around `compliance.Core`. The Engine queues inbound messages, relevant node-internal notifications, and manages the worker routines processing the inbound events, and forwards outbound messages to the networking layer. `compliance.Core` implements the actual compliance logic. Implements consensus.Compliance interface.

func NewEngine added in v0.15.0

func NewEngine(
	log zerolog.Logger,
	me module.Local,
	core *Core,
) (*Engine, error)

func (*Engine) OnBlockProposal added in v0.29.0

func (e *Engine) OnBlockProposal(proposal flow.Slashable[*messages.BlockProposal])

OnBlockProposal feeds a new block proposal into the processing pipeline. Incoming proposals are queued and eventually dispatched by worker.

func (*Engine) OnSyncedBlocks added in v0.30.0

func (e *Engine) OnSyncedBlocks(blocks flow.Slashable[[]*messages.BlockProposal])

OnSyncedBlocks feeds a batch of blocks obtained via sync into the processing pipeline. Blocks in batch aren't required to be in any particular order. Incoming proposals are queued and eventually dispatched by worker.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL