network

package
v1.6.4 Latest Latest
Warning

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

Go to latest
Published: May 19, 2024 License: BSD-3-Clause Imports: 17 Imported by: 4

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrUndefined    = errors.New("undefined network")
	ErrStopped      = errors.New("network stopped")
	ErrNodeNotFound = errors.New("node not found in network")
)

Functions

func LoadLocalGenesis

func LoadLocalGenesis() (map[string]interface{}, error)

LoadLocalGenesis loads the local network genesis from disk and returns it as a map[string]interface{}

func NewMetalGoGenesis

func NewMetalGoGenesis(
	networkID uint32,
	xChainBalances []AddrAndBalance,
	cChainBalances []AddrAndBalance,
	genesisVdrs []ids.NodeID,
) ([]byte, error)

Return a genesis JSON where: The nodes in [genesisVdrs] are validators. The C-Chain and X-Chain balances are given by [cChainBalances] and [xChainBalances]. Note that many of the genesis fields (i.e. reward addresses) are randomly generated or hard-coded.

Types

type AddrAndBalance

type AddrAndBalance struct {
	Addr    ids.ShortID
	Balance *big.Int
}

AddrAndBalance holds both an address and its balance

type BlockchainSpec

type BlockchainSpec struct {
	VMName             string
	Genesis            []byte
	SubnetID           *string
	SubnetSpec         *SubnetSpec
	ChainConfig        []byte
	NetworkUpgrade     []byte
	BlockchainAlias    string
	PerNodeChainConfig map[string][]byte
}

type Config

type Config struct {
	// Must not be empty
	Genesis string `json:"genesis"`
	// May have length 0
	// (i.e. network may have no nodes on creation.)
	NodeConfigs []node.Config `json:"nodeConfigs"`
	// Flags that will be passed to each node in this network.
	// It can be empty.
	// Config flags may also be passed in a node's config struct
	// or config file.
	// The precedence of flags handling is, from highest to lowest:
	// 1. Flags defined in a node's node.Config
	// 2. Flags defined in a network's network.Config
	// 3. Flags defined in a node's config file
	// For example, if a network.Config has flag W set to X,
	// and a node within that network has flag W set to Y,
	// and the node's config file has flag W set to Z,
	// then the node will be started with flag W set to Y.
	Flags map[string]interface{} `json:"flags"`
	// Binary path to use per default, if not specified in node config
	BinaryPath string `json:"binaryPath"`
	// Chain config files to use per default, if not specified in node config
	ChainConfigFiles map[string]string `json:"chainConfigFiles"`
	// Upgrade config files to use per default, if not specified in node config
	UpgradeConfigFiles map[string]string `json:"upgradeConfigFiles"`
	// Subnet config files to use per default, if not specified in node config
	SubnetConfigFiles map[string]string `json:"subnetConfigFiles"`
}

Config that defines a network when it is created.

func (*Config) Validate

func (c *Config) Validate() error

Validate returns an error if this config is invalid

type ElasticSubnetSpec added in v1.5.0

type ElasticSubnetSpec struct {
	SubnetID                 *string
	AssetName                string
	AssetSymbol              string
	InitialSupply            uint64
	MaxSupply                uint64
	MinConsumptionRate       uint64
	MaxConsumptionRate       uint64
	MinValidatorStake        uint64
	MaxValidatorStake        uint64
	MinStakeDuration         time.Duration
	MaxStakeDuration         time.Duration
	MinDelegationFee         uint32
	MinDelegatorStake        uint64
	MaxValidatorWeightFactor byte
	UptimeRequirement        uint32
}

type Network

type Network interface {
	// Returns nil if all the nodes in the network are healthy.
	// A stopped network is considered unhealthy.
	// Timeout is given by the context parameter.
	Healthy(context.Context) error
	// Stop all the nodes.
	// Returns ErrStopped if Stop() was previously called.
	Stop(context.Context) error
	// Start a new node with the given config.
	// Returns ErrStopped if Stop() was previously called.
	AddNode(node.Config) (node.Node, error)
	// Stop the node with this name.
	// Returns ErrStopped if Stop() was previously called.
	RemoveNode(ctx context.Context, name string) error
	// Pause the node with this name.
	// Returns ErrStopped if Stop() was previously called.
	PauseNode(ctx context.Context, name string) error
	// Resume the node with this name.
	// Returns ErrStopped if Stop() was previously called.
	ResumeNode(ctx context.Context, name string) error
	// Return the node with this name.
	// Returns ErrStopped if Stop() was previously called.
	GetNode(name string) (node.Node, error)
	// Return all the nodes in this network.
	// Node name --> Node.
	// Returns ErrStopped if Stop() was previously called.
	GetAllNodes() (map[string]node.Node, error)
	// Returns the names of all nodes in this network.
	// Returns ErrStopped if Stop() was previously called.
	GetNodeNames() ([]string, error)
	// Save network snapshot
	// Network is stopped in order to do a safe preservation
	// Returns the full local path to the snapshot dir
	SaveSnapshot(context.Context, string) (string, error)
	// Remove network snapshot
	RemoveSnapshot(string) error
	// Get name of available snapshots
	GetSnapshotNames() ([]string, error)
	// Restart a given node using the same config, optionally changing binary path, plugin dir,
	// track subnets, a map of chain configs, a map of upgrade configs, and
	// a map of subnet configs
	RestartNode(context.Context, string, string, string, string, map[string]string, map[string]string, map[string]string) error
	// Create the specified blockchains
	CreateBlockchains(context.Context, []BlockchainSpec) ([]ids.ID, error)
	// Create the given numbers of subnets
	CreateSubnets(context.Context, []SubnetSpec) ([]ids.ID, error)
	// Transform subnet into elastic subnet
	TransformSubnet(context.Context, []ElasticSubnetSpec) ([]ids.ID, []ids.ID, error)
	// Add a validator into an elastic subnet
	AddPermissionlessValidators(context.Context, []PermissionlessValidatorSpec) error
	// Remove a validator from a subnet
	RemoveSubnetValidators(context.Context, []RemoveSubnetValidatorSpec) error
	// Get the elastic subnet tx id for the given subnet id
	GetElasticSubnetID(context.Context, ids.ID) (ids.ID, error)
}

Network is an abstraction of an Metal network

type PermissionlessValidatorSpec added in v1.6.0

type PermissionlessValidatorSpec struct {
	SubnetID      string
	AssetID       string
	NodeName      string
	StakedAmount  uint64
	StartTime     time.Time
	StakeDuration time.Duration
}

type RemoveSubnetValidatorSpec added in v1.6.0

type RemoveSubnetValidatorSpec struct {
	NodeNames []string
	SubnetID  string
}

type SubnetSpec added in v1.4.1

type SubnetSpec struct {
	Participants []string
	SubnetConfig []byte
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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