Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type APIAuthConfig ¶ added in v1.5.0
type APIConfig ¶ added in v1.5.0
type APIConfig struct {
APIAuthConfig `json:"authConfig"`
APIIndexerConfig `json:"indexerConfig"`
IPCConfig `json:"ipcConfig"`
// Enable/Disable APIs
AdminAPIEnabled bool `json:"adminAPIEnabled"`
InfoAPIEnabled bool `json:"infoAPIEnabled"`
KeystoreAPIEnabled bool `json:"keystoreAPIEnabled"`
MetricsAPIEnabled bool `json:"metricsAPIEnabled"`
HealthAPIEnabled bool `json:"healthAPIEnabled"`
}
type APIIndexerConfig ¶ added in v1.5.0
type BootstrapConfig ¶ added in v1.5.0
type BootstrapConfig struct {
// Should Bootstrap be retried
RetryBootstrap bool `json:"retryBootstrap"`
// Max number of times to retry bootstrap before warning the node operator
RetryBootstrapWarnFrequency int `json:"retryBootstrapWarnFrequency"`
// Timeout before emitting a warn log when connecting to bootstrapping beacons
BootstrapBeaconConnectionTimeout time.Duration `json:"bootstrapBeaconConnectionTimeout"`
// Max number of containers in an ancestors message sent by this node.
BootstrapAncestorsMaxContainersSent int `json:"bootstrapAncestorsMaxContainersSent"`
// This node will only consider the first [AncestorsMaxContainersReceived]
// containers in an ancestors message it receives.
BootstrapAncestorsMaxContainersReceived int `json:"bootstrapAncestorsMaxContainersReceived"`
// Max time to spend fetching a container and its
// ancestors while responding to a GetAncestors message
BootstrapMaxTimeGetAncestors time.Duration `json:"bootstrapMaxTimeGetAncestors"`
BootstrapIDs []ids.NodeID `json:"bootstrapIDs"`
BootstrapIPs []ips.IPPort `json:"bootstrapIPs"`
}
type Config ¶
type Config struct {
HTTPConfig `json:"httpConfig"`
IPConfig `json:"ipConfig"`
StakingConfig `json:"stakingConfig"`
genesis.TxFeeConfig `json:"txFeeConfig"`
StateSyncConfig `json:"stateSyncConfig"`
BootstrapConfig `json:"bootstrapConfig"`
DatabaseConfig `json:"databaseConfig"`
// Genesis information
GenesisBytes []byte `json:"-"`
AvaxAssetID ids.ID `json:"avaxAssetID"`
// ID of the network this node should connect to
NetworkID uint32 `json:"networkID"`
// Health
HealthCheckFreq time.Duration `json:"healthCheckFreq"`
// Network configuration
NetworkConfig network.Config `json:"networkConfig"`
GossipConfig sender.GossipConfig `json:"gossipConfig"`
AdaptiveTimeoutConfig timer.AdaptiveTimeoutConfig `json:"adaptiveTimeoutConfig"`
// Benchlist Configuration
BenchlistConfig benchlist.Config `json:"benchlistConfig"`
// Profiling configurations
ProfilerConfig profiler.Config `json:"profilerConfig"`
// Logging configuration
LoggingConfig logging.Config `json:"loggingConfig"`
// Plugin directory
PluginDir string `json:"pluginDir"`
// File Descriptor Limit
FdLimit uint64 `json:"fdLimit"`
// Consensus configuration
ConsensusParams avalanche.Parameters `json:"consensusParams"`
// Metrics
MeterVMEnabled bool `json:"meterVMEnabled"`
// Router that is used to handle incoming consensus messages
ConsensusRouter router.Router `json:"-"`
RouterHealthConfig router.HealthConfig `json:"routerHealthConfig"`
ConsensusShutdownTimeout time.Duration `json:"consensusShutdownTimeout"`
// Gossip a container in the accepted frontier every [ConsensusGossipFrequency]
ConsensusGossipFrequency time.Duration `json:"consensusGossipFreq"`
// Subnet Whitelist
WhitelistedSubnets ids.Set `json:"whitelistedSubnets"`
// SubnetConfigs
SubnetConfigs map[ids.ID]chains.SubnetConfig `json:"subnetConfigs"`
// ChainConfigs
ChainConfigs map[string]chains.ChainConfig `json:"-"`
// VM management
VMManager vms.Manager `json:"-"`
// Halflife to use for the processing requests tracker.
// Larger halflife --> usage metrics change more slowly.
SystemTrackerProcessingHalflife time.Duration `json:"systemTrackerProcessingHalflife"`
// Frequency to check the real resource usage of tracked processes.
// More frequent checks --> usage metrics are more accurate, but more
// expensive to track
SystemTrackerFrequency time.Duration `json:"systemTrackerFrequency"`
// Halflife to use for the cpu tracker.
// Larger halflife --> cpu usage metrics change more slowly.
SystemTrackerCPUHalflife time.Duration `json:"systemTrackerCPUHalflife"`
// Halflife to use for the disk tracker.
// Larger halflife --> disk usage metrics change more slowly.
SystemTrackerDiskHalflife time.Duration `json:"systemTrackerDiskHalflife"`
CPUTargeterConfig tracker.TargeterConfig `json:"cpuTargeterConfig"`
DiskTargeterConfig tracker.TargeterConfig `json:"diskTargeterConfig"`
RequiredAvailableDiskSpace uint64 `json:"requiredAvailableDiskSpace"`
WarningThresholdAvailableDiskSpace uint64 `json:"warningThresholdAvailableDiskSpace"`
// See comment on [MinPercentConnectedStakeHealthy] in platformvm.Config
MinPercentConnectedStakeHealthy map[ids.ID]float64 `json:"minPercentConnectedStakeHealthy"`
}
Config contains all of the configurations of an Avalanche node.
type DatabaseConfig ¶ added in v1.5.0
type HTTPConfig ¶ added in v1.5.0
type HTTPConfig struct {
APIConfig `json:"apiConfig"`
HTTPHost string `json:"httpHost"`
HTTPPort uint16 `json:"httpPort"`
HTTPSEnabled bool `json:"httpsEnabled"`
HTTPSKey []byte `json:"-"`
HTTPSCert []byte `json:"-"`
APIAllowedOrigins []string `json:"apiAllowedOrigins"`
ShutdownTimeout time.Duration `json:"shutdownTimeout"`
ShutdownWait time.Duration `json:"shutdownWait"`
}
type IPConfig ¶ added in v1.5.0
type IPConfig struct {
IPPort ips.DynamicIPPort `json:"ip"`
IPUpdater dynamicip.Updater `json:"-"`
IPResolutionFreq time.Duration `json:"ipResolutionFrequency"`
// True if we attempted NAT traversal
AttemptedNATTraversal bool `json:"attemptedNATTraversal"`
// Tries to perform network address translation
Nat nat.Router `json:"-"`
}
type Node ¶
type Node struct {
Log logging.Logger
LogFactory logging.Factory
// This node's unique ID used when communicating with other nodes
// (in consensus, for example)
ID ids.NodeID
// Storage for this node
DBManager manager.Manager
DB database.Database
// dispatcher for events as they happen in consensus
DecisionAcceptorGroup snow.AcceptorGroup
ConsensusAcceptorGroup snow.AcceptorGroup
IPCs *ipcs.ChainIPCs
Net network.Network
// Handles HTTP API calls
APIServer server.Server
// This node's configuration
Config *Config
// Incremented only once on initialization.
// Decremented when node is done shutting down.
DoneShuttingDown sync.WaitGroup
// Metrics Registerer
MetricsRegisterer *prometheus.Registry
MetricsGatherer metrics.MultiGatherer
// VM endpoint registry
VMRegistry registry.VMRegistry
// contains filtered or unexported fields
}
Node is an instance of an Avalanche node.
type StakingConfig ¶ added in v1.5.0
type StakingConfig struct {
genesis.StakingConfig
EnableStaking bool `json:"enableStaking"`
StakingTLSCert tls.Certificate `json:"-"`
StakingSigningKey *bls.SecretKey `json:"-"`
DisabledStakingWeight uint64 `json:"disabledStakingWeight"`
StakingKeyPath string `json:"stakingKeyPath"`
StakingCertPath string `json:"stakingCertPath"`
StakingSignerPath string `json:"stakingSignerPath"`
}
Click to show internal directories.
Click to hide internal directories.