node

package
v1.1.0 Latest Latest
Warning

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

Go to latest
Published: Dec 5, 2020 License: BSD-3-Clause Imports: 53 Imported by: 20

Documentation

Index

Constants

View Source
const (
	TCP = "tcp"
)

Networking constants

Variables

View Source
var (

	// Version is the version of this code
	Version = version.NewDefaultVersion(constants.PlatformName, 1, 1, 0)
)

Functions

This section is empty.

Types

type Config

type Config struct {
	genesis.Params

	// protocol to use for opening the network interface
	Nat nat.Router

	// Attempted NAT Traversal did we attempt
	AttemptedNATTraversal bool

	// ID of the network this node should connect to
	NetworkID uint32

	// Assertions configuration
	EnableAssertions bool

	// Crypto configuration
	EnableCrypto bool

	// Database to use for the node
	DB database.Database

	// Staking configuration
	StakingIP               utils.DynamicIPDesc
	EnableP2PTLS            bool
	EnableStaking           bool
	StakingKeyFile          string
	StakingCertFile         string
	DisabledStakingWeight   uint64
	MaxNonStakerPendingMsgs uint
	StakerMSGPortion        float64
	StakerCPUPortion        float64

	// Network configuration
	NetworkConfig timer.AdaptiveTimeoutConfig

	// Benchlist Configuration
	BenchlistConfig benchlist.Config

	// Bootstrapping configuration
	BootstrapPeers []*Peer

	// HTTP configuration
	HTTPHost string
	HTTPPort uint16

	HTTPSEnabled        bool
	HTTPSKeyFile        string
	HTTPSCertFile       string
	APIRequireAuthToken bool
	APIAuthPassword     string

	// Enable/Disable APIs
	AdminAPIEnabled    bool
	InfoAPIEnabled     bool
	KeystoreAPIEnabled bool
	MetricsAPIEnabled  bool
	HealthAPIEnabled   bool

	// Logging configuration
	LoggingConfig logging.Config

	// Plugin directory
	PluginDir string

	// Consensus configuration
	ConsensusParams avalanche.Parameters

	// Throughput configuration
	ThroughputPort          uint16
	ThroughputServerEnabled bool

	// IPC configuration
	IPCAPIEnabled      bool
	IPCPath            string
	IPCDefaultChainIDs []string

	// Router that is used to handle incoming consensus messages
	ConsensusRouter          router.Router
	ConsensusGossipFrequency time.Duration
	ConsensusShutdownTimeout time.Duration

	// Dynamic Update duration for IP or NAT traversal
	DynamicUpdateDuration time.Duration

	DynamicPublicIPResolver dynamicip.Resolver

	// Throttling incoming connections
	ConnMeterResetDuration time.Duration
	ConnMeterMaxConns      int

	// Subnet Whitelist
	WhitelistedSubnets ids.Set

	// Restart on disconnect settings
	RestartOnDisconnected      bool
	DisconnectedCheckFreq      time.Duration
	DisconnectedRestartTimeout time.Duration

	// Coreth
	CorethConfig string
}

Config contains all of the configurations of an Avalanche node.

type Node

type Node struct {
	Log        logging.Logger
	LogFactory logging.Factory
	HTTPLog    logging.Logger

	// This node's unique ID used when communicating with other nodes
	// (in consensus, for example)
	ID ids.ShortID

	// Storage for this node
	DB database.Database

	// dispatcher for events as they happen in consensus
	DecisionDispatcher  *triggers.EventDispatcher
	ConsensusDispatcher *triggers.EventDispatcher

	IPCs *ipcs.ChainIPCs

	// Net runs the networking stack
	Net network.Network

	// Handles HTTP API calls
	APIServer api.Server

	// This node's configuration
	Config *Config
	// contains filtered or unexported fields
}

Node is an instance of an Avalanche node.

func (*Node) Dispatch

func (n *Node) Dispatch() error

Dispatch starts the node's servers. Returns when the node exits.

func (*Node) Initialize

func (n *Node) Initialize(
	config *Config,
	logger logging.Logger,
	logFactory logging.Factory,
	restarter utils.Restarter,
) error

Initialize this node

func (*Node) Shutdown

func (n *Node) Shutdown()

Shutdown this node May be called multiple times

type Peer

type Peer struct {
	// IP of the peer
	IP utils.IPDesc
	// ID of the peer that can be verified during a handshake
	ID ids.ShortID
}

Peer contains the specification of an Avalanche node that can be communicated with.

Jump to

Keyboard shortcuts

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