genesis

package
v0.2.0 Latest Latest
Warning

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

Go to latest
Published: Nov 12, 2021 License: BSD-3-Clause Imports: 25 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (

	// CostonParams are the params used for the Coston test network.
	CostonParams = Params{
		TxFeeConfig: TxFeeConfig{
			TxFee:                 units.MilliAvax,
			CreateAssetTxFee:      10 * units.MilliAvax,
			CreateSubnetTxFee:     100 * units.MilliAvax,
			CreateBlockchainTxFee: 100 * units.MilliAvax,
		},
		StakingConfig: StakingConfig{
			UptimeRequirement:  .6,
			MinValidatorStake:  1 * units.Avax,
			MaxValidatorStake:  3 * units.MegaAvax,
			MinDelegatorStake:  1 * units.Avax,
			MinDelegationFee:   20000,
			MinStakeDuration:   24 * time.Hour,
			MaxStakeDuration:   365 * 24 * time.Hour,
			StakeMintingPeriod: 365 * 24 * time.Hour,
		},
		EpochConfig: EpochConfig{
			EpochFirstTransition: time.Unix(1607626800, 0),
			EpochDuration:        6 * time.Hour,
		},
	}
)
View Source
var (

	// FlareParams are the params used for the Flare main network.
	FlareParams = Params{
		TxFeeConfig: TxFeeConfig{
			TxFee:                 units.MilliAvax,
			CreateAssetTxFee:      10 * units.MilliAvax,
			CreateSubnetTxFee:     1 * units.Avax,
			CreateBlockchainTxFee: 1 * units.Avax,
		},
		StakingConfig: StakingConfig{
			UptimeRequirement:  .6,
			MinValidatorStake:  2 * units.KiloAvax,
			MaxValidatorStake:  3 * units.MegaAvax,
			MinDelegatorStake:  25 * units.Avax,
			MinDelegationFee:   20000,
			MinStakeDuration:   2 * 7 * 24 * time.Hour,
			MaxStakeDuration:   365 * 24 * time.Hour,
			StakeMintingPeriod: 365 * 24 * time.Hour,
		},
		EpochConfig: EpochConfig{
			EpochFirstTransition: time.Unix(1607626800, 0),
			EpochDuration:        6 * time.Hour,
		},
	}
)
View Source
var (

	// LocalParams are the params used for local networks
	LocalParams = Params{
		TxFeeConfig: TxFeeConfig{
			TxFee:                 units.MilliAvax,
			CreateAssetTxFee:      units.MilliAvax,
			CreateSubnetTxFee:     100 * units.MilliAvax,
			CreateBlockchainTxFee: 100 * units.MilliAvax,
		},
		StakingConfig: StakingConfig{
			UptimeRequirement:  .6,
			MinValidatorStake:  2 * units.KiloAvax,
			MaxValidatorStake:  3 * units.MegaAvax,
			MinDelegatorStake:  25 * units.Avax,
			MinDelegationFee:   20000,
			MinStakeDuration:   24 * time.Hour,
			MaxStakeDuration:   365 * 24 * time.Hour,
			StakeMintingPeriod: 365 * 24 * time.Hour,
		},
		EpochConfig: EpochConfig{
			EpochFirstTransition: time.Unix(1607626800, 0),
			EpochDuration:        6 * time.Hour,
		},
	}
)
View Source
var (

	// SongbirdParams are the params used for the Songbird canary network.
	SongbirdParams = Params{
		TxFeeConfig: TxFeeConfig{
			TxFee:                 units.MilliAvax,
			CreateAssetTxFee:      10 * units.MilliAvax,
			CreateSubnetTxFee:     100 * units.MilliAvax,
			CreateBlockchainTxFee: 100 * units.MilliAvax,
		},
		StakingConfig: StakingConfig{
			UptimeRequirement:  .6,
			MinValidatorStake:  1 * units.Avax,
			MaxValidatorStake:  3 * units.MegaAvax,
			MinDelegatorStake:  1 * units.Avax,
			MinDelegationFee:   20000,
			MinStakeDuration:   24 * time.Hour,
			MaxStakeDuration:   365 * 24 * time.Hour,
			StakeMintingPeriod: 365 * 24 * time.Hour,
		},
		EpochConfig: EpochConfig{
			EpochFirstTransition: time.Unix(1607626800, 0),
			EpochDuration:        6 * time.Hour,
		},
	}
)

Functions

func AVAXAssetID

func AVAXAssetID(avmGenesisBytes []byte) (ids.ID, error)

func Aliases

func Aliases(genesisBytes []byte) (map[string][]string, map[ids.ID][]string, error)

Aliases returns the default aliases based on the network ID

func FromConfig

func FromConfig(config *Config) ([]byte, ids.ID, error)

FromConfig returns:

  1. The byte representation of the genesis state of the platform chain (ie the genesis state of the network)
  2. The asset ID of AVAX

func Genesis

func Genesis(networkID uint32, filepath string) ([]byte, ids.ID, error)

Genesis returns the genesis data of the Platform Chain.

Since an Avalanche network has exactly one Platform Chain, and the Platform Chain defines the genesis state of the network (who is staking, which chains exist, etc.), defining the genesis state of the Platform Chain is the same as defining the genesis state of the network.

Genesis accepts: 1) The ID of the new network. [networkID] 2) The location of a custom genesis config to load. filepath

If filepath is empty or the given network ID is Mainnet, Testnet, or Local, loads the network genesis state from predefined configs. If filepath is non-empty and networkID isn't Mainnet, Testnet, or Local, loads the network genesis data from the config at filepath.

Genesis returns:

  1. The byte representation of the genesis state of the platform chain (ie the genesis state of the network)
  2. The asset ID of AVAX

func GetCChainAliases

func GetCChainAliases() []string

func GetVMAliases

func GetVMAliases() map[ids.ID][]string

func GetXChainAliases

func GetXChainAliases() []string

func SampleBeacons

func SampleBeacons(networkID uint32, count int) ([]string, []string)

SampleBeacons returns the some beacons this node should connect to

func VMGenesis

func VMGenesis(genesisBytes []byte, vmID ids.ID) (*platformvm.Tx, error)

Types

type Allocation

type Allocation struct {
	ETHAddr        ids.ShortID    `json:"ethAddr"`
	AVAXAddr       ids.ShortID    `json:"avaxAddr"`
	InitialAmount  uint64         `json:"initialAmount"`
	UnlockSchedule []LockedAmount `json:"unlockSchedule"`
}

func (Allocation) Unparse

func (a Allocation) Unparse(networkID uint32) (UnparsedAllocation, error)

type Config

type Config struct {
	NetworkID uint32 `json:"networkID"`

	Allocations []Allocation `json:"allocations"`

	StartTime                  uint64        `json:"startTime"`
	InitialStakeDuration       uint64        `json:"initialStakeDuration"`
	InitialStakeDurationOffset uint64        `json:"initialStakeDurationOffset"`
	InitialStakedFunds         []ids.ShortID `json:"initialStakedFunds"`
	InitialStakers             []Staker      `json:"initialStakers"`

	CChainGenesis string `json:"cChainGenesis"`

	Message string `json:"message"`
}

Config contains the genesis addresses used to construct a genesis

var (
	// FlareConfig is the config that should be used to generate the Flare
	// main network genesis.
	FlareConfig Config

	// SongbirdConfig is the config that should be used to generate the Songbird
	// canary network genesis.
	SongbirdConfig Config

	// CostonConfig is the config tat should be used to generate the Coston test
	// network genesis.
	CostonConfig Config

	// LocalConfig is the config that should be used to generate a local
	// genesis.
	LocalConfig Config
)

func GetConfig

func GetConfig(networkID uint32) *Config

func GetConfigFile

func GetConfigFile(fp string) (*Config, error)

GetConfigFile loads a *Config from a provided filepath.

func (*Config) InitialSupply

func (c *Config) InitialSupply() (uint64, error)

func (Config) Unparse

func (c Config) Unparse() (UnparsedConfig, error)

type EpochConfig

type EpochConfig struct {
	// EpochFirstTransition is the time that the transition from epoch 0 to 1
	// should occur.
	EpochFirstTransition time.Time `json:"epochFirstTransition"`
	// EpochDuration is the amount of time that an epoch runs for.
	EpochDuration time.Duration `json:"epochDuration"`
}

func GetEpochConfig

func GetEpochConfig(networkID uint32) EpochConfig

type LockedAmount

type LockedAmount struct {
	Amount   uint64 `json:"amount"`
	Locktime uint64 `json:"locktime"`
}

type Params

type Params struct {
	StakingConfig
	TxFeeConfig
	EpochConfig
}

type Staker

type Staker struct {
	NodeID        ids.ShortID `json:"nodeID"`
	RewardAddress ids.ShortID `json:"rewardAddress"`
	DelegationFee uint32      `json:"delegationFee"`
}

func (Staker) Unparse

func (s Staker) Unparse(networkID uint32) (UnparsedStaker, error)

type StakingConfig

type StakingConfig struct {
	// Staking uptime requirements
	UptimeRequirement float64 `json:"uptimeRequirement"`
	// Minimum stake, in nAVAX, required to validate the primary network
	MinValidatorStake uint64 `json:"minValidatorStake"`
	// Maximum stake, in nAVAX, allowed to be placed on a single validator in
	// the primary network
	MaxValidatorStake uint64 `json:"maxValidatorStake"`
	// Minimum stake, in nAVAX, that can be delegated on the primary network
	MinDelegatorStake uint64 `json:"minDelegatorStake"`
	// Minimum delegation fee, in the range [0, 1000000], that can be charged
	// for delegation on the primary network.
	MinDelegationFee uint32 `json:"minDelegationFee"`
	// MinStakeDuration is the minimum amount of time a validator can validate
	// for in a single period.
	MinStakeDuration time.Duration `json:"minStakeDuration"`
	// MaxStakeDuration is the maximum amount of time a validator can validate
	// for in a single period.
	MaxStakeDuration time.Duration `json:"maxStakeDuration"`
	// StakeMintingPeriod is the amount of time for a consumption period.
	StakeMintingPeriod time.Duration `json:"stakeMintingPeriod"`
}

func GetStakingConfig

func GetStakingConfig(networkID uint32) StakingConfig

type TxFeeConfig

type TxFeeConfig struct {
	// Transaction fee
	TxFee uint64 `json:"txFee"`
	// Transaction fee for create asset transactions
	CreateAssetTxFee uint64 `json:"createAssetTxFee"`
	// Transaction fee for create subnet transactions
	CreateSubnetTxFee uint64 `json:"createSubnetTxFee"`
	// Transaction fee for create blockchain transactions
	CreateBlockchainTxFee uint64 `json:"createBlockchainTxFee"`
}

func GetTxFeeConfig

func GetTxFeeConfig(networkID uint32) TxFeeConfig

type UnparsedAllocation

type UnparsedAllocation struct {
	ETHAddr        string         `json:"ethAddr"`
	AVAXAddr       string         `json:"avaxAddr"`
	InitialAmount  uint64         `json:"initialAmount"`
	UnlockSchedule []LockedAmount `json:"unlockSchedule"`
}

func (UnparsedAllocation) Parse

func (ua UnparsedAllocation) Parse() (Allocation, error)

type UnparsedConfig

type UnparsedConfig struct {
	NetworkID uint32 `json:"networkID"`

	Allocations []UnparsedAllocation `json:"allocations"`

	StartTime                  uint64           `json:"startTime"`
	InitialStakeDuration       uint64           `json:"initialStakeDuration"`
	InitialStakeDurationOffset uint64           `json:"initialStakeDurationOffset"`
	InitialStakedFunds         []string         `json:"initialStakedFunds"`
	InitialStakers             []UnparsedStaker `json:"initialStakers"`

	CChainGenesis string `json:"cChainGenesis"`

	Message string `json:"message"`
}

UnparsedConfig contains the genesis addresses used to construct a genesis

func (UnparsedConfig) Parse

func (uc UnparsedConfig) Parse() (Config, error)

type UnparsedStaker

type UnparsedStaker struct {
	NodeID        string `json:"nodeID"`
	RewardAddress string `json:"rewardAddress"`
	DelegationFee uint32 `json:"delegationFee"`
}

func (UnparsedStaker) Parse

func (us UnparsedStaker) Parse() (Staker, error)

Jump to

Keyboard shortcuts

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