Help us shape the future of Go! Take the 2026 Go Developer Survey

upgrade

package module
v1.0.4 Latest Latest
Warning

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

Go to latest
Published: Aug 28, 2026 License: BSD-3-Clause Imports: 4 Imported by: 12

Documentation

Index

Constants

View Source
const (
	MainnetID uint32 = 1
	TestnetID uint32 = 5
)

Network IDs - inlined to avoid circular dependency with node package

Variables

View Source
var (
	InitiallyActiveTime       = time.Date(2020, time.December, 5, 5, 0, 0, 0, time.UTC)
	UnscheduledActivationTime = time.Date(9999, time.December, 1, 0, 0, 0, 0, time.UTC)

	// Lux is a fresh-genesis network: every Avalanche-inherited fork gate
	// (ApricotPhase1-6, Banff, Cortina, Durango) and the now-historical
	// Lux-native gates (Quasar, Fortuna) are collapsed to InitiallyActiveTime,
	// so each is active from block 0. Because the historical dates are all in
	// the past, a genesis-active timestamp is behaviorally identical for any
	// live block. Granite stays UnscheduledActivationTime: it is a not-yet-live
	// Lux upgrade, not Avalanche legacy, so activating it is a consensus
	// decision rather than a mechanical de-Avalanche collapse. Per-network
	// VALUES (X-Chain stop vertex, epoch duration) are preserved; only the gate
	// TIMES collapse.
	Mainnet = Config{
		ApricotPhase1Time:            InitiallyActiveTime,
		ApricotPhase2Time:            InitiallyActiveTime,
		ApricotPhase3Time:            InitiallyActiveTime,
		ApricotPhase4Time:            InitiallyActiveTime,
		ApricotPhase4MinPChainHeight: 0,
		ApricotPhase5Time:            InitiallyActiveTime,
		ApricotPhasePre6Time:         InitiallyActiveTime,
		ApricotPhase6Time:            InitiallyActiveTime,
		ApricotPhasePost6Time:        InitiallyActiveTime,
		BanffTime:                    InitiallyActiveTime,
		CortinaTime:                  InitiallyActiveTime,

		CortinaXChainStopVertexID: ids.FromStringOrPanic("jrGWDh5Po9FMj54depyunNixpia5PN4aAYxfmNzU8n752Rjga"),
		DurangoTime:               InitiallyActiveTime,
		QuasarTime:                InitiallyActiveTime,
		FortunaTime:               InitiallyActiveTime,
		GraniteTime:               UnscheduledActivationTime,
		GraniteEpochDuration:      5 * time.Minute,
	}
	// Testnet collapses identically to Mainnet (see above): all Avalanche-
	// inherited and historical Lux gate TIMES become genesis-active; Granite
	// stays future-gated; the X-Chain stop vertex and epoch duration are
	// preserved as per-network values.
	Testnet = Config{
		ApricotPhase1Time:            InitiallyActiveTime,
		ApricotPhase2Time:            InitiallyActiveTime,
		ApricotPhase3Time:            InitiallyActiveTime,
		ApricotPhase4Time:            InitiallyActiveTime,
		ApricotPhase4MinPChainHeight: 0,
		ApricotPhase5Time:            InitiallyActiveTime,
		ApricotPhasePre6Time:         InitiallyActiveTime,
		ApricotPhase6Time:            InitiallyActiveTime,
		ApricotPhasePost6Time:        InitiallyActiveTime,
		BanffTime:                    InitiallyActiveTime,
		CortinaTime:                  InitiallyActiveTime,

		CortinaXChainStopVertexID: ids.FromStringOrPanic("2D1cmbiG36BqQMRyHt4kFhWarmatA1ighSpND3FeFgz3vFVtCZ"),
		DurangoTime:               InitiallyActiveTime,
		QuasarTime:                InitiallyActiveTime,
		FortunaTime:               InitiallyActiveTime,
		GraniteTime:               UnscheduledActivationTime,
		GraniteEpochDuration:      5 * time.Minute,
	}
	Default = Config{
		ApricotPhase1Time:            InitiallyActiveTime,
		ApricotPhase2Time:            InitiallyActiveTime,
		ApricotPhase3Time:            InitiallyActiveTime,
		ApricotPhase4Time:            InitiallyActiveTime,
		ApricotPhase4MinPChainHeight: 0,
		ApricotPhase5Time:            InitiallyActiveTime,
		ApricotPhasePre6Time:         InitiallyActiveTime,
		ApricotPhase6Time:            InitiallyActiveTime,
		ApricotPhasePost6Time:        InitiallyActiveTime,
		BanffTime:                    InitiallyActiveTime,
		CortinaTime:                  InitiallyActiveTime,
		CortinaXChainStopVertexID:    ids.Empty,
		DurangoTime:                  InitiallyActiveTime,
		QuasarTime:                   InitiallyActiveTime,
		FortunaTime:                  InitiallyActiveTime,
		GraniteTime:                  UnscheduledActivationTime,
		GraniteEpochDuration:         30 * time.Second,
	}

	ErrInvalidUpgradeTimes = errors.New("invalid upgrade configuration")
)

Functions

This section is empty.

Types

type Config

type Config struct {
	ApricotPhase1Time            time.Time     `json:"apricotPhase1Time"`
	ApricotPhase2Time            time.Time     `json:"apricotPhase2Time"`
	ApricotPhase3Time            time.Time     `json:"apricotPhase3Time"`
	ApricotPhase4Time            time.Time     `json:"apricotPhase4Time"`
	ApricotPhase4MinPChainHeight uint64        `json:"apricotPhase4MinPChainHeight"`
	ApricotPhase5Time            time.Time     `json:"apricotPhase5Time"`
	ApricotPhasePre6Time         time.Time     `json:"apricotPhasePre6Time"`
	ApricotPhase6Time            time.Time     `json:"apricotPhase6Time"`
	ApricotPhasePost6Time        time.Time     `json:"apricotPhasePost6Time"`
	BanffTime                    time.Time     `json:"banffTime"`
	CortinaTime                  time.Time     `json:"cortinaTime"`
	CortinaXChainStopVertexID    ids.ID        `json:"cortinaXChainStopVertexID"`
	DurangoTime                  time.Time     `json:"durangoTime"`
	QuasarTime                   time.Time     `json:"quasarTime"`
	FortunaTime                  time.Time     `json:"fortunaTime"`
	GraniteTime                  time.Time     `json:"graniteTime"`
	GraniteEpochDuration         time.Duration `json:"graniteEpochDuration"`
}

func GetConfig

func GetConfig(networkID uint32) Config

func (*Config) IsApricotPhase1Activated

func (c *Config) IsApricotPhase1Activated(t time.Time) bool

func (*Config) IsApricotPhase2Activated

func (c *Config) IsApricotPhase2Activated(t time.Time) bool

func (*Config) IsApricotPhase3Activated

func (c *Config) IsApricotPhase3Activated(t time.Time) bool

func (*Config) IsApricotPhase4Activated

func (c *Config) IsApricotPhase4Activated(t time.Time) bool

func (*Config) IsApricotPhase5Activated

func (c *Config) IsApricotPhase5Activated(t time.Time) bool

func (*Config) IsApricotPhase6Activated

func (c *Config) IsApricotPhase6Activated(t time.Time) bool

func (*Config) IsApricotPhasePost6Activated

func (c *Config) IsApricotPhasePost6Activated(t time.Time) bool

func (*Config) IsApricotPhasePre6Activated

func (c *Config) IsApricotPhasePre6Activated(t time.Time) bool

func (*Config) IsBanffActivated

func (c *Config) IsBanffActivated(t time.Time) bool

func (*Config) IsCortinaActivated

func (c *Config) IsCortinaActivated(t time.Time) bool

func (*Config) IsDurangoActivated

func (c *Config) IsDurangoActivated(t time.Time) bool

func (*Config) IsFortunaActivated

func (c *Config) IsFortunaActivated(t time.Time) bool

func (*Config) IsGraniteActivated

func (c *Config) IsGraniteActivated(t time.Time) bool

func (*Config) IsQuasarActivated

func (c *Config) IsQuasarActivated(t time.Time) bool

func (*Config) Validate

func (c *Config) Validate() error

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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