network

package
v0.0.1 Latest Latest
Warning

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

Go to latest
Published: Jun 27, 2024 License: BSD-3-Clause Imports: 17 Imported by: 0

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 NewOdysseyGoGenesis

func NewOdysseyGoGenesis(
	networkID uint32,
	aChainBalances []AddrAndBalance,
	dChainBalances []AddrAndBalance,
	genesisVdrs []ids.NodeID,
) ([]byte, error)

Return a genesis JSON where: The nodes in [genesisVdrs] are validators. The D-Chain and A-Chain balances are given by [dChainBalances] and [aChainBalances]. 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

type ElasticSubnetSpec struct {
	SubnetID                  *string
	AssetName                 string
	AssetSymbol               string
	InitialSupply             uint64
	MaxSupply                 uint64
	MinConsumptionRate        uint64
	MaxConsumptionRate        uint64
	MinValidatorStake         uint64
	MaxValidatorStake         uint64
	MinValidatorStakeDuration time.Duration
	MaxValidatorStakeDuration time.Duration
	MinDelegatorStakeDuration time.Duration
	MaxDelegatorStakeDuration 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 Odyssey network

type PermissionlessValidatorSpec

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

type RemoveSubnetValidatorSpec

type RemoveSubnetValidatorSpec struct {
	NodeNames []string
	SubnetID  string
}

type SubnetSpec

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