follower

package
v0.30.2 Latest Latest
Warning

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

Go to latest
Published: Apr 11, 2023 License: AGPL-3.0 Imports: 63 Imported by: 3

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func BootstrapIdentities added in v0.27.0

func BootstrapIdentities(addresses []string, keys []string) (flow.IdentityList, error)

BootstrapIdentities converts the bootstrap node addresses and keys to a Flow Identity list where each Flow Identity is initialized with the passed address, the networking key and the Node ID set to ZeroID, role set to Access, 0 stake and no staking key.

Types

type BootstrapNodeInfo

type BootstrapNodeInfo struct {
	Host             string // ip or hostname
	Port             uint
	NetworkPublicKey crypto.PublicKey // the network public key of the bootstrap peer
}

BootstrapNodeInfo contains the details about the upstream bootstrap peer the consensus follower uses

type Config

type Config struct {
	// contains filtered or unexported fields
}

Config contains the configurable fields for a `ConsensusFollower`.

type ConsensusFollower

type ConsensusFollower interface {
	component.Component
	// Run starts the consensus follower.
	Run(context.Context)
	// AddOnBlockFinalizedConsumer adds a new block finalization subscriber.
	AddOnBlockFinalizedConsumer(pubsub.OnBlockFinalizedConsumer)
}

ConsensusFollower is a standalone module run by third parties which provides a mechanism for observing the block chain. It maintains a set of subscribers and delivers block proposals broadcasted by the consensus nodes to each one.

type ConsensusFollowerImpl

type ConsensusFollowerImpl struct {
	component.Component
	*cmd.NodeConfig
	// contains filtered or unexported fields
}

func NewConsensusFollower

func NewConsensusFollower(
	networkPrivKey crypto.PrivateKey,
	bindAddr string,
	bootstapIdentities []BootstrapNodeInfo,
	opts ...Option,
) (*ConsensusFollowerImpl, error)

NewConsensusFollower creates a new consensus follower.

func (*ConsensusFollowerImpl) AddOnBlockFinalizedConsumer

func (cf *ConsensusFollowerImpl) AddOnBlockFinalizedConsumer(consumer pubsub.OnBlockFinalizedConsumer)

AddOnBlockFinalizedConsumer adds a new block finalization subscriber.

func (*ConsensusFollowerImpl) Run

func (cf *ConsensusFollowerImpl) Run(ctx context.Context)

Run starts the consensus follower. This may also be implemented directly in a calling library to take advantage of error recovery possible with the irrecoverable error handling.

type FollowerOption added in v0.27.0

type FollowerOption func(*FollowerServiceConfig)

func WithBaseOptions added in v0.27.0

func WithBaseOptions(baseOptions []cmd.Option) FollowerOption

func WithBootStrapPeers added in v0.27.0

func WithBootStrapPeers(bootstrapNodes ...*flow.Identity) FollowerOption

func WithNetworkKey added in v0.27.0

func WithNetworkKey(key crypto.PrivateKey) FollowerOption

type FollowerServiceBuilder added in v0.27.0

type FollowerServiceBuilder struct {
	*cmd.FlowNodeBuilder
	*FollowerServiceConfig

	// components
	LibP2PNode              p2p.LibP2PNode
	FollowerState           protocol.FollowerState
	SyncCore                *synchronization.Core
	FinalizationDistributor *pubsub.FinalizationDistributor
	FinalizedHeader         *synceng.FinalizedHeaderCache
	Committee               hotstuff.DynamicCommittee
	Finalized               *flow.Header
	Pending                 []*flow.Header
	FollowerCore            module.HotStuffFollower
	Validator               hotstuff.Validator
	// for the observer, the sync engine participants provider is the libp2p peer store which is not
	// available until after the network has started. Hence, a factory function that needs to be called just before
	// creating the sync engine
	SyncEngineParticipantsProviderFactory func() module.IdentifierProvider

	// engines
	FollowerEng *follower.ComplianceEngine
	SyncEng     *synceng.Engine
	// contains filtered or unexported fields
}

FollowerServiceBuilder provides the common functionality needed to bootstrap a Flow staked and observer It is composed of the FlowNodeBuilder, the FollowerServiceConfig and contains all the components and modules needed for the staked and observers

func FlowConsensusFollowerService added in v0.27.0

func FlowConsensusFollowerService(opts ...FollowerOption) *FollowerServiceBuilder

func (*FollowerServiceBuilder) Build added in v0.27.0

func (builder *FollowerServiceBuilder) Build() (cmd.Node, error)

Build enqueues the sync engine and the follower engine for the observer. Currently, the observer only runs the follower engine.

func (*FollowerServiceBuilder) BuildConsensusFollower added in v0.27.0

func (builder *FollowerServiceBuilder) BuildConsensusFollower() cmd.NodeBuilder

func (*FollowerServiceBuilder) InitIDProviders added in v0.27.0

func (builder *FollowerServiceBuilder) InitIDProviders()

func (*FollowerServiceBuilder) Initialize added in v0.27.0

func (builder *FollowerServiceBuilder) Initialize() error

type FollowerServiceConfig added in v0.27.0

type FollowerServiceConfig struct {
	NetworkKey crypto.PrivateKey // the networking key passed in by the caller when being used as a library
	// contains filtered or unexported fields
}

FollowerServiceConfig defines all the user defined parameters required to bootstrap an access node For a node running as a standalone process, the config fields will be populated from the command line params, while for a node running as a library, the config fields are expected to be initialized by the caller.

func DefaultFollowerServiceConfig added in v0.27.0

func DefaultFollowerServiceConfig() *FollowerServiceConfig

DefaultFollowerServiceConfig defines all the default values for the FollowerServiceConfig

type Option

type Option func(c *Config)

func WithBootstrapDir

func WithBootstrapDir(bootstrapDir string) Option

func WithComplianceConfig added in v0.26.16

func WithComplianceConfig(config *compliance.Config) Option

func WithDB added in v0.21.1

func WithDB(db *badger.DB) Option

WithDB sets the underlying database that will be used to store the chain state WithDB takes precedence over WithDataDir and datadir will be set to empty if DB is set using this option

func WithDataDir

func WithDataDir(dataDir string) Option

WithDataDir sets the underlying directory to be used to store the database If a database is supplied, then data directory will be set to empty string

func WithExposeMetrics added in v0.24.7

func WithExposeMetrics(expose bool) Option

func WithLogLevel added in v0.21.1

func WithLogLevel(level string) Option

func WithSyncCoreConfig added in v0.26.0

func WithSyncCoreConfig(config *chainsync.Config) Option

Jump to

Keyboard shortcuts

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