Documentation
¶
Index ¶
- Constants
- Variables
- func BuildFlagSet() *pflag.FlagSet
- func BuildViper(fs *pflag.FlagSet, args []string) (*viper.Viper, error)
- func EnvVarName(prefix string, key string) string
- func GetNodeConfig(v *viper.Viper) (node.Config, error)
- type AirdropConfig
- type BadgerDBConfig
- type BenchlistConfig
- type ChainDatabaseConfig
- type ChainStakeRequirement
- type NFTTier
- type PrismParameters
- type RouterHealthConfig
- type StakingConfig
- type TokenomicsConfig
- type TrackerTargeterConfig
Constants ¶
const ( DefaultHTTPPort = 9630 DefaultStakingPort = 9631 LuxNodeDataDirVar = "LUXD_DATA_DIR" DefaultProcessContextFilename = "process.json" )
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" )
const EnvPrefix = "luxd"
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 ¶
var DashesToUnderscores = strings.NewReplacer("-", "_")
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 ¶
BuildFlagSet returns a complete set of flags for node
func BuildViper ¶
BuildViper returns the viper environment from parsing config file from default search paths and any parsed command line flags
func EnvVarName ¶
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
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