config

package
v1.3.0-rc2 Latest Latest
Warning

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

Go to latest
Published: Mar 29, 2022 License: GPL-3.0 Imports: 16 Imported by: 3

Documentation

Index

Constants

View Source
const (
	ApiContainerName          string = "api"
	Eth1ContainerName         string = "eth1"
	Eth1FallbackContainerName string = "eth1-fallback"
	Eth2ContainerName         string = "eth2"
	ExporterContainerName     string = "exporter"
	GrafanaContainerName      string = "grafana"
	NodeContainerName         string = "node"
	PrometheusContainerName   string = "prometheus"
	ValidatorContainerName    string = "validator"
	WatchtowerContainerName   string = "watchtower"
)

Constants

View Source
const (
	NetworkID     string = "network"
	ProjectNameID string = "projectName"
)

Constants

View Source
const ApiPortID string = "apiPort"
View Source
const CheckpointSyncUrlID string = "checkpointSyncUrl"
View Source
const DoppelgangerDetectionID string = "doppelgangerDetection"
View Source
const GraffitiID string = "graffiti"

Param IDs

View Source
const OpenApiPortID string = "openApiPort"
View Source
const P2pPortID string = "p2pPort"

Variables

This section is empty.

Functions

func ValidateDefaults added in v1.0.0

func ValidateDefaults(Chain Chain, ChainName string) error

Make sure the default parameter values can be parsed into the parameter types

func ValidateMetricDefaults added in v1.0.0

func ValidateMetricDefaults(Params []ClientParam) error

Make sure the default parameter values for the metrics section can be parsed into the parameter types

Types

type Chain

type Chain struct {
	Provider           string `yaml:"provider,omitempty"`
	WsProvider         string `yaml:"wsProvider,omitempty"`
	FallbackProvider   string `yaml:"fallbackProvider,omitempty"`
	FallbackWsProvider string `yaml:"fallbackWsProvider,omitempty"`
	ReconnectDelay     string `yaml:"reconnectDelay,omitempty"`
	PruneProvisioner   string `yaml:"pruneProvisioner,omitempty"`
	ChainID            string `yaml:"chainID,omitempty"`
	Client             struct {
		Options  []ClientOption `yaml:"options,omitempty"`
		Selected string         `yaml:"selected,omitempty"`
		Params   []UserParam    `yaml:"params,omitempty"`
	} `yaml:"client,omitempty"`
}

func (*Chain) GetClientById added in v1.0.0

func (chain *Chain) GetClientById(id string) *ClientOption

Get a client by it's ID

func (*Chain) GetSelectedClient

func (chain *Chain) GetSelectedClient() *ClientOption

type ChangedSetting added in v1.3.0

type ChangedSetting struct {
	Name               string
	OldValue           string
	NewValue           string
	AffectedContainers map[ContainerID]bool
}

A setting that has changed

type ClientOption

type ClientOption struct {
	ID                    string        `yaml:"id,omitempty"`
	Name                  string        `yaml:"name,omitempty"`
	Desc                  string        `yaml:"desc,omitempty"`
	Image                 string        `yaml:"image,omitempty"`
	BeaconImage           string        `yaml:"beaconImage,omitempty"`
	ValidatorImage        string        `yaml:"validatorImage,omitempty"`
	Link                  string        `yaml:"link,omitempty"`
	CompatibleEth2Clients string        `yaml:"compatibleEth2Clients,omitempty"`
	EventLogInterval      string        `yaml:"eventLogInterval,omitempty"`
	Supermajority         bool          `yaml:"supermajority,omitempty"`
	Params                []ClientParam `yaml:"params,omitempty"`
	Fallback              bool          `yaml:"fallback,omitempty"`
}

func (*ClientOption) GetBeaconImage

func (client *ClientOption) GetBeaconImage() string

Get the beacon & validator images for a client

func (*ClientOption) GetParamByEnvName added in v1.0.0

func (client *ClientOption) GetParamByEnvName(env string) *ClientParam

Get a client parameter by its environment variable name

func (*ClientOption) GetValidatorImage

func (client *ClientOption) GetValidatorImage() string

type ClientParam

type ClientParam struct {
	Name      string `yaml:"name,omitempty"`
	Desc      string `yaml:"desc,omitempty"`
	Env       string `yaml:"env,omitempty"`
	Required  bool   `yaml:"required,omitempty"`
	Regex     string `yaml:"regex,omitempty"`
	Type      string `yaml:"type,omitempty"`
	Default   string `yaml:"default,omitempty"`
	Max       string `yaml:"max,omitempty"`
	BlankText string `yaml:"blankText,omitempty"`
	Advanced  bool   `yaml:"advanced,omitempty"`
}

type Config added in v1.3.0

type Config interface {
	GetConfigTitle() string
	GetParameters() []*Parameter
}

type ConsensusClient added in v1.3.0

type ConsensusClient string
const (
	ConsensusClient_Unknown    ConsensusClient = ""
	ConsensusClient_Lighthouse ConsensusClient = "lighthouse"
	ConsensusClient_Nimbus     ConsensusClient = "nimbus"
	ConsensusClient_Prysm      ConsensusClient = "prysm"
	ConsensusClient_Teku       ConsensusClient = "teku"
)

Enum to describe the Consensus client options

type ConsensusCommonConfig added in v1.3.0

type ConsensusCommonConfig struct {
	Title string `yaml:"title,omitempty"`

	// Custom proposal graffiti
	Graffiti Parameter `yaml:"graffiti,omitempty"`

	// The checkpoint sync URL if used
	CheckpointSyncProvider Parameter `yaml:"checkpointSyncProvider,omitempty"`

	// The port to use for gossip traffic
	P2pPort Parameter `yaml:"p2pPort,omitempty"`

	// The port to expose the HTTP API on
	ApiPort Parameter `yaml:"apiPort,omitempty"`

	// Toggle for forwarding the HTTP API port outside of Docker
	OpenApiPort Parameter `yaml:"openApiPort,omitempty"`

	// Toggle for enabling doppelganger detection
	DoppelgangerDetection Parameter `yaml:"doppelgangerDetection,omitempty"`
}

Common parameters shared by all of the Beacon Clients

func NewConsensusCommonConfig added in v1.3.0

func NewConsensusCommonConfig(config *RocketPoolConfig) *ConsensusCommonConfig

Create a new ConsensusCommonParams struct

func (*ConsensusCommonConfig) GetConfigTitle added in v1.3.0

func (config *ConsensusCommonConfig) GetConfigTitle() string

The the title for the config

func (*ConsensusCommonConfig) GetParameters added in v1.3.0

func (config *ConsensusCommonConfig) GetParameters() []*Parameter

Get the parameters for this config

type ConsensusConfig added in v1.3.0

type ConsensusConfig interface {
	GetValidatorImage() string
	GetName() string
}

Interface for common Consensus configurations

type ContainerID added in v1.3.0

type ContainerID string
const (
	ContainerID_Unknown      ContainerID = ""
	ContainerID_Api          ContainerID = "api"
	ContainerID_Node         ContainerID = "node"
	ContainerID_Watchtower   ContainerID = "watchtower"
	ContainerID_Eth1         ContainerID = "eth1"
	ContainerID_Eth1Fallback ContainerID = "eth1-fallback"
	ContainerID_Eth2         ContainerID = "eth2"
	ContainerID_Validator    ContainerID = "validator"
	ContainerID_Grafana      ContainerID = "grafana"
	ContainerID_Prometheus   ContainerID = "prometheus"
	ContainerID_Exporter     ContainerID = "exporter"
)

Enum to describe which container(s) a parameter impacts, so the Smartnode knows which ones to restart upon a settings change

type ExecutionClient added in v1.3.0

type ExecutionClient string
const (
	ExecutionClient_Unknown ExecutionClient = ""
	ExecutionClient_Geth    ExecutionClient = "geth"
	ExecutionClient_Infura  ExecutionClient = "infura"
	ExecutionClient_Pocket  ExecutionClient = "pocket"
)

Enum to describe the Execution client options

type ExecutionCommonConfig added in v1.3.0

type ExecutionCommonConfig struct {
	Title string `yaml:"title,omitempty"`

	// The HTTP API port
	HttpPort Parameter `yaml:"httpPort,omitempty"`

	// The Websocket API port
	WsPort Parameter `yaml:"wsPort,omitempty"`

	// Toggle for forwarding the HTTP and Websocket API ports outside of Docker
	OpenRpcPorts Parameter `yaml:"openRpcPorts,omitempty"`
}

Configuration for the Execution client

func NewExecutionCommonConfig added in v1.3.0

func NewExecutionCommonConfig(config *RocketPoolConfig, isFallback bool) *ExecutionCommonConfig

Create a new ExecutionCommonConfig struct

func (*ExecutionCommonConfig) GetConfigTitle added in v1.3.0

func (config *ExecutionCommonConfig) GetConfigTitle() string

The the title for the config

func (*ExecutionCommonConfig) GetParameters added in v1.3.0

func (config *ExecutionCommonConfig) GetParameters() []*Parameter

Get the parameters for this config

type ExporterConfig added in v1.3.0

type ExporterConfig struct {
	Title string `yaml:"title,omitempty"`

	// Toggle for enabling access to the root filesystem (for multiple disk usage metrics)
	RootFs Parameter `yaml:"rootFs,omitempty"`

	// The port to serve metrics on
	Port Parameter `yaml:"port,omitempty"`

	// The Docker Hub tag for Prometheus
	ContainerTag Parameter `yaml:"containerTag,omitempty"`

	// Custom command line flags
	AdditionalFlags Parameter `yaml:"additionalFlags,omitempty"`
}

Configuration for Exporter

func NewExporterConfig added in v1.3.0

func NewExporterConfig(config *RocketPoolConfig) *ExporterConfig

Generates a new Exporter config

func (*ExporterConfig) GetConfigTitle added in v1.3.0

func (config *ExporterConfig) GetConfigTitle() string

The the title for the config

func (*ExporterConfig) GetParameters added in v1.3.0

func (config *ExporterConfig) GetParameters() []*Parameter

Get the parameters for this config

type ExternalConsensusConfig added in v1.3.0

type ExternalConsensusConfig interface {
	GetApiUrl() string
}

Interface for External Consensus configurations

type ExternalExecutionConfig added in v1.3.0

type ExternalExecutionConfig struct {
	Title string `yaml:"title,omitempty"`

	// The URL of the HTTP endpoint
	HttpUrl Parameter `yaml:"httpUrl,omitempty"`

	// The URL of the websocket endpoint
	WsUrl Parameter `yaml:"wsUrl,omitempty"`
}

Configuration for external Execution clients

func NewExternalExecutionConfig added in v1.3.0

func NewExternalExecutionConfig(config *RocketPoolConfig, isFallback bool) *ExternalExecutionConfig

Generates a new ExternalExecutionConfig configuration

func (*ExternalExecutionConfig) GetConfigTitle added in v1.3.0

func (config *ExternalExecutionConfig) GetConfigTitle() string

The the title for the config

func (*ExternalExecutionConfig) GetParameters added in v1.3.0

func (config *ExternalExecutionConfig) GetParameters() []*Parameter

Get the parameters for this config

type ExternalLighthouseConfig added in v1.3.0

type ExternalLighthouseConfig struct {
	Title string `yaml:"title,omitempty"`

	// The URL of the HTTP endpoint
	HttpUrl Parameter `yaml:"httpUrl,omitempty"`

	// Custom proposal graffiti
	Graffiti Parameter `yaml:"graffiti,omitempty"`

	// Toggle for enabling doppelganger detection
	DoppelgangerDetection Parameter `yaml:"doppelgangerDetection,omitempty"`

	// The Docker Hub tag for Lighthouse
	ContainerTag Parameter `yaml:"containerTag,omitempty"`

	// Custom command line flags for the VC
	AdditionalVcFlags Parameter `yaml:"additionalVcFlags,omitempty"`
}

Configuration for external Consensus clients

func NewExternalLighthouseConfig added in v1.3.0

func NewExternalLighthouseConfig(config *RocketPoolConfig) *ExternalLighthouseConfig

Generates a new ExternalLighthouseClient configuration

func (*ExternalLighthouseConfig) GetApiUrl added in v1.3.0

func (config *ExternalLighthouseConfig) GetApiUrl() string

Get the API url from the config

func (*ExternalLighthouseConfig) GetConfigTitle added in v1.3.0

func (config *ExternalLighthouseConfig) GetConfigTitle() string

The the title for the config

func (*ExternalLighthouseConfig) GetName added in v1.3.0

func (config *ExternalLighthouseConfig) GetName() string

Get the name of the client

func (*ExternalLighthouseConfig) GetParameters added in v1.3.0

func (config *ExternalLighthouseConfig) GetParameters() []*Parameter

Get the parameters for this config

func (*ExternalLighthouseConfig) GetValidatorImage added in v1.3.0

func (config *ExternalLighthouseConfig) GetValidatorImage() string

Get the Docker container name of the validator client

type ExternalPrysmConfig added in v1.3.0

type ExternalPrysmConfig struct {
	Title string `yaml:"title,omitempty"`

	// The URL of the gRPC (REST) endpoint for the Beacon API
	HttpUrl Parameter `yaml:"httpUrl,omitempty"`

	// Custom proposal graffiti
	Graffiti Parameter `yaml:"graffiti,omitempty"`

	// Toggle for enabling doppelganger detection
	DoppelgangerDetection Parameter `yaml:"doppelgangerDetection,omitempty"`

	// The URL of the JSON-RPC endpoint for the Validator client
	JsonRpcUrl Parameter `yaml:"jsonRpcUrl,omitempty"`

	// The Docker Hub tag for Prysm's VC
	ContainerTag Parameter `yaml:"containerTag,omitempty"`

	// Custom command line flags for the VC
	AdditionalVcFlags Parameter `yaml:"additionalVcFlags,omitempty"`
}

Configuration for an external Prysm clients

func NewExternalPrysmConfig added in v1.3.0

func NewExternalPrysmConfig(config *RocketPoolConfig) *ExternalPrysmConfig

Generates a new ExternalPrysmConfig configuration

func (*ExternalPrysmConfig) GetApiUrl added in v1.3.0

func (config *ExternalPrysmConfig) GetApiUrl() string

Get the API url from the config

func (*ExternalPrysmConfig) GetConfigTitle added in v1.3.0

func (config *ExternalPrysmConfig) GetConfigTitle() string

The the title for the config

func (*ExternalPrysmConfig) GetName added in v1.3.0

func (config *ExternalPrysmConfig) GetName() string

Get the name of the client

func (*ExternalPrysmConfig) GetParameters added in v1.3.0

func (config *ExternalPrysmConfig) GetParameters() []*Parameter

Get the parameters for this config

func (*ExternalPrysmConfig) GetValidatorImage added in v1.3.0

func (config *ExternalPrysmConfig) GetValidatorImage() string

Get the Docker container name of the validator client

type ExternalTekuConfig added in v1.3.0

type ExternalTekuConfig struct {
	Title string `yaml:"title,omitempty"`

	// The URL of the HTTP endpoint
	HttpUrl Parameter `yaml:"httpUrl,omitempty"`

	// Custom proposal graffiti
	Graffiti Parameter `yaml:"graffiti,omitempty"`

	// The Docker Hub tag for Teku
	ContainerTag Parameter `yaml:"containerTag,omitempty"`

	// Custom command line flags for the VC
	AdditionalVcFlags Parameter `yaml:"additionalVcFlags,omitempty"`
}

Configuration for an external Teku client

func NewExternalTekuConfig added in v1.3.0

func NewExternalTekuConfig(config *RocketPoolConfig) *ExternalTekuConfig

Generates a new ExternalTekuClient configuration

func (*ExternalTekuConfig) GetApiUrl added in v1.3.0

func (config *ExternalTekuConfig) GetApiUrl() string

Get the API url from the config

func (*ExternalTekuConfig) GetConfigTitle added in v1.3.0

func (config *ExternalTekuConfig) GetConfigTitle() string

The the title for the config

func (*ExternalTekuConfig) GetName added in v1.3.0

func (config *ExternalTekuConfig) GetName() string

Get the name of the client

func (*ExternalTekuConfig) GetParameters added in v1.3.0

func (config *ExternalTekuConfig) GetParameters() []*Parameter

Get the parameters for this config

func (*ExternalTekuConfig) GetValidatorImage added in v1.3.0

func (config *ExternalTekuConfig) GetValidatorImage() string

Get the Docker container name of the validator client

type GethConfig added in v1.3.0

type GethConfig struct {
	Title string `yaml:"title,omitempty"`

	// Common parameters that Geth doesn't support and should be hidden
	UnsupportedCommonParams []string `yaml:"unsupportedCommonParams,omitempty"`

	// Compatible consensus clients
	CompatibleConsensusClients []ConsensusClient `yaml:"compatibleConsensusClients,omitempty"`

	// The max number of events to query in a single event log query
	EventLogInterval int `yaml:"eventLogInterval,omitempty"`

	// Size of Geth's Cache
	CacheSize Parameter `yaml:"cacheSize,omitempty"`

	// Max number of P2P peers to connect to
	MaxPeers Parameter `yaml:"maxPeers,omitempty"`

	// P2P traffic port
	P2pPort Parameter `yaml:"p2pPort,omitempty"`

	// Label for Ethstats
	EthstatsLabel Parameter `yaml:"ethstatsLabel,omitempty"`

	// Login info for Ethstats
	EthstatsLogin Parameter `yaml:"ethstatsLogin,omitempty"`

	// The Docker Hub tag for Geth
	ContainerTag Parameter `yaml:"containerTag,omitempty"`

	// Custom command line flags
	AdditionalFlags Parameter `yaml:"additionalFlags,omitempty"`
}

Configuration for Geth

func NewGethConfig added in v1.3.0

func NewGethConfig(config *RocketPoolConfig, isFallback bool) *GethConfig

Generates a new Geth configuration

func (*GethConfig) GetConfigTitle added in v1.3.0

func (config *GethConfig) GetConfigTitle() string

The the title for the config

func (*GethConfig) GetParameters added in v1.3.0

func (config *GethConfig) GetParameters() []*Parameter

Get the parameters for this config

type GrafanaConfig added in v1.3.0

type GrafanaConfig struct {
	Title string `yaml:"title,omitempty"`

	// The HTTP port to serve on
	Port Parameter `yaml:"port,omitempty"`

	// The Docker Hub tag for Grafana
	ContainerTag Parameter `yaml:"containerTag,omitempty"`
}

Configuration for Grafana

func NewGrafanaConfig added in v1.3.0

func NewGrafanaConfig(config *RocketPoolConfig) *GrafanaConfig

Generates a new Grafana config

func (*GrafanaConfig) GetConfigTitle added in v1.3.0

func (config *GrafanaConfig) GetConfigTitle() string

The the title for the config

func (*GrafanaConfig) GetParameters added in v1.3.0

func (config *GrafanaConfig) GetParameters() []*Parameter

Get the parameters for this config

type InfuraConfig added in v1.3.0

type InfuraConfig struct {
	Title string `yaml:"title,omitempty"`

	// Common parameters that Infura doesn't support and should be hidden
	UnsupportedCommonParams []string `yaml:"unsupportedCommonParams,omitempty"`

	// Compatible consensus clients
	CompatibleConsensusClients []ConsensusClient `yaml:"compatibleConsensusClients,omitempty"`

	// The max number of events to query in a single event log query
	EventLogInterval int `yaml:"eventLogInterval,omitempty"`

	// The Infura project ID
	ProjectID Parameter `yaml:"projectID,omitempty"`

	// The Docker Hub tag for Geth
	ContainerTag Parameter `yaml:"containerTag,omitempty"`

	// Custom command line flags
	AdditionalFlags Parameter `yaml:"additionalFlags,omitempty"`
}

Configuration for Infura

func NewInfuraConfig added in v1.3.0

func NewInfuraConfig(config *RocketPoolConfig, isFallback bool) *InfuraConfig

Generates a new Infura configuration

func (*InfuraConfig) GetConfigTitle added in v1.3.0

func (config *InfuraConfig) GetConfigTitle() string

The the title for the config

func (*InfuraConfig) GetParameters added in v1.3.0

func (config *InfuraConfig) GetParameters() []*Parameter

Get the parameters for this config

type LegacyRocketPoolConfig added in v1.3.0

type LegacyRocketPoolConfig struct {
	Rocketpool struct {
		StorageAddress       string `yaml:"storageAddress,omitempty"`
		OneInchOracleAddress string `yaml:"oneInchOracleAddress,omitempty"`
		RplTokenAddress      string `yaml:"rplTokenAddress,omitempty"`
		RPLFaucetAddress     string `yaml:"rplFaucetAddress,omitempty"`
	} `yaml:"rocketpool,omitempty"`
	Smartnode struct {
		ProjectName               string  `yaml:"projectName,omitempty"`
		GraffitiVersion           string  `yaml:"graffitiVersion,omitempty"`
		Image                     string  `yaml:"image,omitempty"`
		PasswordPath              string  `yaml:"passwordPath,omitempty"`
		WalletPath                string  `yaml:"walletPath,omitempty"`
		ValidatorKeychainPath     string  `yaml:"validatorKeychainPath,omitempty"`
		ValidatorRestartCommand   string  `yaml:"validatorRestartCommand,omitempty"`
		MaxFee                    float64 `yaml:"maxFee,omitempty"`
		MaxPriorityFee            float64 `yaml:"maxPriorityFee,omitempty"`
		GasLimit                  uint64  `yaml:"gasLimit,omitempty"`
		RplClaimGasThreshold      float64 `yaml:"rplClaimGasThreshold,omitempty"`
		MinipoolStakeGasThreshold float64 `yaml:"minipoolStakeGasThreshold,omitempty"`
		TxWatchUrl                string  `yaml:"txWatchUrl,omitempty"`
		StakeUrl                  string  `yaml:"stakeUrl,omitempty"`
	} `yaml:"smartnode,omitempty"`
	Chains struct {
		Eth1         Chain `yaml:"eth1,omitempty"`
		Eth1Fallback Chain `yaml:"eth1Fallback,omitempty"`
		Eth2         Chain `yaml:"eth2,omitempty"`
	} `yaml:"chains,omitempty"`
	Metrics Metrics `yaml:"metrics,omitempty"`
}

Rocket Pool config

func Load

Load merged config from files

func Merge

Merge configs

func Parse

func Parse(bytes []byte) (LegacyRocketPoolConfig, error)

Parse a config from yaml bytes

func (*LegacyRocketPoolConfig) GetGasLimit added in v1.3.0

func (config *LegacyRocketPoolConfig) GetGasLimit() (uint64, error)

Parse and return the gas limit

func (*LegacyRocketPoolConfig) GetMaxFee added in v1.3.0

func (config *LegacyRocketPoolConfig) GetMaxFee() (*big.Int, error)

Parse and return the max fee in wei

func (*LegacyRocketPoolConfig) GetMaxPriorityFee added in v1.3.0

func (config *LegacyRocketPoolConfig) GetMaxPriorityFee() (*big.Int, error)

Parse and return the max priority fee in wei

func (*LegacyRocketPoolConfig) GetSelectedEth1Client added in v1.3.0

func (config *LegacyRocketPoolConfig) GetSelectedEth1Client() *ClientOption

Get the selected clients from a config

func (*LegacyRocketPoolConfig) GetSelectedEth1FallbackClient added in v1.3.0

func (config *LegacyRocketPoolConfig) GetSelectedEth1FallbackClient() *ClientOption

func (*LegacyRocketPoolConfig) GetSelectedEth2Client added in v1.3.0

func (config *LegacyRocketPoolConfig) GetSelectedEth2Client() *ClientOption

func (*LegacyRocketPoolConfig) Serialize added in v1.3.0

func (config *LegacyRocketPoolConfig) Serialize() ([]byte, error)

Serialize a config to yaml bytes

type LighthouseConfig added in v1.3.0

type LighthouseConfig struct {
	Title string `yaml:"title,omitempty"`

	// The max number of P2P peers to connect to
	MaxPeers Parameter `yaml:"maxPeers,omitempty"`

	// Common parameters that Lighthouse doesn't support and should be hidden
	UnsupportedCommonParams []string `yaml:"unsupportedCommonParams,omitempty"`

	// The Docker Hub tag for Lighthouse
	ContainerTag Parameter `yaml:"containerTag,omitempty"`

	// Custom command line flags for the BN
	AdditionalBnFlags Parameter `yaml:"additionalBnFlags,omitempty"`

	// Custom command line flags for the VC
	AdditionalVcFlags Parameter `yaml:"additionalVcFlags,omitempty"`
}

Configuration for Lighthouse

func NewLighthouseConfig added in v1.3.0

func NewLighthouseConfig(config *RocketPoolConfig) *LighthouseConfig

Generates a new Lighthouse configuration

func (*LighthouseConfig) GetConfigTitle added in v1.3.0

func (config *LighthouseConfig) GetConfigTitle() string

The the title for the config

func (*LighthouseConfig) GetName added in v1.3.0

func (config *LighthouseConfig) GetName() string

Get the name of the client

func (*LighthouseConfig) GetParameters added in v1.3.0

func (config *LighthouseConfig) GetParameters() []*Parameter

Get the parameters for this config

func (*LighthouseConfig) GetUnsupportedCommonParams added in v1.3.0

func (config *LighthouseConfig) GetUnsupportedCommonParams() []string

Get the common params that this client doesn't support

func (*LighthouseConfig) GetValidatorImage added in v1.3.0

func (config *LighthouseConfig) GetValidatorImage() string

Get the Docker container name of the validator client

type LocalConsensusConfig added in v1.3.0

type LocalConsensusConfig interface {
	GetUnsupportedCommonParams() []string
}

Interface for Local Consensus configurations

type Metrics added in v1.0.0

type Metrics struct {
	Enabled  bool          `yaml:"enabled,omitempty"`
	Params   []ClientParam `yaml:"params,omitempty"`
	Settings []UserParam   `yaml:"settings,omitempty"`
}

func (*Metrics) GetParamByEnvName added in v1.0.0

func (metrics *Metrics) GetParamByEnvName(env string) *ClientParam

Get a metrics parameter by its environment variable name

type Mode added in v1.3.0

type Mode string
const (
	Mode_Unknown  Mode = ""
	Mode_Local    Mode = "local"
	Mode_External Mode = "external"
)

Enum to describe the mode for a client - local (Docker Mode) or external (Hybrid Mode)

type NativeConfig added in v1.3.0

type NativeConfig struct {
	Title string `yaml:"title,omitempty"`

	// The URL of the EC HTTP endpoint
	EcHttpUrl Parameter `yaml:"ecHttpUrl,omitempty"`

	// The selected CC
	ConsensusClient Parameter `yaml:"consensusClient,omitempty"`

	// The URL of the CC HTTP endpoint
	CcHttpUrl Parameter `yaml:"ccHttpUrl,omitempty"`

	// The command for restarting the validator container in native mode
	ValidatorRestartCommand Parameter `yaml:"validatorRestartCommand,omitempty"`
}

Configuration for Native mode

func NewNativeConfig added in v1.3.0

func NewNativeConfig(config *RocketPoolConfig) *NativeConfig

Generates a new Smartnode configuration

func (*NativeConfig) GetConfigTitle added in v1.3.0

func (config *NativeConfig) GetConfigTitle() string

The the title for the config

func (*NativeConfig) GetParameters added in v1.3.0

func (config *NativeConfig) GetParameters() []*Parameter

Get the parameters for this config

type Network added in v1.3.0

type Network string
const (
	Network_Unknown Network = ""
	Network_All     Network = "all"
	Network_Mainnet Network = "mainnet"
	Network_Prater  Network = "prater"
)

Enum to describe which network the system is on

type NimbusConfig added in v1.3.0

type NimbusConfig struct {
	Title string `yaml:"title,omitempty"`

	// The max number of P2P peers to connect to
	MaxPeers Parameter `yaml:"maxPeers,omitempty"`

	// Common parameters that Nimbus doesn't support and should be hidden
	UnsupportedCommonParams []string `yaml:"unsupportedCommonParams,omitempty"`

	// The Docker Hub tag for Nimbus
	ContainerTag Parameter `yaml:"containerTag,omitempty"`

	// Custom command line flags for Nimbus
	AdditionalFlags Parameter `yaml:"additionalFlags,omitempty"`
}

Configuration for Nimbus

func NewNimbusConfig added in v1.3.0

func NewNimbusConfig(config *RocketPoolConfig) *NimbusConfig

Generates a new Nimbus configuration

func (*NimbusConfig) GetConfigTitle added in v1.3.0

func (config *NimbusConfig) GetConfigTitle() string

The the title for the config

func (*NimbusConfig) GetName added in v1.3.0

func (config *NimbusConfig) GetName() string

Get the name of the client

func (*NimbusConfig) GetParameters added in v1.3.0

func (config *NimbusConfig) GetParameters() []*Parameter

Get the parameters for this config

func (*NimbusConfig) GetUnsupportedCommonParams added in v1.3.0

func (config *NimbusConfig) GetUnsupportedCommonParams() []string

Get the common params that this client doesn't support

func (*NimbusConfig) GetValidatorImage added in v1.3.0

func (config *NimbusConfig) GetValidatorImage() string

Get the Docker container name of the validator client

type Parameter added in v1.3.0

type Parameter struct {
	ID                   string                  `yaml:"id,omitempty"`
	Name                 string                  `yaml:"name,omitempty"`
	Description          string                  `yaml:"description,omitempty"`
	Type                 ParameterType           `yaml:"type,omitempty"`
	Default              map[Network]interface{} `yaml:"default,omitempty"`
	MaxLength            int                     `yaml:"maxLength,omitempty"`
	Regex                string                  `yaml:"regex,omitempty"`
	Advanced             bool                    `yaml:"advanced,omitempty"`
	AffectsContainers    []ContainerID           `yaml:"affectsContainers,omitempty"`
	EnvironmentVariables []string                `yaml:"environmentVariables,omitempty"`
	CanBeBlank           bool                    `yaml:"canBeBlank,omitempty"`
	OverwriteOnUpgrade   bool                    `yaml:"overwriteOnUpgrade,omitempty"`
	Options              []ParameterOption       `yaml:"options,omitempty"`
	Value                interface{}             `yaml:"value,omitempty"`
}

A parameter that can be configured by the user

func (*Parameter) GetDefault added in v1.3.0

func (param *Parameter) GetDefault(network Network) (interface{}, error)

Get the default value for the provided network

type ParameterOption added in v1.3.0

type ParameterOption struct {
	Name        string      `yaml:"name,omitempty"`
	Description string      `yaml:"description,omitempty"`
	Value       interface{} `yaml:"value,omitempty"`
}

A single option in a choice parameter

type ParameterType added in v1.3.0

type ParameterType string
const (
	ParameterType_Unknown ParameterType = ""
	ParameterType_Int     ParameterType = "int"
	ParameterType_Uint16  ParameterType = "uint16"
	ParameterType_Uint    ParameterType = "uint"
	ParameterType_String  ParameterType = "string"
	ParameterType_Bool    ParameterType = "bool"
	ParameterType_Choice  ParameterType = "choice"
	ParameterType_Float   ParameterType = "float"
)

Enum to describe which data type a parameter's value will have, which informs the corresponding UI element and value validation

type PocketConfig added in v1.3.0

type PocketConfig struct {
	Title string `yaml:"title,omitempty"`

	// Common parameters that Pocket doesn't support and should be hidden
	UnsupportedCommonParams []string `yaml:"unsupportedCommonParams,omitempty"`

	// Compatible consensus clients
	CompatibleConsensusClients []ConsensusClient `yaml:"compatibleConsensusClients,omitempty"`

	// The max number of events to query in a single event log query
	EventLogInterval int `yaml:"eventLogInterval,omitempty"`

	// The Pocket gateway ID
	GatewayID Parameter `yaml:"gatewayID,omitempty"`

	// The Docker Hub tag for Geth
	ContainerTag Parameter `yaml:"containerTag,omitempty"`

	// Custom command line flags
	AdditionalFlags Parameter `yaml:"additionalFlags,omitempty"`
}

Configuration for Pocket

func NewPocketConfig added in v1.3.0

func NewPocketConfig(config *RocketPoolConfig, isFallback bool) *PocketConfig

Generates a new Pocket configuration

func (*PocketConfig) GetConfigTitle added in v1.3.0

func (config *PocketConfig) GetConfigTitle() string

The the title for the config

func (*PocketConfig) GetParameters added in v1.3.0

func (config *PocketConfig) GetParameters() []*Parameter

Get the parameters for this config

type PrometheusConfig added in v1.3.0

type PrometheusConfig struct {
	Title string `yaml:"title,omitempty"`

	// The port to serve metrics on
	Port Parameter `yaml:"port,omitempty"`

	// Toggle for forwarding the API port outside of Docker
	OpenPort Parameter `yaml:"openPort,omitempty"`

	// The Docker Hub tag for Prometheus
	ContainerTag Parameter `yaml:"containerTag,omitempty"`

	// Custom command line flags
	AdditionalFlags Parameter `yaml:"additionalFlags,omitempty"`
}

Configuration for Prometheus

func NewPrometheusConfig added in v1.3.0

func NewPrometheusConfig(config *RocketPoolConfig) *PrometheusConfig

Generates a new Prometheus config

func (*PrometheusConfig) GetConfigTitle added in v1.3.0

func (config *PrometheusConfig) GetConfigTitle() string

The the title for the config

func (*PrometheusConfig) GetParameters added in v1.3.0

func (config *PrometheusConfig) GetParameters() []*Parameter

Get the parameters for this config

type PrysmConfig added in v1.3.0

type PrysmConfig struct {
	Title string `yaml:"title,omitempty"`

	// Common parameters that Prysm doesn't support and should be hidden
	UnsupportedCommonParams []string `yaml:"unsupportedCommonParams,omitempty"`

	// The max number of P2P peers to connect to
	MaxPeers Parameter `yaml:"maxPeers,omitempty"`

	// The RPC port for BN / VC connections
	RpcPort Parameter `yaml:"rpcPort,omitempty"`

	// Toggle for forwarding the RPC API outside of Docker
	OpenRpcPort Parameter `yaml:"openRpcPort,omitempty"`

	// The Docker Hub tag for the Prysm BN
	BnContainerTag Parameter `yaml:"bnContainerTag,omitempty"`

	// The Docker Hub tag for the Prysm VC
	VcContainerTag Parameter `yaml:"vcContainerTag,omitempty"`

	// Custom command line flags for the BN
	AdditionalBnFlags Parameter `yaml:"additionalBnFlags,omitempty"`

	// Custom command line flags for the VC
	AdditionalVcFlags Parameter `yaml:"additionalVcFlags,omitempty"`
}

Configuration for Prysm

func NewPrysmConfig added in v1.3.0

func NewPrysmConfig(config *RocketPoolConfig) *PrysmConfig

Generates a new Prysm configuration

func (*PrysmConfig) GetConfigTitle added in v1.3.0

func (config *PrysmConfig) GetConfigTitle() string

The the title for the config

func (*PrysmConfig) GetName added in v1.3.0

func (config *PrysmConfig) GetName() string

Get the name of the client

func (*PrysmConfig) GetParameters added in v1.3.0

func (config *PrysmConfig) GetParameters() []*Parameter

Get the parameters for this config

func (*PrysmConfig) GetUnsupportedCommonParams added in v1.3.0

func (config *PrysmConfig) GetUnsupportedCommonParams() []string

Get the common params that this client doesn't support

func (*PrysmConfig) GetValidatorImage added in v1.3.0

func (config *PrysmConfig) GetValidatorImage() string

Get the Docker container name of the validator client

type RocketPoolConfig

type RocketPoolConfig struct {
	Title string `yaml:"title,omitempty"`

	Version string `yaml:"version,omitempty"`

	RocketPoolDirectory string `yaml:"rocketPoolDirectory,omitempty"`

	IsNativeMode bool `yaml:"isNativeMode,omitempty"`

	// Execution client settings
	ExecutionClientMode Parameter `yaml:"executionClientMode"`
	ExecutionClient     Parameter `yaml:"executionClient"`

	// Fallback execution client settings
	UseFallbackExecutionClient  Parameter `yaml:"useFallbackExecutionClient,omitempty"`
	FallbackExecutionClientMode Parameter `yaml:"fallbackExecutionClientMode,omitempty"`
	FallbackExecutionClient     Parameter `yaml:"fallbackExecutionClient,omitempty"`
	ReconnectDelay              Parameter `yaml:"reconnectDelay,omitempty"`

	// Consensus client settings
	ConsensusClientMode     Parameter `yaml:"consensusClientMode,omitempty"`
	ConsensusClient         Parameter `yaml:"consensusClient,omitempty"`
	ExternalConsensusClient Parameter `yaml:"externalConsensusClient,omitempty"`

	// Metrics settings
	EnableMetrics         Parameter `yaml:"enableMetrics,omitempty"`
	BnMetricsPort         Parameter `yaml:"bnMetricsPort,omitempty"`
	VcMetricsPort         Parameter `yaml:"vcMetricsPort,omitempty"`
	NodeMetricsPort       Parameter `yaml:"nodeMetricsPort,omitempty"`
	ExporterMetricsPort   Parameter `yaml:"exporterMetricsPort,omitempty"`
	WatchtowerMetricsPort Parameter `yaml:"watchtowerMetricsPort,omitempty"`

	// The Smartnode configuration
	Smartnode *SmartnodeConfig `yaml:"smartnode"`

	// Execution client configurations
	ExecutionCommon   *ExecutionCommonConfig   `yaml:"executionCommon,omitempty"`
	Geth              *GethConfig              `yaml:"geth,omitempty"`
	Infura            *InfuraConfig            `yaml:"infura,omitempty"`
	Pocket            *PocketConfig            `yaml:"pocket,omitempty"`
	ExternalExecution *ExternalExecutionConfig `yaml:"externalExecution,omitempty"`

	// Fallback Execution client configurations
	FallbackExecutionCommon   *ExecutionCommonConfig   `yaml:"fallbackExecutionCommon,omitempty"`
	FallbackInfura            *InfuraConfig            `yaml:"fallbackInfura,omitempty"`
	FallbackPocket            *PocketConfig            `yaml:"fallbackPocket,omitempty"`
	FallbackExternalExecution *ExternalExecutionConfig `yaml:"fallbackExternalExecution,omitempty"`

	// Consensus client configurations
	ConsensusCommon    *ConsensusCommonConfig    `yaml:"consensusCommon,omitempty"`
	Lighthouse         *LighthouseConfig         `yaml:"lighthouse,omitempty"`
	Nimbus             *NimbusConfig             `yaml:"nimbus,omitempty"`
	Prysm              *PrysmConfig              `yaml:"prysm,omitempty"`
	Teku               *TekuConfig               `yaml:"teku,omitempty"`
	ExternalLighthouse *ExternalLighthouseConfig `yaml:"externalLighthouse,omitempty"`
	ExternalPrysm      *ExternalPrysmConfig      `yaml:"externalPrysm,omitempty"`
	ExternalTeku       *ExternalTekuConfig       `yaml:"externalTeku,omitempty"`

	// Metrics
	Grafana    *GrafanaConfig    `yaml:"grafana,omitempty"`
	Prometheus *PrometheusConfig `yaml:"prometheus,omitempty"`
	Exporter   *ExporterConfig   `yaml:"exporter,omitempty"`

	// Native mode
	Native *NativeConfig `yaml:"native,omitempty"`
}

The master configuration struct

func LoadFromFile added in v1.3.0

func LoadFromFile(path string) (*RocketPoolConfig, error)

Load configuration settings from a file

func NewRocketPoolConfig added in v1.3.0

func NewRocketPoolConfig(rpDir string, isNativeMode bool) *RocketPoolConfig

Creates a new Rocket Pool configuration instance

func (*RocketPoolConfig) ChangeNetwork added in v1.3.0

func (config *RocketPoolConfig) ChangeNetwork(newNetwork Network)

Handle a network change on all of the parameters

func (*RocketPoolConfig) CreateCopy added in v1.3.0

func (config *RocketPoolConfig) CreateCopy() *RocketPoolConfig

Create a copy of this configuration.

func (*RocketPoolConfig) Deserialize added in v1.3.0

func (config *RocketPoolConfig) Deserialize(masterMap map[string]map[string]string) error

Deserializes a settings file into this config

func (*RocketPoolConfig) GenerateEnvironmentVariables added in v1.3.0

func (config *RocketPoolConfig) GenerateEnvironmentVariables() map[string]string

Generates a collection of environment variables based on this config's settings

func (*RocketPoolConfig) GetChanges added in v1.3.0

func (config *RocketPoolConfig) GetChanges(oldConfig *RocketPoolConfig) (map[string][]ChangedSetting, map[ContainerID]bool, bool)

Get all of the settings that have changed between an old config and this config, and get all of the containers that are affected by those changes - also returns whether or not the selected network was changed

func (*RocketPoolConfig) GetConfigTitle added in v1.3.0

func (config *RocketPoolConfig) GetConfigTitle() string

The the title for the config

func (*RocketPoolConfig) GetIncompatibleConsensusClients added in v1.3.0

func (config *RocketPoolConfig) GetIncompatibleConsensusClients() ([]ParameterOption, []ParameterOption)

Get the Consensus clients incompatible with the config's EC and fallback EC selection

func (*RocketPoolConfig) GetParameters added in v1.3.0

func (config *RocketPoolConfig) GetParameters() []*Parameter

Get the parameters for this config

func (*RocketPoolConfig) GetSelectedConsensusClientConfig added in v1.3.0

func (config *RocketPoolConfig) GetSelectedConsensusClientConfig() (ConsensusConfig, error)

Get the configuration for the selected client

func (*RocketPoolConfig) GetSubconfigs added in v1.3.0

func (config *RocketPoolConfig) GetSubconfigs() map[string]Config

Get the subconfigurations for this config

func (*RocketPoolConfig) Serialize

func (config *RocketPoolConfig) Serialize() map[string]map[string]string

Serializes the configuration into a map of maps, compatible with a settings file

func (*RocketPoolConfig) UpdateDefaults added in v1.3.0

func (config *RocketPoolConfig) UpdateDefaults() error

Update the default settings for all overwrite-on-upgrade parameters

func (*RocketPoolConfig) Validate added in v1.3.0

func (config *RocketPoolConfig) Validate() []string

Checks to see if the current configuration is valid; if not, returns a list of errors

type SmartnodeConfig added in v1.3.0

type SmartnodeConfig struct {
	Title string `yaml:"title,omitempty"`

	// Docker container prefix
	ProjectName Parameter `yaml:"projectName,omitempty"`

	// The path of the data folder where everything is stored
	DataPath Parameter `yaml:"dataPath,omitempty"`

	// Which network we're on
	Network Parameter `yaml:"network,omitempty"`

	// Manual max fee override
	ManualMaxFee Parameter `yaml:"manualMaxFee,omitempty"`

	// Manual priority fee override
	PriorityFee Parameter `yaml:"priorityFee,omitempty"`

	// Threshold for auto RPL claims
	RplClaimGasThreshold Parameter `yaml:"rplClaimGasThreshold,omitempty"`

	// Threshold for auto minipool stakes
	MinipoolStakeGasThreshold Parameter `yaml:"minipoolStakeGasThreshold,omitempty"`
	// contains filtered or unexported fields
}

Configuration for the Smartnode

func NewSmartnodeConfig added in v1.3.0

func NewSmartnodeConfig(config *RocketPoolConfig) *SmartnodeConfig

Generates a new Smartnode configuration

func (*SmartnodeConfig) GetChainID added in v1.3.0

func (config *SmartnodeConfig) GetChainID() uint

func (*SmartnodeConfig) GetConfigTitle added in v1.3.0

func (config *SmartnodeConfig) GetConfigTitle() string

The the title for the config

func (*SmartnodeConfig) GetOneInchOracleAddress added in v1.3.0

func (config *SmartnodeConfig) GetOneInchOracleAddress() string

func (*SmartnodeConfig) GetParameters added in v1.3.0

func (config *SmartnodeConfig) GetParameters() []*Parameter

Get the parameters for this config

func (*SmartnodeConfig) GetPasswordPath added in v1.3.0

func (config *SmartnodeConfig) GetPasswordPath() string

func (*SmartnodeConfig) GetPowProxyContainerTag added in v1.3.0

func (config *SmartnodeConfig) GetPowProxyContainerTag() string

func (*SmartnodeConfig) GetPruneProvisionerContainerTag added in v1.3.0

func (config *SmartnodeConfig) GetPruneProvisionerContainerTag() string

func (*SmartnodeConfig) GetRplFaucetAddress added in v1.3.0

func (config *SmartnodeConfig) GetRplFaucetAddress() string

func (*SmartnodeConfig) GetRplTokenAddress added in v1.3.0

func (config *SmartnodeConfig) GetRplTokenAddress() string

func (*SmartnodeConfig) GetSmartnodeContainerTag added in v1.3.0

func (config *SmartnodeConfig) GetSmartnodeContainerTag() string

func (*SmartnodeConfig) GetStakeUrl added in v1.3.0

func (config *SmartnodeConfig) GetStakeUrl() string

func (*SmartnodeConfig) GetStorageAddress added in v1.3.0

func (config *SmartnodeConfig) GetStorageAddress() string

func (*SmartnodeConfig) GetTxWatchUrl added in v1.3.0

func (config *SmartnodeConfig) GetTxWatchUrl() string

func (*SmartnodeConfig) GetValidatorKeychainPath added in v1.3.0

func (config *SmartnodeConfig) GetValidatorKeychainPath() string

func (*SmartnodeConfig) GetWalletPath added in v1.3.0

func (config *SmartnodeConfig) GetWalletPath() string

type TekuConfig added in v1.3.0

type TekuConfig struct {
	Title string `yaml:"title,omitempty"`

	// The max number of P2P peers to connect to
	MaxPeers Parameter `yaml:"maxPeers,omitempty"`

	// Common parameters that Teku doesn't support and should be hidden
	UnsupportedCommonParams []string `yaml:"unsupportedCommonParams,omitempty"`

	// The Docker Hub tag for Lighthouse
	ContainerTag Parameter `yaml:"containerTag,omitempty"`

	// Custom command line flags for the BN
	AdditionalBnFlags Parameter `yaml:"additionalBnFlags,omitempty"`

	// Custom command line flags for the VC
	AdditionalVcFlags Parameter `yaml:"additionalVcFlags,omitempty"`
}

Configuration for Teku

func NewTekuConfig added in v1.3.0

func NewTekuConfig(config *RocketPoolConfig) *TekuConfig

Generates a new Teku configuration

func (*TekuConfig) GetConfigTitle added in v1.3.0

func (config *TekuConfig) GetConfigTitle() string

The the title for the config

func (*TekuConfig) GetName added in v1.3.0

func (config *TekuConfig) GetName() string

Get the name of the client

func (*TekuConfig) GetParameters added in v1.3.0

func (config *TekuConfig) GetParameters() []*Parameter

Get the parameters for this config

func (*TekuConfig) GetUnsupportedCommonParams added in v1.3.0

func (config *TekuConfig) GetUnsupportedCommonParams() []string

Get the common params that this client doesn't support

func (*TekuConfig) GetValidatorImage added in v1.3.0

func (config *TekuConfig) GetValidatorImage() string

Get the Docker container name of the validator client

type UserParam

type UserParam struct {
	Env   string `yaml:"env,omitempty"`
	Value string `yaml:"value"`
}

Jump to

Keyboard shortcuts

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