Skip to main content

Generate

Running sedge generate with the different sub commands will generate the docker-compose file that will be used to run the nodes.

Help

$ sedge generate -h
Generate new setups according to selected options and flags.

It will create a 'docker-compose.yml' and a '.env', which you will need later to run the docker-compose script. You can use 'sedge run' to run the script and start the setup.

You can generate:
- Full Node (execution + consensus + validator)
- Full Node without Validator (execution + consensus)
- Execution Node
- Consensus Node
- Validator Node
- Mev-Boost Instance

Usage:
sedge generate [command]

Available Commands:
consensus Generate a consensus node config
execution Generate a execution node config
full-node Generate a full node config, with or without a validator
mev-boost Generate a mev-boost node config
validator Generate a validator node config

Flags:
--container-tag string Container tag to use. If defined, sedge will add to each container and the network, a suffix with the tag. e.g. sedge-validator-client -> sedge-validator-client-<tag>.
-h, --help help for generate
--logging string Docker logging driver used by all the services. Set 'none' to use the default docker logging driver. Possible values: [none json] (default "json")
-n, --network string Target network. e.g. mainnet, goerli, sepolia, holesky, gnosis, chiado, etc. (default "mainnet")
-p, --path string generation path for sedge data. Default is sedge-data (default "/path/to/sedge-data")

Global Flags:
--log-level string Set Log Level, e.g panic, fatal, error, warn, warning, info, debug, trace (default "info")

Use "sedge generate [command] --help" for more information about a command.

Sub Commands

Full-Node

caution

You should use --fee-recipient flag to set the fee recipient address if your setup includes a validator. If you don't set it, your priority fee earnings will be deposited into a burn address.

$ sedge generate full-node -h
Generate a docker-compose and an environment file with a full node configuration.

It will not generate a validator configuration if the --no-validator flag is set to true.

On mainnet, sepolia and goerli, mev-boost will be activated by default unless you run it with --no-mev-boost flag.

If you don't provide a execution, consensus or validator client, it will be chosen randomly. If one of the consensus or validator is provided, but the other one is omitted, then the same pair of clients will be used for both consensus and validator.

Additionally, you can use this syntax '<CLIENT>:<DOCKER_IMAGE>' to override the docker image used for the client, for example 'sedge generate full-node --execution nethermind:docker.image'. If you want to use the default docker image, just use the client name

Usage:
sedge generate full-node [flags]

Flags:
-c, --consensus string Consensus engine client, e.g. teku, lodestar, prysm, lighthouse, Nimbus. Additionally, you can use this syntax '<CLIENT>:<DOCKER_IMAGE>' to override the docker image used for the client. If you want to use the default docker image, just use the client name
-e, --execution string Execution engine client, e.g. geth, nethermind, besu, erigon. Additionally, you can use this syntax '<CLIENT>:<DOCKER_IMAGE>' to override the docker image used for the client. If you want to use the default docker image, just use the client name
-v, --validator string Validator engine client, e.g. teku, lodestar, prysm, lighthouse, Nimbus. Additionally, you can use this syntax '<CLIENT>:<DOCKER_IMAGE>' to override the docker image used for the client. If you want to use the default docker image, just use the client name
--latest Use the latest version of clients. This sets the "latest" tag on the client's docker images. Latest version might not work.
--checkpoint-sync-url string Initial state endpoint (trusted synced consensus endpoint) for the consensus client to sync from a finalized checkpoint. Provide faster sync process for the consensus client and protect it from long-range attacks affored by Weak Subjetivity. Each network has a default checkpoint sync url.
--fee-recipient string Suggested fee recipient. Is a 20-byte Ethereum address which the execution layer might choose to set as the coinbase and the recipient of other fees or rewards. There is no guarantee that an execution node will use the suggested fee recipient to collect fees, it may use any address it chooses. It is assumed that an honest execution node will use the suggested fee recipient, but users should note this trust assumption
--no-mev-boost Not use mev-boost if supported
-m, --mev-boost-image string Custom docker image to use for Mev Boost. Example: 'sedge generate full-node --mev-boost-image flashbots/mev-boost:latest-portable'
--relay-urls strings List of comma separated relay URLs used to connect to mev relay. Example: 'sedge generate full-node --relay-url=https://0xac6e77dfe25ecd6110b8e780608cce0dab71fdd5ebea22a16c0205200f2f8e2e3ad3b71d3499c54ad14d6c21b41a37ae@boost-relay.flashbots.net,https://0xa1559ace749633b997cb3fdacffb890aeebdb0f5a3b6aaa7eeeaf1a38af0a8fe88b9e4b1f61f236d2e64d95733327a62@relay.ultrasound.money
--no-validator Exclude the validator from the full node setup. Designed for execution and consensus nodes setup without a validator node. Exclude also the validator from other flags. If set, mev-boost will not be used.
--jwt-secret-path string Path to the JWT secret file
--graffiti string Graffiti to be used by the validator
--map-all Map all clients ports to host. Use with care. Useful to allow remote access to the clients
--fallback-execution-urls strings Fallback/backup execution endpoints for the consensus client. Not supported by Teku. Example: 'sedge generate full-node -r --fallback-execution=https://mainnet.infura.io/v3/YOUR-PROJECT-ID,https://eth-mainnet.alchemyapi.io/v2/YOUR-PROJECT-ID'
--el-extra-flag stringArray Additional flag to configure the execution client service in the generated docker-compose script. Example: 'sedge generate full-node --el-extra-flag "<flag1>=value1" --el-extra-flag "<flag2>=\"value2\""'
--cl-extra-flag stringArray Additional flag to configure the consensus client service in the generated docker-compose script. Example: 'sedge generate full-node --cl-extra-flag "<flag1>=value1" --cl-extra-flag "<flag2>=\"value2\""'
--vl-extra-flag stringArray Additional flag to configure the validator client service in the generated docker-compose script. Example: 'sedge generate full-node --vl-extra-flag "<flag1>=value1" --vl-extra-flag "<flag2>=\"value2\""'
--custom-chainSpec string File path or url to use as custom network chainSpec for execution client.
--custom-config string File path or url to use as custom network config file for consensus client.
--custom-genesis string File path or url to use as custom network genesis for consensus client.
--custom-deploy-block string Custom network deploy block to use for consensus client.
--wait-epoch int Number of epochs to wait before starting and restarting of the validator client. (default 1)
--execution-bootnodes strings List of comma separated enodes to use as custom network peers for execution client.
--consensus-bootnodes strings List of comma separated enrs to use as custom network peers for consensus client.
-h, --help help for full-node

Global Flags:
--container-tag string Container tag to use. If defined, sedge will add to each container and the network, a suffix with the tag. e.g. sedge-validator-client -> sedge-validator-client-<tag>.
--log-level string Set Log Level, e.g panic, fatal, error, warn, warning, info, debug, trace (default "info")
--logging string Docker logging driver used by all the services. Set 'none' to use the default docker logging driver. Possible values: [none json] (default "json")
-n, --network string Target network. e.g. mainnet, goerli, sepolia, holesky, gnosis, chiado, etc. (default "mainnet")
-p, --path string generation path for sedge data. Default is sedge-data (default "/path/to/sedge/sedge-data")

Consensus

$ sedge generate consensus -h
Generate a docker-compose and an environment file with a consensus node configuration
Valid args: name of execution clients according to network

Should be one of: lighthouse, teku, prysm, lodestar. If you don't provide one, it will chosen randomly.
Additionally, you can use this syntax '<CLIENT>:<DOCKER_IMAGE>' to override the docker image used for the client, for example 'sedge generate consensus prysm:docker.image'. If you want to use the default docker image, just use the client name

Required flags:
- '--execution-api-url'
- '--execution-auth-url'

Usage:
sedge generate consensus [flags] --execution-api-url <URL> --execution-auth-url <URL> [args]

Flags:
--latest Use the latest version of clients. This sets the "latest" tag on the client's docker images. Latest version might not work.
--execution-api-url string Execution API endpoint for the consensus client. Example: 'sedge generate consensus -r --execution-api-url=https://api.url.endpoint'
--execution-auth-url string Execution AUTH endpoint for the consensus client. Example: 'sedge generate consensus -r --execution-auth-url=https://auth.url.endpoint'
--checkpoint-sync-url string Initial state endpoint (trusted synced consensus endpoint) for the consensus client to sync from a finalized checkpoint. Provide faster sync process for the consensus client and protect it from long-range attacks affored by Weak Subjetivity. Each network has a default checkpoint sync url.
--fee-recipient string Suggested fee recipient. Is a 20-byte Ethereum address which the execution layer might choose to set as the coinbase and the recipient of other fees or rewards. There is no guarantee that an execution node will use the suggested fee recipient to collect fees, it may use any address it chooses. It is assumed that an honest execution node will use the suggested fee recipient, but users should note this trust assumption
--jwt-secret-path string Path to the JWT secret file
--mev-boost-url string If you are running a mev boost node, and you want to connect to it, you need to set mev-boost-url, if not set, node will not load any mev boost related config.
--map-all Map all clients ports to host. Use with care. Useful to allow remote access to the clients
--fallback-execution-urls strings Fallback/backup execution endpoints for the consensus client. Not supported by Teku. Example: 'sedge generate consensus --fallback-execution=https://mainnet.infura.io/v3/YOUR-PROJECT-ID,https://eth-mainnet.alchemyapi.io/v2/YOUR-PROJECT-ID'
--cl-extra-flag stringArray Additional flag to configure the consensus client service in the generated docker-compose script. Example: 'sedge generate consensus --cl-extra-flag "<flag1>=value1" --cl-extra-flag "<flag2>=\"value2\""'
--custom-config string File path or url to use as custom network config file for consensus client.
--custom-genesis string File path or url to use as custom network genesis for consensus client.
--custom-deploy-block string Custom network deploy block to use for consensus client.
--consensus-bootnodes strings List of comma separated enrs to use as custom network peers for consensus client.
-h, --help help for consensus

Global Flags:
--container-tag string Container tag to use. If defined, sedge will add to each container and the network, a suffix with the tag. e.g. sedge-validator-client -> sedge-validator-client-<tag>.
--log-level string Set Log Level, e.g panic, fatal, error, warn, warning, info, debug, trace (default "info")
--logging string Docker logging driver used by all the services. Set 'none' to use the default docker logging driver. Possible values: [none json] (default "json")
-n, --network string Target network. e.g. mainnet, goerli, sepolia, etc. (default "mainnet")
-p, --path string generation path for sedge data. Default is sedge-data (default "/path/to/sedge/sedge-data")

Execution

$ sedge generate execution -h
Generate a docker-compose and an environment file with a execution node configuration.
Valid args: name of execution clients according to network

Should be one of: nethermind, geth, besu, erigon. If you don't provide one, it will chosen randomly.
Additionally, you can use this syntax '<CLIENT>:<DOCKER_IMAGE>' to override the docker image used for the client, for example 'sedge generate execution nethermind:docker.image'. If you want to use the default docker image, just use the client name

Usage:
sedge generate execution [flags] [args]

Flags:
--latest Use the latest version of clients. This sets the "latest" tag on the client's docker images. Latest version might not work.
--jwt-secret-path string Path to the JWT secret file
--map-all Map all clients ports to host. Use with care. Useful to allow remote access to the clients
--custom-chainSpec string File path or url to use as custom network chainSpec for execution client.
--execution-bootnodes strings List of comma separated enodes to use as custom network peers for execution client.
--el-extra-flag stringArray Additional flag to configure the execution client service in the generated docker-compose script. Example: 'sedge generate consensus--el-extra-flag "<flag1>=value1" --el-extra-flag "<flag2>=\"value2\""'
-h, --help help for execution

Global Flags:
--container-tag string Container tag to use. If defined, sedge will add to each container and the network, a suffix with the tag. e.g. sedge-validator-client -> sedge-validator-client-<tag>.
--log-level string Set Log Level, e.g panic, fatal, error, warn, warning, info, debug, trace (default "info")
--logging string Docker logging driver used by all the services. Set 'none' to use the default docker logging driver. Possible values: [none json] (default "json")
-n, --network string Target network. e.g. mainnet, goerli, sepolia, holesky, gnosis, chiado, etc. (default "mainnet")
-p, --path string generation path for sedge data. Default is sedge-data (default "/path/to/sedge/sedge-data")

Validator

caution

You should use --fee-recipient flag to set the fee recipient address. If you don't set it, your priority fee earnings will be deposited into a burn address.

Generate a docker-compose and an environment file with a validator node configuration
Valid args: name of execution clients according to network

Should be one of: lighthouse, teku, prysm, lodestar. If you don't provide one, it will chosen randomly.
Additionally, you can use this syntax '<CLIENT>:<DOCKER_IMAGE>' to override the docker image used for the client, for example 'sedge generate validator prysm:docker.image'. If you want to use the default docker image, just use the client name

Required flags:
- `--consensus-url`

Usage:
sedge generate validator [flags] --consensus-url <URL> [args]

Flags:
--latest Use the latest version of clients. This sets the "latest" tag on the client's docker images. Latest version might not work.
--consensus-url string Consensus endpoint for the validator client to connect to. Example: 'sedge generate validator --consensus-url http://localhost:4000'
--fee-recipient string Suggested fee recipient. Is a 20-byte Ethereum address which the execution layer might choose to set as the coinbase and the recipient of other fees or rewards. There is no guarantee that an execution node will use the suggested fee recipient to collect fees, it may use any address it chooses. It is assumed that an honest execution node will use the suggested fee recipient, but users should note this trust assumption
--graffiti string Graffiti to be used by the validator
--mev-boost Use mev-boost while turning on validator node
--custom-config string File path or url to use as custom network config file for consensus client.
--custom-genesis string File path or url to use as custom network genesis for consensus client.
--custom-deploy-block string Custom network deploy block to use for consensus client.
--wait-epoch int Number of epochs to wait before starting and restarting of the validator client. (default 1)
--vl-extra-flag stringArray Additional flag to configure the validator client service in the generated docker-compose script. Example: 'sedge generate validator --vl-extra-flag "<flag1>=value1" --vl-extra-flag "<flag2>=\"value2\""'
-h, --help help for validator

Global Flags:
--container-tag string Container tag to use. If defined, sedge will add to each container and the network, a suffix with the tag. e.g. sedge-validator-client -> sedge-validator-client-<tag>.
--log-level string Set Log Level, e.g panic, fatal, error, warn, warning, info, debug, trace (default "info")
--logging string Docker logging driver used by all the services. Set 'none' to use the default docker logging driver. Possible values: [none json] (default "json")
-n, --network string Target network. e.g. mainnet, goerli, sepolia, holesky, gnosis, chiado, etc. (default "mainnet")
-p, --path string generation path for sedge data. Default is sedge-data (default "/path/to/sedge/sedge-data")

MevBoost

$ sedge generate mev-boost -h
Generate a docker-compose and an environment file with a mev-boost node configuration

Usage:
sedge generate mev-boost [flags]

Flags:
--relay-urls strings List of comma separated relay URLs used to connect to mev relay. Example: 'sedge generate mev-boost --relay-url=https://0xac6e77dfe25ecd6110b8e780608cce0dab71fdd5ebea22a16c0205200f2f8e2e3ad3b71d3499c54ad14d6c21b41a37ae@boost-relay.flashbots.net,https://0xa1559ace749633b997cb3fdacffb890aeebdb0f5a3b6aaa7eeeaf1a38af0a8fe88b9e4b1f61f236d2e64d95733327a62@relay.ultrasound.money
-m, --mev-boost-image string Custom docker image to use for Mev Boost. Example: 'sedge generate mev-boost --mev-boost-image flashbots/mev-boost:latest-portable'
-h, --help help for mev-boost

Global Flags:
--container-tag string Container tag to use. If defined, sedge will add to each container and the network, a suffix with the tag. e.g. sedge-validator-client -> sedge-validator-client-<tag>.
--log-level string Set Log Level, e.g panic, fatal, error, warn, warning, info, debug, trace (default "info")
--logging string Docker logging driver used by all the services. Set 'none' to use the default docker logging driver. Possible values: [none json] (default "json")
-n, --network string Target network. e.g. mainnet, goerli, sepolia, etc. (default "mainnet")
-p, --path string generation path for sedge data. Default is sedge-data (default "/path/to/sedge/sedge-data")