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)
- Optimism Full Node
- Execution Node
- Consensus Node
- Validator Node
- Mev-Boost Instance
- Lido CSM node

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
op-full-node Generate a full node config for Optimism or Base
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
--lido generate Lido CSM node
--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, 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.

Lido Flow

With the --lido flag, you can generate a Lido CSM node. This will generate a full node, a execution, a consensus, a validator o a mev-boost node with the Lido CSM configuration.

It will include in the configuration of the selected node:

  • Lido Withdrawal Credentials
  • Lido Fee Recipient Address
  • Designated MEV-Boost Relay URL

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 and sepolia 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.
Note: When setting up a Lido node, fee recipient address will be automatically set by the system.
--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-urls=https://0xac6e77dfe25ecd6110b8e780608cce0dab71fdd5ebea22a16c0205200f2f8e2e3ad3b71d3499c54ad14d6c21b41a37ae@boost-relay.flashbots.net,https://0xa1559ace749633b997cb3fdacffb890aeebdb0f5a3b6aaa7eeeaf1a38af0a8fe88b9e4b1f61f236d2e64d95733327a62@relay.ultrasound.money'
Note: When setting up a Lido node, the provided relay URLs will be automatically set by the system.
--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>.
--lido generate Lido CSM node
--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,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")

Op-Full-Node

$ sedge generate op-full-node -h
Generate a docker-compose and an environment file with a full node configuration for Optimism or Base networks.

This command sets up an Optimism or Base full node, which includes an execution client, a consensus client, a Optimism consensus client, and an Optimism node.

If you don't provide images for your clients, they will be chosen randomly. You can specify custom images for the Optimism and other nodes.

Use the --base flag to generate a configuration for a Base node (which is built on Optimism).

The command allows you to use external execution and consensus APIs instead of running your own nodes, by providing the respective URLs.

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

This command does not generate a validator configuration, as Optimism and Base use different validation mechanisms compared to standard Ethereum networks.

Usage:
sedge generate op-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
--op-image string Optimism consensus client image.
--op-execution-image string Image name set for nethermind client to be used with optimism.
-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
--execution-api-url string Set execution api url. If Set, will omit the creation of execution and beacon nodes, and only create optimism nodes.
--consensus-url string Set consensus api url. If Set, will omit the creation of execution and beacon nodes, and only create optimism nodes.
--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
--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
--base If set, will generate the docker-compose file for Base L2 config.
--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\""'
--el-op-extra-flag stringArray Additional flag to configure the execution client for optimism service in the generated docker-compose script. Example: 'sedge generate full-node --el-extra-flag "<flag1>=value1" --el-extra-flag "<flag2>=\"value2\""'
--op-extra-flag stringArray Additional flag to configure the optimism 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\""'
--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 op-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>.
--lido generate Lido CSM node
--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: [json none] (default "json")
-n, --network string Target network. e.g. mainnet,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")
note

The --base flag will generate the base docker-compose file for Base.

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.
Note: When setting up a Lido node, fee recipient address will be automatically set by the system.
--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>.
--lido generate Lido CSM node
--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,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")

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>.
--lido generate Lido CSM node
--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,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.

$ sedge generate validator -h
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.
Note: When setting up a Lido node, fee recipient address will be automatically set by the system.
--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>.
--lido generate Lido CSM node
--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,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 full-node --relay-urls=https://0xac6e77dfe25ecd6110b8e780608cce0dab71fdd5ebea22a16c0205200f2f8e2e3ad3b71d3499c54ad14d6c21b41a37ae@boost-relay.flashbots.net,https://0xa1559ace749633b997cb3fdacffb890aeebdb0f5a3b6aaa7eeeaf1a38af0a8fe88b9e4b1f61f236d2e64d95733327a62@relay.ultrasound.money'
Note: When setting up a Lido node, the provided relay URLs will be automatically set by the system.
-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'
-n, --network string Target network. e.g. mainnet, sepolia etc. (default "mainnet")
-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>.
--lido generate Lido CSM node
--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")
-p, --path string generation path for sedge data. Default is sedge-data (default "/path/to/sedge/sedge-data")