node

package
v1.0.0 Latest Latest
Warning

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

Go to latest
Published: Dec 17, 2024 License: Apache-2.0 Imports: 46 Imported by: 135

Documentation

Overview

Package node is the main entry point, where the Node struct, which represents a full node, is defined.

Adding new p2p.Reactor(s)

To add a new p2p.Reactor, use the CustomReactors option:

node, err := NewNode(
		config,
		privVal,
		nodeKey,
		clientCreator,
		genesisDocProvider,
		dbProvider,
		metricsProvider,
		logger,
		CustomReactors(map[string]p2p.Reactor{"CUSTOM": customReactor}),
)

Replacing existing p2p.Reactor(s)

To replace the built-in p2p.Reactor, use the CustomReactors option:

node, err := NewNode(
		config,
		privVal,
		nodeKey,
		clientCreator,
		genesisDocProvider,
		dbProvider,
		metricsProvider,
		logger,
		CustomReactors(map[string]p2p.Reactor{"BLOCKSYNC": customBlocksyncReactor}),
)

The list of existing reactors can be found in CustomReactors documentation.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func BootstrapState added in v0.37.3

func BootstrapState(ctx context.Context, config *cfg.Config, dbProvider cfg.DBProvider, genProvider GenesisDocProvider, height uint64, appHash []byte) (err error)

BootstrapState synchronizes the stores with the application after state sync has been performed offline. It is expected that the block store and state store are empty at the time the function is called.

If the block store is not empty, the function returns an error.

func LoadStateFromDBOrGenesisDocProvider

func LoadStateFromDBOrGenesisDocProvider(
	stateDB dbm.DB,
	genesisDocProvider GenesisDocProvider,
	operatorGenesisHashHex string,
) (sm.State, *types.GenesisDoc, error)

Note that if you don't have a version of the key layout set in your DB already, and no config is passed, it will default to v1.

func LoadStateFromDBOrGenesisDocProviderWithConfig added in v1.0.0

func LoadStateFromDBOrGenesisDocProviderWithConfig(
	stateDB dbm.DB,
	genesisDocProvider GenesisDocProvider,
	operatorGenesisHashHex string,
	config *cfg.Config,
) (sm.State, *types.GenesisDoc, error)

Types

type ChecksummedGenesisDoc added in v1.0.0

type ChecksummedGenesisDoc struct {
	GenesisDoc     *types.GenesisDoc
	Sha256Checksum []byte
}

ChecksummedGenesisDoc combines a GenesisDoc together with its SHA256 checksum.

type CliParams added in v1.0.0

type CliParams struct {
	// SHA-256 hash of the genesis file provided via the command line.
	// This hash is used is compared against the computed hash of the
	// actual genesis file or the hash stored in the database.
	// If there is a mismatch between the hash provided via cli and the
	// hash of the genesis file or the hash in the DB, the node will not boot.
	GenesisHash []byte
}

Introduced to store parameters passed via cli and needed to start the node. This parameters should not be stored or persisted in the config file. This can then be further extended to include additional flags without further API breaking changes.

type ErrorLoadOrGenFilePV added in v1.0.0

type ErrorLoadOrGenFilePV struct {
	Err       error
	KeyFile   string
	StateFile string
}

ErrorLoadOrGenFilePV is returned when the node fails to load or generate priv validator file.

func (ErrorLoadOrGenFilePV) Error added in v1.0.0

func (e ErrorLoadOrGenFilePV) Error() string

func (ErrorLoadOrGenFilePV) Unwrap added in v1.0.0

func (e ErrorLoadOrGenFilePV) Unwrap() error

type GenesisDocProvider

type GenesisDocProvider func() (ChecksummedGenesisDoc, error)

GenesisDocProvider returns a GenesisDoc together with its SHA256 checksum. It allows the GenesisDoc to be pulled from sources other than the filesystem, for instance from a distributed key-value store cluster. It is the responsibility of the GenesisDocProvider to ensure that the SHA256 checksum correctly matches the GenesisDoc, that is: sha256(GenesisDoc) == Sha256Checksum.

func DefaultGenesisDocProviderFunc

func DefaultGenesisDocProviderFunc(config *cfg.Config) GenesisDocProvider

DefaultGenesisDocProviderFunc returns a GenesisDocProvider that loads the GenesisDoc from the config.GenesisFile() on the filesystem.

type MetricsProvider

type MetricsProvider func(chainID string) (*cs.Metrics, *p2p.Metrics, *mempl.Metrics, *sm.Metrics, *store.Metrics, *proxy.Metrics, *blocksync.Metrics, *statesync.Metrics)

MetricsProvider returns a consensus, p2p and mempool Metrics.

func DefaultMetricsProvider

func DefaultMetricsProvider(config *cfg.InstrumentationConfig) MetricsProvider

DefaultMetricsProvider returns Metrics build using Prometheus client library if Prometheus is enabled. Otherwise, it returns no-op Metrics.

type Node

type Node struct {
	service.BaseService
	// contains filtered or unexported fields
}

Node is the highest level interface to a full CometBFT node. It includes all configuration information and running services.

func DefaultNewNode

func DefaultNewNode(
	config *cfg.Config,
	logger log.Logger,
	cliParams CliParams,
	keyGenF func() (crypto.PrivKey, error),
) (*Node, error)

DefaultNewNode returns a CometBFT node with default settings for the PrivValidator, ClientCreator, GenesisDoc, and DBProvider. It implements Provider.

func NewNode

func NewNode(ctx context.Context,
	config *cfg.Config,
	privValidator types.PrivValidator,
	nodeKey *p2p.NodeKey,
	clientCreator proxy.ClientCreator,
	genesisDocProvider GenesisDocProvider,
	dbProvider cfg.DBProvider,
	metricsProvider MetricsProvider,
	logger log.Logger,
	options ...Option,
) (*Node, error)

NewNode returns a new, ready to go, CometBFT Node.

func NewNodeWithCliParams added in v1.0.0

func NewNodeWithCliParams(ctx context.Context,
	config *cfg.Config,
	privValidator types.PrivValidator,
	nodeKey *p2p.NodeKey,
	clientCreator proxy.ClientCreator,
	genesisDocProvider GenesisDocProvider,
	dbProvider cfg.DBProvider,
	metricsProvider MetricsProvider,
	logger log.Logger,
	cliParams CliParams,
	options ...Option,
) (*Node, error)

func (*Node) BlockStore

func (n *Node) BlockStore() *store.BlockStore

BlockStore returns the Node's BlockStore.

func (*Node) Config

func (n *Node) Config() *cfg.Config

Config returns the Node's config.

func (*Node) ConfigureRPC

func (n *Node) ConfigureRPC() (*rpccore.Environment, error)

ConfigureRPC makes sure RPC has all the objects it needs to operate.

func (*Node) ConsensusReactor

func (n *Node) ConsensusReactor() *cs.Reactor

ConsensusReactor returns the Node's ConsensusReactor.

func (*Node) EventBus

func (n *Node) EventBus() *types.EventBus

EventBus returns the Node's EventBus.

func (*Node) EvidencePool

func (n *Node) EvidencePool() *evidence.Pool

EvidencePool returns the Node's EvidencePool.

func (*Node) GenesisDoc

func (n *Node) GenesisDoc() *types.GenesisDoc

GenesisDoc returns the Node's GenesisDoc.

func (*Node) IsListening

func (n *Node) IsListening() bool

func (*Node) Listeners

func (n *Node) Listeners() []string

func (*Node) Mempool

func (n *Node) Mempool() mempl.Mempool

Mempool returns the Node's mempool.

func (*Node) MempoolReactor

func (n *Node) MempoolReactor() p2p.Reactor

MempoolReactor returns the Node's mempool reactor.

func (*Node) NodeInfo

func (n *Node) NodeInfo() p2p.NodeInfo

NodeInfo returns the Node's Info from the Switch.

func (*Node) OnStart

func (n *Node) OnStart() error

OnStart starts the Node. It implements service.Service.

func (*Node) OnStop

func (n *Node) OnStop()

OnStop stops the Node. It implements service.Service.

func (*Node) PEXReactor

func (n *Node) PEXReactor() *pex.Reactor

PEXReactor returns the Node's PEXReactor. It returns nil if PEX is disabled.

func (*Node) PrivValidator

func (n *Node) PrivValidator() types.PrivValidator

PrivValidator returns the Node's PrivValidator. XXX: for convenience only!

func (*Node) ProxyApp

func (n *Node) ProxyApp() proxy.AppConns

ProxyApp returns the Node's AppConns, representing its connections to the ABCI application.

func (*Node) Switch

func (n *Node) Switch() *p2p.Switch

Switch returns the Node's Switch.

type Option

type Option func(*Node)

Option sets a parameter for the node.

func CustomReactors

func CustomReactors(reactors map[string]p2p.Reactor) Option

CustomReactors allows you to add custom reactors (name -> p2p.Reactor) to the node's Switch.

WARNING: using any name from the below list of the existing reactors will result in replacing it with the custom one.

  • MEMPOOL
  • BLOCKSYNC
  • CONSENSUS
  • EVIDENCE
  • PEX
  • STATESYNC

func StateProvider

func StateProvider(stateProvider statesync.StateProvider) Option

StateProvider overrides the state provider used by state sync to retrieve trusted app hashes and build a State object for bootstrapping the node. WARNING: this interface is considered unstable and subject to change.

type Provider

type Provider func(*cfg.Config, log.Logger, CliParams, func() (crypto.PrivKey, error)) (*Node, error)

Provider takes a config and a logger and returns a ready to go Node.

Jump to

Keyboard shortcuts

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