constants

package
v2.0.0-alpha.1 Latest Latest
Warning

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

Go to latest
Published: Aug 2, 2025 License: BSD-3-Clause Imports: 9 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// PlatformName exports the name of the platform
	PlatformName = "lux"

	// AppName exports the name of the lux application
	AppName = "luxd"
)

Const variables to be exported

View Source
const (
	MainnetID  uint32 = 1
	CascadeID  uint32 = 2
	DenaliID   uint32 = 3
	EverestID  uint32 = 4
	TestnetID  uint32 = 5
	UnitTestID uint32 = 10
	LocalID    uint32 = 12345

	// Lux Network IDs
	LuxMainnetID uint32 = 96369
	LuxTestnetID uint32 = 96368

	MainnetName    = "mainnet"
	CascadeName    = "cascade"
	DenaliName     = "denali"
	EverestName    = "everest"
	TestnetName    = "testnet"
	UnitTestName   = "testing"
	LocalName      = "local"
	LuxMainnetName = "lux-mainnet"
	LuxTestnetName = "lux-testnet"

	MainnetHRP    = "lux"
	CascadeHRP    = "cascade"
	DenaliHRP     = "denali"
	EverestHRP    = "everest"
	TestnetHRP    = "testnet"
	UnitTestHRP   = "testing"
	LocalHRP      = "local"
	LuxMainnetHRP = "lux"
	LuxTestnetHRP = "lux-test"
	FallbackHRP   = "custom"
)

Const variables to be exported

View Source
const (
	// The network must be "tcp", "tcp4", "tcp6", "unix" or "unixpacket".
	NetworkType = "tcp"

	DefaultMaxMessageSize  = 2 * units.MiB
	DefaultPingPongTimeout = 30 * time.Second
	DefaultPingFrequency   = 3 * DefaultPingPongTimeout / 4
	DefaultByteSliceCap    = 128

	MaxContainersLen = int(4 * DefaultMaxMessageSize / 5)

	DefaultNetworkPeerListNumValidatorIPs        = 15
	DefaultNetworkPeerListValidatorGossipSize    = 20
	DefaultNetworkPeerListNonValidatorGossipSize = 0
	DefaultNetworkPeerListPeersGossipSize        = 10
	DefaultNetworkPeerListGossipFreq             = time.Minute
	DefaultNetworkPeerListPullGossipFreq         = 2 * time.Second
	DefaultNetworkPeerListBloomResetFreq         = time.Minute

	// Inbound Connection Throttling
	DefaultInboundConnUpgradeThrottlerCooldown = 10 * time.Second
	DefaultInboundThrottlerMaxConnsPerSec      = 256

	// Outbound Connection Throttling
	DefaultOutboundConnectionThrottlingRps = 50
	DefaultOutboundConnectionTimeout       = 30 * time.Second

	// Timeouts
	DefaultNetworkInitialTimeout                   = 5 * time.Second
	DefaultNetworkMinimumTimeout                   = 2 * time.Second
	DefaultNetworkMaximumTimeout                   = 10 * time.Second
	DefaultNetworkMaximumInboundTimeout            = 10 * time.Second
	DefaultNetworkTimeoutHalflife                  = 5 * time.Minute
	DefaultNetworkTimeoutCoefficient               = 2
	DefaultNetworkReadHandshakeTimeout             = 15 * time.Second
	DefaultNoIngressValidatorConnectionGracePeriod = 10 * time.Minute

	DefaultNetworkCompressionType           = compression.TypeZstd
	DefaultNetworkMaxClockDifference        = time.Minute
	DefaultNetworkRequireValidatorToConnect = false
	DefaultNetworkPeerReadBufferSize        = 8 * units.KiB
	DefaultNetworkPeerWriteBufferSize       = 8 * units.KiB

	DefaultNetworkTCPProxyEnabled = false

	// The PROXY protocol specification recommends setting this value to be at
	// least 3 seconds to cover a TCP retransmit.
	// Ref: https://www.haproxy.org/download/2.3/doc/proxy-protocol.txt
	// Specifying a timeout of 0 will actually result in a timeout of 200ms, but
	// a timeout of 0 should generally not be provided.
	DefaultNetworkTCPProxyReadTimeout = 3 * time.Second

	// Benchlist
	DefaultBenchlistFailThreshold      = 10
	DefaultBenchlistDuration           = 15 * time.Minute
	DefaultBenchlistMinFailingDuration = 2*time.Minute + 30*time.Second

	// Router
	DefaultConsensusAppConcurrency  = 2
	DefaultConsensusShutdownTimeout = time.Minute
	DefaultFrontierPollFrequency    = 100 * time.Millisecond

	// Inbound Throttling
	DefaultInboundThrottlerAtLargeAllocSize         = 6 * units.MiB
	DefaultInboundThrottlerVdrAllocSize             = 32 * units.MiB
	DefaultInboundThrottlerNodeMaxAtLargeBytes      = DefaultMaxMessageSize
	DefaultInboundThrottlerMaxProcessingMsgsPerNode = 1024
	DefaultInboundThrottlerBandwidthRefillRate      = 512 * units.KiB
	DefaultInboundThrottlerBandwidthMaxBurstSize    = DefaultMaxMessageSize
	DefaultInboundThrottlerCPUMaxRecheckDelay       = 5 * time.Second
	DefaultInboundThrottlerDiskMaxRecheckDelay      = 5 * time.Second
	MinInboundThrottlerMaxRecheckDelay              = time.Millisecond

	// Outbound Throttling
	DefaultOutboundThrottlerAtLargeAllocSize    = 32 * units.MiB
	DefaultOutboundThrottlerVdrAllocSize        = 32 * units.MiB
	DefaultOutboundThrottlerNodeMaxAtLargeBytes = DefaultMaxMessageSize

	// Network Health
	DefaultHealthCheckAveragerHalflife = 10 * time.Second

	DefaultNetworkHealthMaxTimeSinceMsgSent     = time.Minute
	DefaultNetworkHealthMaxTimeSinceMsgReceived = time.Minute
	DefaultNetworkHealthMaxPortionSendQueueFill = 0.9
	DefaultNetworkHealthMinPeers                = 1
	DefaultNetworkHealthMaxSendFailRate         = .9

	// Metrics
	DefaultUptimeMetricFreq = 30 * time.Second

	// Delays
	DefaultNetworkInitialReconnectDelay = time.Second
	DefaultNetworkMaxReconnectDelay     = time.Minute
)
View Source
const (
	PlatformVMName = "platformvm" // P-Chain: Platform VM
	QuantumVMName  = "quantumvm"  // Q-Chain: Quantum VM
	XVMName        = "xvm"        // X-Chain: Exchange VM
	EVMName        = "evm"        // C-Chain: Ethereum VM
	SubnetEVMName  = "subnetevm"
	XSVMName       = "xsvm"
	AIVMName       = "aivm"     // A-Chain: AI VM
	BridgeVMName   = "bridgevm" // B-Chain: Bridge VM
	ZKVMName       = "zkvm"     // Z-Chain: ZK VM
	MPCVMName      = "mpcvm"    // M-Chain: MPC VM
)
View Source
const ChainAliasPrefix string = "bc"

ChainAliasPrefix denotes a prefix for an alias that belongs to a blockchain ID.

View Source
const PointerOverhead = 8

PointerOverhead is used to approximate the memory footprint from allocating a pointer.

Variables

View Source
var (
	// Core chains
	PlatformChainID = ids.Empty.Prefix(0) // P-Chain: Platform chain for validator management
	QuantumChainID  = ids.Empty.Prefix(1) // Q-Chain: Quantum chain for post-quantum finality

	// User-facing chains
	CChainID = ids.Empty.Prefix(2) // C-Chain: EVM-compatible smart contract chain
	XChainID = ids.Empty.Prefix(3) // X-Chain: Asset exchange chain

	// Genesis NFT-gated chains
	BridgeChainID = ids.Empty.Prefix(4) // B-Chain: Bridge chain for cross-chain operations
	MPCChainID    = ids.Empty.Prefix(5) // M-Chain: MPC chain for threshold signatures

	// Specialized opt-in chains
	AIChainID = ids.Empty.Prefix(6) // A-Chain: AI operations chain
	ZKChainID = ids.Empty.Prefix(7) // Z-Chain: Zero-knowledge proof chain
)

Chain IDs for the 8-chain architecture

View Source
var (
	// ActivatedLPs is the set of LPs that are activated.
	//
	// See: https://github.com/orgs/luxfi/projects/1
	ActivatedLPs = set.Of[uint32](

		23,
		24,
		25,
		30,
		31,
		41,
		62,

		77,
		103,
		118,
		125,
		131,
		151,
	)

	// CurrentLPs is the set of LPs that are currently, at the time of
	// release, marked as implementable and not activated.
	//
	// See: https://github.com/orgs/luxfi/projects/1
	CurrentLPs = set.Of[uint32](
		176,
	)

	// ScheduledLPs are the LPs included into the next upgrade.
	ScheduledLPs = set.Of[uint32](
		176,
	)
)

Variables to be exported

View Source
var (
	PlatformVMID = ids.ID{'p', 'l', 'a', 't', 'f', 'o', 'r', 'm', 'v', 'm'} // P-Chain: Platform VM
	QuantumVMID  = ids.ID{'q', 'u', 'a', 'n', 't', 'u', 'm', 'v', 'm'}      // Q-Chain: Quantum VM
	XVMID        = ids.ID{'a', 'v', 'm'}                                    // X-Chain: Exchange VM
	EVMID        = ids.ID{'e', 'v', 'm'}                                    // C-Chain: Ethereum VM
	SubnetEVMID  = ids.ID{'s', 'u', 'b', 'n', 'e', 't', 'e', 'v', 'm'}
	XSVMID       = ids.ID{'x', 's', 'v', 'm'}
	AIVMID       = ids.ID{'a', 'i', 'v', 'm'}                     // A-Chain: AI VM (native AI support)
	BridgeVMID   = ids.ID{'b', 'r', 'i', 'd', 'g', 'e', 'v', 'm'} // B-Chain: Bridge VM (wraps M/Z)
	ZKVMID       = ids.ID{'z', 'k', 'v', 'm'}                     // Z-Chain: ZK VM
	MPCVMID      = ids.ID{'m', 'p', 'c', 'v', 'm'}                // M-Chain: MPC VM
)

Functions

func ChainName

func ChainName(chainID ids.ID) string

ChainName returns the human-readable name for a chain ID

func GetHRP

func GetHRP(networkID uint32) string

GetHRP returns the Human-Readable-Part of bech32 addresses for a networkID

func IsCoreChain

func IsCoreChain(chainID ids.ID) bool

IsCoreChain returns true if the chain is required for all validators

func IsGenesisGatedChain

func IsGenesisGatedChain(chainID ids.ID) bool

IsGenesisGatedChain returns true if the chain requires Genesis NFT ownership

func IsOptInChain

func IsOptInChain(chainID ids.ID) bool

IsOptInChain returns true if the chain is optional for validators

func NetworkID

func NetworkID(networkName string) (uint32, error)

NetworkID returns the ID of the network with name [networkName]

func NetworkName

func NetworkName(networkID uint32) string

NetworkName returns a human readable name for the network with ID [networkID]

func VMName

func VMName(vmID ids.ID) string

VMName returns the name of the VM with the provided ID. If a human readable name isn't known, then the formatted ID is returned.

Types

This section is empty.

Jump to

Keyboard shortcuts

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