net

package
v1.9.16 Latest Latest
Warning

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

Go to latest
Published: Dec 11, 2025 License: BSD-3-Clause Imports: 52 Imported by: 0

Documentation

Overview

Copyright (C) 2022-2025, Lux Industries Inc. All rights reserved. See the file LICENSE for licensing terms.

Copyright (C) 2022-2025, Lux Industries Inc. All rights reserved. See the file LICENSE for licensing terms.

Copyright (C) 2022-2025, Lux Industries Inc. All rights reserved. See the file LICENSE for licensing terms.

Index

Constants

View Source
const (
	WriteReadReadPerms = 0o644
)

Variables

View Source
var ErrNoSubnetAuthKeysInWallet = errors.New("auth wallet does not contain subnet auth keys")

Functions

func CheckNodeIsInSubnetPendingValidators

func CheckNodeIsInSubnetPendingValidators(subnetID ids.ID, nodeID string) (bool, error)

func CopySubnetChainConfigsToNetwork

func CopySubnetChainConfigsToNetwork(app *application.Lux, networkDir string) error

CopySubnetChainConfigsToNetwork copies chain configs from ~/.lux/subnets/<name>/ to each node's chainConfigs/<blockchainID>/ directory. This is necessary because subnet-evm requires genesis.json in the chain config directory for initialization. The canonical source is always ~/.lux/subnets/<name>/ and this function ensures the running network nodes have access to these configs.

func GetCurrentSupply

func GetCurrentSupply(subnetID ids.ID) error

func GetDefaultSubnetAirdropKeyInfo

func GetDefaultSubnetAirdropKeyInfo(app *application.Lux, blockchainName string) (string, string, string, error)

GetDefaultSubnetAirdropKeyInfo returns the default airdrop key information for a subnet

func GetFirstEndpoint

func GetFirstEndpoint(clusterInfo *rpcpb.ClusterInfo, chain string) string

GetFirstEndpoint get a human readable endpoint for the given chain

func GetLocallyDeployedNetIDs

func GetLocallyDeployedNetIDs(app *application.Lux) ([]string, error)

GetLocallyDeployedNetIDs returns a list of net IDs for locally deployed nets This is used for auto-tracking nets when starting the local network

func GetLocallyDeployedSubnetIDs

func GetLocallyDeployedSubnetIDs(app *application.Lux) ([]string, error)

GetLocallyDeployedSubnetIDs returns a list of subnet IDs for locally deployed subnets This is used for auto-tracking subnets when starting the local network Deprecated: Use GetLocallyDeployedNetIDs instead

func GetLocallyDeployedSubnets

func GetLocallyDeployedSubnets() (map[string]struct{}, error)

Returns an error if the server cannot be contacted. You may want to ignore this error.

func GetLocallyDeployedSubnetsFromFile

func GetLocallyDeployedSubnetsFromFile(app *application.Lux) ([]string, error)

func GetPublicSubnetValidators

func GetPublicSubnetValidators(subnetID ids.ID, network models.Network) ([]platformvm.ClientPermissionlessValidator, error)

func GetSubnetValidators

func GetSubnetValidators(subnetID ids.ID) ([]platformvm.ClientPermissionlessValidator, error)

func HasEndpoints

func HasEndpoints(clusterInfo *rpcpb.ClusterInfo) bool

HasEndpoints returns true if cluster info contains custom blockchains

func IsSubnetValidator

func IsSubnetValidator(subnetID ids.ID, nodeID ids.NodeID, network models.Network) (bool, error)

func IssueAddPermissionlessValidatorTx

func IssueAddPermissionlessValidatorTx(
	kc keychain.Keychain,
	subnetID ids.ID,
	nodeID ids.NodeID,
	stakeAmount uint64,
	assetID ids.ID,
	startTime uint64,
	endTime uint64,
) (ids.ID, error)

func IssueRemoveSubnetValidatorTx

func IssueRemoveSubnetValidatorTx(kc keychain.Keychain, subnetID ids.ID, nodeID ids.NodeID) (ids.ID, error)

func IssueTransformSubnetTx

func IssueTransformSubnetTx(
	elasticSubnetConfig models.ElasticSubnetConfig,
	kc keychain.Keychain,
	subnetID ids.ID,
	tokenName string,
	tokenSymbol string,
	maxSupply uint64,
) (ids.ID, ids.ID, error)

func PrepareCanonicalChainConfigs

func PrepareCanonicalChainConfigs(app *application.Lux) (string, error)

PrepareCanonicalChainConfigs creates a canonical chain-configs directory at ~/.lux/chain-configs/ with subdirectories for each locally deployed subnet's blockchain ID. This directory can be passed to nodes via --chain-config-dir flag so all nodes share the same chain configs from a single source. Returns the canonical chain configs directory path.

func SetDefaultSnapshot

func SetDefaultSnapshot(snapshotsDir string, force bool) error

Initialize default snapshot with bootstrap snapshot archive If force flag is set to true, overwrite the default snapshot if it exists

func ValidateSubnetNameAndGetChains

func ValidateSubnetNameAndGetChains(subnetName string) error

ValidateSubnetNameAndGetChains validates a subnet name and returns chain information

func WaitForHealthy

func WaitForHealthy(
	ctx context.Context,
	cli client.Client,
) (*rpcpb.ClusterInfo, error)

WaitForHealthy polls continuously until the network is ready to be used

Types

type LocalDeployer

type LocalDeployer struct {
	// contains filtered or unexported fields
}

func NewLocalDeployer

func NewLocalDeployer(app *application.Lux, luxVersion string, vmBin string) *LocalDeployer

func (*LocalDeployer) BackendStartedHere

func (d *LocalDeployer) BackendStartedHere() bool

BackendStartedHere returns true if the backend was started by this run, or false if it found it there already

func (*LocalDeployer) DeployBlockchain

func (d *LocalDeployer) DeployBlockchain(chain string, chainGenesis []byte) (ids.ID, ids.ID, error)

DeployBlockchain deploys a blockchain to the local network

func (*LocalDeployer) DeployToLocalNetwork

func (d *LocalDeployer) DeployToLocalNetwork(chain string, chainGenesis []byte, genesisPath string) (ids.ID, ids.ID, error)

DeployToLocalNetwork does the heavy lifting: * it checks the gRPC is running, if not, it starts it * kicks off the actual deployment

func (*LocalDeployer) SetupLocalEnv

func (d *LocalDeployer) SetupLocalEnv() (string, error)

SetupLocalEnv also does some heavy lifting: * sets up default snapshot if not installed * checks if node is installed in the local binary path * if not, it downloads it and installs it (os - and archive dependent) * returns the location of the node path

func (*LocalDeployer) StartServer

func (d *LocalDeployer) StartServer() error

type PublicDeployer

type PublicDeployer struct {
	LocalDeployer
	// contains filtered or unexported fields
}

func NewPublicDeployer

func NewPublicDeployer(app *application.Lux, usingLedger bool, kc keychain.Keychain, network models.Network) *PublicDeployer

func (*PublicDeployer) AddValidator

func (d *PublicDeployer) AddValidator(
	controlKeys []string,
	subnetAuthKeysStrs []string,
	subnetID ids.ID,
	nodeID ids.NodeID,
	weight uint64,
	startTime time.Time,
	duration time.Duration,
) (bool, *txs.Tx, []string, error)

adds a subnet validator to the given [subnetID]

  • creates an add subnet validator tx
  • sets the change output owner to be a wallet address (if not, it may go to any other subnet auth address)
  • signs the tx with the wallet as the owner of fee outputs and a possible subnet auth key
  • if partially signed, returns the tx so that it can later on be signed by the rest of the subnet auth keys
  • if fully signed, issues it

func (*PublicDeployer) Commit

func (d *PublicDeployer) Commit(
	tx *txs.Tx,
) (ids.ID, error)

func (*PublicDeployer) ConvertL1

func (d *PublicDeployer) ConvertL1(
	controlKeys []string,
	subnetAuthKeysStrs []string,
	subnetID ids.ID,
	blockchainID ids.ID,
	managerAddress ethcommon.Address,
	validators []interface{},
) (bool, ids.ID, *txs.Tx, []string, error)

ConvertL1 converts a subnet to an L1 (LP99)

func (*PublicDeployer) CreateAssetTx

func (d *PublicDeployer) CreateAssetTx(
	subnetID ids.ID,
	tokenName string,
	tokenSymbol string,
	denomination byte,
	initialState map[uint32][]verify.State,
) (ids.ID, error)

func (*PublicDeployer) DeployBlockchain

func (d *PublicDeployer) DeployBlockchain(
	controlKeys []string,
	subnetAuthKeysStrs []string,
	subnetID ids.ID,
	chain string,
	genesis []byte,
) (bool, ids.ID, *txs.Tx, []string, error)

creates a blockchain for the given [subnetID]

  • creates a create blockchain tx
  • sets the change output owner to be a wallet address (if not, it may go to any other subnet auth address)
  • signs the tx with the wallet as the owner of fee outputs and a possible subnet auth key
  • if partially signed, returns the tx so that it can later on be signed by the rest of the subnet auth keys
  • if fully signed, issues it

func (*PublicDeployer) DeploySubnet

func (d *PublicDeployer) DeploySubnet(
	controlKeys []string,
	threshold uint32,
) (ids.ID, error)

- creates a subnet for [chain] using the given [controlKeys] and [threshold] as subnet authentication parameters

func (*PublicDeployer) ExportToPChainTx

func (d *PublicDeployer) ExportToPChainTx(
	subnetID ids.ID,
	subnetAssetID ids.ID,
	owner *secp256k1fx.OutputOwners,
	assetAmount uint64,
) (ids.ID, error)

func (*PublicDeployer) ImportFromXChain

func (d *PublicDeployer) ImportFromXChain(
	subnetID ids.ID,
	owner *secp256k1fx.OutputOwners,
) (ids.ID, error)

func (*PublicDeployer) IncreaseValidatorPChainBalance

func (d *PublicDeployer) IncreaseValidatorPChainBalance(
	validationID ids.ID,
	balance uint64,
) error

IncreaseValidatorPChainBalance increases a validator's balance on P-chain

func (*PublicDeployer) RegisterL1Validator

func (d *PublicDeployer) RegisterL1Validator(
	balance uint64,
	blsInfo signer.ProofOfPossession,
	message []byte,
) (ids.ID, ids.ID, error)

RegisterL1Validator registers a validator on the P-Chain for an L1 subnet

func (*PublicDeployer) RemoveValidator

func (d *PublicDeployer) RemoveValidator(
	controlKeys []string,
	subnetAuthKeysStrs []string,
	subnetID ids.ID,
	nodeID ids.NodeID,
) (bool, *txs.Tx, []string, error)

removes a subnet validator from the given [subnet] - verifies that the wallet is one of the subnet auth keys (so as to sign the AddSubnetValidator tx) - if operation is multisig (len(subnetAuthKeysStrs) > 1):

  • creates a remove subnet validator tx
  • sets the change output owner to be a wallet address (if not, it may go to any other subnet auth address)
  • signs the tx with the wallet as the owner of fee outputs and a possible subnet auth key
  • if partially signed, returns the tx so that it can later on be signed by the rest of the subnet auth keys
  • if fully signed, issues it

func (*PublicDeployer) Sign

func (d *PublicDeployer) Sign(
	tx *txs.Tx,
	subnetAuthKeysStrs []string,
	subnet ids.ID,
) error

func (*PublicDeployer) TransformSubnetTx

func (d *PublicDeployer) TransformSubnetTx(
	controlKeys []string,
	subnetAuthKeysStrs []string,
	elasticSubnetConfig models.ElasticSubnetConfig,
	subnetID ids.ID,
	subnetAssetID ids.ID,
) (bool, ids.ID, *txs.Tx, []string, error)

type Publisher

type Publisher interface {
	Publish(r *git.Repository, subnetName, vmName string, subnetYAML []byte, vmYAML []byte) error
	GetRepo() (*git.Repository, error)
}

func NewPublisher

func NewPublisher(repoDir, repoURL, alias string) Publisher

type WarpSpec

type WarpSpec struct {
	SkipWarpDeploy               bool
	SkipRelayerDeploy            bool
	WarpVersion                  string
	RelayerVersion               string
	RelayerBinPath               string
	RelayerLogLevel              string
	MessengerContractAddressPath string
	MessengerDeployerAddressPath string
	MessengerDeployerTxPath      string
	FundedAddress                string
	RegistryBydecodePath         string
}

WarpSpec contains configuration for Warp deployments

Jump to

Keyboard shortcuts

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