diff --git a/CHANGELOG.md b/CHANGELOG.md index 6a6c845da..b193fc000 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] ### Added + +- Add support for Reth client - New command `lido-status` to display data of Lido Node Operator. - Monitoring stack setup with Grafana, Prometheus, and Node Exporter. diff --git a/README.md b/README.md index 6585dd5a3..1f864144e 100644 --- a/README.md +++ b/README.md @@ -146,6 +146,7 @@ read more about it in [our documentation](https://docs.sedge.nethermind.io/docs/ | Nethermind | Lodestar | Lodestar | | Erigon | Prysm | Prysm | | Besu | Teku | Teku | +| Reth | | | ### Sepolia @@ -155,6 +156,7 @@ read more about it in [our documentation](https://docs.sedge.nethermind.io/docs/ | Nethermind | Lodestar | Lodestar | | Erigon | Prysm | Prysm | | Besu | Teku | Teku | +| Reth | | | ### Holesky @@ -164,6 +166,7 @@ read more about it in [our documentation](https://docs.sedge.nethermind.io/docs/ | Nethermind | Lodestar | Lodestar | | Erigon | Teku | Teku | | Besu | Prysm | Prysm | +| Reth | | | ### Gnosis diff --git a/configs/client_images.yaml b/configs/client_images.yaml index 02de5d200..bcd86a9a0 100644 --- a/configs/client_images.yaml +++ b/configs/client_images.yaml @@ -11,6 +11,9 @@ execution: erigon: name: thorax/erigon version: v2.60.6 + reth: + name: ghcr.io/paradigmxyz/reth + version: v0.2.0-beta.6 consensus: lighthouse: name: sigp/lighthouse diff --git a/configs/images.go b/configs/images.go index dcb2ac93e..babe0ac20 100644 --- a/configs/images.go +++ b/configs/images.go @@ -23,6 +23,7 @@ var ClientImages struct { Besu Image `yaml:"besu"` Nethermind Image `yaml:"nethermind"` Erigon Image `yaml:"erigon"` + Reth Image `yaml:"reth"` } Consensus struct { Lighthouse Image `yaml:"lighthouse"` diff --git a/docs/docs/commands/clients.mdx b/docs/docs/commands/clients.mdx index 4fa85fc04..70e02108e 100644 --- a/docs/docs/commands/clients.mdx +++ b/docs/docs/commands/clients.mdx @@ -30,75 +30,77 @@ The execution of `sedge clients` will result in an output like this, that will s ``` $ sedge clients -2024-08-21 12:17:07 -- [INFO] [Logger Init] Log level: info -2024-08-21 12:17:08 -- [INFO] You are running the latest version of sedge. Version: v1.4.0 -2024-08-21 12:17:08 -- [INFO] Listing supported clients for network chiado +024-09-18 18:26:07 -- [INFO] [Logger Init] Log level: info +2024-09-18 18:26:07 -- [WARN] Unable to check for new Version. Please check manually at https://github.com/NethermindEth/sedge/releases, with error: error while checking for new Version, please check your internet connection +2024-09-18 18:26:07 -- [INFO] Listing supported clients for network chiado - - # │Execution Clients │Consensus Clients │Validator Clients + + # │Execution Clients │Consensus Clients │Validator Clients ────────┼───────────────────────┼───────────────────────┼─────────────────────── - 1 │nethermind │lighthouse │lighthouse - 2 │- │teku │teku - 3 │- │lodestar │lodestar + 1 │nethermind │lighthouse │lighthouse + 2 │- │teku │teku + 3 │- │lodestar │lodestar -2024-08-21 12:17:08 -- [INFO] Listing supported clients for network custom +2024-09-18 18:26:07 -- [INFO] Listing supported clients for network custom - - # │Execution Clients │Consensus Clients │Validator Clients + + # │Execution Clients │Consensus Clients │Validator Clients ────────┼───────────────────────┼───────────────────────┼─────────────────────── - 1 │nethermind │lighthouse │lighthouse - 2 │- │prysm │prysm - 3 │- │teku │teku - 4 │- │lodestar │lodestar + 1 │nethermind │lighthouse │lighthouse + 2 │- │prysm │prysm + 3 │- │teku │teku + 4 │- │lodestar │lodestar -2024-08-21 12:17:08 -- [INFO] Listing supported clients for network gnosis +2024-09-18 18:26:07 -- [INFO] Listing supported clients for network gnosis - - # │Execution Clients │Consensus Clients │Validator Clients + + # │Execution Clients │Consensus Clients │Validator Clients ────────┼───────────────────────┼───────────────────────┼─────────────────────── - 1 │nethermind │lighthouse │lighthouse - 2 │erigon │teku │teku - 3 │- │lodestar │lodestar + 1 │nethermind │lighthouse │lighthouse + 2 │erigon │teku │teku + 3 │- │lodestar │lodestar -2024-08-21 12:17:08 -- [INFO] Listing supported clients for network holesky +2024-09-18 18:26:07 -- [INFO] Listing supported clients for network holesky - - # │Execution Clients │Consensus Clients │Validator Clients + + # │Execution Clients │Consensus Clients │Validator Clients ────────┼───────────────────────┼───────────────────────┼─────────────────────── - 1 │nethermind │lighthouse │lighthouse - 2 │geth │prysm │prysm - 3 │erigon │teku │teku - 4 │besu │lodestar │lodestar + 1 │nethermind │lighthouse │lighthouse + 2 │geth │prysm │prysm + 3 │erigon │teku │teku + 4 │besu │lodestar │lodestar + 5 │reth │- │- -2024-08-21 12:17:08 -- [INFO] Listing supported clients for network mainnet +2024-09-18 18:26:07 -- [INFO] Listing supported clients for network mainnet - - # │Execution Clients │Consensus Clients │Validator Clients + + # │Execution Clients │Consensus Clients │Validator Clients ────────┼───────────────────────┼───────────────────────┼─────────────────────── - 1 │nethermind │lighthouse │lighthouse - 2 │geth │prysm │prysm - 3 │erigon │teku │teku - 4 │besu │lodestar │lodestar + 1 │nethermind │lighthouse │lighthouse + 2 │geth │prysm │prysm + 3 │erigon │teku │teku + 4 │besu │lodestar │lodestar + 5 │reth │- │- -2024-08-21 12:17:08 -- [INFO] Listing supported clients for network sepolia +2024-09-18 18:26:07 -- [INFO] Listing supported clients for network sepolia - - # │Execution Clients │Consensus Clients │Validator Clients + + # │Execution Clients │Consensus Clients │Validator Clients ────────┼───────────────────────┼───────────────────────┼─────────────────────── - 1 │nethermind │lighthouse │lighthouse - 2 │geth │prysm │prysm - 3 │erigon │teku │teku - 4 │besu │lodestar │lodestar - + 1 │nethermind │lighthouse │lighthouse + 2 │geth │prysm │prysm + 3 │erigon │teku │teku + 4 │besu │lodestar │lodestar + 5 │reth │- │- ``` \ No newline at end of file diff --git a/docs/docs/networks/holesky.mdx b/docs/docs/networks/holesky.mdx index 51e732dc4..1e44c901d 100644 --- a/docs/docs/networks/holesky.mdx +++ b/docs/docs/networks/holesky.mdx @@ -12,6 +12,7 @@ Holesky is Ethereum's public testnet that serves as a technical experimentation - [Geth](https://geth.ethereum.org/docs/) - [Erigon](https://github.com/ledgerwatch/erigon) - [Besu](https://besu.hyperledger.org/en/stable/) +- [Reth](https://paradigmxyz.github.io/reth/) ## Supported Consensus Clients - [Lighthouse](https://lighthouse-book.sigmaprime.io/) diff --git a/docs/docs/networks/mainnet.mdx b/docs/docs/networks/mainnet.mdx index e12e0e19c..5eb08953f 100644 --- a/docs/docs/networks/mainnet.mdx +++ b/docs/docs/networks/mainnet.mdx @@ -14,6 +14,7 @@ secured by the Proof-of-Stake (PoS) algorithm. - [Geth](https://geth.ethereum.org/docs/) - [Erigon](https://github.com/ledgerwatch/erigon) - [Besu](https://besu.hyperledger.org/en/stable/) +- [Reth](https://paradigmxyz.github.io/reth/) ## Supported Consensus Clients - [Lighthouse](https://lighthouse-book.sigmaprime.io/) diff --git a/docs/docs/networks/sepolia.mdx b/docs/docs/networks/sepolia.mdx index c60fbb91b..16d5718aa 100644 --- a/docs/docs/networks/sepolia.mdx +++ b/docs/docs/networks/sepolia.mdx @@ -12,6 +12,7 @@ Sepolia is a permissioned Ethereum test network. It is one of the testnets that - [Geth](https://geth.ethereum.org/docs/) - [Erigon](https://github.com/ledgerwatch/erigon) - [Besu](https://besu.hyperledger.org/en/stable/) +- [Reth](https://paradigmxyz.github.io/reth/) ## Supported Consensus Clients - [Lighthouse](https://lighthouse-book.sigmaprime.io/) diff --git a/internal/pkg/clients/clients_test.go b/internal/pkg/clients/clients_test.go index ddb40428b..cf6a0b065 100644 --- a/internal/pkg/clients/clients_test.go +++ b/internal/pkg/clients/clients_test.go @@ -93,7 +93,7 @@ func TestClients(t *testing.T) { map[string][]string{ "consensus": {"lighthouse", "prysm", "teku", "lodestar"}, "validator": {"lighthouse", "prysm", "teku", "lodestar"}, - "execution": {"nethermind", "geth", "besu", "erigon"}, + "execution": {"nethermind", "geth", "besu", "erigon", "reth"}, }, []string{"consensus"}, "mainnet", @@ -112,7 +112,7 @@ func TestClients(t *testing.T) { { map[string][]string{ "validator": {"lighthouse", "prysm", "teku", "lodestar"}, - "execution": {"nethermind", "geth", "besu", "erigon"}, + "execution": {"nethermind", "geth", "besu", "erigon", "reth"}, }, []string{"execution", "validator"}, "mainnet", @@ -122,7 +122,7 @@ func TestClients(t *testing.T) { map[string][]string{ "validator": {"lighthouse", "prysm", "teku", "lodestar"}, "consensus": {"lighthouse", "prysm", "teku", "lodestar"}, - "execution": {"nethermind", "geth", "besu", "erigon"}, + "execution": {"nethermind", "geth", "besu", "erigon", "reth"}, }, []string{"consensus", "other"}, "mainnet", diff --git a/internal/pkg/clients/init.go b/internal/pkg/clients/init.go index 2eaf1cc4d..2cb9f2f21 100644 --- a/internal/pkg/clients/init.go +++ b/internal/pkg/clients/init.go @@ -21,6 +21,7 @@ var AllClients map[string][]string = map[string][]string{ "geth", "erigon", "besu", + "reth", }, "consensus": { "lighthouse", diff --git a/internal/pkg/clients/types.go b/internal/pkg/clients/types.go index 19f5116ca..9202ee1be 100644 --- a/internal/pkg/clients/types.go +++ b/internal/pkg/clients/types.go @@ -49,6 +49,8 @@ func (c *Client) setExecutionImage(image string) { c.Image = valueOrDefault(image, configs.ClientImages.Execution.Nethermind.String()) case "erigon": c.Image = valueOrDefault(image, configs.ClientImages.Execution.Erigon.String()) + case "reth": + c.Image = valueOrDefault(image, configs.ClientImages.Execution.Reth.String()) } } diff --git a/scripts/check-image-updates.sh b/scripts/check-image-updates.sh index 19fcc7d45..0b83d1523 100755 --- a/scripts/check-image-updates.sh +++ b/scripts/check-image-updates.sh @@ -40,6 +40,10 @@ update-client "Nethermind" "execution" ".execution.nethermind" "$NETHERMIND_LATE ERIGON_LATEST=$(curl -H "Authorization: Bearer $PAT" -sL https://api.github.com/repos/ledgerwatch/erigon/releases/latest | jq -r ".tag_name") update-client "Erigon" "execution" ".execution.erigon" "$ERIGON_LATEST" +# Reth +RETH_LATEST_VERSION=$(curl -H "Authorization: Bearer $PAT" -sL https://api.github.com/paradigmxyz/reth/releases/latest | jq -r ".tag_name") +update-client "Reth" "execution" ".execution.reth" "$RETH_LATEST_VERSION" + # Lighthouse LIGHTHOUSE_LATEST_VERSION=$(curl -H "Authorization: Bearer $PAT" -sL https://api.github.com/repos/sigp/lighthouse/releases/latest | jq -r ".tag_name") update-client "Lighthouse" "consensus" ".consensus.lighthouse" "$LIGHTHOUSE_LATEST_VERSION" diff --git a/templates/envs/holesky/execution/reth.tmpl b/templates/envs/holesky/execution/reth.tmpl new file mode 100644 index 000000000..c11c99af9 --- /dev/null +++ b/templates/envs/holesky/execution/reth.tmpl @@ -0,0 +1,9 @@ +{{/* reth.tmpl */}} +{{ define "execution" }} +# --- Execution Layer - Execution Node - configuration --- +EC_IMAGE_VERSION={{.ElImage}} +RETH_LOG_LEVEL=info +EC_DATA_DIR={{.ElDataDir}} +EC_SYNC_MODE=snap +EC_JWT_SECRET_PATH={{.JWTSecretPath}} +{{ end }} \ No newline at end of file diff --git a/templates/envs/mainnet/execution/reth.tmpl b/templates/envs/mainnet/execution/reth.tmpl new file mode 100644 index 000000000..c11c99af9 --- /dev/null +++ b/templates/envs/mainnet/execution/reth.tmpl @@ -0,0 +1,9 @@ +{{/* reth.tmpl */}} +{{ define "execution" }} +# --- Execution Layer - Execution Node - configuration --- +EC_IMAGE_VERSION={{.ElImage}} +RETH_LOG_LEVEL=info +EC_DATA_DIR={{.ElDataDir}} +EC_SYNC_MODE=snap +EC_JWT_SECRET_PATH={{.JWTSecretPath}} +{{ end }} \ No newline at end of file diff --git a/templates/envs/sepolia/execution/reth.tmpl b/templates/envs/sepolia/execution/reth.tmpl new file mode 100644 index 000000000..c11c99af9 --- /dev/null +++ b/templates/envs/sepolia/execution/reth.tmpl @@ -0,0 +1,9 @@ +{{/* reth.tmpl */}} +{{ define "execution" }} +# --- Execution Layer - Execution Node - configuration --- +EC_IMAGE_VERSION={{.ElImage}} +RETH_LOG_LEVEL=info +EC_DATA_DIR={{.ElDataDir}} +EC_SYNC_MODE=snap +EC_JWT_SECRET_PATH={{.JWTSecretPath}} +{{ end }} \ No newline at end of file diff --git a/templates/services/merge/execution/reth.tmpl b/templates/services/merge/execution/reth.tmpl new file mode 100644 index 000000000..f93f1426c --- /dev/null +++ b/templates/services/merge/execution/reth.tmpl @@ -0,0 +1,42 @@ +{{/* reth.tmpl */}} +{{ define "execution" }} + execution: + stop_grace_period: 30m + container_name: sedge-execution-client{{if .ContainerTag}}-{{.ContainerTag}}{{end}} + restart: unless-stopped + image: ${EC_IMAGE_VERSION} + networks: + - sedge + volumes: + - ${EC_DATA_DIR}:/root/.local/share/reth/mainnet + - ${EC_JWT_SECRET_PATH}:/root/jwt + pid: host + ports: + - "{{.ElDiscoveryPort}}:{{.ElDiscoveryPort}}/tcp" + - "{{.ElDiscoveryPort}}:{{.ElDiscoveryPort}}/udp" + - "{{.ElMetricsPort}}:{{.ElMetricsPort}}/tcp" {{if .MapAllPorts}} + - "{{.ElApiPort}}:{{.ElApiPort}}" + - "{{.ElAuthPort}}:{{.ElAuthPort}}"{{end}} + expose: + - {{.ElApiPort}} + - {{.ElAuthPort}} + command: + - node + - --chain={{if .SplittedNetwork}}${EL_NETWORK}{{else}}${NETWORK}{{end}} + - --log.file.directory=/root/logs + - --authrpc.addr=0.0.0.0 + - --authrpc.port={{.ElAuthPort}} + - --authrpc.jwtsecret=/root/jwt + - --http + - --http.addr=0.0.0.0 + - --http.port={{.ElApiPort}} + - --http.api + - eth,net,web3 + - --metrics=0.0.0.0:{{.ElMetricsPort}}{{range $flag := .ElExtraFlags}} + - --{{$flag}}{{end}}{{if .LoggingDriver}} + logging: + driver: "{{.LoggingDriver}}"{{if eq .LoggingDriver "json-file"}} + options: + max-size: "10m" + max-file: "10"{{end}}{{end}} +{{ end }}