config

package
v1.22.63 Latest Latest
Warning

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

Go to latest
Published: Dec 24, 2025 License: BSD-3-Clause Imports: 52 Imported by: 6

Documentation

Index

Constants

View Source
const (
	DefaultHTTPPort    = 9630
	DefaultStakingPort = 9631

	LuxNodeDataDirVar = "LUXD_DATA_DIR"

	DefaultProcessContextFilename = "process.json"
)
View Source
const (
	DataDirKey                               = "data-dir"
	ConfigFileKey                            = "config-file"
	ConfigContentKey                         = "config-file-content"
	ConfigContentTypeKey                     = "config-file-content-type"
	VersionKey                               = "version"
	VersionJSONKey                           = "version-json"
	GenesisFileKey                           = "genesis-file"
	GenesisFileContentKey                    = "genesis-file-content"
	GenesisDBKey                             = "genesis-db"
	GenesisDBTypeKey                         = "genesis-db-type"
	GenesisBlockLimitKey                     = "genesis-block-limit"
	AllowCustomGenesisKey                    = "allow-custom-genesis"
	UpgradeFileKey                           = "upgrade-file"
	UpgradeFileContentKey                    = "upgrade-file-content"
	NetworkNameKey                           = "network-id"
	MainnetKey                               = "mainnet"
	TestnetKey                               = "testnet"
	LocalnetKey                              = "localnet"
	DynamicFeesBandwidthWeightKey            = "dynamic-fees-bandwidth-weight"
	DynamicFeesDBReadWeightKey               = "dynamic-fees-db-read-weight"
	DynamicFeesDBWriteWeightKey              = "dynamic-fees-db-write-weight"
	DynamicFeesComputeWeightKey              = "dynamic-fees-compute-weight"
	DynamicFeesMaxGasCapacityKey             = "dynamic-fees-max-gas-capacity"
	DynamicFeesMaxGasPerSecondKey            = "dynamic-fees-max-gas-per-second"
	DynamicFeesTargetGasPerSecondKey         = "dynamic-fees-target-gas-per-second"
	DynamicFeesMinGasPriceKey                = "dynamic-fees-min-gas-price"
	DynamicFeesExcessConversionConstantKey   = "dynamic-fees-excess-conversion-constant"
	ValidatorFeesCapacityKey                 = "validator-fees-capacity"
	ValidatorFeesTargetKey                   = "validator-fees-target"
	ValidatorFeesMinPriceKey                 = "validator-fees-min-price"
	ValidatorFeesExcessConversionConstantKey = "validator-fees-excess-conversion-constant"
	TxFeeKey                                 = "tx-fee"
	CreateAssetTxFeeKey                      = "create-asset-tx-fee"
	UptimeRequirementKey                     = "uptime-requirement"
	MinValidatorStakeKey                     = "min-validator-stake"
	MaxValidatorStakeKey                     = "max-validator-stake"
	MinDelegatorStakeKey                     = "min-delegator-stake"
	MinDelegatorFeeKey                       = "min-delegation-fee"
	MinStakeDurationKey                      = "min-stake-duration"
	MaxStakeDurationKey                      = "max-stake-duration"
	StakeMaxConsumptionRateKey               = "stake-max-consumption-rate"
	StakeMinConsumptionRateKey               = "stake-min-consumption-rate"
	StakeMintingPeriodKey                    = "stake-minting-period"
	StakeSupplyCapKey                        = "stake-supply-cap"
	DBTypeKey                                = "db-type"
	DBReadOnlyKey                            = "db-read-only"
	DBPathKey                                = "db-dir"
	DBConfigFileKey                          = "db-config-file"
	DBConfigContentKey                       = "db-config-file-content"
	PChainDBTypeKey                          = "p-chain-db-type"
	XChainDBTypeKey                          = "x-chain-db-type"
	CChainDBTypeKey                          = "c-chain-db-type"
	PublicIPKey                              = "public-ip"
	PublicIPResolutionFreqKey                = "public-ip-resolution-frequency"
	PublicIPResolutionServiceKey             = "public-ip-resolution-service"
	HTTPHostKey                              = "http-host"
	HTTPPortKey                              = "http-port"
	HTTPSEnabledKey                          = "http-tls-enabled"
	HTTPSKeyFileKey                          = "http-tls-key-file"
	HTTPSKeyContentKey                       = "http-tls-key-file-content"
	HTTPSCertFileKey                         = "http-tls-cert-file"
	HTTPSCertContentKey                      = "http-tls-cert-file-content"

	HTTPAllowedOrigins       = "http-allowed-origins"
	HTTPAllowedHostsKey      = "http-allowed-hosts"
	HTTPShutdownTimeoutKey   = "http-shutdown-timeout"
	HTTPShutdownWaitKey      = "http-shutdown-wait"
	HTTPReadTimeoutKey       = "http-read-timeout"
	HTTPReadHeaderTimeoutKey = "http-read-header-timeout"

	HTTPIdleTimeoutKey                                 = "http-idle-timeout"
	StateSyncIPsKey                                    = "state-sync-ips"
	StateSyncIDsKey                                    = "state-sync-ids"
	BootstrapIPsKey                                    = "bootstrap-ips"
	BootstrapIDsKey                                    = "bootstrap-ids"
	SkipBootstrapKey                                   = "skip-bootstrap"
	EnableAutominingKey                                = "enable-automining"
	StakingHostKey                                     = "staking-host"
	StakingPortKey                                     = "staking-port"
	StakingEphemeralCertEnabledKey                     = "staking-ephemeral-cert-enabled"
	StakingTLSKeyPathKey                               = "staking-tls-key-file"
	StakingTLSKeyContentKey                            = "staking-tls-key-file-content"
	StakingCertPathKey                                 = "staking-tls-cert-file"
	StakingCertContentKey                              = "staking-tls-cert-file-content"
	StakingEphemeralSignerEnabledKey                   = "staking-ephemeral-signer-enabled"
	StakingSignerKeyPathKey                            = "staking-signer-key-file"
	StakingSignerKeyContentKey                         = "staking-signer-key-file-content"
	SybilProtectionEnabledKey                          = "sybil-protection-enabled"
	SybilProtectionDisabledWeightKey                   = "sybil-protection-disabled-weight"
	NetworkInitialTimeoutKey                           = "network-initial-timeout"
	NetworkMinimumTimeoutKey                           = "network-minimum-timeout"
	NetworkMaximumTimeoutKey                           = "network-maximum-timeout"
	NetworkMaximumInboundTimeoutKey                    = "network-maximum-inbound-timeout"
	NetworkTimeoutHalflifeKey                          = "network-timeout-halflife"
	NetworkTimeoutCoefficientKey                       = "network-timeout-coefficient"
	NetworkHealthMinPeersKey                           = "network-health-min-conn-peers"
	NetworkHealthMaxTimeSinceMsgReceivedKey            = "network-health-max-time-since-msg-received"
	NetworkHealthMaxTimeSinceMsgSentKey                = "network-health-max-time-since-msg-sent"
	NetworkHealthMaxPortionSendQueueFillKey            = "network-health-max-portion-send-queue-full"
	NetworkHealthMaxSendFailRateKey                    = "network-health-max-send-fail-rate"
	NetworkHealthMaxOutstandingDurationKey             = "network-health-max-outstanding-request-duration"
	NetworkPeerListNumValidatorIPsKey                  = "network-peer-list-num-validator-ips"
	NetworkPeerListPullGossipFreqKey                   = "network-peer-list-pull-gossip-frequency"
	NetworkPeerListBloomResetFreqKey                   = "network-peer-list-bloom-reset-frequency"
	NetworkInitialReconnectDelayKey                    = "network-initial-reconnect-delay"
	NetworkReadHandshakeTimeoutKey                     = "network-read-handshake-timeout"
	NetworkPingTimeoutKey                              = "network-ping-timeout"
	NetworkPingFrequencyKey                            = "network-ping-frequency"
	NetworkMaxReconnectDelayKey                        = "network-max-reconnect-delay"
	NetworkCompressionTypeKey                          = "network-compression-type"
	NetworkMaxClockDifferenceKey                       = "network-max-clock-difference"
	NetworkAllowPrivateIPsKey                          = "network-allow-private-ips"
	NetworkRequireValidatorToConnectKey                = "network-require-validator-to-connect"
	NetworkPeerReadBufferSizeKey                       = "network-peer-read-buffer-size"
	NetworkPeerWriteBufferSizeKey                      = "network-peer-write-buffer-size"
	NetworkTCPProxyEnabledKey                          = "network-tcp-proxy-enabled"
	NetworkTCPProxyReadTimeoutKey                      = "network-tcp-proxy-read-timeout"
	NetworkTLSKeyLogFileKey                            = "network-tls-key-log-file-unsafe"
	NetworkInboundConnUpgradeThrottlerCooldownKey      = "network-inbound-connection-throttling-cooldown"
	NetworkInboundThrottlerMaxConnsPerSecKey           = "network-inbound-connection-throttling-max-conns-per-sec"
	NetworkOutboundConnectionThrottlingRpsKey          = "network-outbound-connection-throttling-rps"
	NetworkOutboundConnectionTimeoutKey                = "network-outbound-connection-timeout"
	NetworkNoIngressValidatorConnectionsGracePeriodKey = "network-no-ingress-connections-grace-period"
	BenchlistFailThresholdKey                          = "benchlist-fail-threshold"
	BenchlistDurationKey                               = "benchlist-duration"
	BenchlistMinFailingDurationKey                     = "benchlist-min-failing-duration"
	LogsDirKey                                         = "log-dir"
	LogLevelKey                                        = "log-level"
	LogDisplayLevelKey                                 = "log-display-level"
	LogFormatKey                                       = "log-format"
	LogRotaterMaxSizeKey                               = "log-rotater-max-size"
	LogRotaterMaxFilesKey                              = "log-rotater-max-files"
	LogRotaterMaxAgeKey                                = "log-rotater-max-age"
	LogRotaterCompressEnabledKey                       = "log-rotater-compress-enabled"
	LogDisableDisplayPluginLogsKey                     = "log-disable-display-plugin-logs"
	ConsensusSampleSizeKey                             = "consensus-sample-size"
	ConsensusQuorumSizeKey                             = "consensus-quorum-size"
	ConsensusPreferenceQuorumSizeKey                   = "consensus-preference-quorum-size"
	ConsensusConfidenceQuorumSizeKey                   = "consensus-confidence-quorum-size"
	ConsensusCommitThresholdKey                        = "consensus-commit-threshold"
	ConsensusConcurrentRepollsKey                      = "consensus-concurrent-repolls"
	ConsensusOptimalProcessingKey                      = "consensus-optimal-processing"
	ConsensusMaxProcessingKey                          = "consensus-max-processing"
	ConsensusMaxTimeProcessingKey                      = "consensus-max-time-processing"
	PartialSyncPrimaryNetworkKey                       = "partial-sync-primary-network"
	TrackChainsKey                                     = "track-chains"
	TrackAllChainsKey                                  = "track-all-chains"
	AdminAPIEnabledKey                                 = "api-admin-enabled"
	InfoAPIEnabledKey                                  = "api-info-enabled"
	KeystoreAPIEnabledKey                              = "api-keystore-enabled"
	MetricsAPIEnabledKey                               = "api-metrics-enabled"
	HealthAPIEnabledKey                                = "api-health-enabled"
	MeterVMsEnabledKey                                 = "meter-vms-enabled"
	ConsensusAppConcurrencyKey                         = "consensus-app-concurrency"
	ConsensusShutdownTimeoutKey                        = "consensus-shutdown-timeout"
	ConsensusFrontierPollFrequencyKey                  = "consensus-frontier-poll-frequency"
	ProposerVMUseCurrentHeightKey                      = "proposervm-use-current-height"
	ProposerVMMinBlockDelayKey                         = "proposervm-min-block-delay"
	FdLimitKey                                         = "fd-limit"
	IndexEnabledKey                                    = "index-enabled"
	IndexAllowIncompleteKey                            = "index-allow-incomplete"
	RouterHealthMaxDropRateKey                         = "router-health-max-drop-rate"
	RouterHealthMaxOutstandingRequestsKey              = "router-health-max-outstanding-requests"
	HealthCheckFreqKey                                 = "health-check-frequency"
	HealthCheckAveragerHalflifeKey                     = "health-check-averager-halflife"
	PluginDirKey                                       = "plugin-dir"
	BootstrapBeaconConnectionTimeoutKey                = "bootstrap-beacon-connection-timeout"
	BootstrapMaxTimeGetAncestorsKey                    = "bootstrap-max-time-get-ancestors"
	BootstrapAncestorsMaxContainersSentKey             = "bootstrap-ancestors-max-containers-sent"
	BootstrapAncestorsMaxContainersReceivedKey         = "bootstrap-ancestors-max-containers-received"
	ChainDataDirKey                                    = "chain-data-dir"
	ChainConfigDirKey                                  = "chain-config-dir"
	ChainConfigContentKey                              = "chain-config-content"
	ImportChainDataKey                                 = "import-chain-data"
	NetConfigDirKey                                    = "subnet-config-dir"
	NetConfigContentKey                                = "net-config-content"
	ProfileDirKey                                      = "profile-dir"
	ProfileContinuousEnabledKey                        = "profile-continuous-enabled"
	ProfileContinuousFreqKey                           = "profile-continuous-freq"
	ProfileContinuousMaxFilesKey                       = "profile-continuous-max-files"
	InboundThrottlerAtLargeAllocSizeKey                = "throttler-inbound-at-large-alloc-size"
	InboundThrottlerVdrAllocSizeKey                    = "throttler-inbound-validator-alloc-size"
	InboundThrottlerNodeMaxAtLargeBytesKey             = "throttler-inbound-node-max-at-large-bytes"
	InboundThrottlerMaxProcessingMsgsPerNodeKey        = "throttler-inbound-node-max-processing-msgs"
	InboundThrottlerBandwidthRefillRateKey             = "throttler-inbound-bandwidth-refill-rate"
	InboundThrottlerBandwidthMaxBurstSizeKey           = "throttler-inbound-bandwidth-max-burst-size"
	InboundThrottlerCPUMaxRecheckDelayKey              = "throttler-inbound-cpu-max-recheck-delay"
	InboundThrottlerDiskMaxRecheckDelayKey             = "throttler-inbound-disk-max-recheck-delay"
	CPUVdrAllocKey                                     = "throttler-inbound-cpu-validator-alloc"
	CPUMaxNonVdrUsageKey                               = "throttler-inbound-cpu-max-non-validator-usage"
	CPUMaxNonVdrNodeUsageKey                           = "throttler-inbound-cpu-max-non-validator-node-usage"
	SystemTrackerFrequencyKey                          = "system-tracker-frequency"
	SystemTrackerProcessingHalflifeKey                 = "system-tracker-processing-halflife"
	SystemTrackerCPUHalflifeKey                        = "system-tracker-cpu-halflife"
	SystemTrackerDiskHalflifeKey                       = "system-tracker-disk-halflife"
	SystemTrackerRequiredAvailableDiskSpaceKey         = "system-tracker-disk-required-available-space"
	SystemTrackerWarningThresholdAvailableDiskSpaceKey = "system-tracker-disk-warning-threshold-available-space"
	DiskVdrAllocKey                                    = "throttler-inbound-disk-validator-alloc"
	DiskMaxNonVdrUsageKey                              = "throttler-inbound-disk-max-non-validator-usage"
	DiskMaxNonVdrNodeUsageKey                          = "throttler-inbound-disk-max-non-validator-node-usage"
	OutboundThrottlerAtLargeAllocSizeKey               = "throttler-outbound-at-large-alloc-size"
	OutboundThrottlerVdrAllocSizeKey                   = "throttler-outbound-validator-alloc-size"
	OutboundThrottlerNodeMaxAtLargeBytesKey            = "throttler-outbound-node-max-at-large-bytes"
	UptimeMetricFreqKey                                = "uptime-metric-freq"
	VMAliasesFileKey                                   = "vm-aliases-file"
	VMAliasesContentKey                                = "vm-aliases-file-content"
	ChainAliasesFileKey                                = "chain-aliases-file"
	ChainAliasesContentKey                             = "chain-aliases-file-content"
	TracingEndpointKey                                 = "tracing-endpoint"
	TracingInsecureKey                                 = "tracing-insecure"
	TracingSampleRateKey                               = "tracing-sample-rate"
	TracingExporterTypeKey                             = "tracing-exporter-type"
	TracingHeadersKey                                  = "tracing-headers"
	ProcessContextFileKey                              = "process-context-file"

	// Development and LP Keys
	DevModeKey   = "dev-mode"
	LPSupportKey = "lp-support"
	LPObjectKey  = "lp-object"

	// POA Mode Keys
	POAModeEnabledKey     = "poa-mode-enabled"
	POASingleNodeModeKey  = "poa-single-node-mode"
	POAMinBlockTimeKey    = "poa-min-block-time"
	POAAuthorizedNodesKey = "poa-authorized-nodes"

	// Force flags
	ForceIgnoreChecksumKey = "force-ignore-checksum"
)
View Source
const EnvPrefix = "luxd"
View Source
const HTTPWriteTimeoutKey = "http-write-timeout" // #nosec G101

the HTTPWriteTimeoutKey was moved here so that it would not generate the false-positive linter error "G101: Potential hardcoded credentials" when running golangci-lint.

Variables

View Source
var DashesToUnderscores = strings.NewReplacer("-", "_")
View Source
var MainnetParameters = struct {
	K                     int
	AlphaPreference       int
	AlphaConfidence       int
	Beta                  int
	ConcurrentPolls       int
	OptimalProcessing     int
	MaxOutstandingItems   int
	MaxItemProcessingTime time.Duration
}{
	K:                     20,
	AlphaPreference:       15,
	AlphaConfidence:       15,
	Beta:                  20,
	ConcurrentPolls:       4,
	OptimalProcessing:     10,
	MaxOutstandingItems:   1024,
	MaxItemProcessingTime: 2 * time.Minute,
}

MainnetParameters contains mainnet consensus parameters

Functions

func BuildFlagSet

func BuildFlagSet() *pflag.FlagSet

BuildFlagSet returns a complete set of flags for node

func BuildViper

func BuildViper(fs *pflag.FlagSet, args []string) (*viper.Viper, error)

BuildViper returns the viper environment from parsing config file from default search paths and any parsed command line flags

func EnvVarName

func EnvVarName(prefix string, key string) string

func GetNodeConfig

func GetNodeConfig(v *viper.Viper) (node.Config, error)

Types

type AirdropConfig added in v1.16.56

type AirdropConfig struct {
	Enabled         bool
	SnapshotDate    string
	ConversionRatio float64 // Legacy token to LUX conversion ratio
	VestingPeriod   uint64  // in seconds
	ClaimPeriod     uint64  // in seconds
}

AirdropConfig defines airdrop parameters

type BadgerDBConfig added in v1.1.11

type BadgerDBConfig struct {
	Enable          bool
	DataDir         string
	EnableAncient   bool
	AncientDir      string
	ReadOnly        bool
	SharedAncient   bool
	FreezeThreshold uint64
}

BadgerDB flags for C-Chain

func AddBadgerDBFlags added in v1.1.11

func AddBadgerDBFlags(fs *flag.FlagSet) *BadgerDBConfig

AddBadgerDBFlags adds BadgerDB-related flags to the flag set

func (*BadgerDBConfig) Validate added in v1.1.11

func (c *BadgerDBConfig) Validate(dataDir string) error

Validate validates the BadgerDB configuration

type BenchlistConfig added in v1.16.56

type BenchlistConfig struct {
	Deprecated         bool
	Duration           time.Duration
	MinFailingDuration time.Duration
	Threshold          int
	MaxPortion         float64
	FailThreshold      int
}

BenchlistConfig contains configuration for benchlisting

type ChainDatabaseConfig added in v1.1.11

type ChainDatabaseConfig struct {
	// Default database type for all chains
	DefaultType string

	// Per-chain overrides
	PChainDBType string
	XChainDBType string
	CChainDBType string
}

ChainDatabaseConfig holds per-chain database configuration

func (*ChainDatabaseConfig) GetDatabaseType added in v1.1.11

func (c *ChainDatabaseConfig) GetDatabaseType(chainAlias string) string

GetDatabaseType returns the database type for a specific chain

func (*ChainDatabaseConfig) Validate added in v1.1.11

func (c *ChainDatabaseConfig) Validate() error

Validate ensures all database types are valid

type ChainStakeRequirement added in v1.16.56

type ChainStakeRequirement struct {
	ChainID               string
	MinimumStake          uint64
	RequiresSpecialAccess bool   // e.g., B-chain bridge validators
	AccessRequirements    string // Description of special requirements
}

ChainStakeRequirement defines chain-specific staking requirements

type NFTTier added in v1.16.56

type NFTTier struct {
	Name              string
	RequiredLUX       uint64 // Base LUX requirement with NFT
	StakingMultiplier uint32 // Reward multiplier percentage
	MaxValidators     uint32 // Max validators in this tier
}

NFTTier represents different validator NFT tiers

type PrismParameters added in v1.16.56

type PrismParameters struct {
	NumParents          int
	NumNodes            int
	AlphaPreference     int
	AlphaConfidence     int
	K                   int
	MaxOutstandingItems int
}

PrismParameters contains prism protocol parameters

type RouterHealthConfig added in v1.16.56

type RouterHealthConfig struct {
	MaxTimeSinceMsgReceived time.Duration
	MaxTimeSinceMsgSent     time.Duration
	MaxPortionSendQueueFull float64
	MinConnectedPeers       uint
	ReadTimeout             time.Duration
	WriteTimeout            time.Duration
	MaxSendFailRate         float64
	MaxDropRate             float64
	MaxOutstandingRequests  int
	MaxOutstandingDuration  time.Duration
	MaxRunTimeRequests      time.Duration
	MaxDropRateHalflife     time.Duration
}

RouterHealthConfig contains configuration for router health checks

type StakingConfig added in v1.16.56

type StakingConfig struct {
	// Minimum stake: 1M LUX for validators
	MinimumValidatorStake uint64

	// NFT staking tiers
	NFTStakingEnabled bool
	NFTTiers          []NFTTier

	// Delegation parameters
	MinimumDelegatorStake uint64
	MaxDelegationRatio    uint32

	// Chain-specific validator requirements
	ChainValidatorRequirements map[string]ChainStakeRequirement

	// Combined staking (NFT + delegation + staked) to reach minimum
	AllowCombinedStaking bool
}

StakingConfig defines staking parameters

type TokenomicsConfig added in v1.16.56

type TokenomicsConfig struct {
	// Total supply: 2T tokens
	TotalSupply uint64

	// Airdrop configuration for legacy token holders
	AirdropConfig AirdropConfig

	// Staking requirements
	StakingConfig StakingConfig

	// Chain-specific allocations
	ChainAllocations map[string]uint64
}

TokenomicsConfig defines the token economics for the Lux Network

func DefaultTokenomicsConfig added in v1.16.56

func DefaultTokenomicsConfig() *TokenomicsConfig

DefaultTokenomicsConfig returns the default tokenomics configuration

func (*TokenomicsConfig) GetMinimumStake added in v1.16.56

func (c *TokenomicsConfig) GetMinimumStake(hasNFT bool, nftTier string) uint64

GetMinimumStake returns the minimum stake based on NFT ownership

func (*TokenomicsConfig) GetStakingMultiplier added in v1.16.56

func (c *TokenomicsConfig) GetStakingMultiplier(nftTier string) uint32

GetStakingMultiplier returns the reward multiplier for a given NFT tier

type TrackerTargeterConfig added in v1.16.56

type TrackerTargeterConfig struct {
	VdrAlloc           float64 `json:"vdrAlloc"`
	MaxNonVdrUsage     float64 `json:"maxNonVdrUsage"`
	MaxNonVdrNodeUsage float64 `json:"maxNonVdrNodeUsage"`
}

TrackerTargeterConfig contains resource allocation configurations

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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