config

package
v1.6.0 Latest Latest
Warning

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

Go to latest
Published: Apr 3, 2024 License: GPL-3.0 Imports: 25 Imported by: 0

Documentation

Overview

This work is licensed and released under GNU GPL v3 or any other later versions. The full text of the license is below/ found at <http://www.gnu.org/licenses/>

(c) 2023 Rocket Pool Pty Ltd. Modified under GNU GPL v3. [1.5.0]

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

This work is licensed and released under GNU GPL v3 or any other later versions. The full text of the license is below/ found at <http://www.gnu.org/licenses/>

(c) 2023 Rocket Pool Pty Ltd. Modified under GNU GPL v3. [1.5.0]

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

This work is licensed and released under GNU GPL v3 or any other later versions. The full text of the license is below/ found at <http://www.gnu.org/licenses/>

(c) 2023 Rocket Pool Pty Ltd. Modified under GNU GPL v3. [1.5.0]

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

This work is licensed and released under GNU GPL v3 or any other later versions. The full text of the license is below/ found at <http://www.gnu.org/licenses/>

(c) 2023 Rocket Pool Pty Ltd. Modified under GNU GPL v3. [1.5.0]

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

This work is licensed and released under GNU GPL v3 or any other later versions. The full text of the license is below/ found at <http://www.gnu.org/licenses/>

(c) 2023 Rocket Pool Pty Ltd. Modified under GNU GPL v3. [1.5.0]

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

This work is licensed and released under GNU GPL v3 or any other later versions. The full text of the license is below/ found at <http://www.gnu.org/licenses/>

(c) 2023 Rocket Pool Pty Ltd. Modified under GNU GPL v3. [1.5.0]

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

This work is licensed and released under GNU GPL v3 or any other later versions. The full text of the license is below/ found at <http://www.gnu.org/licenses/>

(c) 2023 Rocket Pool Pty Ltd. Modified under GNU GPL v3. [1.5.0]

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

This work is licensed and released under GNU GPL v3 or any other later versions. The full text of the license is below/ found at <http://www.gnu.org/licenses/>

(c) 2023 Rocket Pool Pty Ltd. Modified under GNU GPL v3. [1.5.0]

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

This work is licensed and released under GNU GPL v3 or any other later versions. The full text of the license is below/ found at <http://www.gnu.org/licenses/>

(c) 2023 Rocket Pool Pty Ltd. Modified under GNU GPL v3. [1.5.0]

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

This work is licensed and released under GNU GPL v3 or any other later versions. The full text of the license is below/ found at <http://www.gnu.org/licenses/>

(c) 2023 Rocket Pool Pty Ltd. Modified under GNU GPL v3. [1.5.0]

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

This work is licensed and released under GNU GPL v3 or any other later versions. The full text of the license is below/ found at <http://www.gnu.org/licenses/>

(c) 2023 Rocket Pool Pty Ltd. Modified under GNU GPL v3. [1.5.0]

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

This work is licensed and released under GNU GPL v3 or any other later versions. The full text of the license is below/ found at <http://www.gnu.org/licenses/>

(c) 2023 Rocket Pool Pty Ltd. Modified under GNU GPL v3. [1.2.0]

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

This work is licensed and released under GNU GPL v3 or any other later versions. The full text of the license is below/ found at <http://www.gnu.org/licenses/>

(c) 2023 Rocket Pool Pty Ltd. Modified under GNU GPL v3. [1.5.0]

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

This work is licensed and released under GNU GPL v3 or any other later versions. The full text of the license is below/ found at <http://www.gnu.org/licenses/>

(c) 2023 Rocket Pool Pty Ltd. Modified under GNU GPL v3. [1.5.0]

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

This work is licensed and released under GNU GPL v3 or any other later versions. The full text of the license is below/ found at <http://www.gnu.org/licenses/>

(c) 2023 Rocket Pool Pty Ltd. Modified under GNU GPL v3. [1.5.0]

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

This work is licensed and released under GNU GPL v3 or any other later versions. The full text of the license is below/ found at <http://www.gnu.org/licenses/>

(c) 2023 Rocket Pool Pty Ltd. Modified under GNU GPL v3. [1.5.0]

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

This work is licensed and released under GNU GPL v3 or any other later versions. The full text of the license is below/ found at <http://www.gnu.org/licenses/>

(c) 2023 Rocket Pool Pty Ltd. Modified under GNU GPL v3. [1.5.0]

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

This work is licensed and released under GNU GPL v3 or any other later versions. The full text of the license is below/ found at <http://www.gnu.org/licenses/>

(c) 2023 Rocket Pool Pty Ltd. Modified under GNU GPL v3. [1.5.0]

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

This work is licensed and released under GNU GPL v3 or any other later versions. The full text of the license is below/ found at <http://www.gnu.org/licenses/>

(c) 2023 Rocket Pool Pty Ltd. Modified under GNU GPL v3. [1.5.0]

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

This work is licensed and released under GNU GPL v3 or any other later versions. The full text of the license is below/ found at <http://www.gnu.org/licenses/>

(c) 2023 Rocket Pool Pty Ltd. Modified under GNU GPL v3. [1.5.0]

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

This work is licensed and released under GNU GPL v3 or any other later versions. The full text of the license is below/ found at <http://www.gnu.org/licenses/>

(c) 2023 Rocket Pool Pty Ltd. Modified under GNU GPL v3. [1.5.0]

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

Index

Constants

View Source
const (
	RegulatedRelayDescription   string = "Select this to enable the relays that comply with government regulations (e.g. OFAC sanctions), "
	UnregulatedRelayDescription string = "Select this to enable the relays that do not follow any sanctions lists (do not censor transactions), "
	NoSandwichRelayDescription  string = "and do not allow front-running or sandwich attacks."
	AllMevRelayDescription      string = "and allow for all types of MEV (including sandwich attacks)."
)

Constants

View Source
const (
	ApiContainerName          string = "api"
	Eth1ContainerName         string = "eth1"
	Eth1FallbackContainerName string = "eth1-fallback"
	Eth2ContainerName         string = "eth2"
	ExporterContainerName     string = "exporter"
	GrafanaContainerName      string = "grafana"
	MevBoostContainerName     string = "mev-boost"
	NodeContainerName         string = "node"
	PrometheusContainerName   string = "prometheus"
	ValidatorContainerName    string = "validator"
	GuardianContainerName     string = "guardian"

	FeeRecipientFileEnvVar string = "FEE_RECIPIENT_FILE"
	FeeRecipientEnvVar     string = "FEE_RECIPIENT"
)

Constants

View Source
const (
	NetworkID                   string = "network"
	ProjectNameID               string = "projectName"
	DaemonDataPath              string = "/.stader/data"
	GuardianFolder              string = "guardian"
	SpRewardsMerkleProofsFolder string = "sp-rewards-merkle-proofs"
	MerkleProofsFormat          string = "cycle-%s-%d.json"
	FeeRecipientFilename        string = "stader-fee-recipient.txt"
	NativeFeeRecipientFilename  string = "stader-fee-recipient-env.txt"
)

Constants

View Source
const ApiPortID string = "apiPort"
View Source
const CheckpointSyncUrlID string = "checkpointSyncUrl"
View Source
const CustomGraffitiEnvVar string = "CUSTOM_GRAFFITI"

Env var names

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

func ValidateDefaults(Chain Chain, ChainName string) error

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

func ValidateMetricDefaults

func ValidateMetricDefaults(Params []ClientParam) error

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

Types

type BesuConfig

type BesuConfig struct {
	Title string `yaml:"-"`

	// Common parameters that Besu doesn't support and should be hidden
	UnsupportedCommonParams []string `yaml:"-"`

	// Compatible consensus clients
	CompatibleConsensusClients []config.ConsensusClient `yaml:"-"`

	// Max number of P2P peers to connect to
	JvmHeapSize config.Parameter `yaml:"jvmHeapSize,omitempty"`

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

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

	// Historical state block regeneration limit
	MaxBackLayers config.Parameter `yaml:"maxBackLayers,omitempty"`

	// The Docker Hub tag for Besu
	ContainerTag config.Parameter `yaml:"containerTag,omitempty"`

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

Configuration for Besu

func NewBesuConfig

func NewBesuConfig(cfg *StaderConfig) *BesuConfig

Generates a new Besu configuration

func (*BesuConfig) GetConfigTitle

func (cfg *BesuConfig) GetConfigTitle() string

The the title for the config

func (*BesuConfig) GetParameters

func (cfg *BesuConfig) GetParameters() []*config.Parameter

Get the parameters for this config

type BitflyNodeMetricsConfig

type BitflyNodeMetricsConfig struct {
	Title string `yaml:"-"`

	Secret config.Parameter `yaml:"secret,omitempty"`

	Endpoint config.Parameter `yaml:"endpoint,omitempty"`

	MachineName config.Parameter `yaml:"machineName,omitempty"`
}

Configuration for Bitfly Node Metrics

func NewBitflyNodeMetricsConfig

func NewBitflyNodeMetricsConfig(cfg *StaderConfig) *BitflyNodeMetricsConfig

Generates a new Bitfly Node Metrics config

func (*BitflyNodeMetricsConfig) GetConfigTitle

func (cfg *BitflyNodeMetricsConfig) GetConfigTitle() string

The the title for the config

func (*BitflyNodeMetricsConfig) GetParameters

func (cfg *BitflyNodeMetricsConfig) GetParameters() []*config.Parameter

Get the parameters for this config

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

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

Get a client by it's ID

func (*Chain) GetSelectedClient

func (chain *Chain) GetSelectedClient() *ClientOption

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

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 ConsensusCommonConfig

type ConsensusCommonConfig struct {
	Title string `yaml:"-"`

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

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

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

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

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

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

Common parameters shared by all of the Beacon Clients

func NewConsensusCommonConfig

func NewConsensusCommonConfig(cfg *StaderConfig) *ConsensusCommonConfig

Create a new ConsensusCommonParams struct

func (*ConsensusCommonConfig) GetConfigTitle

func (cfg *ConsensusCommonConfig) GetConfigTitle() string

The the title for the config

func (*ConsensusCommonConfig) GetParameters

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

Get the parameters for this config

type ExecutionCommonConfig

type ExecutionCommonConfig struct {
	Title string `yaml:"-"`

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

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

	// The Engine API port
	EnginePort config.Parameter `yaml:"enginePort,omitempty"`

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

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

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

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

Configuration for the Execution client

func NewExecutionCommonConfig

func NewExecutionCommonConfig(cfg *StaderConfig) *ExecutionCommonConfig

Create a new ExecutionCommonConfig struct

func (*ExecutionCommonConfig) GetConfigTitle

func (cfg *ExecutionCommonConfig) GetConfigTitle() string

The the title for the config

func (*ExecutionCommonConfig) GetParameters

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

Get the parameters for this config

type ExporterConfig

type ExporterConfig struct {
	Title string `yaml:"-"`

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

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

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

Configuration for Exporter

func NewExporterConfig

func NewExporterConfig(cfg *StaderConfig) *ExporterConfig

Generates a new Exporter config

func (*ExporterConfig) GetConfigTitle

func (cfg *ExporterConfig) GetConfigTitle() string

The the title for the config

func (*ExporterConfig) GetParameters

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

Get the parameters for this config

type ExternalExecutionConfig

type ExternalExecutionConfig struct {
	Title string `yaml:"-"`

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

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

Configuration for external Execution clients

func NewExternalExecutionConfig

func NewExternalExecutionConfig(cfg *StaderConfig) *ExternalExecutionConfig

Generates a new ExternalExecutionConfig configuration

func (*ExternalExecutionConfig) GetConfigTitle

func (cfg *ExternalExecutionConfig) GetConfigTitle() string

The the title for the config

func (*ExternalExecutionConfig) GetParameters

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

Get the parameters for this config

type ExternalExporterConfig

type ExternalExporterConfig struct {
	Title string `yaml:"-"`

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

type ExternalGrafanaConfig

type ExternalGrafanaConfig struct {
	Title string `yaml:"-"`

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

type ExternalLighthouseConfig

type ExternalLighthouseConfig struct {
	Title string `yaml:"-"`

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

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

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

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

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

Configuration for external Consensus clients

func NewExternalLighthouseConfig

func NewExternalLighthouseConfig(cfg *StaderConfig) *ExternalLighthouseConfig

Generates a new ExternalLighthouseClient configuration

func (*ExternalLighthouseConfig) GetApiUrl

func (cfg *ExternalLighthouseConfig) GetApiUrl() string

Get the API url from the config

func (*ExternalLighthouseConfig) GetConfigTitle

func (cfg *ExternalLighthouseConfig) GetConfigTitle() string

The the title for the config

func (*ExternalLighthouseConfig) GetName

func (cfg *ExternalLighthouseConfig) GetName() string

Get the name of the client

func (*ExternalLighthouseConfig) GetParameters

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

Get the parameters for this config

func (*ExternalLighthouseConfig) GetValidatorImage

func (cfg *ExternalLighthouseConfig) GetValidatorImage() string

Get the Docker container name of the validator client

type ExternalLodestarConfig added in v1.3.0

type ExternalLodestarConfig struct {
	Title string `yaml:"-"`

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

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

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

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

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

func NewExternalLodestarConfig added in v1.3.0

func NewExternalLodestarConfig(cfg *StaderConfig) *ExternalLodestarConfig

Generates a new ExternalLodestarClient configuration

func (*ExternalLodestarConfig) GetApiUrl added in v1.3.0

func (cfg *ExternalLodestarConfig) GetApiUrl() string

func (*ExternalLodestarConfig) GetConfigTitle added in v1.3.0

func (cfg *ExternalLodestarConfig) GetConfigTitle() string

The the title for the config

func (*ExternalLodestarConfig) GetName added in v1.3.0

func (cfg *ExternalLodestarConfig) GetName() string

Get the name of the client

func (*ExternalLodestarConfig) GetParameters added in v1.3.0

func (cfg *ExternalLodestarConfig) GetParameters() []*config.Parameter

Get the parameters for this config

func (*ExternalLodestarConfig) GetValidatorImage added in v1.3.0

func (cfg *ExternalLodestarConfig) GetValidatorImage() string

Get the Docker container name of the validator client

type ExternalNimbusConfig

type ExternalNimbusConfig struct {
	Title string `yaml:"-"`

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

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

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

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

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

Configuration for external Consensus clients

func NewExternalNimbusConfig

func NewExternalNimbusConfig(cfg *StaderConfig) *ExternalNimbusConfig

Generates a new ExternalNimbusConfig configuration

func (*ExternalNimbusConfig) GetApiUrl

func (cfg *ExternalNimbusConfig) GetApiUrl() string

Get the API url from the config

func (*ExternalNimbusConfig) GetConfigTitle

func (cfg *ExternalNimbusConfig) GetConfigTitle() string

The the title for the config

func (*ExternalNimbusConfig) GetName

func (cfg *ExternalNimbusConfig) GetName() string

Get the name of the client

func (*ExternalNimbusConfig) GetParameters

func (cfg *ExternalNimbusConfig) GetParameters() []*config.Parameter

Get the parameters for this config

func (*ExternalNimbusConfig) GetValidatorImage

func (cfg *ExternalNimbusConfig) GetValidatorImage() string

Get the Docker container name of the validator client

type ExternalPrysmConfig

type ExternalPrysmConfig struct {
	Title string `yaml:"-"`

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

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

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

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

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

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

Configuration for an external Prysm clients

func NewExternalPrysmConfig

func NewExternalPrysmConfig(cfg *StaderConfig) *ExternalPrysmConfig

Generates a new ExternalPrysmConfig configuration

func (*ExternalPrysmConfig) GetApiUrl

func (cfg *ExternalPrysmConfig) GetApiUrl() string

Get the API url from the config

func (*ExternalPrysmConfig) GetConfigTitle

func (cfg *ExternalPrysmConfig) GetConfigTitle() string

The the title for the config

func (*ExternalPrysmConfig) GetName

func (cfg *ExternalPrysmConfig) GetName() string

Get the name of the client

func (*ExternalPrysmConfig) GetParameters

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

Get the parameters for this config

func (*ExternalPrysmConfig) GetValidatorImage

func (cfg *ExternalPrysmConfig) GetValidatorImage() string

Get the Docker container name of the validator client

type ExternalTekuConfig

type ExternalTekuConfig struct {
	Title string `yaml:"-"`

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

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

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

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

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

Configuration for an external Teku client

func NewExternalTekuConfig

func NewExternalTekuConfig(cfg *StaderConfig) *ExternalTekuConfig

Generates a new ExternalTekuClient configuration

func (*ExternalTekuConfig) GetApiUrl

func (cfg *ExternalTekuConfig) GetApiUrl() string

Get the API url from the config

func (*ExternalTekuConfig) GetConfigTitle

func (cfg *ExternalTekuConfig) GetConfigTitle() string

The the title for the config

func (*ExternalTekuConfig) GetName

func (cfg *ExternalTekuConfig) GetName() string

Get the name of the client

func (*ExternalTekuConfig) GetParameters

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

Get the parameters for this config

func (*ExternalTekuConfig) GetValidatorImage

func (cfg *ExternalTekuConfig) GetValidatorImage() string

Get the Docker container name of the validator client

type FallbackNormalConfig

type FallbackNormalConfig struct {
	Title string `yaml:"-"`

	// The URL of the Execution Client HTTP endpoint
	EcHttpUrl config.Parameter `yaml:"ecHttpUrl,omitempty"`

	// The URL of the Beacon Node HTTP endpoint
	CcHttpUrl config.Parameter `yaml:"ccHttpUrl,omitempty"`
}

Configuration for fallback Lighthouse

func NewFallbackNormalConfig

func NewFallbackNormalConfig(cfg *StaderConfig) *FallbackNormalConfig

Generates a new FallbackNormalConfig configuration

func (*FallbackNormalConfig) GetConfigTitle

func (config *FallbackNormalConfig) GetConfigTitle() string

The the title for the config

func (*FallbackNormalConfig) GetParameters

func (cfg *FallbackNormalConfig) GetParameters() []*config.Parameter

Get the config.Parameters for this config

type FallbackPrysmConfig

type FallbackPrysmConfig struct {
	Title string `yaml:"-"`

	// The URL of the Execution Client HTTP endpoint
	EcHttpUrl config.Parameter `yaml:"ecHttpUrl,omitempty"`

	// The URL of the Beacon Node HTTP endpoint
	CcHttpUrl config.Parameter `yaml:"ccHttpUrl,omitempty"`

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

Configuration for fallback Prysm

func NewFallbackPrysmConfig

func NewFallbackPrysmConfig(cfg *StaderConfig) *FallbackPrysmConfig

Generates a new FallbackPrysmConfig configuration

func (*FallbackPrysmConfig) GetConfigTitle

func (config *FallbackPrysmConfig) GetConfigTitle() string

The the title for the config

func (*FallbackPrysmConfig) GetParameters

func (cfg *FallbackPrysmConfig) GetParameters() []*config.Parameter

Get the config.Parameters for this config

type GethConfig

type GethConfig struct {
	Title string `yaml:"-"`

	// Common config.Parameters that Geth doesn't support and should be hidden
	UnsupportedCommonParams []string `yaml:"-"`

	// Compatible consensus clients
	CompatibleConsensusClients []config.ConsensusClient `yaml:"-"`

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

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

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

	// Flag for using Pebble as the DB
	UsePebble config.Parameter `yaml:"usePebble,omitempty"`

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

	// The flag for enabling PBSS
	EnablePbss config.Parameter `yaml:"enablePbss,omitempty"`

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

Configuration for Geth

func NewGethConfig

func NewGethConfig(cfg *StaderConfig) *GethConfig

Generates a new Geth configuration

func (*GethConfig) GetConfigTitle

func (cfg *GethConfig) GetConfigTitle() string

The the title for the config

func (*GethConfig) GetParameters

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

Get the config.Parameters for this config

type GrafanaConfig

type GrafanaConfig struct {
	Title string `yaml:"-"`

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

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

Configuration for Grafana

func NewGrafanaConfig

func NewGrafanaConfig(cfg *StaderConfig) *GrafanaConfig

Generates a new Grafana config

func (*GrafanaConfig) GetConfigTitle

func (cfg *GrafanaConfig) GetConfigTitle() string

The the title for the config

func (*GrafanaConfig) GetParameters

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

Get the parameters for this config

type LegacyStaderConfig

type LegacyStaderConfig struct {
	StaderNode 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"`
		TxWatchUrl              string  `yaml:"txWatchUrl,omitempty"`
		StakeUrl                string  `yaml:"stakeUrl,omitempty"`
	} `yaml:"staderNode,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"`
}

Stader config

func Load

func Load(c *cli.Context) (LegacyStaderConfig, error)

Load merged config from files

func Merge

func Merge(configs ...*LegacyStaderConfig) (LegacyStaderConfig, error)

Merge configs

func Parse

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

Parse a config from yaml bytes

func (*LegacyStaderConfig) GetGasLimit

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

Parse and return the gas limit

func (*LegacyStaderConfig) GetMaxFee

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

Parse and return the max fee in wei

func (*LegacyStaderConfig) GetMaxPriorityFee

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

Parse and return the max priority fee in wei

func (*LegacyStaderConfig) GetSelectedEth1Client

func (config *LegacyStaderConfig) GetSelectedEth1Client() *ClientOption

Get the selected clients from a config

func (*LegacyStaderConfig) GetSelectedEth1FallbackClient

func (config *LegacyStaderConfig) GetSelectedEth1FallbackClient() *ClientOption

func (*LegacyStaderConfig) GetSelectedEth2Client

func (config *LegacyStaderConfig) GetSelectedEth2Client() *ClientOption

func (*LegacyStaderConfig) Serialize

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

Serialize a config to yaml bytes

type LighthouseConfig

type LighthouseConfig struct {
	Title string `yaml:"-"`

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

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

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

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

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

Configuration for Lighthouse

func NewLighthouseConfig

func NewLighthouseConfig(cfg *StaderConfig) *LighthouseConfig

Generates a new Lighthouse configuration

func (*LighthouseConfig) GetConfigTitle

func (cfg *LighthouseConfig) GetConfigTitle() string

The the title for the config

func (*LighthouseConfig) GetName

func (cfg *LighthouseConfig) GetName() string

Get the name of the client

func (*LighthouseConfig) GetParameters

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

Get the parameters for this config

func (*LighthouseConfig) GetUnsupportedCommonParams

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

Get the common params that this client doesn't support

func (*LighthouseConfig) GetValidatorImage

func (cfg *LighthouseConfig) GetValidatorImage() string

Get the Docker container name of the validator client

type LodestarConfig added in v1.3.0

type LodestarConfig struct {
	Title string `yaml:"-"`

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

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

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

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

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

Configuration for Lodestar

func NewLodestarConfig added in v1.3.0

func NewLodestarConfig(cfg *StaderConfig) *LodestarConfig

Generates a new Lodestar configuration

func (*LodestarConfig) GetConfigTitle added in v1.3.0

func (cfg *LodestarConfig) GetConfigTitle() string

The the title for the config

func (*LodestarConfig) GetName added in v1.3.0

func (cfg *LodestarConfig) GetName() string

Get the name of the client

func (*LodestarConfig) GetParameters added in v1.3.0

func (cfg *LodestarConfig) GetParameters() []*config.Parameter

Get the parameters for this config

func (*LodestarConfig) GetUnsupportedCommonParams added in v1.3.0

func (cfg *LodestarConfig) GetUnsupportedCommonParams() []string

Get the common params that this client doesn't support

func (*LodestarConfig) GetValidatorImage added in v1.3.0

func (cfg *LodestarConfig) GetValidatorImage() string

Get the Docker container name of the validator client

type Metrics

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

func (*Metrics) GetParamByEnvName

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

Get a metrics parameter by its environment variable name

type MevBoostConfig

type MevBoostConfig struct {
	Title string `yaml:"-"`

	// Ownership mode
	Mode config.Parameter `yaml:"mode,omitempty"`

	// The mode for relay selection
	SelectionMode config.Parameter `yaml:"selectionMode,omitempty"`

	// Regulated, all types
	EnableRegulatedAllMev config.Parameter `yaml:"enableRegulatedAllMev,omitempty"`

	// Regulated, no sandwiching
	EnableRegulatedNoSandwich config.Parameter `yaml:"enableRegulatedNoSandwich,omitempty"`

	// Unregulated, all types
	EnableUnregulatedAllMev config.Parameter `yaml:"enableUnregulatedAllMev,omitempty"`

	// Unregulated, no sandwiching
	EnableUnregulatedNoSandwich config.Parameter `yaml:"enableUnregulatedNoSandwich,omitempty"`

	// Flashbots relay
	FlashbotsRelay config.Parameter `yaml:"flashbotsEnabled,omitempty"`

	// bloXroute max profit relay
	BloxRouteMaxProfitRelay config.Parameter `yaml:"bloxRouteMaxProfitEnabled,omitempty"`

	// bloXroute regulated relay
	BloxRouteRegulatedRelay config.Parameter `yaml:"bloxRouteRegulatedEnabled,omitempty"`

	// Eden relay
	EdenRelay config.Parameter `yaml:"edenEnabled,omitempty"`

	// Ultra sound relay
	UltrasoundRelay config.Parameter `yaml:"ultrasoundEnabled,omitempty"`

	// Aestus relay
	AestusRelay config.Parameter `yaml:"aestusEnabled,omitempty"`

	// Agnostic relay
	AgnosticRelay config.Parameter `yaml:"AgnoticEnabled,omitempty"`

	// The RPC port
	Port config.Parameter `yaml:"port,omitempty"`

	// Toggle for forwarding the HTTP port outside of Docker
	OpenRpcPort config.Parameter `yaml:"openRpcPort,omitempty"`

	// The Docker Hub tag for MEV-Boost
	ContainerTag config.Parameter `yaml:"containerTag,omitempty"`

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

	// The URL of an external MEV-Boost client
	ExternalUrl config.Parameter `yaml:"externalUrl"`
	// contains filtered or unexported fields
}

Configuration for MEV-Boost

func NewMevBoostConfig

func NewMevBoostConfig(cfg *StaderConfig) *MevBoostConfig

Generates a new MEV-Boost configuration

func (*MevBoostConfig) GetAvailableProfiles

func (cfg *MevBoostConfig) GetAvailableProfiles() (bool, bool, bool, bool)

Get the profiles that are available for the current network

func (*MevBoostConfig) GetAvailableRelays

func (cfg *MevBoostConfig) GetAvailableRelays() []config.MevRelay

Get the relays that are available for the current network

func (*MevBoostConfig) GetConfigTitle

func (cfg *MevBoostConfig) GetConfigTitle() string

The title for the config

func (*MevBoostConfig) GetEnabledMevRelays

func (cfg *MevBoostConfig) GetEnabledMevRelays() []config.MevRelay

Get which MEV-boost relays are enabled

func (*MevBoostConfig) GetParameters

func (cfg *MevBoostConfig) GetParameters() []*config.Parameter

Get the config.Parameters for this config

func (*MevBoostConfig) GetRelayString

func (cfg *MevBoostConfig) GetRelayString() string

type NativeConfig

type NativeConfig struct {
	Title string `yaml:"-"`

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

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

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

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

	// The command for stopping the validator container in native mode
	ValidatorStopCommand config.Parameter `yaml:"validatorStopCommand,omitempty"`
}

Configuration for Native mode

func NewNativeConfig

func NewNativeConfig(cfg *StaderConfig) *NativeConfig

Generates a new Stadernode configuration

func (*NativeConfig) GetConfigTitle

func (cfg *NativeConfig) GetConfigTitle() string

The the title for the config

func (*NativeConfig) GetParameters

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

Get the parameters for this config

type NethermindConfig

type NethermindConfig struct {
	Title string `yaml:"-"`

	// Common parameters that Nethermind doesn't support and should be hidden
	UnsupportedCommonParams []string `yaml:"-"`

	// Compatible consensus clients
	CompatibleConsensusClients []config.ConsensusClient `yaml:"-"`

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

	// Nethermind's cache memory hint
	CacheSize config.Parameter `yaml:"cacheSize,omitempty"`

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

	// Nethermind's memory for pruning
	PruneMemSize config.Parameter `yaml:"pruneMemSize,omitempty"`

	// Additional modules to enable on the primary JSON RPC endpoint
	AdditionalModules config.Parameter `yaml:"additionalModules,omitempty"`

	// Additional JSON RPC URLs
	AdditionalUrls config.Parameter `yaml:"additionalUrls,omitempty"`

	// The Docker Hub tag for Nethermind
	ContainerTag config.Parameter `yaml:"containerTag,omitempty"`

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

Configuration for Nethermind

func NewNethermindConfig

func NewNethermindConfig(cfg *StaderConfig) *NethermindConfig

Generates a new Nethermind configuration

func (*NethermindConfig) GetConfigTitle

func (cfg *NethermindConfig) GetConfigTitle() string

The the title for the config

func (*NethermindConfig) GetParameters

func (cfg *NethermindConfig) GetParameters() []*config.Parameter

Get the parameters for this config

type NimbusConfig

type NimbusConfig struct {
	Title string `yaml:"-"`

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

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

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

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

	// The pruning mode to use in the BN
	PruningMode config.Parameter `yaml:"pruningMode,omitempty"`

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

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

Configuration for Nimbus

func NewNimbusConfig

func NewNimbusConfig(cfg *StaderConfig) *NimbusConfig

Generates a new Nimbus configuration

func (*NimbusConfig) GetConfigTitle

func (cfg *NimbusConfig) GetConfigTitle() string

The the title for the config

func (*NimbusConfig) GetName

func (cfg *NimbusConfig) GetName() string

Get the name of the client

func (*NimbusConfig) GetParameters

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

Get the parameters for this config

func (*NimbusConfig) GetUnsupportedCommonParams

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

Get the common params that this client doesn't support

func (*NimbusConfig) GetValidatorImage

func (cfg *NimbusConfig) GetValidatorImage() string

Get the Docker container name of the validator client

type PrometheusConfig

type PrometheusConfig struct {
	Title string `yaml:"-"`

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

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

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

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

Configuration for Prometheus

func NewPrometheusConfig

func NewPrometheusConfig(cfg *StaderConfig) *PrometheusConfig

Generates a new Prometheus config

func (*PrometheusConfig) GetConfigTitle

func (cfg *PrometheusConfig) GetConfigTitle() string

The the title for the config

func (*PrometheusConfig) GetParameters

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

Get the parameters for this config

type PrysmConfig

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 config.Parameter `yaml:"maxPeers,omitempty"`

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

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

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

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

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

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

Configuration for Prysm

func NewPrysmConfig

func NewPrysmConfig(cfg *StaderConfig) *PrysmConfig

Generates a new Prysm configuration

func (*PrysmConfig) GetConfigTitle

func (cfg *PrysmConfig) GetConfigTitle() string

The the title for the config

func (*PrysmConfig) GetName

func (cfg *PrysmConfig) GetName() string

Get the name of the client

func (*PrysmConfig) GetParameters

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

Get the parameters for this config

func (*PrysmConfig) GetUnsupportedCommonParams

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

Get the common params that this client doesn't support

func (*PrysmConfig) GetValidatorImage

func (cfg *PrysmConfig) GetValidatorImage() string

Get the Docker container name of the validator client

type StaderConfig

type StaderConfig struct {
	Title string `yaml:"-"`

	Version string `yaml:"-"`

	StaderDirectory string `yaml:"-"`

	IsNativeMode bool `yaml:"-"`

	// Execution client settings
	ExecutionClientMode config.Parameter `yaml:"executionClientMode,omitempty"`
	ExecutionClient     config.Parameter `yaml:"executionClient,omitempty"`

	// Fallback settings
	UseFallbackClients config.Parameter `yaml:"useFallbackClients,omitempty"`
	ReconnectDelay     config.Parameter `yaml:"reconnectDelay,omitempty"`

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

	// Metrics settings
	EnableMetrics           config.Parameter `yaml:"enableMetrics,omitempty"`
	ExposeGuardianPort      config.Parameter `yaml:"enableMetrics,omitempty"`
	EnableGuardianMetrics   config.Parameter `yaml:"enableGuardianMetrics,omitempty"`
	EcMetricsPort           config.Parameter `yaml:"ecMetricsPort,omitempty"`
	BnMetricsPort           config.Parameter `yaml:"bnMetricsPort,omitempty"`
	VcMetricsPort           config.Parameter `yaml:"vcMetricsPort,omitempty"`
	NodeMetricsPort         config.Parameter `yaml:"nodeMetricsPort,omitempty"`
	ExporterMetricsPort     config.Parameter `yaml:"exporterMetricsPort,omitempty"`
	EnableBitflyNodeMetrics config.Parameter `yaml:"enableBitflyNodeMetrics,omitempty"`

	// The StaderNode configuration
	StaderNode *StaderNodeConfig `yaml:"stadernode,omitempty"`

	// Execution client configurations
	ExecutionCommon   *ExecutionCommonConfig   `yaml:"executionCommon,omitempty"`
	Geth              *GethConfig              `yaml:"geth,omitempty"`
	Nethermind        *NethermindConfig        `yaml:"nethermind,omitempty"`
	Besu              *BesuConfig              `yaml:"besu,omitempty"`
	ExternalExecution *ExternalExecutionConfig `yaml:"externalExecution,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"`
	Lodestar           *LodestarConfig           `yaml:"lodestar,omitempty"`
	ExternalLighthouse *ExternalLighthouseConfig `yaml:"externalLighthouse,omitempty"`
	ExternalNimbus     *ExternalNimbusConfig     `yaml:"externalNimbus,omitempty"`
	ExternalPrysm      *ExternalPrysmConfig      `yaml:"externalPrysm,omitempty"`
	ExternalTeku       *ExternalTekuConfig       `yaml:"externalTeku,omitempty"`
	ExternalLodestar   *ExternalLodestarConfig   `yaml:"externalLodestar,omitempty"`

	// Fallback client configurations
	FallbackNormal *FallbackNormalConfig `yaml:"fallbackNormal,omitempty"`
	FallbackPrysm  *FallbackPrysmConfig  `yaml:"fallbackPrysm,omitempty"`

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

	BitflyNodeMetrics *BitflyNodeMetricsConfig `yaml:"bitflyNodeMetrics,omitempty"`

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

	// MEV-Boost
	EnableMevBoost config.Parameter `yaml:"enableMevBoost,omitempty"`
	MevBoost       *MevBoostConfig  `yaml:"mevBoost,omitempty"`
}

The master configuration struct

func LoadFromFile

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

Load configuration settings from a file

func NewStaderConfig

func NewStaderConfig(staderDir string, isNativeMode bool) *StaderConfig

Creates a new Stader configuration instance

func (*StaderConfig) ChangeNetwork

func (cfg *StaderConfig) ChangeNetwork(newNetwork config.Network)

Handle a network change on all of the parameters

func (*StaderConfig) CreateCopy

func (cfg *StaderConfig) CreateCopy() *StaderConfig

Create a copy of this configuration.

func (*StaderConfig) Deserialize

func (cfg *StaderConfig) Deserialize(masterMap map[string]map[string]string) error

Deserializes a settings file into this config

func (*StaderConfig) GenerateEnvironmentVariables

func (cfg *StaderConfig) GenerateEnvironmentVariables() map[string]string

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

func (*StaderConfig) GetChanges

func (cfg *StaderConfig) GetChanges(oldConfig *StaderConfig) (map[string][]config.ChangedSetting, map[config.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 (*StaderConfig) GetConfigTitle

func (cfg *StaderConfig) GetConfigTitle() string

The the title for the config

func (*StaderConfig) GetEventLogInterval

func (cfg *StaderConfig) GetEventLogInterval() (int, error)

Get the configuration for the selected execution client

func (*StaderConfig) GetParameters

func (cfg *StaderConfig) GetParameters() []*config.Parameter

Get the parameters for this config

func (*StaderConfig) GetSelectedConsensusClient

func (cfg *StaderConfig) GetSelectedConsensusClient() (config.ConsensusClient, config.Mode)

Get the selected CC and mode

func (*StaderConfig) GetSelectedConsensusClientConfig

func (cfg *StaderConfig) GetSelectedConsensusClientConfig() (config.ConsensusConfig, error)

Get the configuration for the selected consensus client

func (*StaderConfig) GetSubconfigs

func (cfg *StaderConfig) GetSubconfigs() map[string]config.Config

Get the subconfigurations for this config

func (*StaderConfig) IsDoppelgangerEnabled

func (cfg *StaderConfig) IsDoppelgangerEnabled() (bool, error)

Check if doppelganger protection is enabled

func (*StaderConfig) Serialize

func (cfg *StaderConfig) Serialize() map[string]map[string]string

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

func (*StaderConfig) UpdateDefaults

func (cfg *StaderConfig) UpdateDefaults() error

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

func (*StaderConfig) Validate

func (cfg *StaderConfig) Validate() []string

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

type StaderNodeConfig

type StaderNodeConfig struct {
	Title string `yaml:"-"`

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

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

	// The path of the guardians's persistent state storage
	GuardianStatePath config.Parameter `yaml:"guardianStatePath"`

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

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

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

	// Max tx fee for a single tx override
	TxFeeCap config.Parameter `yaml:"txFeeCap,omitempty"`

	// URL for an EC with archive mode, for manual rewards tree generation
	ArchiveECUrl config.Parameter `yaml:"archiveEcUrl,omitempty"`
	// contains filtered or unexported fields
}

Configuration for the Stader node

func NewStadernodeConfig

func NewStadernodeConfig(cfg *StaderConfig) *StaderNodeConfig

Generates a new Stadernode configuration

func (*StaderNodeConfig) GetBeaconChainUrl

func (cfg *StaderNodeConfig) GetBeaconChainUrl() string

func (*StaderNodeConfig) GetBulkPresignCheckApi

func (cfg *StaderNodeConfig) GetBulkPresignCheckApi() string

func (*StaderNodeConfig) GetBulkPresignSendApi

func (cfg *StaderNodeConfig) GetBulkPresignSendApi() string

func (*StaderNodeConfig) GetChainID

func (cfg *StaderNodeConfig) GetChainID() uint

func (*StaderNodeConfig) GetClaimData

func (cfg *StaderNodeConfig) GetClaimData(cycles []*big.Int) ([]*big.Int, []*big.Int, [][][32]byte, error)

func (*StaderNodeConfig) GetConfigTitle

func (cfg *StaderNodeConfig) GetConfigTitle() string

The the title for the config

func (*StaderNodeConfig) GetCustomKeyPasswordFilePath

func (cfg *StaderNodeConfig) GetCustomKeyPasswordFilePath() string

func (*StaderNodeConfig) GetCustomKeyPath

func (cfg *StaderNodeConfig) GetCustomKeyPath() string

func (*StaderNodeConfig) GetEcMigratorContainerTag

func (cfg *StaderNodeConfig) GetEcMigratorContainerTag() string

func (*StaderNodeConfig) GetEthxTokenAddress

func (cfg *StaderNodeConfig) GetEthxTokenAddress() common.Address

func (*StaderNodeConfig) GetFeeRecipientFilePath

func (cfg *StaderNodeConfig) GetFeeRecipientFilePath() string

func (*StaderNodeConfig) GetGuardianFolder

func (cfg *StaderNodeConfig) GetGuardianFolder(daemon bool) string

func (*StaderNodeConfig) GetGuardianStatePath

func (config *StaderNodeConfig) GetGuardianStatePath() string

func (*StaderNodeConfig) GetMerkleProofApi

func (cfg *StaderNodeConfig) GetMerkleProofApi() string

func (*StaderNodeConfig) GetNodeDiversityApi added in v1.4.9

func (cfg *StaderNodeConfig) GetNodeDiversityApi() string

func (*StaderNodeConfig) GetParameters

func (cfg *StaderNodeConfig) GetParameters() []*config.Parameter

Get the parameters for this config

func (*StaderNodeConfig) GetPasswordPath

func (cfg *StaderNodeConfig) GetPasswordPath() string

func (*StaderNodeConfig) GetPasswordPathInCLI

func (cfg *StaderNodeConfig) GetPasswordPathInCLI() string

func (*StaderNodeConfig) GetPresignCheckApi

func (cfg *StaderNodeConfig) GetPresignCheckApi() string

func (*StaderNodeConfig) GetPresignEncryptionKey added in v1.1.0

func (cfg *StaderNodeConfig) GetPresignEncryptionKey() string

func (*StaderNodeConfig) GetPresignPublicKeyApi

func (cfg *StaderNodeConfig) GetPresignPublicKeyApi() string

func (*StaderNodeConfig) GetPresignSendApi

func (cfg *StaderNodeConfig) GetPresignSendApi() string

Getters for the non-editable parameters

func (*StaderNodeConfig) GetPruneProvisionerContainerTag

func (config *StaderNodeConfig) GetPruneProvisionerContainerTag() string

func (*StaderNodeConfig) GetSpRewardCyclePath

func (cfg *StaderNodeConfig) GetSpRewardCyclePath(cycle int64, daemon bool) string

func (*StaderNodeConfig) GetSpRewardsMerkleProofFolder

func (cfg *StaderNodeConfig) GetSpRewardsMerkleProofFolder(daemon bool) string

func (*StaderNodeConfig) GetStaderConfigAddress

func (cfg *StaderNodeConfig) GetStaderConfigAddress() common.Address

func (*StaderNodeConfig) GetStadernodeContainerTag

func (cfg *StaderNodeConfig) GetStadernodeContainerTag() string

func (*StaderNodeConfig) GetStakeUrl

func (cfg *StaderNodeConfig) GetStakeUrl() string

func (*StaderNodeConfig) GetTxWatchUrl

func (cfg *StaderNodeConfig) GetTxWatchUrl() string

func (*StaderNodeConfig) GetValidatorKeychainPath

func (cfg *StaderNodeConfig) GetValidatorKeychainPath() string

func (*StaderNodeConfig) GetValidatorKeychainPathInCLI

func (cfg *StaderNodeConfig) GetValidatorKeychainPathInCLI() string

func (*StaderNodeConfig) GetWalletPath

func (cfg *StaderNodeConfig) GetWalletPath() string

func (*StaderNodeConfig) GetWalletPathInCLI

func (cfg *StaderNodeConfig) GetWalletPathInCLI() string

func (*StaderNodeConfig) ReadCycleCache

func (cfg *StaderNodeConfig) ReadCycleCache(cycle int64) (stader_backend.CycleMerkleProofs, bool, error)

type TekuConfig

type TekuConfig struct {
	Title string `yaml:"-"`

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

	// Max number of P2P peers to connect to
	JvmHeapSize config.Parameter `yaml:"jvmHeapSize,omitempty"`

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

	// The archive mode flag
	ArchiveMode config.Parameter `yaml:"archiveMode,omitempty"`

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

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

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

Configuration for Teku

func NewTekuConfig

func NewTekuConfig(cfg *StaderConfig) *TekuConfig

Generates a new Teku configuration

func (*TekuConfig) GetConfigTitle

func (cfg *TekuConfig) GetConfigTitle() string

The the title for the config

func (*TekuConfig) GetName

func (cfg *TekuConfig) GetName() string

Get the name of the client

func (*TekuConfig) GetParameters

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

Get the parameters for this config

func (*TekuConfig) GetUnsupportedCommonParams

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

Get the common params that this client doesn't support

func (*TekuConfig) GetValidatorImage

func (cfg *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