Documentation ¶
Index ¶
- func NewFollower(log zerolog.Logger, mempoolMetrics module.MempoolMetrics, ...) (*hotstuff.FollowerLoop, error)
- func NewForks(final *flow.Header, headers storage.Headers, updater module.Finalizer, ...) (*forks.Forks, error)
- func NewParticipant(log zerolog.Logger, metrics module.HotstuffMetrics, ...) (*eventloop.EventLoop, error)
- func NewTimeoutAggregator(log zerolog.Logger, hotstuffMetrics module.HotstuffMetrics, ...) (hotstuff.TimeoutAggregator, error)
- func NewValidator(metrics module.HotstuffMetrics, committee hotstuff.DynamicCommittee) hotstuff.Validator
- func NewVoteAggregator(log zerolog.Logger, hotstuffMetrics module.HotstuffMetrics, ...) (hotstuff.VoteAggregator, error)
- type HotstuffModules
- type Option
- func WithHappyPathMaxRoundFailures(happyPathMaxRoundFailures uint64) Option
- func WithMinTimeout(timeout time.Duration) Option
- func WithProposalDurationProvider(provider hotstuff.ProposalDurationProvider) Option
- func WithStartupTime(time time.Time) Option
- func WithStaticProposalDuration(dur time.Duration) Option
- func WithTimeoutAdjustmentFactor(factor float64) Option
- type ParticipantConfig
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func NewFollower ¶
func NewFollower(log zerolog.Logger, mempoolMetrics module.MempoolMetrics, headers storage.Headers, updater module.Finalizer, notifier hotstuff.FollowerConsumer, rootHeader *flow.Header, rootQC *flow.QuorumCertificate, finalized *flow.Header, pending []*flow.Header, ) (*hotstuff.FollowerLoop, error)
NewFollower instantiates the consensus follower and recovers its in-memory state of pending blocks. It receives the list `pending` containing _all_ blocks that
- have passed the compliance layer and stored in the protocol state
- descend from the latest finalized block
- are listed in ancestor-first order (i.e. for any block B ∈ pending, B's parent must be listed before B, unless B's parent is the latest finalized block)
CAUTION: all pending blocks are required to be valid (guaranteed if the block passed the compliance layer)
func NewForks ¶ added in v0.23.9
func NewForks(final *flow.Header, headers storage.Headers, updater module.Finalizer, notifier hotstuff.FollowerConsumer, rootHeader *flow.Header, rootQC *flow.QuorumCertificate) (*forks.Forks, error)
NewForks recovers trusted root and creates new forks manager
func NewParticipant ¶
func NewParticipant( log zerolog.Logger, metrics module.HotstuffMetrics, mempoolMetrics module.MempoolMetrics, builder module.Builder, finalized *flow.Header, pending []*flow.Header, modules *HotstuffModules, options ...Option, ) (*eventloop.EventLoop, error)
NewParticipant initialize the EventLoop instance with needed dependencies
func NewTimeoutAggregator ¶ added in v0.29.0
func NewTimeoutAggregator(log zerolog.Logger, hotstuffMetrics module.HotstuffMetrics, engineMetrics module.EngineMetrics, mempoolMetrics module.MempoolMetrics, notifier *pubsub.Distributor, timeoutProcessorFactory hotstuff.TimeoutProcessorFactory, distributor *pubsub.TimeoutAggregationDistributor, lowestRetainedView uint64, ) (hotstuff.TimeoutAggregator, error)
NewTimeoutAggregator creates new TimeoutAggregator and connects Hotstuff event source with event handler. No error returns are expected during normal operations.
func NewValidator ¶ added in v0.23.9
func NewValidator(metrics module.HotstuffMetrics, committee hotstuff.DynamicCommittee) hotstuff.Validator
NewValidator creates new instance of hotstuff validator needed for votes & proposal validation
func NewVoteAggregator ¶ added in v0.23.9
func NewVoteAggregator( log zerolog.Logger, hotstuffMetrics module.HotstuffMetrics, engineMetrics module.EngineMetrics, mempoolMetrics module.MempoolMetrics, lowestRetainedView uint64, notifier hotstuff.VoteAggregationConsumer, voteProcessorFactory hotstuff.VoteProcessorFactory, distributor *pubsub.FollowerDistributor, ) (hotstuff.VoteAggregator, error)
NewVoteAggregator creates new VoteAggregator and subscribes for finalization events. No error returns are expected during normal operations.
Types ¶
type HotstuffModules ¶ added in v0.23.9
type HotstuffModules struct { Committee hotstuff.DynamicCommittee // consensus committee Signer hotstuff.Signer // signer of proposal & votes Persist hotstuff.Persister // last state of consensus participant Notifier *pubsub.Distributor // observer for hotstuff events VoteCollectorDistributor *pubsub.VoteCollectorDistributor // observer for vote aggregation events, used by leader TimeoutCollectorDistributor *pubsub.TimeoutCollectorDistributor // observer for timeout aggregation events Forks hotstuff.Forks // information about multiple forks Validator hotstuff.Validator // validator of proposals & votes VoteAggregator hotstuff.VoteAggregator // aggregator of votes, used by leader TimeoutAggregator hotstuff.TimeoutAggregator // aggregator of `TimeoutObject`s, used by every replica }
HotstuffModules is a helper structure to encapsulate dependencies to create a hotStuff participant.
type Option ¶
type Option func(*ParticipantConfig)
func WithHappyPathMaxRoundFailures ¶ added in v0.29.0
func WithMinTimeout ¶
func WithProposalDurationProvider ¶ added in v0.31.0
func WithProposalDurationProvider(provider hotstuff.ProposalDurationProvider) Option
func WithStartupTime ¶ added in v0.22.4
func WithStaticProposalDuration ¶ added in v0.31.0
func WithTimeoutAdjustmentFactor ¶ added in v0.29.0
type ParticipantConfig ¶
type ParticipantConfig struct { StartupTime time.Time // the time when consensus participant enters first view TimeoutMinimum time.Duration // the minimum timeout for the pacemaker TimeoutMaximum time.Duration // the maximum timeout for the pacemaker TimeoutAdjustmentFactor float64 // the factor at which the timeout duration is adjusted HappyPathMaxRoundFailures uint64 // number of failed rounds before first timeout increase MaxTimeoutObjectRebroadcastInterval time.Duration // maximum interval for timeout object rebroadcast ProposalDurationProvider hotstuff.ProposalDurationProvider // a delay to broadcast block proposal in order to control the block production rate }
func DefaultParticipantConfig ¶ added in v0.28.13
func DefaultParticipantConfig() ParticipantConfig
Directories ¶
Path | Synopsis |
---|---|
cruisectl
Package cruisectl implements a "cruise control" system for Flow by adjusting nodes' latest ProposalTiming in response to changes in the measured view rate and target epoch switchover time.
|
Package cruisectl implements a "cruise control" system for Flow by adjusting nodes' latest ProposalTiming in response to changes in the measured view rate and target epoch switchover time. |