From 861d3c9d7dd9889557be888ea38a56f9a6918cec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ois=C3=ADn=20Kyne?= Date: Mon, 30 Jun 2025 13:02:30 +0100 Subject: [PATCH 01/23] Draft of profiles work --- .env.sample.holesky | 4 ++++ .env.sample.hoodi | 4 ++++ .env.sample.mainnet | 4 ++++ docker-compose.yml | 2 ++ 4 files changed, 14 insertions(+) diff --git a/.env.sample.holesky b/.env.sample.holesky index 5ba80b45..a4e4e0aa 100644 --- a/.env.sample.holesky +++ b/.env.sample.holesky @@ -4,6 +4,10 @@ # Overrides network for all the relevant services. NETWORK=holesky +# These profiles dictate what client types to start for execution, consensus, validator and mev clients. +COMPOSE_PROFILES=el_nethermind,cl_lighthouse,dv_charon,vc_lodestar,mev_mevboost +#COMPOSE_PROFILES=el_nethermind,cl_grandine,dv_charon,vc_teku,mev_commitboost + # Enables builder api for lodestar VC and charon services. #BUILDER_API_ENABLED= #BUILDER_API_RELAY_URL=http://mev-boost:18550 diff --git a/.env.sample.hoodi b/.env.sample.hoodi index 7d7403c1..7bc5a6aa 100644 --- a/.env.sample.hoodi +++ b/.env.sample.hoodi @@ -4,6 +4,10 @@ # Overrides network for all the relevant services. NETWORK=hoodi +# These profiles dictate what client types to start for execution, consensus, validator and mev clients. +COMPOSE_PROFILES=el_nethermind,cl_lighthouse,dv_charon,vc_lodestar,mev_mevboost +#COMPOSE_PROFILES=el_nethermind,cl_grandine,dv_charon,vc_teku,mev_commitboost + # Enables builder api for lodestar VC and charon services. #BUILDER_API_ENABLED= #BUILDER_API_RELAY_URL=http://mev-boost:18550 diff --git a/.env.sample.mainnet b/.env.sample.mainnet index 4641326b..64a0026e 100644 --- a/.env.sample.mainnet +++ b/.env.sample.mainnet @@ -4,6 +4,10 @@ # Overrides network for all the relevant services. NETWORK=mainnet +# These profiles dictate what client types to start for execution, consensus, validator and mev clients. +COMPOSE_PROFILES=el_nethermind,cl_lighthouse,dv_charon,vc_lodestar,mev_mevboost +#COMPOSE_PROFILES=el_nethermind,cl_grandine,dv_charon,vc_teku,mev_commitboost + # Enables builder api for lodestar VC and charon services. #BUILDER_API_ENABLED= diff --git a/docker-compose.yml b/docker-compose.yml index 20b7803d..373cdd1e 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -46,6 +46,7 @@ services: # |___/ lighthouse: + profiles: [cl_lighthouse] image: sigp/lighthouse:${LIGHTHOUSE_VERSION:-v7.0.1} ports: - ${LIGHTHOUSE_PORT_P2P:-9000}:9000/tcp # P2P TCP @@ -143,6 +144,7 @@ services: # | | | | | | __/\ V /_____| |_) | (_) | (_) \__ \ |_ # |_| |_| |_|\___| \_/ |_.__/ \___/ \___/|___/\__| mev-boost: + profiles: [mev_mevboost] image: ${MEVBOOST_IMAGE:-flashbots/mev-boost}:${MEVBOOST_VERSION:-1.9} command: | -${NETWORK} From ebce225812cc0bb56b83af25c130c9a4601405cf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ois=C3=ADn=20Kyne?= Date: Tue, 1 Jul 2025 13:00:20 +0100 Subject: [PATCH 02/23] Using multiple files to avoid name conflicts --- Makefile | 14 ++++++++++++++ compose-grandine.yml | 35 +++++++++++++++++++++++++++++++++++ docker-compose.yml | 14 +++++++------- 3 files changed, 56 insertions(+), 7 deletions(-) create mode 100644 Makefile create mode 100644 compose-grandine.yml diff --git a/Makefile b/Makefile new file mode 100644 index 00000000..bd57c082 --- /dev/null +++ b/Makefile @@ -0,0 +1,14 @@ +.PHONY: up down restart logs + +COMPOSE=docker compose -f docker-compose.yml -f compose-grandine.yml + +up: + $(COMPOSE) up -d + +down: + $(COMPOSE) down + +restart: down up + +logs: + $(COMPOSE) logs -f \ No newline at end of file diff --git a/compose-grandine.yml b/compose-grandine.yml new file mode 100644 index 00000000..13538d5d --- /dev/null +++ b/compose-grandine.yml @@ -0,0 +1,35 @@ +# Override any defaults specified by `${FOO:-bar}` in `.env` with `FOO=qux`. +# ${VARIABLE:-default} evaluates to default if VARIABLE is unset or empty in the environment. +# ${VARIABLE-default} evaluates to default only if VARIABLE is unset in the environment. + +services: + # _ _ + # __ _ _ __ __ _ _ __ __| (_)_ __ ___ + # / _` | '__/ _` | '_ \ / _` | | '_ \ / _ \ + # | (_| | | | (_| | | | | (_| | | | | | __/ + # \__, |_| \__,_|_| |_|\__,_|_|_| |_|\___| + # |___/ + + beacon: + profiles: [cl_grandine] + image: sifrai/grandine:${GRANDINE_VERSION:-1.1.1} + restart: unless-stopped + command: + - --datadir=/root/.grandine + - --eth1-rpc-urls=http://execution:8551 + - --jwt-secret=/jwt + - --http-address=0.0.0.0 + - --http-port=5052 + - --network=${NETWORK} + - --metrics + - --metrics-port=5054 + - --metrics-address=0.0.0.0 + - --checkpoint-sync-url=${LIGHTHOUSE_CHECKPOINT_SYNC_URL} + - --builder=http://mev:18550 + ports: + - 9000:9000 # TCP + UDP LibP2P + volumes: + - ./data/grandine:/data + - ./jwt:/jwt:ro + networks: + - dvnode \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml index 373cdd1e..f8f0e0e0 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -45,7 +45,7 @@ services: # |_|_|\__, |_| |_|\__|_| |_|\___/ \__,_|___/\___| # |___/ - lighthouse: + beacon: profiles: [cl_lighthouse] image: sigp/lighthouse:${LIGHTHOUSE_VERSION:-v7.0.1} ports: @@ -58,10 +58,10 @@ services: --network=${NETWORK} --checkpoint-sync-url=${LIGHTHOUSE_CHECKPOINT_SYNC_URL} --checkpoint-sync-url-timeout=600 - --execution-endpoint=http://nethermind:8551 + --execution-endpoint=http://execution:8551 --execution-jwt=/opt/jwt/jwt.hex --datadir=/opt/app/beacon/ - --builder=http://mev-boost:18550 + --builder=http://mev:18550 --http --http-address=0.0.0.0 --http-port=5052 @@ -85,7 +85,7 @@ services: charon: image: obolnetwork/charon:${CHARON_VERSION:-v1.5.2} environment: - - CHARON_BEACON_NODE_ENDPOINTS=${CHARON_BEACON_NODE_ENDPOINTS:-http://lighthouse:5052} + - CHARON_BEACON_NODE_ENDPOINTS=${CHARON_BEACON_NODE_ENDPOINTS:-http://beacon:5052} - CHARON_BEACON_NODE_HEADERS=${CHARON_BEACON_NODE_HEADERS:-} - CHARON_BEACON_NODE_TIMEOUT=${CHARON_BEACON_NODE_TIMEOUT:-3s} - CHARON_BEACON_NODE_SUBMIT_TIMEOUT=${CHARON_BEACON_NODE_SUBMIT_TIMEOUT:-4s} @@ -143,7 +143,7 @@ services: # | '_ ` _ \ / _ \ \ / /____| '_ \ / _ \ / _ \/ __| __| # | | | | | | __/\ V /_____| |_) | (_) | (_) \__ \ |_ # |_| |_| |_|\___| \_/ |_.__/ \___/ \___/|___/\__| - mev-boost: + mev: profiles: [mev_mevboost] image: ${MEVBOOST_IMAGE:-flashbots/mev-boost}:${MEVBOOST_VERSION:-1.9} command: | @@ -168,7 +168,7 @@ services: # |___/ prometheus: - image: prom/prometheus:${PROMETHEUS_VERSION:-v2.46.0} + image: prom/prometheus:${PROMETHEUS_VERSION:-v2.53.5} user: ":" networks: [dvnode] volumes: @@ -191,7 +191,7 @@ services: restart: unless-stopped loki: - image: grafana/loki:${LOKI_VERSION:-2.8.2} + image: grafana/loki:${LOKI_VERSION:-2.9.15} user: ":" networks: [dvnode] command: -config.file=/etc/loki/loki.yml From b8f1d9da2309d370199288bee1073692b9122acf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ois=C3=ADn=20Kyne?= Date: Tue, 1 Jul 2025 13:12:02 +0100 Subject: [PATCH 03/23] Fix path --- compose-grandine.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/compose-grandine.yml b/compose-grandine.yml index 13538d5d..27f440f1 100644 --- a/compose-grandine.yml +++ b/compose-grandine.yml @@ -29,7 +29,7 @@ services: ports: - 9000:9000 # TCP + UDP LibP2P volumes: - - ./data/grandine:/data + - ./data/grandine:/root/.grandine - ./jwt:/jwt:ro networks: - dvnode \ No newline at end of file From e333d268cfc6262f8b6959b4ae51dcb1b10926db Mon Sep 17 00:00:00 2001 From: Kaloyan Tanev Date: Tue, 1 Jul 2025 18:05:43 +0300 Subject: [PATCH 04/23] Specify client types in separate env vars --- .env.sample.holesky | 18 +++-- .env.sample.hoodi | 18 +++-- .env.sample.mainnet | 18 +++-- Makefile | 14 ---- compose-cl.yml | 73 ++++++++++++++++++++ compose-el.yml | 41 +++++++++++ compose-grandine.yml | 35 ---------- compose-mev.yml | 26 +++++++ compose-vc.yml | 29 ++++++++ docker-compose.yml | 161 ++++++------------------------------------- 10 files changed, 232 insertions(+), 201 deletions(-) delete mode 100644 Makefile create mode 100644 compose-cl.yml create mode 100644 compose-el.yml delete mode 100644 compose-grandine.yml create mode 100644 compose-mev.yml create mode 100644 compose-vc.yml diff --git a/.env.sample.holesky b/.env.sample.holesky index a4e4e0aa..24b81beb 100644 --- a/.env.sample.holesky +++ b/.env.sample.holesky @@ -4,9 +4,19 @@ # Overrides network for all the relevant services. NETWORK=holesky -# These profiles dictate what client types to start for execution, consensus, validator and mev clients. -COMPOSE_PROFILES=el_nethermind,cl_lighthouse,dv_charon,vc_lodestar,mev_mevboost -#COMPOSE_PROFILES=el_nethermind,cl_grandine,dv_charon,vc_teku,mev_commitboost +# These profiles dictate what client types to start for execution, consensus, validator and mev clients. +EL=nethermind +#EL=geth +CL=lighthouse +#CL=grandine +DV=charon +#DV=charon +VC=lodestar +#VC=nimbus +MEV=mevboost +#MEV=commitboost +COMPOSE_PROFILES=el_${EL},cl_${CL},dv_${DV},vc_${VC},mev_${MEV} +COMPOSE_FILE=compose-el.yml:compose-cl.yml:compose-vc.yml:compose-mev.yml:docker-compose.yml # Enables builder api for lodestar VC and charon services. #BUILDER_API_ENABLED= @@ -38,7 +48,7 @@ COMPOSE_PROFILES=el_nethermind,cl_lighthouse,dv_charon,vc_lodestar,mev_mevboost # Checkpoint sync url used by lighthouse to fast sync. LIGHTHOUSE_CHECKPOINT_SYNC_URL=https://checkpoint-sync.holesky.ethpandaops.io/ -# In certain cases, beacon nodes produce blocks with unexpected fee recipients. Setting the Lido execution +# In certain cases, beacon nodes produce blocks with unexpected fee recipients. Setting the Lido execution # layer rewards vault as the suggested fee recipient reduces this risk LIDO_EXECUTION_LAYER_REWARDS_ADDRESS=0xE73a3602b99f1f913e72F8bdcBC235e206794Ac8 diff --git a/.env.sample.hoodi b/.env.sample.hoodi index 7bc5a6aa..965fa222 100644 --- a/.env.sample.hoodi +++ b/.env.sample.hoodi @@ -4,9 +4,19 @@ # Overrides network for all the relevant services. NETWORK=hoodi -# These profiles dictate what client types to start for execution, consensus, validator and mev clients. -COMPOSE_PROFILES=el_nethermind,cl_lighthouse,dv_charon,vc_lodestar,mev_mevboost -#COMPOSE_PROFILES=el_nethermind,cl_grandine,dv_charon,vc_teku,mev_commitboost +# These profiles dictate what client types to start for execution, consensus, validator and mev clients. +EL=nethermind +#EL=geth +CL=lighthouse +#CL=grandine +DV=charon +#DV=charon +VC=lodestar +#VC=nimbus +MEV=mevboost +#MEV=commitboost +COMPOSE_PROFILES=el_${EL},cl_${CL},dv_${DV},vc_${VC},mev_${MEV} +COMPOSE_FILE=compose-el.yml:compose-cl.yml:compose-vc.yml:compose-mev.yml:docker-compose.yml # Enables builder api for lodestar VC and charon services. #BUILDER_API_ENABLED= @@ -38,7 +48,7 @@ COMPOSE_PROFILES=el_nethermind,cl_lighthouse,dv_charon,vc_lodestar,mev_mevboost # Checkpoint sync url used by lighthouse to fast sync. LIGHTHOUSE_CHECKPOINT_SYNC_URL=https://checkpoint-sync.hoodi.ethpandaops.io -# In certain cases, beacon nodes produce blocks with unexpected fee recipients. Setting the Lido execution +# In certain cases, beacon nodes produce blocks with unexpected fee recipients. Setting the Lido execution # layer rewards vault as the suggested fee recipient reduces this risk LIDO_EXECUTION_LAYER_REWARDS_ADDRESS=0xE73a3602b99f1f913e72F8bdcBC235e206794Ac8 diff --git a/.env.sample.mainnet b/.env.sample.mainnet index 64a0026e..2af89930 100644 --- a/.env.sample.mainnet +++ b/.env.sample.mainnet @@ -4,9 +4,19 @@ # Overrides network for all the relevant services. NETWORK=mainnet -# These profiles dictate what client types to start for execution, consensus, validator and mev clients. -COMPOSE_PROFILES=el_nethermind,cl_lighthouse,dv_charon,vc_lodestar,mev_mevboost -#COMPOSE_PROFILES=el_nethermind,cl_grandine,dv_charon,vc_teku,mev_commitboost +# These profiles dictate what client types to start for execution, consensus, validator and mev clients. +EL=nethermind +#EL=geth +CL=lighthouse +#CL=grandine +DV=charon +#DV=charon +VC=lodestar +#VC=nimbus +MEV=mevboost +#MEV=commitboost +COMPOSE_PROFILES=el_${EL},cl_${CL},dv_${DV},vc_${VC},mev_${MEV} +COMPOSE_FILE=compose-el.yml:compose-cl.yml:compose-vc.yml:compose-mev.yml:docker-compose.yml # Enables builder api for lodestar VC and charon services. #BUILDER_API_ENABLED= @@ -38,7 +48,7 @@ COMPOSE_PROFILES=el_nethermind,cl_lighthouse,dv_charon,vc_lodestar,mev_mevboost # If the given url errors, try replacing it with an alternative url like https://sync-mainnet.beaconcha.in/. LIGHTHOUSE_CHECKPOINT_SYNC_URL=https://mainnet.checkpoint.sigp.io/ -# In certain cases, beacon nodes produce blocks with unexpected fee recipients. Setting the Lido execution +# In certain cases, beacon nodes produce blocks with unexpected fee recipients. Setting the Lido execution # layer rewards vault as the suggested fee recipient reduces this risk LIDO_EXECUTION_LAYER_REWARDS_ADDRESS=0x388C818CA8B9251b393131C08a736A67ccB19297 diff --git a/Makefile b/Makefile deleted file mode 100644 index bd57c082..00000000 --- a/Makefile +++ /dev/null @@ -1,14 +0,0 @@ -.PHONY: up down restart logs - -COMPOSE=docker compose -f docker-compose.yml -f compose-grandine.yml - -up: - $(COMPOSE) up -d - -down: - $(COMPOSE) down - -restart: down up - -logs: - $(COMPOSE) logs -f \ No newline at end of file diff --git a/compose-cl.yml b/compose-cl.yml new file mode 100644 index 00000000..97db9cf8 --- /dev/null +++ b/compose-cl.yml @@ -0,0 +1,73 @@ +# Override any defaults specified by `${FOO:-bar}` in `.env` with `FOO=qux`. +# ${VARIABLE:-default} evaluates to default if VARIABLE is unset or empty in the environment. +# ${VARIABLE-default} evaluates to default only if VARIABLE is unset in the environment. + +services: + # _ _ + # __ _ _ __ __ _ _ __ __| (_)_ __ ___ + # / _` | '__/ _` | '_ \ / _` | | '_ \ / _ \ + # | (_| | | | (_| | | | | (_| | | | | | __/ + # \__, |_| \__,_|_| |_|\__,_|_|_| |_|\___| + # |___/ + + cl-grandine: + profiles: [cl_grandine] + image: sifrai/grandine:${GRANDINE_VERSION:-1.1.1} + restart: unless-stopped + command: + - --datadir=/root/.grandine + - --eth1-rpc-urls=http://el-${EL}:8551 + - --jwt-secret=/jwt + - --http-address=0.0.0.0 + - --http-port=5052 + - --network=${NETWORK} + - --metrics + - --metrics-port=5054 + - --metrics-address=0.0.0.0 + - --checkpoint-sync-url=${LIGHTHOUSE_CHECKPOINT_SYNC_URL} + - --builder=http://mev-${MEV}:18550 + ports: + - 9000:9000 # TCP + UDP LibP2P + volumes: + - ./data/grandine:/root/.grandine + - ./jwt:/jwt:ro + networks: + - dvnode + + # _ _ _ _ _ + # | (_) __ _| |__ | |_| |__ ___ _ _ ___ ___ + # | | |/ _` | '_ \| __| '_ \ / _ \| | | / __|/ _ \ + # | | | (_| | | | | |_| | | | (_) | |_| \__ \ __/ + # |_|_|\__, |_| |_|\__|_| |_|\___/ \__,_|___/\___| + # |___/ + + cl-lighthouse: + profiles: [cl_lighthouse] + image: sigp/lighthouse:${LIGHTHOUSE_VERSION:-v7.0.1} + ports: + - ${LIGHTHOUSE_PORT_P2P:-9000}:9000/tcp # P2P TCP + - ${LIGHTHOUSE_PORT_P2P:-9000}:9000/udp # P2P UDP + labels: + - "promtail-monitored=${LIGHTHOUSE_PROMTAIL_MONITORED:-true}" + command: | + lighthouse bn + --network=${NETWORK} + --checkpoint-sync-url=${LIGHTHOUSE_CHECKPOINT_SYNC_URL} + --checkpoint-sync-url-timeout=600 + --execution-endpoint=http://el-${EL}:8551 + --execution-jwt=/opt/jwt/jwt.hex + --datadir=/opt/app/beacon/ + --builder=http://mev-${MEV}:18550 + --http + --http-address=0.0.0.0 + --http-port=5052 + --metrics + --metrics-address=0.0.0.0 + --metrics-port=5054 + --metrics-allow-origin="*" + --suggested-fee-recipient=${LIDO_EXECUTION_LAYER_REWARDS_ADDRESS:-0x388C818CA8B9251b393131C08a736A67ccB19297} + networks: [dvnode] + volumes: + - ./data/lighthouse:/opt/app/beacon + - ./jwt:/opt/jwt + restart: unless-stopped diff --git a/compose-el.yml b/compose-el.yml new file mode 100644 index 00000000..98eb2388 --- /dev/null +++ b/compose-el.yml @@ -0,0 +1,41 @@ +# Override any defaults specified by `${FOO:-bar}` in `.env` with `FOO=qux`. +# ${VARIABLE:-default} evaluates to default if VARIABLE is unset or empty in the environment. +# ${VARIABLE-default} evaluates to default only if VARIABLE is unset in the environment. + +services: + # _ _ _ _ + # _ __ ___| |_| |__ ___ _ __ _ __ ___ (_)_ __ __| | + # | '_ \ / _ \ __| '_ \ / _ \ '__| '_ ` _ \| | '_ \ / _` | + # | | | | __/ |_| | | | __/ | | | | | | | | | | | (_| | + # |_| |_|\___|\__|_| |_|\___|_| |_| |_| |_|_|_| |_|\__,_| + + el-nethermind: + profiles: [el_nethermind] + image: nethermind/nethermind:${NETHERMIND_VERSION:-1.32.2} + restart: unless-stopped + ports: + - ${NETHERMIND_PORT_P2P:-30303}:30303/tcp # P2P TCP + - ${NETHERMIND_PORT_P2P:-30303}:30303/udp # P2P UDP + - ${NETHERMIND_IP_HTTP:-127.0.0.1}:${NETHERMIND_PORT_HTTP:-8545}:8545 # JSON-RPC + - ${NETHERMIND_IP_ENGINE:-127.0.0.1}:${NETHERMIND_PORT_ENGINE:-8551}:8551 # ENGINE-API + labels: + - "promtail-monitored=${NETHERMIND_PROMTAIL_MONITORED:-true}" + command: | + --config=${NETWORK} + --datadir=data + --HealthChecks.Enabled=true + --JsonRpc.Enabled=true + --JsonRpc.JwtSecretFile="/root/jwt/jwt.hex" + --JsonRpc.EngineHost=0.0.0.0 + --JsonRpc.EnginePort=8551 + --JsonRpc.Host=0.0.0.0 + --JsonRpc.Port=8545 + --Metrics.Enabled=true + --Metrics.ExposePort=8008 + --Sync.SnapSync=true + --Sync.AncientBodiesBarrier=4367322 + --Sync.AncientReceiptsBarrier=4367322 + networks: [dvnode] + volumes: + - ./data/nethermind:/nethermind/data + - ./jwt:/root/jwt diff --git a/compose-grandine.yml b/compose-grandine.yml deleted file mode 100644 index 27f440f1..00000000 --- a/compose-grandine.yml +++ /dev/null @@ -1,35 +0,0 @@ -# Override any defaults specified by `${FOO:-bar}` in `.env` with `FOO=qux`. -# ${VARIABLE:-default} evaluates to default if VARIABLE is unset or empty in the environment. -# ${VARIABLE-default} evaluates to default only if VARIABLE is unset in the environment. - -services: - # _ _ - # __ _ _ __ __ _ _ __ __| (_)_ __ ___ - # / _` | '__/ _` | '_ \ / _` | | '_ \ / _ \ - # | (_| | | | (_| | | | | (_| | | | | | __/ - # \__, |_| \__,_|_| |_|\__,_|_|_| |_|\___| - # |___/ - - beacon: - profiles: [cl_grandine] - image: sifrai/grandine:${GRANDINE_VERSION:-1.1.1} - restart: unless-stopped - command: - - --datadir=/root/.grandine - - --eth1-rpc-urls=http://execution:8551 - - --jwt-secret=/jwt - - --http-address=0.0.0.0 - - --http-port=5052 - - --network=${NETWORK} - - --metrics - - --metrics-port=5054 - - --metrics-address=0.0.0.0 - - --checkpoint-sync-url=${LIGHTHOUSE_CHECKPOINT_SYNC_URL} - - --builder=http://mev:18550 - ports: - - 9000:9000 # TCP + UDP LibP2P - volumes: - - ./data/grandine:/root/.grandine - - ./jwt:/jwt:ro - networks: - - dvnode \ No newline at end of file diff --git a/compose-mev.yml b/compose-mev.yml new file mode 100644 index 00000000..9ef8864f --- /dev/null +++ b/compose-mev.yml @@ -0,0 +1,26 @@ +# Override any defaults specified by `${FOO:-bar}` in `.env` with `FOO=qux`. +# ${VARIABLE:-default} evaluates to default if VARIABLE is unset or empty in the environment. +# ${VARIABLE-default} evaluates to default only if VARIABLE is unset in the environment. + +services: + # _ _ + # _ __ ___ _____ __ | |__ ___ ___ ___| |_ + # | '_ ` _ \ / _ \ \ / /____| '_ \ / _ \ / _ \/ __| __| + # | | | | | | __/\ V /_____| |_) | (_) | (_) \__ \ |_ + # |_| |_| |_|\___| \_/ |_.__/ \___/ \___/|___/\__| + mev-mevboost: + profiles: [mev_mevboost] + image: ${MEVBOOST_IMAGE:-flashbots/mev-boost}:${MEVBOOST_VERSION:-1.9} + command: | + -${NETWORK} + -loglevel=debug + -addr=0.0.0.0:18550 + -relay-check + -relays=${MEVBOOST_RELAYS} + -request-timeout-getheader=${MEVBOOST_TIMEOUT_GETHEADER:-950} + -request-timeout-getpayload=${MEVBOOST_TIMEOUT_GETPAYLOAD:-4000} + -request-timeout-regval=${MEVBOOST_TIMEOUT_REGVAL:-3000} + labels: + - "promtail-monitored=${MEV_BOOST_PROMTAIL_MONITORED:-true}" + networks: [dvnode] + restart: unless-stopped diff --git a/compose-vc.yml b/compose-vc.yml new file mode 100644 index 00000000..4b4fba0e --- /dev/null +++ b/compose-vc.yml @@ -0,0 +1,29 @@ +# Override any defaults specified by `${FOO:-bar}` in `.env` with `FOO=qux`. +# ${VARIABLE:-default} evaluates to default if VARIABLE is unset or empty in the environment. +# ${VARIABLE-default} evaluates to default only if VARIABLE is unset in the environment. + +services: + # _ _ _ + # | | ___ __| | ___ ___| |_ __ _ _ __ + # | |/ _ \ / _` |/ _ \/ __| __/ _` | '__| + # | | (_) | (_| | __/\__ \ || (_| | | + # |_|\___/ \__,_|\___||___/\__\__,_|_| + + vc-lodestar: + profiles: [vc_lodestar] + image: chainsafe/lodestar:${LODESTAR_VERSION:-v1.29.0} + depends_on: [dv-charon] + entrypoint: /opt/lodestar/run.sh + networks: [dvnode] + environment: + BEACON_NODE_ADDRESS: http://dv-${DV}:3600 + NETWORK: ${NETWORK} + BUILDER_API_ENABLED: ${BUILDER_API_ENABLED:-true} + BUILDER_SELECTION: ${BUILDER_SELECTION:-builderalways} + labels: + - "promtail-monitored=${LODESTAR_PROMTAIL_MONITORED:-true}" + volumes: + - ./lodestar/run.sh:/opt/lodestar/run.sh + - .charon/validator_keys:/home/charon/validator_keys + - ./data/lodestar:/opt/data + restart: unless-stopped diff --git a/docker-compose.yml b/docker-compose.yml index f8f0e0e0..cda9e891 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -3,79 +3,6 @@ # ${VARIABLE-default} evaluates to default only if VARIABLE is unset in the environment. services: - # _ _ _ _ - # _ __ ___| |_| |__ ___ _ __ _ __ ___ (_)_ __ __| | - # | '_ \ / _ \ __| '_ \ / _ \ '__| '_ ` _ \| | '_ \ / _` | - # | | | | __/ |_| | | | __/ | | | | | | | | | | | (_| | - # |_| |_|\___|\__|_| |_|\___|_| |_| |_| |_|_|_| |_|\__,_| - nethermind: - image: nethermind/nethermind:${NETHERMIND_VERSION:-1.32.2} - restart: unless-stopped - ports: - - ${NETHERMIND_PORT_P2P:-30303}:30303/tcp # P2P TCP - - ${NETHERMIND_PORT_P2P:-30303}:30303/udp # P2P UDP - - ${NETHERMIND_IP_HTTP:-127.0.0.1}:${NETHERMIND_PORT_HTTP:-8545}:8545 # JSON-RPC - - ${NETHERMIND_IP_ENGINE:-127.0.0.1}:${NETHERMIND_PORT_ENGINE:-8551}:8551 # ENGINE-API - labels: - - "promtail-monitored=${NETHERMIND_PROMTAIL_MONITORED:-true}" - command: | - --config=${NETWORK} - --datadir=data - --HealthChecks.Enabled=true - --JsonRpc.Enabled=true - --JsonRpc.JwtSecretFile="/root/jwt/jwt.hex" - --JsonRpc.EngineHost=0.0.0.0 - --JsonRpc.EnginePort=8551 - --JsonRpc.Host=0.0.0.0 - --JsonRpc.Port=8545 - --Metrics.Enabled=true - --Metrics.ExposePort=8008 - --Sync.SnapSync=true - --Sync.AncientBodiesBarrier=4367322 - --Sync.AncientReceiptsBarrier=4367322 - networks: [dvnode] - volumes: - - ./data/nethermind:/nethermind/data - - ./jwt:/root/jwt - - # _ _ _ _ _ - # | (_) __ _| |__ | |_| |__ ___ _ _ ___ ___ - # | | |/ _` | '_ \| __| '_ \ / _ \| | | / __|/ _ \ - # | | | (_| | | | | |_| | | | (_) | |_| \__ \ __/ - # |_|_|\__, |_| |_|\__|_| |_|\___/ \__,_|___/\___| - # |___/ - - beacon: - profiles: [cl_lighthouse] - image: sigp/lighthouse:${LIGHTHOUSE_VERSION:-v7.0.1} - ports: - - ${LIGHTHOUSE_PORT_P2P:-9000}:9000/tcp # P2P TCP - - ${LIGHTHOUSE_PORT_P2P:-9000}:9000/udp # P2P UDP - labels: - - "promtail-monitored=${LIGHTHOUSE_PROMTAIL_MONITORED:-true}" - command: | - lighthouse bn - --network=${NETWORK} - --checkpoint-sync-url=${LIGHTHOUSE_CHECKPOINT_SYNC_URL} - --checkpoint-sync-url-timeout=600 - --execution-endpoint=http://execution:8551 - --execution-jwt=/opt/jwt/jwt.hex - --datadir=/opt/app/beacon/ - --builder=http://mev:18550 - --http - --http-address=0.0.0.0 - --http-port=5052 - --metrics - --metrics-address=0.0.0.0 - --metrics-port=5054 - --metrics-allow-origin="*" - --suggested-fee-recipient=${LIDO_EXECUTION_LAYER_REWARDS_ADDRESS:-0x388C818CA8B9251b393131C08a736A67ccB19297} - networks: [dvnode] - volumes: - - ./data/lighthouse:/opt/app/beacon - - ./jwt:/opt/jwt - restart: unless-stopped - # _ # ___| |__ __ _ _ __ ___ _ __ # / __| '_ \ / _` | '__/ _ \| '_ \ @@ -85,7 +12,7 @@ services: charon: image: obolnetwork/charon:${CHARON_VERSION:-v1.5.2} environment: - - CHARON_BEACON_NODE_ENDPOINTS=${CHARON_BEACON_NODE_ENDPOINTS:-http://beacon:5052} + - CHARON_BEACON_NODE_ENDPOINTS=${CHARON_BEACON_NODE_ENDPOINTS:-http://cl-${CL}:5052} - CHARON_BEACON_NODE_HEADERS=${CHARON_BEACON_NODE_HEADERS:-} - CHARON_BEACON_NODE_TIMEOUT=${CHARON_BEACON_NODE_TIMEOUT:-3s} - CHARON_BEACON_NODE_SUBMIT_TIMEOUT=${CHARON_BEACON_NODE_SUBMIT_TIMEOUT:-4s} @@ -114,52 +41,6 @@ services: healthcheck: test: wget -qO- http://localhost:3620/readyz - # _ _ _ - # | | ___ __| | ___ ___| |_ __ _ _ __ - # | |/ _ \ / _` |/ _ \/ __| __/ _` | '__| - # | | (_) | (_| | __/\__ \ || (_| | | - # |_|\___/ \__,_|\___||___/\__\__,_|_| - - lodestar: - image: chainsafe/lodestar:${LODESTAR_VERSION:-v1.31.0} - depends_on: [charon] - entrypoint: /opt/lodestar/run.sh - networks: [dvnode] - environment: - BEACON_NODE_ADDRESS: http://charon:3600 - NETWORK: ${NETWORK} - BUILDER_API_ENABLED: ${BUILDER_API_ENABLED:-true} - BUILDER_SELECTION: ${BUILDER_SELECTION:-builderalways} - labels: - - "promtail-monitored=${LODESTAR_PROMTAIL_MONITORED:-true}" - volumes: - - ./lodestar/run.sh:/opt/lodestar/run.sh - - .charon/validator_keys:/home/charon/validator_keys - - ./data/lodestar:/opt/data - restart: unless-stopped - - # _ _ - # _ __ ___ _____ __ | |__ ___ ___ ___| |_ - # | '_ ` _ \ / _ \ \ / /____| '_ \ / _ \ / _ \/ __| __| - # | | | | | | __/\ V /_____| |_) | (_) | (_) \__ \ |_ - # |_| |_| |_|\___| \_/ |_.__/ \___/ \___/|___/\__| - mev: - profiles: [mev_mevboost] - image: ${MEVBOOST_IMAGE:-flashbots/mev-boost}:${MEVBOOST_VERSION:-1.9} - command: | - -${NETWORK} - -loglevel=debug - -addr=0.0.0.0:18550 - -relay-check - -relays=${MEVBOOST_RELAYS} - -request-timeout-getheader=${MEVBOOST_TIMEOUT_GETHEADER:-950} - -request-timeout-getpayload=${MEVBOOST_TIMEOUT_GETPAYLOAD:-4000} - -request-timeout-regval=${MEVBOOST_TIMEOUT_REGVAL:-3000} - labels: - - "promtail-monitored=${MEV_BOOST_PROMTAIL_MONITORED:-true}" - networks: [dvnode] - restart: unless-stopped - # _ _ _ # _ __ ___ ___ _ __ (_) |_ ___ _ __(_)_ __ __ _ # | '_ ` _ \ / _ \| '_ \| | __/ _ \| '__| | '_ \ / _` | @@ -207,26 +88,26 @@ services: # \_/ \__,_|_|_|\__,_|\__,_|\__\___/|_| \___|/ |\___|\___|\__\___/|_| # |__/ - validator-ejector: - image: lidofinance/validator-ejector:${VALIDATOR_EJECTOR_VERSION:-1.7.0} - user: ":" - networks: [dvnode] - volumes: - - ./validator-ejector:/exitmessages - labels: - - "promtail-monitored=${EJECTOR_PROMTAIL_MONITORED:-true}" - restart: unless-stopped - environment: - - EXECUTION_NODE=${VE_EXECUTION_NODE_URL:-http://nethermind:8545} - - CONSENSUS_NODE=${VE_BEACON_NODE_URL:-http://lighthouse:5052} - - LOCATOR_ADDRESS=${VE_LOCATOR_ADDRESS} - - STAKING_MODULE_ID=${VE_STAKING_MODULE_ID:-2} - - OPERATOR_ID=${VE_OPERATOR_ID} - - ORACLE_ADDRESSES_ALLOWLIST=${VE_ORACLE_ADDRESSES_ALLOWLIST} - - MESSAGES_LOCATION=/exitmessages - - RUN_METRICS=true - - HTTP_PORT=8989 - - DISABLE_SECURITY_DONT_USE_IN_PRODUCTION=${DISABLE_EJECTOR_SECURITY:-false} + # validator-ejector: + # image: lidofinance/validator-ejector:${VALIDATOR_EJECTOR_VERSION:-1.7.0} + # user: ":" + # networks: [dvnode] + # volumes: + # - ./validator-ejector:/exitmessages + # labels: + # - "promtail-monitored=${EJECTOR_PROMTAIL_MONITORED:-true}" + # restart: unless-stopped + # environment: + # - EXECUTION_NODE=${VE_EXECUTION_NODE_URL:-http://nethermind:8545} + # - CONSENSUS_NODE=${VE_BEACON_NODE_URL:-http://lighthouse:5052} + # - LOCATOR_ADDRESS=${VE_LOCATOR_ADDRESS} + # - STAKING_MODULE_ID=${VE_STAKING_MODULE_ID:-2} + # - OPERATOR_ID=${VE_OPERATOR_ID} + # - ORACLE_ADDRESSES_ALLOWLIST=${VE_ORACLE_ADDRESSES_ALLOWLIST} + # - MESSAGES_LOCATION=/exitmessages + # - RUN_METRICS=true + # - HTTP_PORT=8989 + # - DISABLE_SECURITY_DONT_USE_IN_PRODUCTION=${DISABLE_EJECTOR_SECURITY:-false} # _ _ _ _ _ _ # | (_) __| | ___ __| |_ __ _____ _(_) |_ From b93b6ce42ac0e20a6a7afec1f0fdf461e04a5e7a Mon Sep 17 00:00:00 2001 From: Kaloyan Tanev Date: Wed, 2 Jul 2025 11:16:44 +0300 Subject: [PATCH 05/23] Bring back validator-ejector --- docker-compose.yml | 40 ++++++++++++++++++++-------------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index cda9e891..a281306e 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -88,26 +88,26 @@ services: # \_/ \__,_|_|_|\__,_|\__,_|\__\___/|_| \___|/ |\___|\___|\__\___/|_| # |__/ - # validator-ejector: - # image: lidofinance/validator-ejector:${VALIDATOR_EJECTOR_VERSION:-1.7.0} - # user: ":" - # networks: [dvnode] - # volumes: - # - ./validator-ejector:/exitmessages - # labels: - # - "promtail-monitored=${EJECTOR_PROMTAIL_MONITORED:-true}" - # restart: unless-stopped - # environment: - # - EXECUTION_NODE=${VE_EXECUTION_NODE_URL:-http://nethermind:8545} - # - CONSENSUS_NODE=${VE_BEACON_NODE_URL:-http://lighthouse:5052} - # - LOCATOR_ADDRESS=${VE_LOCATOR_ADDRESS} - # - STAKING_MODULE_ID=${VE_STAKING_MODULE_ID:-2} - # - OPERATOR_ID=${VE_OPERATOR_ID} - # - ORACLE_ADDRESSES_ALLOWLIST=${VE_ORACLE_ADDRESSES_ALLOWLIST} - # - MESSAGES_LOCATION=/exitmessages - # - RUN_METRICS=true - # - HTTP_PORT=8989 - # - DISABLE_SECURITY_DONT_USE_IN_PRODUCTION=${DISABLE_EJECTOR_SECURITY:-false} + validator-ejector: + image: lidofinance/validator-ejector:${VALIDATOR_EJECTOR_VERSION:-1.7.0} + user: ":" + networks: [dvnode] + volumes: + - ./validator-ejector:/exitmessages + labels: + - "promtail-monitored=${EJECTOR_PROMTAIL_MONITORED:-true}" + restart: unless-stopped + environment: + - EXECUTION_NODE=${VE_EXECUTION_NODE_URL:-http://nethermind:8545} + - CONSENSUS_NODE=${VE_BEACON_NODE_URL:-http://lighthouse:5052} + - LOCATOR_ADDRESS=${VE_LOCATOR_ADDRESS} + - STAKING_MODULE_ID=${VE_STAKING_MODULE_ID:-2} + - OPERATOR_ID=${VE_OPERATOR_ID} + - ORACLE_ADDRESSES_ALLOWLIST=${VE_ORACLE_ADDRESSES_ALLOWLIST} + - MESSAGES_LOCATION=/exitmessages + - RUN_METRICS=true + - HTTP_PORT=8989 + - DISABLE_SECURITY_DONT_USE_IN_PRODUCTION=${DISABLE_EJECTOR_SECURITY:-false} # _ _ _ _ _ _ # | (_) __| | ___ __| |_ __ _____ _(_) |_ From bf67b8d9beec2cf3220aaa2c25aad21094f220a6 Mon Sep 17 00:00:00 2001 From: Kaloyan Tanev Date: Wed, 2 Jul 2025 11:20:01 +0300 Subject: [PATCH 06/23] charon v1.5.0 --- .env.sample.holesky | 2 +- .env.sample.hoodi | 2 +- .env.sample.mainnet | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.env.sample.holesky b/.env.sample.holesky index 24b81beb..e6d313c2 100644 --- a/.env.sample.holesky +++ b/.env.sample.holesky @@ -69,7 +69,7 @@ LIDO_EXECUTION_LAYER_REWARDS_ADDRESS=0xE73a3602b99f1f913e72F8bdcBC235e206794Ac8 ######### Charon Config ######### -# Charon docker container image version, e.g. `latest` or `v1.0.0`. +# Charon docker container image version, e.g. `latest` or `v1.5.0`. # See available tags https://hub.docker.com/r/obolnetwork/charon/tags. #CHARON_VERSION= diff --git a/.env.sample.hoodi b/.env.sample.hoodi index 965fa222..359e1795 100644 --- a/.env.sample.hoodi +++ b/.env.sample.hoodi @@ -69,7 +69,7 @@ LIDO_EXECUTION_LAYER_REWARDS_ADDRESS=0xE73a3602b99f1f913e72F8bdcBC235e206794Ac8 ######### Charon Config ######### -# Charon docker container image version, e.g. `latest` or `v1.0.0`. +# Charon docker container image version, e.g. `latest` or `v1.5.0`. # See available tags https://hub.docker.com/r/obolnetwork/charon/tags. #CHARON_VERSION= diff --git a/.env.sample.mainnet b/.env.sample.mainnet index 2af89930..cfc238a4 100644 --- a/.env.sample.mainnet +++ b/.env.sample.mainnet @@ -63,7 +63,7 @@ LIDO_EXECUTION_LAYER_REWARDS_ADDRESS=0x388C818CA8B9251b393131C08a736A67ccB19297 ######### Charon Config ######### -# Charon docker container image version, e.g. `latest` or `v1.0.0`. +# Charon docker container image version, e.g. `latest` or `v1.5.0`. # See available tags https://hub.docker.com/r/obolnetwork/charon/tags. #CHARON_VERSION= From 91fb5270a089cbe043f751582fc9287a8e60c6ca Mon Sep 17 00:00:00 2001 From: Kaloyan Tanev Date: Wed, 2 Jul 2025 11:26:50 +0300 Subject: [PATCH 07/23] Refactor .envs --- .env.sample.holesky | 17 +++++++++++------ .env.sample.hoodi | 17 +++++++++++------ .env.sample.mainnet | 17 +++++++++++------ 3 files changed, 33 insertions(+), 18 deletions(-) diff --git a/.env.sample.holesky b/.env.sample.holesky index e6d313c2..b2811ee9 100644 --- a/.env.sample.holesky +++ b/.env.sample.holesky @@ -4,17 +4,22 @@ # Overrides network for all the relevant services. NETWORK=holesky -# These profiles dictate what client types to start for execution, consensus, validator and mev clients. +# Execution layer client to be used in a DV setup. +# Available options are: nethermind. EL=nethermind -#EL=geth +# Consensus layer client to be used in a DV setup. +# Available options are: lighthouse, grandine. CL=lighthouse -#CL=grandine +# Distributed validator client to be used in a DV setup. +# Available options are: charon. DV=charon -#DV=charon +# Validator client to be used in a DV setup. +# Available options are: lodestar. VC=lodestar -#VC=nimbus +# MEV client to be used in a DV setup. +# Available options are: mevboost. MEV=mevboost -#MEV=commitboost +# Do not edit. These profiles and files dictate Docker what client types to start for execution, consensus, validator and mev clients, which are specified above. COMPOSE_PROFILES=el_${EL},cl_${CL},dv_${DV},vc_${VC},mev_${MEV} COMPOSE_FILE=compose-el.yml:compose-cl.yml:compose-vc.yml:compose-mev.yml:docker-compose.yml diff --git a/.env.sample.hoodi b/.env.sample.hoodi index 359e1795..8be9c7f7 100644 --- a/.env.sample.hoodi +++ b/.env.sample.hoodi @@ -4,17 +4,22 @@ # Overrides network for all the relevant services. NETWORK=hoodi -# These profiles dictate what client types to start for execution, consensus, validator and mev clients. +# Execution layer client to be used in a DV setup. +# Available options are: nethermind. EL=nethermind -#EL=geth +# Consensus layer client to be used in a DV setup. +# Available options are: lighthouse, grandine. CL=lighthouse -#CL=grandine +# Distributed validator client to be used in a DV setup. +# Available options are: charon. DV=charon -#DV=charon +# Validator client to be used in a DV setup. +# Available options are: lodestar. VC=lodestar -#VC=nimbus +# MEV client to be used in a DV setup. +# Available options are: mevboost. MEV=mevboost -#MEV=commitboost +# Do not edit. These profiles and files dictate Docker what client types to start for execution, consensus, validator and mev clients, which are specified above. COMPOSE_PROFILES=el_${EL},cl_${CL},dv_${DV},vc_${VC},mev_${MEV} COMPOSE_FILE=compose-el.yml:compose-cl.yml:compose-vc.yml:compose-mev.yml:docker-compose.yml diff --git a/.env.sample.mainnet b/.env.sample.mainnet index cfc238a4..7ed0f1d0 100644 --- a/.env.sample.mainnet +++ b/.env.sample.mainnet @@ -4,17 +4,22 @@ # Overrides network for all the relevant services. NETWORK=mainnet -# These profiles dictate what client types to start for execution, consensus, validator and mev clients. +# Execution layer client to be used in a DV setup. +# Available options are: nethermind. EL=nethermind -#EL=geth +# Consensus layer client to be used in a DV setup. +# Available options are: lighthouse, grandine. CL=lighthouse -#CL=grandine +# Distributed validator client to be used in a DV setup. +# Available options are: charon. DV=charon -#DV=charon +# Validator client to be used in a DV setup. +# Available options are: lodestar. VC=lodestar -#VC=nimbus +# MEV client to be used in a DV setup. +# Available options are: mevboost. MEV=mevboost -#MEV=commitboost +# Do not edit. These profiles and files dictate Docker what client types to start for execution, consensus, validator and mev clients, which are specified above. COMPOSE_PROFILES=el_${EL},cl_${CL},dv_${DV},vc_${VC},mev_${MEV} COMPOSE_FILE=compose-el.yml:compose-cl.yml:compose-vc.yml:compose-mev.yml:docker-compose.yml From 90efceeebd24c81429a0283f16a9066f2b81931c Mon Sep 17 00:00:00 2001 From: Kaloyan Tanev Date: Wed, 2 Jul 2025 12:08:07 +0300 Subject: [PATCH 08/23] Support existing config --- .env.sample.holesky | 13 ++-- .env.sample.hoodi | 13 ++-- .env.sample.mainnet | 13 ++-- compose-cl.yml | 12 ++-- compose-el.yml | 2 +- compose-mev.yml | 2 +- compose-vc.yml | 6 +- docker-compose.yml | 163 ++++++++++++++++++++++++++++++++++++++------ 8 files changed, 168 insertions(+), 56 deletions(-) diff --git a/.env.sample.holesky b/.env.sample.holesky index b2811ee9..0fe72949 100644 --- a/.env.sample.holesky +++ b/.env.sample.holesky @@ -6,21 +6,18 @@ NETWORK=holesky # Execution layer client to be used in a DV setup. # Available options are: nethermind. -EL=nethermind +EL=el-nethermind # Consensus layer client to be used in a DV setup. # Available options are: lighthouse, grandine. -CL=lighthouse -# Distributed validator client to be used in a DV setup. -# Available options are: charon. -DV=charon +CL=cl-lighthouse # Validator client to be used in a DV setup. # Available options are: lodestar. -VC=lodestar +VC=vc-lodestar # MEV client to be used in a DV setup. # Available options are: mevboost. -MEV=mevboost +MEV=mev-mevboost # Do not edit. These profiles and files dictate Docker what client types to start for execution, consensus, validator and mev clients, which are specified above. -COMPOSE_PROFILES=el_${EL},cl_${CL},dv_${DV},vc_${VC},mev_${MEV} +COMPOSE_PROFILES=${EL},${CL},${VC},${MEV} COMPOSE_FILE=compose-el.yml:compose-cl.yml:compose-vc.yml:compose-mev.yml:docker-compose.yml # Enables builder api for lodestar VC and charon services. diff --git a/.env.sample.hoodi b/.env.sample.hoodi index 8be9c7f7..75858918 100644 --- a/.env.sample.hoodi +++ b/.env.sample.hoodi @@ -6,21 +6,18 @@ NETWORK=hoodi # Execution layer client to be used in a DV setup. # Available options are: nethermind. -EL=nethermind +EL=el-nethermind # Consensus layer client to be used in a DV setup. # Available options are: lighthouse, grandine. -CL=lighthouse -# Distributed validator client to be used in a DV setup. -# Available options are: charon. -DV=charon +CL=cl-lighthouse # Validator client to be used in a DV setup. # Available options are: lodestar. -VC=lodestar +VC=vc-lodestar # MEV client to be used in a DV setup. # Available options are: mevboost. -MEV=mevboost +MEV=mev-mevboost # Do not edit. These profiles and files dictate Docker what client types to start for execution, consensus, validator and mev clients, which are specified above. -COMPOSE_PROFILES=el_${EL},cl_${CL},dv_${DV},vc_${VC},mev_${MEV} +COMPOSE_PROFILES=${EL},${CL},${VC},${MEV} COMPOSE_FILE=compose-el.yml:compose-cl.yml:compose-vc.yml:compose-mev.yml:docker-compose.yml # Enables builder api for lodestar VC and charon services. diff --git a/.env.sample.mainnet b/.env.sample.mainnet index 7ed0f1d0..a257cf79 100644 --- a/.env.sample.mainnet +++ b/.env.sample.mainnet @@ -6,21 +6,18 @@ NETWORK=mainnet # Execution layer client to be used in a DV setup. # Available options are: nethermind. -EL=nethermind +EL=el-nethermind # Consensus layer client to be used in a DV setup. # Available options are: lighthouse, grandine. -CL=lighthouse -# Distributed validator client to be used in a DV setup. -# Available options are: charon. -DV=charon +CL=cl-lighthouse # Validator client to be used in a DV setup. # Available options are: lodestar. -VC=lodestar +VC=vc-lodestar # MEV client to be used in a DV setup. # Available options are: mevboost. -MEV=mevboost +MEV=mev-mevboost # Do not edit. These profiles and files dictate Docker what client types to start for execution, consensus, validator and mev clients, which are specified above. -COMPOSE_PROFILES=el_${EL},cl_${CL},dv_${DV},vc_${VC},mev_${MEV} +COMPOSE_PROFILES=${EL},${CL},${VC},${MEV} COMPOSE_FILE=compose-el.yml:compose-cl.yml:compose-vc.yml:compose-mev.yml:docker-compose.yml # Enables builder api for lodestar VC and charon services. diff --git a/compose-cl.yml b/compose-cl.yml index 97db9cf8..8e1e00b4 100644 --- a/compose-cl.yml +++ b/compose-cl.yml @@ -11,12 +11,12 @@ services: # |___/ cl-grandine: - profiles: [cl_grandine] + profiles: [cl-grandine] image: sifrai/grandine:${GRANDINE_VERSION:-1.1.1} restart: unless-stopped command: - --datadir=/root/.grandine - - --eth1-rpc-urls=http://el-${EL}:8551 + - --eth1-rpc-urls=http://${EL}:8551 - --jwt-secret=/jwt - --http-address=0.0.0.0 - --http-port=5052 @@ -25,7 +25,7 @@ services: - --metrics-port=5054 - --metrics-address=0.0.0.0 - --checkpoint-sync-url=${LIGHTHOUSE_CHECKPOINT_SYNC_URL} - - --builder=http://mev-${MEV}:18550 + - --builder=http://${MEV}:18550 ports: - 9000:9000 # TCP + UDP LibP2P volumes: @@ -42,7 +42,7 @@ services: # |___/ cl-lighthouse: - profiles: [cl_lighthouse] + profiles: [cl-lighthouse] image: sigp/lighthouse:${LIGHTHOUSE_VERSION:-v7.0.1} ports: - ${LIGHTHOUSE_PORT_P2P:-9000}:9000/tcp # P2P TCP @@ -54,10 +54,10 @@ services: --network=${NETWORK} --checkpoint-sync-url=${LIGHTHOUSE_CHECKPOINT_SYNC_URL} --checkpoint-sync-url-timeout=600 - --execution-endpoint=http://el-${EL}:8551 + --execution-endpoint=http://${EL}:8551 --execution-jwt=/opt/jwt/jwt.hex --datadir=/opt/app/beacon/ - --builder=http://mev-${MEV}:18550 + --builder=http://${MEV}:18550 --http --http-address=0.0.0.0 --http-port=5052 diff --git a/compose-el.yml b/compose-el.yml index 98eb2388..7522cfc2 100644 --- a/compose-el.yml +++ b/compose-el.yml @@ -10,7 +10,7 @@ services: # |_| |_|\___|\__|_| |_|\___|_| |_| |_| |_|_|_| |_|\__,_| el-nethermind: - profiles: [el_nethermind] + profiles: [el-nethermind] image: nethermind/nethermind:${NETHERMIND_VERSION:-1.32.2} restart: unless-stopped ports: diff --git a/compose-mev.yml b/compose-mev.yml index 9ef8864f..1b2add77 100644 --- a/compose-mev.yml +++ b/compose-mev.yml @@ -9,7 +9,7 @@ services: # | | | | | | __/\ V /_____| |_) | (_) | (_) \__ \ |_ # |_| |_| |_|\___| \_/ |_.__/ \___/ \___/|___/\__| mev-mevboost: - profiles: [mev_mevboost] + profiles: [mev-mevboost] image: ${MEVBOOST_IMAGE:-flashbots/mev-boost}:${MEVBOOST_VERSION:-1.9} command: | -${NETWORK} diff --git a/compose-vc.yml b/compose-vc.yml index 4b4fba0e..d8ca06fa 100644 --- a/compose-vc.yml +++ b/compose-vc.yml @@ -10,13 +10,13 @@ services: # |_|\___/ \__,_|\___||___/\__\__,_|_| vc-lodestar: - profiles: [vc_lodestar] + profiles: [vc-lodestar] image: chainsafe/lodestar:${LODESTAR_VERSION:-v1.29.0} - depends_on: [dv-charon] + depends_on: [charon] entrypoint: /opt/lodestar/run.sh networks: [dvnode] environment: - BEACON_NODE_ADDRESS: http://dv-${DV}:3600 + BEACON_NODE_ADDRESS: http://${DV}:3600 NETWORK: ${NETWORK} BUILDER_API_ENABLED: ${BUILDER_API_ENABLED:-true} BUILDER_SELECTION: ${BUILDER_SELECTION:-builderalways} diff --git a/docker-compose.yml b/docker-compose.yml index a281306e..d78b10d5 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -3,6 +3,80 @@ # ${VARIABLE-default} evaluates to default only if VARIABLE is unset in the environment. services: + # _ _ _ _ + # _ __ ___| |_| |__ ___ _ __ _ __ ___ (_)_ __ __| | + # | '_ \ / _ \ __| '_ \ / _ \ '__| '_ ` _ \| | '_ \ / _` | + # | | | | __/ |_| | | | __/ | | | | | | | | | | | (_| | + # |_| |_|\___|\__|_| |_|\___|_| |_| |_| |_|_|_| |_|\__,_| + nethermind: + image: nethermind/nethermind:${NETHERMIND_VERSION:-1.32.2} + profiles: [""] + restart: unless-stopped + ports: + - ${NETHERMIND_PORT_P2P:-30303}:30303/tcp # P2P TCP + - ${NETHERMIND_PORT_P2P:-30303}:30303/udp # P2P UDP + - ${NETHERMIND_IP_HTTP:-127.0.0.1}:${NETHERMIND_PORT_HTTP:-8545}:8545 # JSON-RPC + - ${NETHERMIND_IP_ENGINE:-127.0.0.1}:${NETHERMIND_PORT_ENGINE:-8551}:8551 # ENGINE-API + labels: + - "promtail-monitored=${NETHERMIND_PROMTAIL_MONITORED:-true}" + command: | + --config=${NETWORK} + --datadir=data + --HealthChecks.Enabled=true + --JsonRpc.Enabled=true + --JsonRpc.JwtSecretFile="/root/jwt/jwt.hex" + --JsonRpc.EngineHost=0.0.0.0 + --JsonRpc.EnginePort=8551 + --JsonRpc.Host=0.0.0.0 + --JsonRpc.Port=8545 + --Metrics.Enabled=true + --Metrics.ExposePort=8008 + --Sync.SnapSync=true + --Sync.AncientBodiesBarrier=4367322 + --Sync.AncientReceiptsBarrier=4367322 + networks: [dvnode] + volumes: + - ./data/nethermind:/nethermind/data + - ./jwt:/root/jwt + + # _ _ _ _ _ + # | (_) __ _| |__ | |_| |__ ___ _ _ ___ ___ + # | | |/ _` | '_ \| __| '_ \ / _ \| | | / __|/ _ \ + # | | | (_| | | | | |_| | | | (_) | |_| \__ \ __/ + # |_|_|\__, |_| |_|\__|_| |_|\___/ \__,_|___/\___| + # |___/ + + lighthouse: + image: sigp/lighthouse:${LIGHTHOUSE_VERSION:-v7.0.1} + profiles: [""] + ports: + - ${LIGHTHOUSE_PORT_P2P:-9000}:9000/tcp # P2P TCP + - ${LIGHTHOUSE_PORT_P2P:-9000}:9000/udp # P2P UDP + labels: + - "promtail-monitored=${LIGHTHOUSE_PROMTAIL_MONITORED:-true}" + command: | + lighthouse bn + --network=${NETWORK} + --checkpoint-sync-url=${LIGHTHOUSE_CHECKPOINT_SYNC_URL} + --checkpoint-sync-url-timeout=600 + --execution-endpoint=http://nethermind:8551 + --execution-jwt=/opt/jwt/jwt.hex + --datadir=/opt/app/beacon/ + --builder=http://mev-boost:18550 + --http + --http-address=0.0.0.0 + --http-port=5052 + --metrics + --metrics-address=0.0.0.0 + --metrics-port=5054 + --metrics-allow-origin="*" + --suggested-fee-recipient=${LIDO_EXECUTION_LAYER_REWARDS_ADDRESS:-0x388C818CA8B9251b393131C08a736A67ccB19297} + networks: [dvnode] + volumes: + - ./data/lighthouse:/opt/app/beacon + - ./jwt:/opt/jwt + restart: unless-stopped + # _ # ___| |__ __ _ _ __ ___ _ __ # / __| '_ \ / _` | '__/ _ \| '_ \ @@ -12,7 +86,7 @@ services: charon: image: obolnetwork/charon:${CHARON_VERSION:-v1.5.2} environment: - - CHARON_BEACON_NODE_ENDPOINTS=${CHARON_BEACON_NODE_ENDPOINTS:-http://cl-${CL}:5052} + - CHARON_BEACON_NODE_ENDPOINTS=${CHARON_BEACON_NODE_ENDPOINTS:-http://${CL:-lighthouse}:5052} - CHARON_BEACON_NODE_HEADERS=${CHARON_BEACON_NODE_HEADERS:-} - CHARON_BEACON_NODE_TIMEOUT=${CHARON_BEACON_NODE_TIMEOUT:-3s} - CHARON_BEACON_NODE_SUBMIT_TIMEOUT=${CHARON_BEACON_NODE_SUBMIT_TIMEOUT:-4s} @@ -41,6 +115,53 @@ services: healthcheck: test: wget -qO- http://localhost:3620/readyz + # _ _ _ + # | | ___ __| | ___ ___| |_ __ _ _ __ + # | |/ _ \ / _` |/ _ \/ __| __/ _` | '__| + # | | (_) | (_| | __/\__ \ || (_| | | + # |_|\___/ \__,_|\___||___/\__\__,_|_| + + lodestar: + image: chainsafe/lodestar:${LODESTAR_VERSION:-v1.31.0} + profiles: [""] + depends_on: [charon] + entrypoint: /opt/lodestar/run.sh + networks: [dvnode] + environment: + BEACON_NODE_ADDRESS: http://charon:3600 + NETWORK: ${NETWORK} + BUILDER_API_ENABLED: ${BUILDER_API_ENABLED:-true} + BUILDER_SELECTION: ${BUILDER_SELECTION:-builderalways} + labels: + - "promtail-monitored=${LODESTAR_PROMTAIL_MONITORED:-true}" + volumes: + - ./lodestar/run.sh:/opt/lodestar/run.sh + - .charon/validator_keys:/home/charon/validator_keys + - ./data/lodestar:/opt/data + restart: unless-stopped + + # _ _ + # _ __ ___ _____ __ | |__ ___ ___ ___| |_ + # | '_ ` _ \ / _ \ \ / /____| '_ \ / _ \ / _ \/ __| __| + # | | | | | | __/\ V /_____| |_) | (_) | (_) \__ \ |_ + # |_| |_| |_|\___| \_/ |_.__/ \___/ \___/|___/\__| + mev-boost: + image: ${MEVBOOST_IMAGE:-flashbots/mev-boost}:${MEVBOOST_VERSION:-1.9} + profiles: [""] + command: | + -${NETWORK} + -loglevel=debug + -addr=0.0.0.0:18550 + -relay-check + -relays=${MEVBOOST_RELAYS} + -request-timeout-getheader=${MEVBOOST_TIMEOUT_GETHEADER:-950} + -request-timeout-getpayload=${MEVBOOST_TIMEOUT_GETPAYLOAD:-4000} + -request-timeout-regval=${MEVBOOST_TIMEOUT_REGVAL:-3000} + labels: + - "promtail-monitored=${MEV_BOOST_PROMTAIL_MONITORED:-true}" + networks: [dvnode] + restart: unless-stopped + # _ _ _ # _ __ ___ ___ _ __ (_) |_ ___ _ __(_)_ __ __ _ # | '_ ` _ \ / _ \| '_ \| | __/ _ \| '__| | '_ \ / _` | @@ -88,26 +209,26 @@ services: # \_/ \__,_|_|_|\__,_|\__,_|\__\___/|_| \___|/ |\___|\___|\__\___/|_| # |__/ - validator-ejector: - image: lidofinance/validator-ejector:${VALIDATOR_EJECTOR_VERSION:-1.7.0} - user: ":" - networks: [dvnode] - volumes: - - ./validator-ejector:/exitmessages - labels: - - "promtail-monitored=${EJECTOR_PROMTAIL_MONITORED:-true}" - restart: unless-stopped - environment: - - EXECUTION_NODE=${VE_EXECUTION_NODE_URL:-http://nethermind:8545} - - CONSENSUS_NODE=${VE_BEACON_NODE_URL:-http://lighthouse:5052} - - LOCATOR_ADDRESS=${VE_LOCATOR_ADDRESS} - - STAKING_MODULE_ID=${VE_STAKING_MODULE_ID:-2} - - OPERATOR_ID=${VE_OPERATOR_ID} - - ORACLE_ADDRESSES_ALLOWLIST=${VE_ORACLE_ADDRESSES_ALLOWLIST} - - MESSAGES_LOCATION=/exitmessages - - RUN_METRICS=true - - HTTP_PORT=8989 - - DISABLE_SECURITY_DONT_USE_IN_PRODUCTION=${DISABLE_EJECTOR_SECURITY:-false} + # validator-ejector: + # image: lidofinance/validator-ejector:${VALIDATOR_EJECTOR_VERSION:-1.7.0} + # user: ":" + # networks: [dvnode] + # volumes: + # - ./validator-ejector:/exitmessages + # labels: + # - "promtail-monitored=${EJECTOR_PROMTAIL_MONITORED:-true}" + # restart: unless-stopped + # environment: + # - EXECUTION_NODE=${VE_EXECUTION_NODE_URL:-http://nethermind:8545} + # - CONSENSUS_NODE=${VE_BEACON_NODE_URL:-http://lighthouse:5052} + # - LOCATOR_ADDRESS=${VE_LOCATOR_ADDRESS} + # - STAKING_MODULE_ID=${VE_STAKING_MODULE_ID:-2} + # - OPERATOR_ID=${VE_OPERATOR_ID} + # - ORACLE_ADDRESSES_ALLOWLIST=${VE_ORACLE_ADDRESSES_ALLOWLIST} + # - MESSAGES_LOCATION=/exitmessages + # - RUN_METRICS=true + # - HTTP_PORT=8989 + # - DISABLE_SECURITY_DONT_USE_IN_PRODUCTION=${DISABLE_EJECTOR_SECURITY:-false} # _ _ _ _ _ _ # | (_) __| | ___ __| |_ __ _____ _(_) |_ From 5519316dadbbace759e5f435d7f450fcc0aa8ab9 Mon Sep 17 00:00:00 2001 From: Kaloyan Tanev Date: Wed, 2 Jul 2025 12:08:52 +0300 Subject: [PATCH 09/23] Bring back validator ejector --- docker-compose.yml | 40 ++++++++++++++++++++-------------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index d78b10d5..e71793f2 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -209,26 +209,26 @@ services: # \_/ \__,_|_|_|\__,_|\__,_|\__\___/|_| \___|/ |\___|\___|\__\___/|_| # |__/ - # validator-ejector: - # image: lidofinance/validator-ejector:${VALIDATOR_EJECTOR_VERSION:-1.7.0} - # user: ":" - # networks: [dvnode] - # volumes: - # - ./validator-ejector:/exitmessages - # labels: - # - "promtail-monitored=${EJECTOR_PROMTAIL_MONITORED:-true}" - # restart: unless-stopped - # environment: - # - EXECUTION_NODE=${VE_EXECUTION_NODE_URL:-http://nethermind:8545} - # - CONSENSUS_NODE=${VE_BEACON_NODE_URL:-http://lighthouse:5052} - # - LOCATOR_ADDRESS=${VE_LOCATOR_ADDRESS} - # - STAKING_MODULE_ID=${VE_STAKING_MODULE_ID:-2} - # - OPERATOR_ID=${VE_OPERATOR_ID} - # - ORACLE_ADDRESSES_ALLOWLIST=${VE_ORACLE_ADDRESSES_ALLOWLIST} - # - MESSAGES_LOCATION=/exitmessages - # - RUN_METRICS=true - # - HTTP_PORT=8989 - # - DISABLE_SECURITY_DONT_USE_IN_PRODUCTION=${DISABLE_EJECTOR_SECURITY:-false} + validator-ejector: + image: lidofinance/validator-ejector:${VALIDATOR_EJECTOR_VERSION:-1.7.0} + user: ":" + networks: [dvnode] + volumes: + - ./validator-ejector:/exitmessages + labels: + - "promtail-monitored=${EJECTOR_PROMTAIL_MONITORED:-true}" + restart: unless-stopped + environment: + - EXECUTION_NODE=${VE_EXECUTION_NODE_URL:-http://nethermind:8545} + - CONSENSUS_NODE=${VE_BEACON_NODE_URL:-http://lighthouse:5052} + - LOCATOR_ADDRESS=${VE_LOCATOR_ADDRESS} + - STAKING_MODULE_ID=${VE_STAKING_MODULE_ID:-2} + - OPERATOR_ID=${VE_OPERATOR_ID} + - ORACLE_ADDRESSES_ALLOWLIST=${VE_ORACLE_ADDRESSES_ALLOWLIST} + - MESSAGES_LOCATION=/exitmessages + - RUN_METRICS=true + - HTTP_PORT=8989 + - DISABLE_SECURITY_DONT_USE_IN_PRODUCTION=${DISABLE_EJECTOR_SECURITY:-false} # _ _ _ _ _ _ # | (_) __| | ___ __| |_ __ _____ _(_) |_ From 05f197568a414f72a5f97fc7f6628a913df0550f Mon Sep 17 00:00:00 2001 From: Kaloyan Tanev Date: Wed, 2 Jul 2025 15:30:20 +0300 Subject: [PATCH 10/23] Add stack-specific prefixes in .envs --- .env.sample.holesky | 168 ++++++++++++++++++------------------- .env.sample.hoodi | 169 ++++++++++++++++++-------------------- .env.sample.mainnet | 196 +++++++++++++++++++++++++------------------- compose-cl.yml | 32 ++++---- compose-el.yml | 14 ++-- compose-mev.yml | 12 +-- compose-vc.yml | 10 +-- 7 files changed, 307 insertions(+), 294 deletions(-) diff --git a/.env.sample.holesky b/.env.sample.holesky index 0fe72949..96375f31 100644 --- a/.env.sample.holesky +++ b/.env.sample.holesky @@ -20,58 +20,71 @@ MEV=mev-mevboost COMPOSE_PROFILES=${EL},${CL},${VC},${MEV} COMPOSE_FILE=compose-el.yml:compose-cl.yml:compose-vc.yml:compose-mev.yml:docker-compose.yml -# Enables builder api for lodestar VC and charon services. +# Enables Builder API. #BUILDER_API_ENABLED= -#BUILDER_API_RELAY_URL=http://mev-boost:18550 -#BUILDER_SELECTION= -######### Nethermind Config ######### +######### Execution Layer Config ######### -# Nethermind docker container image version, e.g. `latest` or `1.25.3`. +# EL host exposed IPs and ports. +#EL_PORT_P2P= +#EL_IP_HTTP= +#EL_PORT_HTTP= +#EL_IP_ENGINE= +#EL_PORT_ENGINE= + +# Nethermind docker container image version. # See available tags https://hub.docker.com/r/nethermind/nethermind/tags #NETHERMIND_VERSION= -# Nethermind host exposed ip and ports -#NETHERMIND_PORT_P2P= -#NETHERMIND_IP_HTTP= -#NETHERMIND_PORT_HTTP= -#NETHERMIND_IP_ENGINE= -#NETHERMIND_PORT_ENGINE= - -######### Lighthouse Config ######### - -# Lighthouse beacon node docker container image version, e.g. `latest` or `v4.6.0`. -# See available tags https://hub.docker.com/r/sigp/lighthouse/tags. -#LIGHTHOUSE_VERSION= +######### Consensus Layer Config ######### -# Lighthouse beacon node host exposed ports -#LIGHTHOUSE_PORT_P2P= +# CL beacon node host exposed ports. +#CL_PORT_P2P= # Checkpoint sync url used by lighthouse to fast sync. -LIGHTHOUSE_CHECKPOINT_SYNC_URL=https://checkpoint-sync.holesky.ethpandaops.io/ +CL_CHECKPOINT_SYNC_URL=https://checkpoint-sync.holesky.ethpandaops.io/ # In certain cases, beacon nodes produce blocks with unexpected fee recipients. Setting the Lido execution -# layer rewards vault as the suggested fee recipient reduces this risk +# layer rewards vault as the suggested fee recipient reduces this risk. LIDO_EXECUTION_LAYER_REWARDS_ADDRESS=0xE73a3602b99f1f913e72F8bdcBC235e206794Ac8 -######### Lodestar Config ######### +# Lighthouse beacon node docker container image version. +# See available tags https://hub.docker.com/r/sigp/lighthouse/tags. +#CL_LIGHTHOUSE_VERSION= + +# Grandine beacon node docker container image version. +# See available tags https://hub.docker.com/r/sifrai/grandine/tags. +#CL_GRANDINE_VERSION= + +######### Validator Client Config ######### -# Lodestar validator client docker container image version, e.g. `latest` or `v1.19.0`. +# Override prometheus metrics port for validator client. +#VC_PORT_METRICS= + +# Lodestar validator client docker container image version. # See available tags https://hub.docker.com/r/chainsafe/lodestar/tags -#LODESTAR_VERSION= +#VC_LODESTAR_VERSION= + +#VC_LODESTAR_BUILDER_SELECTION= -# Override prometheus metrics port for lodestar validator client. -#LODESTAR_PORT_METRICS= +######### MEV Config ######### -######### Teku Config ######### +# MEV timeouts. +#MEV_TIMEOUT_GETHEADER= +#MEV_TIMEOUT_GETPAYLOAD= +#MEV_TIMEOUT_REGVAL= + +# Comma separated list of MEV-Boost relays. You can choose public relays from https://enchanted-direction-844.notion.site/6d369eb33f664487800b0dedfe32171e?v=d255247c822c409f99c498aeb6a4e51d. +MEV_RELAYS=https://0xafa4c6985aa049fb79dd37010438cfebeb0f2bd42b115b89dd678dab0670c1de38da0c4e9138c9290a398ecd9a0b3110@boost-relay-holesky.flashbots.net,https://0xaa58208899c6105603b74396734a6263cc7d947f444f396a90f7b7d3e65d102aec7e5e5291b27e08d02c50a050825c2f@holesky.titanrelay.xyz,https://0xb1559beef7b5ba3127485bbbb090362d9f497ba64e177ee2c8e7db74746306efad687f2cf8574e38d70067d40ef136dc@relay-stag.ultrasound.money,https://0xab78bf8c781c58078c3beb5710c57940874dd96aef2835e7742c866b4c7c0406754376c2c8285a36c630346aa5c5f833@holesky.aestus.live -# Teku validator client docker container image version, e.g. `latest` or `24.1.1`. -# See available tags https://hub.docker.com/r/consensys/teku/tags -#TEKU_VERSION= +# MEV-Boost docker container image version. +#MEV_MEVBOOST_VERSION= + +##### validator-ejector Config ##### ######### Charon Config ######### -# Charon docker container image version, e.g. `latest` or `v1.5.0`. +# Charon docker container image version. # See available tags https://hub.docker.com/r/obolnetwork/charon/tags. #CHARON_VERSION= @@ -88,10 +101,10 @@ CHARON_P2P_RELAYS=https://0.relay.obol.tech,https://1.relay.obol.tech/,https://c # Use fallback beacon nodes sparingly, particularly if latency is high, which can impact DV cluster performance. #CHARON_FALLBACK_BEACON_NODE_ENDPOINTS= -# Increase the duration charon will wait for requests to the beacon node +# Increase the duration charon will wait for requests to the beacon node. #CHARON_BEACON_NODE_TIMEOUT= -# Increase the duration charon will wait while publishing data to the beacon node +# Increase the duration charon will wait while publishing data to the beacon node. #CHARON_BEACON_NODE_SUBMIT_TIMEOUT= # The address of the execution engine JSON-RPC API. @@ -109,67 +122,53 @@ CHARON_P2P_RELAYS=https://0.relay.obol.tech,https://1.relay.obol.tech/,https://c # Loki log aggregation server addresses. Disable loki log aggregation by setting an empty address. #CHARON_LOKI_ADDRESSES= -# Charon Cluster Name. Mandatory to send logs with Promtail +# Charon Cluster Name. Mandatory to send logs with Promtail. #CLUSTER_NAME= -# Charon Cluster Peer. Mandatory to send logs with Promtail +# Charon Cluster Peer. Mandatory to send logs with Promtail. #CLUSTER_PEER= -# Nickname to identify this charon node on monitoring (max 32 characters) +# Nickname to identify this charon node on monitoring (max 32 characters). #CHARON_NICKNAME= # Docker network of running charon node. See `docker network ls`. #CHARON_DOCKER_NETWORK= -# Charon host exposed ports +# Charon host exposed ports. #CHARON_PORT_P2P_TCP= -######### MEV-Boost Config ######### - -# MEV-Boost docker container image version, e.g. `latest` or `1.6`. -#MEVBOOST_VERSION= -#MEVBOOST_TIMEOUT_GETHEADER= -#MEVBOOST_TIMEOUT_GETPAYLOAD= -#MEVBOOST_TIMEOUT_REGVAL= +######### Lido validator-ejector Config ######### -# MEV-Boost docker container image name, e.g. flashbots/mev-boost. -#MEVBOOST_IMAGE= - -# Comma separated list of MEV-Boost relays. You can choose public relays from https://enchanted-direction-844.notion.site/6d369eb33f664487800b0dedfe32171e?v=d255247c822c409f99c498aeb6a4e51d. -MEVBOOST_RELAYS=https://0xafa4c6985aa049fb79dd37010438cfebeb0f2bd42b115b89dd678dab0670c1de38da0c4e9138c9290a398ecd9a0b3110@boost-relay-holesky.flashbots.net,https://0xaa58208899c6105603b74396734a6263cc7d947f444f396a90f7b7d3e65d102aec7e5e5291b27e08d02c50a050825c2f@holesky.titanrelay.xyz,https://0xb1559beef7b5ba3127485bbbb090362d9f497ba64e177ee2c8e7db74746306efad687f2cf8574e38d70067d40ef136dc@relay-stag.ultrasound.money,https://0xab78bf8c781c58078c3beb5710c57940874dd96aef2835e7742c866b4c7c0406754376c2c8285a36c630346aa5c5f833@holesky.aestus.live - -##### validator-ejector Config ##### - -# validator-ejector container image version, e.g. `stable` or `1.2.0` +# validator-ejector container image version` #VALIDATOR_EJECTOR_VERSION= # Disable oracle transaction verification, don't toggle unless explicitly told to do so. #DISABLE_EJECTOR_SECURITY= -# Lido locator address +# Lido locator address. VE_LOCATOR_ADDRESS=0x28FAB2059C713A7F9D8c86Db49f9bb0e96Af1ef8 -# validator-ejector oracles +# validator-ejector oracles list. VE_ORACLE_ADDRESSES_ALLOWLIST=["0x12A1D74F8697b9f4F1eEBb0a9d0FB6a751366399","0xD892c09b556b547c80B7d8c8cB8d75bf541B2284","0xf7aE520e99ed3C41180B5E12681d31Aa7302E4e5","0x31fa51343297FFce0CC1E67a50B2D3428057D1b1","0x81E411f1BFDa43493D7994F82fb61A415F6b8Fd4","0x4c75FA734a39f3a21C57e583c1c29942F021C6B7","0xD3b1e36A372Ca250eefF61f90E833Ca070559970","0xF0F23944EfC5A63c53632C571E7377b85d5E6B6f","0xb29dD2f6672C0DFF2d2f173087739A42877A5172","0x3799bDA7B884D33F79CEC926af21160dc47fbe05"] -# Lido staking module ID +# Lido staking module ID. #VE_STAKING_MODULE_ID= -# Lido operator ID +# Lido operator ID. #VE_OPERATOR_ID= -# Beacon node URL +# Beacon node URL. #VE_BEACON_NODE_URL= -# Execution node URL +# Execution node URL. #VE_EXECUTION_NODE_URL= -######## lido-dv-exit config ######## +######### Lido lido-dv-exit Config ######### -# lido-dv-exit container image version, e.g. `stable` +# lido-dv-exit container image version. #LIDO_DV_EXIT_VERSION= -# lido-dv-exit beacon node endpoint +# lido-dv-exit beacon node endpoint. #LIDO_DV_EXIT_BEACON_NODE_URL= # Override the lido-dv-exit logging level; debug, info, warning, error. @@ -180,57 +179,50 @@ VE_ORACLE_ADDRESSES_ALLOWLIST=["0x12A1D74F8697b9f4F1eEBb0a9d0FB6a751366399","0xD # Defaults to 5. #LIDO_DV_EXIT_VALIDATOR_QUERY_CHUNK_SIZE= -# lido-dv-exit exit epoch +# lido-dv-exit exit epoch. LIDODVEXIT_EXIT_EPOCH=256 ######### Monitoring Config ######### -# Grafana docker container image version, e.g. `latest` or `10.3.1`. +# Grafana docker container image version. # See available tags https://github.com/grafana/grafana/releases. #GRAFANA_VERSION= -# Grafana host exposed ip and port +# Grafana host exposed IP and port. #MONITORING_IP_GRAFANA= #MONITORING_PORT_GRAFANA= -# Prometheus docker container image version, e.g. `latest` or `v2.42.0`. +# Prometheus docker container image version. # See available tags https://github.com/prometheus/prometheus/releases. #PROMETHEUS_VERSION= -######### Voluntary Exit Config ######### - -# This applies to compose-voluntary-exit.yml only - -# Cluster wide consistent exit epoch. Set to latest for fork version, see `curl $BEACON_NODE/eth/v1/config/fork_schedule` -#EXIT_EPOCH= +# Uncomment these if you have log exporting with Promtail +# and want to disable log export on a particular container. +#EL_NETHERMIND_PROMTAIL_MONITORED=false +#CL_LIGHTHOUSE_PROMTAIL_MONITORED=false +#CL_GRANDINE_PROMTAIL_MONITORED=false +#CHARON_PROMTAIL_MONITORED=false +#VC_LODESTAR_PROMTAIL_MONITORED=false +#MEV_MEV_BOOST_PROMTAIL_MONITORED=false +#EJECTOR_PROMTAIL_MONITORED=false +#DV_EXIT_PROMTAIL_MONITORED=false ######### Debug Config ######### -# This applies to compose-debug.yml only +# This applies to compose-debug.yml only. -# Prometheus Node exporter docker container image version, e.g. `latest` or `1.5.0`. +# Prometheus Node exporter docker container image version. # See available tags https://hub.docker.com/r/bitnami/node-exporter/tags. #NODE_EXPORTER_VERSION= -# Grafana Tempo docker container image version, e.g. `latest` or `2.7.1`. +# Grafana Tempo docker container image version. # Use Grafana Explore to access Tempo data. # See available tags https://hub.docker.com/r/grafana/tempo/tags. #TEMPO_VERSION= -# Grafana Loki docker container image version, e.g. `latest` or `2.8.2`. +# Grafana Loki docker container image version. # See available tags https://hub.docker.com/r/grafana/loki/tags. #LOKI_VERSION= -# Loki host exposed port +# Loki host exposed port. #MONITORING_PORT_LOKI= - -# Uncomment these if you have log exporting with Promtail -# and want to disable log export on a particular container. - -# NETHERMIND_PROMTAIL_MONITORED=false -# LIGHTHOUSE_PROMTAIL_MONITORED=false -# CHARON_PROMTAIL_MONITORED=false -# LODESTAR_PROMTAIL_MONITORED=false -# MEV_BOOST_PROMTAIL_MONITORED=false -# EJECTOR_PROMTAIL_MONITORED=false -# DV_EXIT_PROMTAIL_MONITORED=false diff --git a/.env.sample.hoodi b/.env.sample.hoodi index 75858918..abdc54e8 100644 --- a/.env.sample.hoodi +++ b/.env.sample.hoodi @@ -20,58 +20,71 @@ MEV=mev-mevboost COMPOSE_PROFILES=${EL},${CL},${VC},${MEV} COMPOSE_FILE=compose-el.yml:compose-cl.yml:compose-vc.yml:compose-mev.yml:docker-compose.yml -# Enables builder api for lodestar VC and charon services. +# Enables Builder API. #BUILDER_API_ENABLED= -#BUILDER_API_RELAY_URL=http://mev-boost:18550 -#BUILDER_SELECTION= -######### Nethermind Config ######### +######### Execution Layer Config ######### -# Nethermind docker container image version, e.g. `latest` or `1.25.3`. +# EL host exposed IPs and ports. +#EL_PORT_P2P= +#EL_IP_HTTP= +#EL_PORT_HTTP= +#EL_IP_ENGINE= +#EL_PORT_ENGINE= + +# Nethermind docker container image version. # See available tags https://hub.docker.com/r/nethermind/nethermind/tags #NETHERMIND_VERSION= -# Nethermind host exposed ip and ports -#NETHERMIND_PORT_P2P= -#NETHERMIND_IP_HTTP= -#NETHERMIND_PORT_HTTP= -#NETHERMIND_IP_ENGINE= -#NETHERMIND_PORT_ENGINE= - -######### Lighthouse Config ######### - -# Lighthouse beacon node docker container image version, e.g. `latest` or `v4.6.0`. -# See available tags https://hub.docker.com/r/sigp/lighthouse/tags. -#LIGHTHOUSE_VERSION= +######### Consensus Layer Config ######### -# Lighthouse beacon node host exposed ports -#LIGHTHOUSE_PORT_P2P= +# CL beacon node host exposed ports. +#CL_PORT_P2P= # Checkpoint sync url used by lighthouse to fast sync. -LIGHTHOUSE_CHECKPOINT_SYNC_URL=https://checkpoint-sync.hoodi.ethpandaops.io +CL_CHECKPOINT_SYNC_URL=https://checkpoint-sync.hoodi.ethpandaops.io # In certain cases, beacon nodes produce blocks with unexpected fee recipients. Setting the Lido execution -# layer rewards vault as the suggested fee recipient reduces this risk +# layer rewards vault as the suggested fee recipient reduces this risk. LIDO_EXECUTION_LAYER_REWARDS_ADDRESS=0xE73a3602b99f1f913e72F8bdcBC235e206794Ac8 -######### Lodestar Config ######### +# Lighthouse beacon node docker container image version. +# See available tags https://hub.docker.com/r/sigp/lighthouse/tags. +#CL_LIGHTHOUSE_VERSION= + +# Grandine beacon node docker container image version. +# See available tags https://hub.docker.com/r/sifrai/grandine/tags. +#CL_GRANDINE_VERSION= + +######### Validator Client Config ######### -# Lodestar validator client docker container image version, e.g. `latest` or `v1.19.0`. +# Override prometheus metrics port for validator client. +#VC_PORT_METRICS= + +# Lodestar validator client docker container image version. # See available tags https://hub.docker.com/r/chainsafe/lodestar/tags -#LODESTAR_VERSION= +#VC_LODESTAR_VERSION= + +#VC_LODESTAR_BUILDER_SELECTION= + +######### MEV Config ######### -# Override prometheus metrics port for lodestar validator client. -#LODESTAR_PORT_METRICS= +# MEV timeouts. +#MEV_TIMEOUT_GETHEADER= +#MEV_TIMEOUT_GETPAYLOAD= +#MEV_TIMEOUT_REGVAL= -######### Teku Config ######### +# Comma separated list of MEV-Boost relays. You can choose public relays from https://enchanted-direction-844.notion.site/6d369eb33f664487800b0dedfe32171e?v=d255247c822c409f99c498aeb6a4e51d. +MEV_RELAYS=https://0x98f0ef62f00780cf8eb06701a7d22725b9437d4768bb19b363e882ae87129945ec206ec2dc16933f31d983f8225772b6@hoodi.aestus.live,https://0xaa58208899c6105603b74396734a6263cc7d947f444f396a90f7b7d3e65d102aec7e5e5291b27e08d02c50a050825c2f@hoodi.titanrelay.xyz,https://0xb1559beef7b5ba3127485bbbb090362d9f497ba64e177ee2c8e7db74746306efad687f2cf8574e38d70067d40ef136dc@relay-hoodi.ultrasound.money,https://0xafa4c6985aa049fb79dd37010438cfebeb0f2bd42b115b89dd678dab0670c1de38da0c4e9138c9290a398ecd9a0b3110@boost-relay-hoodi.flashbots.net,https://0x9110847c15a7f5c80a9fdd5db989a614cc01104e53bd8c252b6f46a4842c7fdef6b9593336035b5094878deff386804c@hoodi-builder-proxy-alpha.interstate.so,https://0xb20c3fe59db9c3655088839ef3d972878d182eb745afd8abb1dd2abf6c14f93cd5934ed4446a5fe1ba039e2bc0cf1011@hoodi-relay.ethgas.com + +# MEV-Boost docker container image version. +#MEV_MEVBOOST_VERSION= -# Teku validator client docker container image version, e.g. `latest` or `24.1.1`. -# See available tags https://hub.docker.com/r/consensys/teku/tags -#TEKU_VERSION= +##### validator-ejector Config ##### ######### Charon Config ######### -# Charon docker container image version, e.g. `latest` or `v1.5.0`. +# Charon docker container image version. # See available tags https://hub.docker.com/r/obolnetwork/charon/tags. #CHARON_VERSION= @@ -88,10 +101,10 @@ CHARON_P2P_RELAYS=https://0.relay.obol.tech,https://1.relay.obol.tech/,https://c # Use fallback beacon nodes sparingly, particularly if latency is high, which can impact DV cluster performance. #CHARON_FALLBACK_BEACON_NODE_ENDPOINTS= -# Increase the duration charon will wait for requests to the beacon node +# Increase the duration charon will wait for requests to the beacon node. #CHARON_BEACON_NODE_TIMEOUT= -# Increase the duration charon will wait while publishing data to the beacon node +# Increase the duration charon will wait while publishing data to the beacon node. #CHARON_BEACON_NODE_SUBMIT_TIMEOUT= # The address of the execution engine JSON-RPC API. @@ -109,66 +122,53 @@ CHARON_P2P_RELAYS=https://0.relay.obol.tech,https://1.relay.obol.tech/,https://c # Loki log aggregation server addresses. Disable loki log aggregation by setting an empty address. #CHARON_LOKI_ADDRESSES= -# Charon Cluster Name. Mandatory to send logs with Promtail +# Charon Cluster Name. Mandatory to send logs with Promtail. #CLUSTER_NAME= -# Charon Cluster Peer. Mandatory to send logs with Promtail +# Charon Cluster Peer. Mandatory to send logs with Promtail. #CLUSTER_PEER= -# Nickname to identify this charon node on monitoring (max 32 characters) +# Nickname to identify this charon node on monitoring (max 32 characters). #CHARON_NICKNAME= # Docker network of running charon node. See `docker network ls`. #CHARON_DOCKER_NETWORK= -# Charon host exposed ports +# Charon host exposed ports. #CHARON_PORT_P2P_TCP= -######### MEV-Boost Config ######### +######### Lido validator-ejector Config ######### -# MEV-Boost docker container image version, e.g. `latest` or `1.6`. -#MEVBOOST_VERSION= -#MEVBOOST_TIMEOUT_GETHEADER= -#MEVBOOST_TIMEOUT_GETPAYLOAD= -#MEVBOOST_TIMEOUT_REGVAL= - -# MEV-Boost docker container image name, e.g. flashbots/mev-boost. -#MEVBOOST_IMAGE= - -# Comma separated list of MEV-Boost relays. You can choose public relays from https://enchanted-direction-844.notion.site/6d369eb33f664487800b0dedfe32171e?v=d255247c822c409f99c498aeb6a4e51d. -MEVBOOST_RELAYS=https://0x98f0ef62f00780cf8eb06701a7d22725b9437d4768bb19b363e882ae87129945ec206ec2dc16933f31d983f8225772b6@hoodi.aestus.live,https://0xaa58208899c6105603b74396734a6263cc7d947f444f396a90f7b7d3e65d102aec7e5e5291b27e08d02c50a050825c2f@hoodi.titanrelay.xyz,https://0xb1559beef7b5ba3127485bbbb090362d9f497ba64e177ee2c8e7db74746306efad687f2cf8574e38d70067d40ef136dc@relay-hoodi.ultrasound.money,https://0xafa4c6985aa049fb79dd37010438cfebeb0f2bd42b115b89dd678dab0670c1de38da0c4e9138c9290a398ecd9a0b3110@boost-relay-hoodi.flashbots.net,https://0x9110847c15a7f5c80a9fdd5db989a614cc01104e53bd8c252b6f46a4842c7fdef6b9593336035b5094878deff386804c@hoodi-builder-proxy-alpha.interstate.so,https://0xb20c3fe59db9c3655088839ef3d972878d182eb745afd8abb1dd2abf6c14f93cd5934ed4446a5fe1ba039e2bc0cf1011@hoodi-relay.ethgas.com -##### validator-ejector Config ##### - -# validator-ejector container image version, e.g. `stable` or `1.2.0` +# validator-ejector container image version` #VALIDATOR_EJECTOR_VERSION= # Disable oracle transaction verification, don't toggle unless explicitly told to do so. #DISABLE_EJECTOR_SECURITY= -# Lido locator address +# Lido locator address. VE_LOCATOR_ADDRESS=0x3C20EA1Bd0A838a7E4bE7CE47917DEF0c2E190FD -# validator-ejector oracles -VE_ORACLE_ADDRESSES_ALLOWLIST=["0xcA80ee7313A315879f326105134F938676Cfd7a9","0xf03B8DC8762B97F13Ac82e6F94bE3Ed002FF7459","0x1932f53B1457a5987791a40Ba91f71c5Efd5788F","0xf7aE520e99ed3C41180B5E12681d31Aa7302E4e5","0x99B2B75F490fFC9A29E4E1f5987BE8e30E690aDF","0x219743f1911d84B32599BdC2Df21fC8Dba6F81a2","0xD3b1e36A372Ca250eefF61f90E833Ca070559970","0x4c75FA734a39f3a21C57e583c1c29942F021C6B7","0x948A62cc0414979dc7aa9364BA5b96ECb29f8736","0xfe43A8B0b481Ae9fB1862d31826532047d2d538c","0x43C45C2455C49eed320F463fF4f1Ece3D2BF5aE2"] +# validator-ejector oracles list. +VE_ORACLE_ADDRESSES_ALLOWLIST=["0xcA80ee7313A315879f326105134F938676Cfd7a9","0xf03B8DC8762B97F13Ac82e6F94bE3Ed002FF7459","0x1932f53B1457a5987791a40Ba91f71c5Efd5788F","0x99B2B75F490fFC9A29E4E1f5987BE8e30E690aDF","0x219743f1911d84B32599BdC2Df21fC8Dba6F81a2","0xD3b1e36A372Ca250eefF61f90E833Ca070559970","0xf7aE520e99ed3C41180B5E12681d31Aa7302E4e5","0x4c75FA734a39f3a21C57e583c1c29942F021C6B7","0xB1cC91878c1831893D39C2Bb0988404ca5Fa7918","0xfe43A8B0b481Ae9fB1862d31826532047d2d538c","0x43C45C2455C49eed320F463fF4f1Ece3D2BF5aE2"] -# Lido staking module ID +# Lido staking module ID. #VE_STAKING_MODULE_ID= -# Lido operator ID +# Lido operator ID. #VE_OPERATOR_ID= -# Beacon node URL +# Beacon node URL. #VE_BEACON_NODE_URL= -# Execution node URL +# Execution node URL. #VE_EXECUTION_NODE_URL= -######## lido-dv-exit config ######## +######### Lido lido-dv-exit Config ######### -# lido-dv-exit container image version, e.g. `stable` +# lido-dv-exit container image version. #LIDO_DV_EXIT_VERSION= -# lido-dv-exit beacon node endpoint +# lido-dv-exit beacon node endpoint. #LIDO_DV_EXIT_BEACON_NODE_URL= # Override the lido-dv-exit logging level; debug, info, warning, error. @@ -179,57 +179,50 @@ VE_ORACLE_ADDRESSES_ALLOWLIST=["0xcA80ee7313A315879f326105134F938676Cfd7a9","0xf # Defaults to 5. #LIDO_DV_EXIT_VALIDATOR_QUERY_CHUNK_SIZE= -# lido-dv-exit exit epoch +# lido-dv-exit exit epoch. LIDODVEXIT_EXIT_EPOCH=256 ######### Monitoring Config ######### -# Grafana docker container image version, e.g. `latest` or `10.3.1`. +# Grafana docker container image version. # See available tags https://github.com/grafana/grafana/releases. #GRAFANA_VERSION= -# Grafana host exposed ip and port +# Grafana host exposed IP and port. #MONITORING_IP_GRAFANA= #MONITORING_PORT_GRAFANA= -# Prometheus docker container image version, e.g. `latest` or `v2.42.0`. +# Prometheus docker container image version. # See available tags https://github.com/prometheus/prometheus/releases. #PROMETHEUS_VERSION= -######### Voluntary Exit Config ######### - -# This applies to compose-voluntary-exit.yml only - -# Cluster wide consistent exit epoch. Set to latest for fork version, see `curl $BEACON_NODE/eth/v1/config/fork_schedule` -#EXIT_EPOCH= +# Uncomment these if you have log exporting with Promtail +# and want to disable log export on a particular container. +#EL_NETHERMIND_PROMTAIL_MONITORED=false +#CL_LIGHTHOUSE_PROMTAIL_MONITORED=false +#CL_GRANDINE_PROMTAIL_MONITORED=false +#CHARON_PROMTAIL_MONITORED=false +#VC_LODESTAR_PROMTAIL_MONITORED=false +#MEV_MEV_BOOST_PROMTAIL_MONITORED=false +#EJECTOR_PROMTAIL_MONITORED=false +#DV_EXIT_PROMTAIL_MONITORED=false ######### Debug Config ######### -# This applies to compose-debug.yml only +# This applies to compose-debug.yml only. -# Prometheus Node exporter docker container image version, e.g. `latest` or `1.5.0`. +# Prometheus Node exporter docker container image version. # See available tags https://hub.docker.com/r/bitnami/node-exporter/tags. #NODE_EXPORTER_VERSION= -# Grafana Tempo docker container image version, e.g. `latest` or `2.7.1`. +# Grafana Tempo docker container image version. # Use Grafana Explore to access Tempo data. # See available tags https://hub.docker.com/r/grafana/tempo/tags. #TEMPO_VERSION= -# Grafana Loki docker container image version, e.g. `latest` or `2.8.2`. +# Grafana Loki docker container image version. # See available tags https://hub.docker.com/r/grafana/loki/tags. #LOKI_VERSION= -# Loki host exposed port +# Loki host exposed port. #MONITORING_PORT_LOKI= - -# Uncomment these if you have log exporting with Promtail -# and want to disable log export on a particular container. - -# NETHERMIND_PROMTAIL_MONITORED=false -# LIGHTHOUSE_PROMTAIL_MONITORED=false -# CHARON_PROMTAIL_MONITORED=false -# LODESTAR_PROMTAIL_MONITORED=false -# MEV_BOOST_PROMTAIL_MONITORED=false -# EJECTOR_PROMTAIL_MONITORED=false -# DV_EXIT_PROMTAIL_MONITORED=false diff --git a/.env.sample.mainnet b/.env.sample.mainnet index a257cf79..08cc4f2d 100644 --- a/.env.sample.mainnet +++ b/.env.sample.mainnet @@ -20,52 +20,71 @@ MEV=mev-mevboost COMPOSE_PROFILES=${EL},${CL},${VC},${MEV} COMPOSE_FILE=compose-el.yml:compose-cl.yml:compose-vc.yml:compose-mev.yml:docker-compose.yml -# Enables builder api for lodestar VC and charon services. +# Enables Builder API. #BUILDER_API_ENABLED= -######### Nethermind Config ######### +######### Execution Layer Config ######### -# Nethermind docker container image version, e.g. `latest` or `1.25.3`. +# EL host exposed IPs and ports. +#EL_PORT_P2P= +#EL_IP_HTTP= +#EL_PORT_HTTP= +#EL_IP_ENGINE= +#EL_PORT_ENGINE= + +# Nethermind docker container image version. # See available tags https://hub.docker.com/r/nethermind/nethermind/tags #NETHERMIND_VERSION= -# Nethermind host exposed ip and ports -#NETHERMIND_PORT_P2P= -#NETHERMIND_IP_HTTP= -#NETHERMIND_PORT_HTTP= -#NETHERMIND_IP_ENGINE= -#NETHERMIND_PORT_ENGINE= - -######### Lighthouse Config ######### - -# Lighthouse beacon node docker container image version, e.g. `latest` or `v4.6.0`. -# See available tags https://hub.docker.com/r/sigp/lighthouse/tags. -#LIGHTHOUSE_VERSION= +######### Consensus Layer Config ######### -# Lighthouse beacon node host exposed ports -#LIGHTHOUSE_PORT_P2P= +# CL beacon node host exposed ports. +#CL_PORT_P2P= # Checkpoint sync url used by lighthouse to fast sync. -# See available options https://eth-clients.github.io/checkpoint-sync-endpoints/. -# If the given url errors, try replacing it with an alternative url like https://sync-mainnet.beaconcha.in/. -LIGHTHOUSE_CHECKPOINT_SYNC_URL=https://mainnet.checkpoint.sigp.io/ +CL_CHECKPOINT_SYNC_URL=https://mainnet.checkpoint.sigp.io/ # In certain cases, beacon nodes produce blocks with unexpected fee recipients. Setting the Lido execution -# layer rewards vault as the suggested fee recipient reduces this risk +# layer rewards vault as the suggested fee recipient reduces this risk. LIDO_EXECUTION_LAYER_REWARDS_ADDRESS=0x388C818CA8B9251b393131C08a736A67ccB19297 -######### Lodestar Config ######### +# Lighthouse beacon node docker container image version. +# See available tags https://hub.docker.com/r/sigp/lighthouse/tags. +#CL_LIGHTHOUSE_VERSION= + +# Grandine beacon node docker container image version. +# See available tags https://hub.docker.com/r/sifrai/grandine/tags. +#CL_GRANDINE_VERSION= -# Lodestar validator client docker container image version, e.g. `latest` or `v1.19.0`. +######### Validator Client Config ######### + +# Override prometheus metrics port for validator client. +#VC_PORT_METRICS= + +# Lodestar validator client docker container image version. # See available tags https://hub.docker.com/r/chainsafe/lodestar/tags -#LODESTAR_VERSION= +#VC_LODESTAR_VERSION= + +#VC_LODESTAR_BUILDER_SELECTION= + +######### MEV Config ######### + +# MEV timeouts. +#MEV_TIMEOUT_GETHEADER= +#MEV_TIMEOUT_GETPAYLOAD= +#MEV_TIMEOUT_REGVAL= + +# Comma separated list of MEV-Boost relays. You can choose public relays from https://enchanted-direction-844.notion.site/6d369eb33f664487800b0dedfe32171e?v=d255247c822c409f99c498aeb6a4e51d. +MEV_RELAYS=https://0xa15b52576bcbf1072f4a011c0f99f9fb6c66f3e1ff321f11f461d15e31b1cb359caa092c71bbded0bae5b5ea401aab7e@aestus.live,https://0xa7ab7a996c8584251c8f925da3170bdfd6ebc75d50f5ddc4050a6fdc77f2a3b5fce2cc750d0865e05d7228af97d69561@agnostic-relay.net,https://0x8b5d2e73e2a3a55c6c87b8b6eb92e0149a125c852751db1422fa951e42a09b82c142c3ea98d0d9930b056a3bc9896b8f@bloxroute.max-profit.blxrbdn.com,https://0xb0b07cd0abef743db4260b0ed50619cf6ad4d82064cb4fbec9d3ec530f7c5e6793d9f286c4e082c0244ffb9f2658fe88@bloxroute.regulated.blxrbdn.com,https://0xac6e77dfe25ecd6110b8e780608cce0dab71fdd5ebea22a16c0205200f2f8e2e3ad3b71d3499c54ad14d6c21b41a37ae@boost-relay.flashbots.net,https://0xa1559ace749633b997cb3fdacffb890aeebdb0f5a3b6aaa7eeeaf1a38af0a8fe88b9e4b1f61f236d2e64d95733327a62@relay.ultrasound.money,https://0x8c4ed5e24fe5c6ae21018437bde147693f68cda427cd1122cf20819c30eda7ed74f72dece09bb313f2a1855595ab677d@global.titanrelay.xyz -# Override prometheus metrics port for lodestar validator client. -#LODESTAR_PORT_METRICS= +# MEV-Boost docker container image version. +#MEV_MEVBOOST_VERSION= + +##### validator-ejector Config ##### ######### Charon Config ######### -# Charon docker container image version, e.g. `latest` or `v1.5.0`. +# Charon docker container image version. # See available tags https://hub.docker.com/r/obolnetwork/charon/tags. #CHARON_VERSION= @@ -82,10 +101,10 @@ CHARON_P2P_RELAYS=https://0.relay.obol.tech,https://1.relay.obol.tech/,https://c # Use fallback beacon nodes sparingly, particularly if latency is high, which can impact DV cluster performance. #CHARON_FALLBACK_BEACON_NODE_ENDPOINTS= -# Increase the duration charon will wait for requests to the beacon node +# Increase the duration charon will wait for requests to the beacon node. #CHARON_BEACON_NODE_TIMEOUT= -# Increase the duration charon will wait while publishing data to the beacon node +# Increase the duration charon will wait while publishing data to the beacon node. #CHARON_BEACON_NODE_SUBMIT_TIMEOUT= # The address of the execution engine JSON-RPC API. @@ -103,98 +122,107 @@ CHARON_P2P_RELAYS=https://0.relay.obol.tech,https://1.relay.obol.tech/,https://c # Loki log aggregation server addresses. Disable loki log aggregation by setting an empty address. #CHARON_LOKI_ADDRESSES= -# Charon Cluster Name. Mandatory to send logs with Promtail +# Charon Cluster Name. Mandatory to send logs with Promtail. #CLUSTER_NAME= -# Charon Cluster Peer. Mandatory to send logs with Promtail +# Charon Cluster Peer. Mandatory to send logs with Promtail. #CLUSTER_PEER= -# Nickname to identify this charon node on monitoring (max 32 characters) +# Nickname to identify this charon node on monitoring (max 32 characters). #CHARON_NICKNAME= # Docker network of running charon node. See `docker network ls`. #CHARON_DOCKER_NETWORK= -# Charon host exposed ports +# Charon host exposed ports. #CHARON_PORT_P2P_TCP= -######### MEV-Boost Config ######### +######### Lido validator-ejector Config ######### + +# validator-ejector container image version` +#VALIDATOR_EJECTOR_VERSION= + +# Disable oracle transaction verification, don't toggle unless explicitly told to do so. +#DISABLE_EJECTOR_SECURITY= + +# Lido locator address. +VE_LOCATOR_ADDRESS=0xC1d0b3DE6792Bf6b4b37EccdcC24e45978Cfd2Eb + +# validator-ejector oracles list. +VE_ORACLE_ADDRESSES_ALLOWLIST=["0x73181107c8D9ED4ce0bbeF7A0b4ccf3320C41d12","0xA7410857ABbf75043d61ea54e07D57A6EB6EF186","0x404335BcE530400a5814375E7Ec1FB55fAff3eA2","0x946D3b081ed19173dC83Cd974fC69e1e760B7d78","0x007DE4a5F7bc37E2F26c0cb2E8A95006EE9B89b5","0xc79F702202E3A6B0B6310B537E786B9ACAA19BAf","0x61c91ECd902EB56e314bB2D5c5C07785444Ea1c8","0xe57B3792aDCc5da47EF4fF588883F0ee0c9835C9","0x285f8537e1dAeEdaf617e96C742F2Cf36d63CcfB"] + +# Lido staking module ID. +VE_STAKING_MODULE_ID=2 + +# Lido operator ID. +#VE_OPERATOR_ID= + +# Beacon node URL. +#VE_BEACON_NODE_URL= -# MEV-Boost docker container image version, e.g. `latest` or `1.6`. -#MEVBOOST_VERSION= -#MEVBOOST_TIMEOUT_GETHEADER= -#MEVBOOST_TIMEOUT_GETPAYLOAD= -#MEVBOOST_TIMEOUT_REGVAL= +# Execution node URL. +#VE_EXECUTION_NODE_URL= -# Comma separated list of MEV-Boost relays. -# You can choose public mainnet relays from https://enchanted-direction-844.notion.site/6d369eb33f664487800b0dedfe32171e?v=d255247c822c409f99c498aeb6a4e51d. -# Follow the SDVT guidelines here: https://operatorportal.lido.fi/existing-operator-portal/simple-dvt-module-portal/obol-mainnet/lido-x-obol-simple-dvt-mainnet-guide#block-a0d23a58033e44e08de6068909550ad9 -# Its best to use a smaller number of high quality, low latency relays. Use the `charon alpha test mev` command to select the best relays for your node in line with the guidance above. https://docs.obol.org/docs/advanced/test-command#test-mev-relay -MEVBOOST_RELAYS=https://0xa15b52576bcbf1072f4a011c0f99f9fb6c66f3e1ff321f11f461d15e31b1cb359caa092c71bbded0bae5b5ea401aab7e@aestus.live,https://0xa7ab7a996c8584251c8f925da3170bdfd6ebc75d50f5ddc4050a6fdc77f2a3b5fce2cc750d0865e05d7228af97d69561@agnostic-relay.net,https://0x8b5d2e73e2a3a55c6c87b8b6eb92e0149a125c852751db1422fa951e42a09b82c142c3ea98d0d9930b056a3bc9896b8f@bloxroute.max-profit.blxrbdn.com,https://0xb0b07cd0abef743db4260b0ed50619cf6ad4d82064cb4fbec9d3ec530f7c5e6793d9f286c4e082c0244ffb9f2658fe88@bloxroute.regulated.blxrbdn.com,https://0xac6e77dfe25ecd6110b8e780608cce0dab71fdd5ebea22a16c0205200f2f8e2e3ad3b71d3499c54ad14d6c21b41a37ae@boost-relay.flashbots.net,https://0xa1559ace749633b997cb3fdacffb890aeebdb0f5a3b6aaa7eeeaf1a38af0a8fe88b9e4b1f61f236d2e64d95733327a62@relay.ultrasound.money,https://0x8c4ed5e24fe5c6ae21018437bde147693f68cda427cd1122cf20819c30eda7ed74f72dece09bb313f2a1855595ab677d@global.titanrelay.xyz +######### Lido lido-dv-exit Config ######### + +# lido-dv-exit container image version. +#LIDO_DV_EXIT_VERSION= + +# lido-dv-exit beacon node endpoint. +#LIDO_DV_EXIT_BEACON_NODE_URL= + +# Override the lido-dv-exit logging level; debug, info, warning, error. +#LIDO_DV_EXIT_LOG_LEVEL= + +# Sets the amount of validator to query with each call to the beacon node. +# Decrease in case of frequent beacon node query timeout errors for lido-dv-exit. +# Defaults to 5. +#LIDO_DV_EXIT_VALIDATOR_QUERY_CHUNK_SIZE= + +# lido-dv-exit exit epoch. +LIDODVEXIT_EXIT_EPOCH=194048 ######### Monitoring Config ######### -# Grafana docker container image version, e.g. `latest` or `10.3.1`. +# Grafana docker container image version. # See available tags https://github.com/grafana/grafana/releases. #GRAFANA_VERSION= -# Grafana host exposed ip and port +# Grafana host exposed IP and port. #MONITORING_IP_GRAFANA= #MONITORING_PORT_GRAFANA= -# Prometheus docker container image version, e.g. `latest` or `v2.42.0`. +# Prometheus docker container image version. # See available tags https://github.com/prometheus/prometheus/releases. #PROMETHEUS_VERSION= -######### Voluntary Exit Config ######### - -# This applies to compose-voluntary-exit.yml only - -# Cluster wide consistent exit epoch. Set to latest for fork version, see `curl $BEACON_NODE/eth/v1/config/fork_schedule` -#EXIT_EPOCH= +# Uncomment these if you have log exporting with Promtail +# and want to disable log export on a particular container. +#EL_NETHERMIND_PROMTAIL_MONITORED=false +#CL_LIGHTHOUSE_PROMTAIL_MONITORED=false +#CL_GRANDINE_PROMTAIL_MONITORED=false +#CHARON_PROMTAIL_MONITORED=false +#VC_LODESTAR_PROMTAIL_MONITORED=false +#MEV_MEV_BOOST_PROMTAIL_MONITORED=false +#EJECTOR_PROMTAIL_MONITORED=false +#DV_EXIT_PROMTAIL_MONITORED=false ######### Debug Config ######### -# This applies to compose-debug.yml only +# This applies to compose-debug.yml only. -# Prometheus Node exporter docker container image version, e.g. `latest` or `1.5.0`. +# Prometheus Node exporter docker container image version. # See available tags https://hub.docker.com/r/bitnami/node-exporter/tags. #NODE_EXPORTER_VERSION= -# Grafana Tempo docker container image version, e.g. `latest` or `2.7.1`. +# Grafana Tempo docker container image version. # Use Grafana Explore to access Tempo data. # See available tags https://hub.docker.com/r/grafana/tempo/tags. #TEMPO_VERSION= -# Grafana Loki docker container image version, e.g. `latest` or `2.8.2`. +# Grafana Loki docker container image version. # See available tags https://hub.docker.com/r/grafana/loki/tags. #LOKI_VERSION= -# Loki host exposed port +# Loki host exposed port. #MONITORING_PORT_LOKI= - -# lido-dv-exit exit epoch -LIDODVEXIT_EXIT_EPOCH=194048 - -# validator-ejector oracles -VE_ORACLE_ADDRESSES_ALLOWLIST=["0x73181107c8D9ED4ce0bbeF7A0b4ccf3320C41d12","0x285f8537e1dAeEdaf617e96C742F2Cf36d63CcfB","0x404335BcE530400a5814375E7Ec1FB55fAff3eA2","0x946D3b081ed19173dC83Cd974fC69e1e760B7d78","0x007DE4a5F7bc37E2F26c0cb2E8A95006EE9B89b5","0xc79F702202E3A6B0B6310B537E786B9ACAA19BAf","0x61c91ECd902EB56e314bB2D5c5C07785444Ea1c8","0xe57B3792aDCc5da47EF4fF588883F0ee0c9835C9","0x4118DAD7f348A4063bD15786c299De2f3B1333F3"] - -# validator-ejector locator address -VE_LOCATOR_ADDRESS=0xC1d0b3DE6792Bf6b4b37EccdcC24e45978Cfd2Eb - -# validator-ejector staking module ID -VE_STAKING_MODULE_ID=2 - -# Lido operator ID -#VE_OPERATOR_ID= - -# Uncomment these if you have log exporting with Promtail -# and want to disable log export on a particular container. - -# NETHERMIND_PROMTAIL_MONITORED=false -# LIGHTHOUSE_PROMTAIL_MONITORED=false -# CHARON_PROMTAIL_MONITORED=false -# LODESTAR_PROMTAIL_MONITORED=false -# MEV_BOOST_PROMTAIL_MONITORED=false -# EJECTOR_PROMTAIL_MONITORED=false -# DV_EXIT_PROMTAIL_MONITORED=false diff --git a/compose-cl.yml b/compose-cl.yml index 8e1e00b4..ddb4d799 100644 --- a/compose-cl.yml +++ b/compose-cl.yml @@ -14,25 +14,26 @@ services: profiles: [cl-grandine] image: sifrai/grandine:${GRANDINE_VERSION:-1.1.1} restart: unless-stopped + labels: + - "promtail-monitored=${CL_GRANDINE_PROMTAIL_MONITORED:-true}" command: - - --datadir=/root/.grandine + - --data-dir=/root/.grandine - --eth1-rpc-urls=http://${EL}:8551 - - --jwt-secret=/jwt + - --jwt-secret=/jwt/jwt.hex - --http-address=0.0.0.0 - --http-port=5052 - --network=${NETWORK} - --metrics - --metrics-port=5054 - --metrics-address=0.0.0.0 - - --checkpoint-sync-url=${LIGHTHOUSE_CHECKPOINT_SYNC_URL} - - --builder=http://${MEV}:18550 + - --checkpoint-sync-url=${CL_CHECKPOINT_SYNC_URL} + - --builder-url=http://${MEV}:18550 ports: - - 9000:9000 # TCP + UDP LibP2P + - ${CL_PORT_P2P:-9000}:9000 # P2P TCP+UDP volumes: - - ./data/grandine:/root/.grandine + - ./data/cl-grandine:/root/.grandine - ./jwt:/jwt:ro - networks: - - dvnode + networks: [dvnode] # _ _ _ _ _ # | (_) __ _| |__ | |_| |__ ___ _ _ ___ ___ @@ -44,15 +45,13 @@ services: cl-lighthouse: profiles: [cl-lighthouse] image: sigp/lighthouse:${LIGHTHOUSE_VERSION:-v7.0.1} - ports: - - ${LIGHTHOUSE_PORT_P2P:-9000}:9000/tcp # P2P TCP - - ${LIGHTHOUSE_PORT_P2P:-9000}:9000/udp # P2P UDP + restart: unless-stopped labels: - - "promtail-monitored=${LIGHTHOUSE_PROMTAIL_MONITORED:-true}" + - "promtail-monitored=${CL_LIGHTHOUSE_PROMTAIL_MONITORED:-true}" command: | lighthouse bn --network=${NETWORK} - --checkpoint-sync-url=${LIGHTHOUSE_CHECKPOINT_SYNC_URL} + --checkpoint-sync-url=${CL_CHECKPOINT_SYNC_URL} --checkpoint-sync-url-timeout=600 --execution-endpoint=http://${EL}:8551 --execution-jwt=/opt/jwt/jwt.hex @@ -66,8 +65,9 @@ services: --metrics-port=5054 --metrics-allow-origin="*" --suggested-fee-recipient=${LIDO_EXECUTION_LAYER_REWARDS_ADDRESS:-0x388C818CA8B9251b393131C08a736A67ccB19297} - networks: [dvnode] + ports: + - ${CL_PORT_P2P:-9000}:9000 # P2P TCP+UDP volumes: - - ./data/lighthouse:/opt/app/beacon + - ./data/cl-lighthouse:/opt/app/beacon - ./jwt:/opt/jwt - restart: unless-stopped + networks: [dvnode] diff --git a/compose-el.yml b/compose-el.yml index 7522cfc2..21f6f55f 100644 --- a/compose-el.yml +++ b/compose-el.yml @@ -11,15 +11,15 @@ services: el-nethermind: profiles: [el-nethermind] - image: nethermind/nethermind:${NETHERMIND_VERSION:-1.32.2} + image: nethermind/nethermind:${EL_NETHERMIND_VERSION:-1.32.2} restart: unless-stopped ports: - - ${NETHERMIND_PORT_P2P:-30303}:30303/tcp # P2P TCP - - ${NETHERMIND_PORT_P2P:-30303}:30303/udp # P2P UDP - - ${NETHERMIND_IP_HTTP:-127.0.0.1}:${NETHERMIND_PORT_HTTP:-8545}:8545 # JSON-RPC - - ${NETHERMIND_IP_ENGINE:-127.0.0.1}:${NETHERMIND_PORT_ENGINE:-8551}:8551 # ENGINE-API + - ${EL_PORT_P2P:-30303}:30303/tcp # P2P TCP + - ${EL_PORT_P2P:-30303}:30303/udp # P2P UDP + - ${EL_IP_HTTP:-127.0.0.1}:${EL_PORT_HTTP:-8545}:8545 # JSON-RPC + - ${EL_IP_ENGINE:-127.0.0.1}:${EL_PORT_ENGINE:-8551}:8551 # ENGINE-API labels: - - "promtail-monitored=${NETHERMIND_PROMTAIL_MONITORED:-true}" + - "promtail-monitored=${EL_NETHERMIND_PROMTAIL_MONITORED:-true}" command: | --config=${NETWORK} --datadir=data @@ -37,5 +37,5 @@ services: --Sync.AncientReceiptsBarrier=4367322 networks: [dvnode] volumes: - - ./data/nethermind:/nethermind/data + - ./data/el-nethermind:/nethermind/data - ./jwt:/root/jwt diff --git a/compose-mev.yml b/compose-mev.yml index 1b2add77..50b8971e 100644 --- a/compose-mev.yml +++ b/compose-mev.yml @@ -10,17 +10,17 @@ services: # |_| |_| |_|\___| \_/ |_.__/ \___/ \___/|___/\__| mev-mevboost: profiles: [mev-mevboost] - image: ${MEVBOOST_IMAGE:-flashbots/mev-boost}:${MEVBOOST_VERSION:-1.9} + image: flashbots/mev-boost:${MEV_MEVBOOST_VERSION:-1.9} command: | -${NETWORK} -loglevel=debug -addr=0.0.0.0:18550 -relay-check - -relays=${MEVBOOST_RELAYS} - -request-timeout-getheader=${MEVBOOST_TIMEOUT_GETHEADER:-950} - -request-timeout-getpayload=${MEVBOOST_TIMEOUT_GETPAYLOAD:-4000} - -request-timeout-regval=${MEVBOOST_TIMEOUT_REGVAL:-3000} + -relays=${MEV_RELAYS} + -request-timeout-getheader=${MEV_TIMEOUT_GETHEADER:-950} + -request-timeout-getpayload=${MEV_TIMEOUT_GETPAYLOAD:-4000} + -request-timeout-regval=${MEV_TIMEOUT_REGVAL:-3000} labels: - - "promtail-monitored=${MEV_BOOST_PROMTAIL_MONITORED:-true}" + - "promtail-monitored=${MEV_MEV_BOOST_PROMTAIL_MONITORED:-true}" networks: [dvnode] restart: unless-stopped diff --git a/compose-vc.yml b/compose-vc.yml index d8ca06fa..80e5f3c8 100644 --- a/compose-vc.yml +++ b/compose-vc.yml @@ -11,19 +11,19 @@ services: vc-lodestar: profiles: [vc-lodestar] - image: chainsafe/lodestar:${LODESTAR_VERSION:-v1.29.0} + image: chainsafe/lodestar:${VC_LODESTAR_VERSION:-v1.29.0} depends_on: [charon] entrypoint: /opt/lodestar/run.sh networks: [dvnode] environment: - BEACON_NODE_ADDRESS: http://${DV}:3600 + BEACON_NODE_ADDRESS: http://charon:3600 NETWORK: ${NETWORK} BUILDER_API_ENABLED: ${BUILDER_API_ENABLED:-true} - BUILDER_SELECTION: ${BUILDER_SELECTION:-builderalways} + BUILDER_SELECTION: ${VC_LODESTAR_BUILDER_SELECTION:-builderalways} labels: - - "promtail-monitored=${LODESTAR_PROMTAIL_MONITORED:-true}" + - "promtail-monitored=${VC_LODESTAR_PROMTAIL_MONITORED:-true}" volumes: - ./lodestar/run.sh:/opt/lodestar/run.sh - .charon/validator_keys:/home/charon/validator_keys - - ./data/lodestar:/opt/data + - ./data/vc/lodestar:/opt/data restart: unless-stopped From 2bb329d4b0715272d17ecaf3d579073afc6e2e2c Mon Sep 17 00:00:00 2001 From: Kaloyan Tanev Date: Wed, 2 Jul 2025 15:49:41 +0300 Subject: [PATCH 11/23] Backwards compatibility for volumes --- compose-cl.yml | 2 +- compose-el.yml | 2 +- compose-vc.yml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/compose-cl.yml b/compose-cl.yml index ddb4d799..00d57315 100644 --- a/compose-cl.yml +++ b/compose-cl.yml @@ -68,6 +68,6 @@ services: ports: - ${CL_PORT_P2P:-9000}:9000 # P2P TCP+UDP volumes: - - ./data/cl-lighthouse:/opt/app/beacon + - ./data/lighthouse:/opt/app/beacon # Keep data in lighthouse and not cl-lighthouse for backwards compatibility - ./jwt:/opt/jwt networks: [dvnode] diff --git a/compose-el.yml b/compose-el.yml index 21f6f55f..c3cf8c1d 100644 --- a/compose-el.yml +++ b/compose-el.yml @@ -37,5 +37,5 @@ services: --Sync.AncientReceiptsBarrier=4367322 networks: [dvnode] volumes: - - ./data/el-nethermind:/nethermind/data + - ./data/nethermind:/nethermind/data - ./jwt:/root/jwt diff --git a/compose-vc.yml b/compose-vc.yml index 80e5f3c8..c0a3fed6 100644 --- a/compose-vc.yml +++ b/compose-vc.yml @@ -25,5 +25,5 @@ services: volumes: - ./lodestar/run.sh:/opt/lodestar/run.sh - .charon/validator_keys:/home/charon/validator_keys - - ./data/vc/lodestar:/opt/data + - ./data/lodestar:/opt/data # Keep data in lodestar and not vc-lodestar for backwards compatibility restart: unless-stopped From be785cd0a35cc82d6b8be594df85dd01f6d178f4 Mon Sep 17 00:00:00 2001 From: Kaloyan Tanev Date: Wed, 2 Jul 2025 15:56:11 +0300 Subject: [PATCH 12/23] Bump compose-vc lodestar version --- compose-vc.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/compose-vc.yml b/compose-vc.yml index c0a3fed6..f2629762 100644 --- a/compose-vc.yml +++ b/compose-vc.yml @@ -11,7 +11,7 @@ services: vc-lodestar: profiles: [vc-lodestar] - image: chainsafe/lodestar:${VC_LODESTAR_VERSION:-v1.29.0} + image: chainsafe/lodestar:${VC_LODESTAR_VERSION:-v1.31.0} depends_on: [charon] entrypoint: /opt/lodestar/run.sh networks: [dvnode] From f5dc1cbfec37fcf0726e5bb056e46d01a5772353 Mon Sep 17 00:00:00 2001 From: Kaloyan Tanev Date: Wed, 2 Jul 2025 16:25:53 +0300 Subject: [PATCH 13/23] .env comments rephrasing --- .env.sample.holesky | 12 +++++++----- .env.sample.hoodi | 12 +++++++----- .env.sample.mainnet | 12 +++++++----- 3 files changed, 21 insertions(+), 15 deletions(-) diff --git a/.env.sample.holesky b/.env.sample.holesky index 96375f31..b078fc82 100644 --- a/.env.sample.holesky +++ b/.env.sample.holesky @@ -5,18 +5,20 @@ NETWORK=holesky # Execution layer client to be used in a DV setup. -# Available options are: nethermind. +# Available options: nethermind. EL=el-nethermind # Consensus layer client to be used in a DV setup. -# Available options are: lighthouse, grandine. +# Available options: lighthouse, grandine. CL=cl-lighthouse # Validator client to be used in a DV setup. -# Available options are: lodestar. +# Available options: lodestar. VC=vc-lodestar # MEV client to be used in a DV setup. -# Available options are: mevboost. +# Available options: mevboost. MEV=mev-mevboost -# Do not edit. These profiles and files dictate Docker what client types to start for execution, consensus, validator and mev clients, which are specified above. + +# Do not edit. These profiles and files dictate Docker which client types and from where to start for execution, consensus, validator and MEV. +# The actual adjustable values are specified above COMPOSE_PROFILES=${EL},${CL},${VC},${MEV} COMPOSE_FILE=compose-el.yml:compose-cl.yml:compose-vc.yml:compose-mev.yml:docker-compose.yml diff --git a/.env.sample.hoodi b/.env.sample.hoodi index abdc54e8..f2cb8268 100644 --- a/.env.sample.hoodi +++ b/.env.sample.hoodi @@ -5,18 +5,20 @@ NETWORK=hoodi # Execution layer client to be used in a DV setup. -# Available options are: nethermind. +# Available options: nethermind. EL=el-nethermind # Consensus layer client to be used in a DV setup. -# Available options are: lighthouse, grandine. +# Available options: lighthouse, grandine. CL=cl-lighthouse # Validator client to be used in a DV setup. -# Available options are: lodestar. +# Available options: lodestar. VC=vc-lodestar # MEV client to be used in a DV setup. -# Available options are: mevboost. +# Available options: mevboost. MEV=mev-mevboost -# Do not edit. These profiles and files dictate Docker what client types to start for execution, consensus, validator and mev clients, which are specified above. + +# Do not edit. These profiles and files dictate Docker which client types and from where to start for execution, consensus, validator and MEV. +# The actual adjustable values are specified above COMPOSE_PROFILES=${EL},${CL},${VC},${MEV} COMPOSE_FILE=compose-el.yml:compose-cl.yml:compose-vc.yml:compose-mev.yml:docker-compose.yml diff --git a/.env.sample.mainnet b/.env.sample.mainnet index 08cc4f2d..c9bbb836 100644 --- a/.env.sample.mainnet +++ b/.env.sample.mainnet @@ -5,18 +5,20 @@ NETWORK=mainnet # Execution layer client to be used in a DV setup. -# Available options are: nethermind. +# Available options: nethermind. EL=el-nethermind # Consensus layer client to be used in a DV setup. -# Available options are: lighthouse, grandine. +# Available options: lighthouse, grandine. CL=cl-lighthouse # Validator client to be used in a DV setup. -# Available options are: lodestar. +# Available options: lodestar. VC=vc-lodestar # MEV client to be used in a DV setup. -# Available options are: mevboost. +# Available options: mevboost. MEV=mev-mevboost -# Do not edit. These profiles and files dictate Docker what client types to start for execution, consensus, validator and mev clients, which are specified above. + +# Do not edit. These profiles and files dictate Docker which client types and from where to start for execution, consensus, validator and MEV. +# The actual adjustable values are specified above COMPOSE_PROFILES=${EL},${CL},${VC},${MEV} COMPOSE_FILE=compose-el.yml:compose-cl.yml:compose-vc.yml:compose-mev.yml:docker-compose.yml From 33a967bda046b0272e6743b63cbea1a0d4261fde Mon Sep 17 00:00:00 2001 From: Kaloyan Tanev Date: Fri, 4 Jul 2025 17:40:09 +0300 Subject: [PATCH 14/23] Add commit-boost --- .env.sample.holesky | 8 +++-- .env.sample.hoodi | 8 +++-- .env.sample.mainnet | 8 +++-- .gitignore | 1 + README.md | 21 ++++++++++-- commit-boost/.config.toml.sample.holesky | 28 +++++++++++++++ commit-boost/.config.toml.sample.hoodi | 36 ++++++++++++++++++++ commit-boost/.config.toml.sample.mainnet | 40 ++++++++++++++++++++++ compose-mev.yml | 18 ++++++++++ docker-compose.yml | 43 ++++++++++++------------ 10 files changed, 181 insertions(+), 30 deletions(-) create mode 100644 commit-boost/.config.toml.sample.holesky create mode 100644 commit-boost/.config.toml.sample.hoodi create mode 100644 commit-boost/.config.toml.sample.mainnet diff --git a/.env.sample.holesky b/.env.sample.holesky index b078fc82..b475184b 100644 --- a/.env.sample.holesky +++ b/.env.sample.holesky @@ -14,7 +14,7 @@ CL=cl-lighthouse # Available options: lodestar. VC=vc-lodestar # MEV client to be used in a DV setup. -# Available options: mevboost. +# Available options: mevboost, commitboost. MEV=mev-mevboost # Do not edit. These profiles and files dictate Docker which client types and from where to start for execution, consensus, validator and MEV. @@ -72,17 +72,20 @@ LIDO_EXECUTION_LAYER_REWARDS_ADDRESS=0xE73a3602b99f1f913e72F8bdcBC235e206794Ac8 ######### MEV Config ######### # MEV timeouts. +# N.B.: Commit-boost uses TOML configuration instead of env variables. Configure those at commit-boost/. #MEV_TIMEOUT_GETHEADER= #MEV_TIMEOUT_GETPAYLOAD= #MEV_TIMEOUT_REGVAL= # Comma separated list of MEV-Boost relays. You can choose public relays from https://enchanted-direction-844.notion.site/6d369eb33f664487800b0dedfe32171e?v=d255247c822c409f99c498aeb6a4e51d. +# N.B.: Commit-boost uses TOML configuration instead of env variables. Configure those at commit-boost/. MEV_RELAYS=https://0xafa4c6985aa049fb79dd37010438cfebeb0f2bd42b115b89dd678dab0670c1de38da0c4e9138c9290a398ecd9a0b3110@boost-relay-holesky.flashbots.net,https://0xaa58208899c6105603b74396734a6263cc7d947f444f396a90f7b7d3e65d102aec7e5e5291b27e08d02c50a050825c2f@holesky.titanrelay.xyz,https://0xb1559beef7b5ba3127485bbbb090362d9f497ba64e177ee2c8e7db74746306efad687f2cf8574e38d70067d40ef136dc@relay-stag.ultrasound.money,https://0xab78bf8c781c58078c3beb5710c57940874dd96aef2835e7742c866b4c7c0406754376c2c8285a36c630346aa5c5f833@holesky.aestus.live # MEV-Boost docker container image version. #MEV_MEVBOOST_VERSION= -##### validator-ejector Config ##### +# Commit-Boost docker container image version. +#MEV_COMMITBOOST_VERSION= ######### Charon Config ######### @@ -206,6 +209,7 @@ LIDODVEXIT_EXIT_EPOCH=256 #CHARON_PROMTAIL_MONITORED=false #VC_LODESTAR_PROMTAIL_MONITORED=false #MEV_MEV_BOOST_PROMTAIL_MONITORED=false +#MEV_COMMIT_BOOST_PROMTAIL_MONITORED=false #EJECTOR_PROMTAIL_MONITORED=false #DV_EXIT_PROMTAIL_MONITORED=false diff --git a/.env.sample.hoodi b/.env.sample.hoodi index f2cb8268..69c16dc3 100644 --- a/.env.sample.hoodi +++ b/.env.sample.hoodi @@ -14,7 +14,7 @@ CL=cl-lighthouse # Available options: lodestar. VC=vc-lodestar # MEV client to be used in a DV setup. -# Available options: mevboost. +# Available options: mevboost, commitboost. MEV=mev-mevboost # Do not edit. These profiles and files dictate Docker which client types and from where to start for execution, consensus, validator and MEV. @@ -72,17 +72,20 @@ LIDO_EXECUTION_LAYER_REWARDS_ADDRESS=0xE73a3602b99f1f913e72F8bdcBC235e206794Ac8 ######### MEV Config ######### # MEV timeouts. +# N.B.: Commit-boost uses TOML configuration instead of env variables. Configure those at commit-boost/. #MEV_TIMEOUT_GETHEADER= #MEV_TIMEOUT_GETPAYLOAD= #MEV_TIMEOUT_REGVAL= # Comma separated list of MEV-Boost relays. You can choose public relays from https://enchanted-direction-844.notion.site/6d369eb33f664487800b0dedfe32171e?v=d255247c822c409f99c498aeb6a4e51d. +# N.B.: Commit-boost uses TOML configuration instead of env variables. Configure those at commit-boost/. MEV_RELAYS=https://0x98f0ef62f00780cf8eb06701a7d22725b9437d4768bb19b363e882ae87129945ec206ec2dc16933f31d983f8225772b6@hoodi.aestus.live,https://0xaa58208899c6105603b74396734a6263cc7d947f444f396a90f7b7d3e65d102aec7e5e5291b27e08d02c50a050825c2f@hoodi.titanrelay.xyz,https://0xb1559beef7b5ba3127485bbbb090362d9f497ba64e177ee2c8e7db74746306efad687f2cf8574e38d70067d40ef136dc@relay-hoodi.ultrasound.money,https://0xafa4c6985aa049fb79dd37010438cfebeb0f2bd42b115b89dd678dab0670c1de38da0c4e9138c9290a398ecd9a0b3110@boost-relay-hoodi.flashbots.net,https://0x9110847c15a7f5c80a9fdd5db989a614cc01104e53bd8c252b6f46a4842c7fdef6b9593336035b5094878deff386804c@hoodi-builder-proxy-alpha.interstate.so,https://0xb20c3fe59db9c3655088839ef3d972878d182eb745afd8abb1dd2abf6c14f93cd5934ed4446a5fe1ba039e2bc0cf1011@hoodi-relay.ethgas.com # MEV-Boost docker container image version. #MEV_MEVBOOST_VERSION= -##### validator-ejector Config ##### +# Commit-Boost docker container image version. +#MEV_COMMITBOOST_VERSION= ######### Charon Config ######### @@ -206,6 +209,7 @@ LIDODVEXIT_EXIT_EPOCH=256 #CHARON_PROMTAIL_MONITORED=false #VC_LODESTAR_PROMTAIL_MONITORED=false #MEV_MEV_BOOST_PROMTAIL_MONITORED=false +#MEV_COMMIT_BOOST_PROMTAIL_MONITORED=false #EJECTOR_PROMTAIL_MONITORED=false #DV_EXIT_PROMTAIL_MONITORED=false diff --git a/.env.sample.mainnet b/.env.sample.mainnet index c9bbb836..34a54d1b 100644 --- a/.env.sample.mainnet +++ b/.env.sample.mainnet @@ -14,7 +14,7 @@ CL=cl-lighthouse # Available options: lodestar. VC=vc-lodestar # MEV client to be used in a DV setup. -# Available options: mevboost. +# Available options: mevboost, commitboost. MEV=mev-mevboost # Do not edit. These profiles and files dictate Docker which client types and from where to start for execution, consensus, validator and MEV. @@ -72,17 +72,20 @@ LIDO_EXECUTION_LAYER_REWARDS_ADDRESS=0x388C818CA8B9251b393131C08a736A67ccB19297 ######### MEV Config ######### # MEV timeouts. +# N.B.: Commit-boost uses TOML configuration instead of env variables. Configure those at commit-boost/. #MEV_TIMEOUT_GETHEADER= #MEV_TIMEOUT_GETPAYLOAD= #MEV_TIMEOUT_REGVAL= # Comma separated list of MEV-Boost relays. You can choose public relays from https://enchanted-direction-844.notion.site/6d369eb33f664487800b0dedfe32171e?v=d255247c822c409f99c498aeb6a4e51d. +# N.B.: Commit-boost uses TOML configuration instead of env variables. Configure those at commit-boost/. MEV_RELAYS=https://0xa15b52576bcbf1072f4a011c0f99f9fb6c66f3e1ff321f11f461d15e31b1cb359caa092c71bbded0bae5b5ea401aab7e@aestus.live,https://0xa7ab7a996c8584251c8f925da3170bdfd6ebc75d50f5ddc4050a6fdc77f2a3b5fce2cc750d0865e05d7228af97d69561@agnostic-relay.net,https://0x8b5d2e73e2a3a55c6c87b8b6eb92e0149a125c852751db1422fa951e42a09b82c142c3ea98d0d9930b056a3bc9896b8f@bloxroute.max-profit.blxrbdn.com,https://0xb0b07cd0abef743db4260b0ed50619cf6ad4d82064cb4fbec9d3ec530f7c5e6793d9f286c4e082c0244ffb9f2658fe88@bloxroute.regulated.blxrbdn.com,https://0xac6e77dfe25ecd6110b8e780608cce0dab71fdd5ebea22a16c0205200f2f8e2e3ad3b71d3499c54ad14d6c21b41a37ae@boost-relay.flashbots.net,https://0xa1559ace749633b997cb3fdacffb890aeebdb0f5a3b6aaa7eeeaf1a38af0a8fe88b9e4b1f61f236d2e64d95733327a62@relay.ultrasound.money,https://0x8c4ed5e24fe5c6ae21018437bde147693f68cda427cd1122cf20819c30eda7ed74f72dece09bb313f2a1855595ab677d@global.titanrelay.xyz # MEV-Boost docker container image version. #MEV_MEVBOOST_VERSION= -##### validator-ejector Config ##### +# Commit-Boost docker container image version. +#MEV_COMMITBOOST_VERSION= ######### Charon Config ######### @@ -206,6 +209,7 @@ LIDODVEXIT_EXIT_EPOCH=194048 #CHARON_PROMTAIL_MONITORED=false #VC_LODESTAR_PROMTAIL_MONITORED=false #MEV_MEV_BOOST_PROMTAIL_MONITORED=false +#MEV_COMMIT_BOOST_PROMTAIL_MONITORED=false #EJECTOR_PROMTAIL_MONITORED=false #DV_EXIT_PROMTAIL_MONITORED=false diff --git a/.gitignore b/.gitignore index 558649a6..b9c601f4 100644 --- a/.gitignore +++ b/.gitignore @@ -15,3 +15,4 @@ data/ teku/validator/ # Teku directory for storing logs teku/logs/ +commit-boost/config.toml diff --git a/README.md b/README.md index 4270425a..f2b3d107 100644 --- a/README.md +++ b/README.md @@ -25,7 +25,8 @@ Check the Obol [docs](https://docs.obol.tech/docs/start/quickstart_group) for de To configure this repo for a particular network, follow these instructions. If you do not, your node will fail to start. 1. Copy `.env.sample.` to `.env`: - ```sh + +```sh # mainnet cp .env.sample.mainnet .env @@ -34,12 +35,26 @@ To configure this repo for a particular network, follow these instructions. If y # hoodi cp .env.sample.hoodi .env - ``` +``` + +> **_NOTE:_** If you are using commit-boost, instead of mev-boost, do the same for commit-boost's config: + +```sh + # mainnet + cp commit-boost/.config.toml.sample.mainnet commit-boost/config.toml + + # holesky + cp commit-boost/.config.toml.sample.holesky commit-boost/config.toml + + # hoodi + cp commit-boost/.config.toml.sample.hoodi commit-boost/config.toml +``` + 2. Grab your operator ID from the lido [mainnet dashboard](https://operators.lido.fi/) or [testnet dashboard](https://operators-holesky.testnet.fi/). 3. Find `VE_OPERATOR_ID` in `.env` and set it to your operator ID. 4. Save and close `.env`. -You will need a `.charon/` folder from a completed DKG present to complete the setup of this repo. +You will need a `.charon/` folder from a completed DKG present to complete the setup of this repo. Finally, to run the cluster run one of the following commands. diff --git a/commit-boost/.config.toml.sample.holesky b/commit-boost/.config.toml.sample.holesky new file mode 100644 index 00000000..2245c492 --- /dev/null +++ b/commit-boost/.config.toml.sample.holesky @@ -0,0 +1,28 @@ +chain = "Holesky" + +[pbs] +port = 18550 +host = "0.0.0.0" +#timeout_get_header_ms +#timeout_get_payload_ms +#timeout_register_validator_ms + +[metrics] +enabled = true +host = "0.0.0.0" + +[[relays]] +id = "boost-relay-holesky.flashbots.net" +url = "https://0xafa4c6985aa049fb79dd37010438cfebeb0f2bd42b115b89dd678dab0670c1de38da0c4e9138c9290a398ecd9a0b3110@boost-relay-holesky.flashbots.net" + +[[relays]] +id = "holesky.titanrelay.xyz" +url = "https://0xaa58208899c6105603b74396734a6263cc7d947f444f396a90f7b7d3e65d102aec7e5e5291b27e08d02c50a050825c2f@holesky.titanrelay.xyz" + +[[relays]] +id = "relay-stag.ultrasound.money" +url = "https://0xb1559beef7b5ba3127485bbbb090362d9f497ba64e177ee2c8e7db74746306efad687f2cf8574e38d70067d40ef136dc@relay-stag.ultrasound.money" + +[[relays]] +id = "holesky.aestus.live" +url = "https://0xab78bf8c781c58078c3beb5710c57940874dd96aef2835e7742c866b4c7c0406754376c2c8285a36c630346aa5c5f833@holesky.aestus.live" diff --git a/commit-boost/.config.toml.sample.hoodi b/commit-boost/.config.toml.sample.hoodi new file mode 100644 index 00000000..ee767df9 --- /dev/null +++ b/commit-boost/.config.toml.sample.hoodi @@ -0,0 +1,36 @@ +chain = "Hoodi" + +[pbs] +port = 18550 +host = "0.0.0.0" +#timeout_get_header_ms +#timeout_get_payload_ms +#timeout_register_validator_ms + +[metrics] +enabled = true +host = "0.0.0.0" + +[[relays]] +id = "hoodi.aestus.live" +url = "https://0x98f0ef62f00780cf8eb06701a7d22725b9437d4768bb19b363e882ae87129945ec206ec2dc16933f31d983f8225772b6@hoodi.aestus.live" + +[[relays]] +id = "hoodi.titanrelay.xyz" +url = "https://0xaa58208899c6105603b74396734a6263cc7d947f444f396a90f7b7d3e65d102aec7e5e5291b27e08d02c50a050825c2f@hoodi.titanrelay.xyz" + +[[relays]] +id = "relay-hoodi.ultrasound.money" +url = "https://0xb1559beef7b5ba3127485bbbb090362d9f497ba64e177ee2c8e7db74746306efad687f2cf8574e38d70067d40ef136dc@relay-hoodi.ultrasound.money" + +[[relays]] +id = "boost-relay-hoodi.flashbots.net" +url = "https://0xafa4c6985aa049fb79dd37010438cfebeb0f2bd42b115b89dd678dab0670c1de38da0c4e9138c9290a398ecd9a0b3110@boost-relay-hoodi.flashbots.net" + +[[relays]] +id = "hoodi-builder-proxy-alpha.interstate.so" +url = "https://0x9110847c15a7f5c80a9fdd5db989a614cc01104e53bd8c252b6f46a4842c7fdef6b9593336035b5094878deff386804c@hoodi-builder-proxy-alpha.interstate.so" + +[[relays]] +id = "hoodi-relay.ethgas.com" +url = "https://0xb20c3fe59db9c3655088839ef3d972878d182eb745afd8abb1dd2abf6c14f93cd5934ed4446a5fe1ba039e2bc0cf1011@hoodi-relay.ethgas.com" \ No newline at end of file diff --git a/commit-boost/.config.toml.sample.mainnet b/commit-boost/.config.toml.sample.mainnet new file mode 100644 index 00000000..a68a68f5 --- /dev/null +++ b/commit-boost/.config.toml.sample.mainnet @@ -0,0 +1,40 @@ +chain = "Mainnet" + +[pbs] +port = 18550 +host = "0.0.0.0" +#timeout_get_header_ms +#timeout_get_payload_ms +#timeout_register_validator_ms + +[metrics] +enabled = true +host = "0.0.0.0" + +[[relays]] +id = "aestus.live" +url = "https://0xa15b52576bcbf1072f4a011c0f99f9fb6c66f3e1ff321f11f461d15e31b1cb359caa092c71bbded0bae5b5ea401aab7e@aestus.live" + +[[relays]] +id = "agnostic-relay.net" +url = "https://0xa7ab7a996c8584251c8f925da3170bdfd6ebc75d50f5ddc4050a6fdc77f2a3b5fce2cc750d0865e05d7228af97d69561@agnostic-relay.net" + +[[relays]] +id = "bloxroute.max-profit.blxrbdn.com" +url = "https://0x8b5d2e73e2a3a55c6c87b8b6eb92e0149a125c852751db1422fa951e42a09b82c142c3ea98d0d9930b056a3bc9896b8f@bloxroute.max-profit.blxrbdn.com" + +[[relays]] +id = "bloxroute.regulated.blxrbdn.com" +url = "https://0xb0b07cd0abef743db4260b0ed50619cf6ad4d82064cb4fbec9d3ec530f7c5e6793d9f286c4e082c0244ffb9f2658fe88@bloxroute.regulated.blxrbdn.com" + +[[relays]] +id = "boost-relay.flashbots.net" +url = "https://0xac6e77dfe25ecd6110b8e780608cce0dab71fdd5ebea22a16c0205200f2f8e2e3ad3b71d3499c54ad14d6c21b41a37ae@boost-relay.flashbots.net" + +[[relays]] +id = "relay.ultrasound.money" +url = "https://0xa1559ace749633b997cb3fdacffb890aeebdb0f5a3b6aaa7eeeaf1a38af0a8fe88b9e4b1f61f236d2e64d95733327a62@relay.ultrasound.money" + +[[relays]] +id = "global.titanrelay.xyz" +url = "https://0x8c4ed5e24fe5c6ae21018437bde147693f68cda427cd1122cf20819c30eda7ed74f72dece09bb313f2a1855595ab677d@global.titanrelay.xyz" \ No newline at end of file diff --git a/compose-mev.yml b/compose-mev.yml index 50b8971e..6ba8aa25 100644 --- a/compose-mev.yml +++ b/compose-mev.yml @@ -24,3 +24,21 @@ services: - "promtail-monitored=${MEV_MEV_BOOST_PROMTAIL_MONITORED:-true}" networks: [dvnode] restart: unless-stopped + + # _ _ _ _ + # ___ ___ _ __ ___ _ __ ___ (_) |_ | |__ ___ ___ ___| |_ + # / __/ _ \| '_ ` _ \| '_ ` _ \| | __|____| '_ \ / _ \ / _ \/ __| __| + # | (_| (_) | | | | | | | | | | | | ||_____| |_) | (_) | (_) \__ \ |_ + # \___\___/|_| |_| |_|_| |_| |_|_|\__| |_.__/ \___/ \___/|___/\__| + + mev-commitboost: + profiles: [mev-commitboost] + image: ghcr.io/commit-boost/pbs:${MEV_COMMITBOOST_VERSION:-v0.7.0} + environment: + - CB_CONFIG=/etc/commit-boost/config.toml + volumes: + - ./commit-boost/config.toml:/etc/commit-boost/config.toml:ro + labels: + - "promtail-monitored=${MEV_COMMIT_BOOST_PROMTAIL_MONITORED:-true}" + networks: [dvnode] + restart: unless-stopped diff --git a/docker-compose.yml b/docker-compose.yml index e71793f2..238702e7 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -8,6 +8,7 @@ services: # | '_ \ / _ \ __| '_ \ / _ \ '__| '_ ` _ \| | '_ \ / _` | # | | | | __/ |_| | | | __/ | | | | | | | | | | | (_| | # |_| |_|\___|\__|_| |_|\___|_| |_| |_| |_|_|_| |_|\__,_| + nethermind: image: nethermind/nethermind:${NETHERMIND_VERSION:-1.32.2} profiles: [""] @@ -145,6 +146,7 @@ services: # | '_ ` _ \ / _ \ \ / /____| '_ \ / _ \ / _ \/ __| __| # | | | | | | __/\ V /_____| |_) | (_) | (_) \__ \ |_ # |_| |_| |_|\___| \_/ |_.__/ \___/ \___/|___/\__| + mev-boost: image: ${MEVBOOST_IMAGE:-flashbots/mev-boost}:${MEVBOOST_VERSION:-1.9} profiles: [""] @@ -209,33 +211,32 @@ services: # \_/ \__,_|_|_|\__,_|\__,_|\__\___/|_| \___|/ |\___|\___|\__\___/|_| # |__/ - validator-ejector: - image: lidofinance/validator-ejector:${VALIDATOR_EJECTOR_VERSION:-1.7.0} - user: ":" - networks: [dvnode] - volumes: - - ./validator-ejector:/exitmessages - labels: - - "promtail-monitored=${EJECTOR_PROMTAIL_MONITORED:-true}" - restart: unless-stopped - environment: - - EXECUTION_NODE=${VE_EXECUTION_NODE_URL:-http://nethermind:8545} - - CONSENSUS_NODE=${VE_BEACON_NODE_URL:-http://lighthouse:5052} - - LOCATOR_ADDRESS=${VE_LOCATOR_ADDRESS} - - STAKING_MODULE_ID=${VE_STAKING_MODULE_ID:-2} - - OPERATOR_ID=${VE_OPERATOR_ID} - - ORACLE_ADDRESSES_ALLOWLIST=${VE_ORACLE_ADDRESSES_ALLOWLIST} - - MESSAGES_LOCATION=/exitmessages - - RUN_METRICS=true - - HTTP_PORT=8989 - - DISABLE_SECURITY_DONT_USE_IN_PRODUCTION=${DISABLE_EJECTOR_SECURITY:-false} + # validator-ejector: + # image: lidofinance/validator-ejector:${VALIDATOR_EJECTOR_VERSION:-1.7.0} + # user: ":" + # networks: [dvnode] + # volumes: + # - ./validator-ejector:/exitmessages + # labels: + # - "promtail-monitored=${EJECTOR_PROMTAIL_MONITORED:-true}" + # restart: unless-stopped + # environment: + # - EXECUTION_NODE=${VE_EXECUTION_NODE_URL:-http://nethermind:8545} + # - CONSENSUS_NODE=${VE_BEACON_NODE_URL:-http://lighthouse:5052} + # - LOCATOR_ADDRESS=${VE_LOCATOR_ADDRESS} + # - STAKING_MODULE_ID=${VE_STAKING_MODULE_ID:-2} + # - OPERATOR_ID=${VE_OPERATOR_ID} + # - ORACLE_ADDRESSES_ALLOWLIST=${VE_ORACLE_ADDRESSES_ALLOWLIST} + # - MESSAGES_LOCATION=/exitmessages + # - RUN_METRICS=true + # - HTTP_PORT=8989 + # - DISABLE_SECURITY_DONT_USE_IN_PRODUCTION=${DISABLE_EJECTOR_SECURITY:-false} # _ _ _ _ _ _ # | (_) __| | ___ __| |_ __ _____ _(_) |_ # | | |/ _` |/ _ \ _____ / _` \ \ / /____ / _ \ \/ / | __| # | | | (_| | (_) |_____| (_| |\ V /_____| __/> <| | |_ # |_|_|\__,_|\___/ \__,_| \_/ \___/_/\_\_|\__| - # lido-dv-exit: image: obolnetwork/lido-dv-exit:${LIDO_DV_EXIT_VERSION:-v0.3.0} From 6a9acaac6ef751cbc62d7107680cefd356179515 Mon Sep 17 00:00:00 2001 From: Kaloyan Tanev Date: Fri, 4 Jul 2025 18:21:56 +0300 Subject: [PATCH 15/23] Add Nimbus VC --- .env.sample.holesky | 7 ++++++- .env.sample.hoodi | 7 ++++++- .env.sample.mainnet | 7 ++++++- compose-vc.yml | 24 +++++++++++++++++++++++ nimbus/Dockerfile | 9 +++++++++ nimbus/run.sh | 46 +++++++++++++++++++++++++++++++++++++++++++++ 6 files changed, 97 insertions(+), 3 deletions(-) create mode 100755 nimbus/Dockerfile create mode 100755 nimbus/run.sh diff --git a/.env.sample.holesky b/.env.sample.holesky index b475184b..8aca1c8d 100644 --- a/.env.sample.holesky +++ b/.env.sample.holesky @@ -11,7 +11,7 @@ EL=el-nethermind # Available options: lighthouse, grandine. CL=cl-lighthouse # Validator client to be used in a DV setup. -# Available options: lodestar. +# Available options: lodestar, nimbus. VC=vc-lodestar # MEV client to be used in a DV setup. # Available options: mevboost, commitboost. @@ -69,6 +69,10 @@ LIDO_EXECUTION_LAYER_REWARDS_ADDRESS=0xE73a3602b99f1f913e72F8bdcBC235e206794Ac8 #VC_LODESTAR_BUILDER_SELECTION= +# Nimbus validator client docker container image version. +# See available tags https://hub.docker.com/r/statusim/nimbus-validator-client/tags +#VC_NIMBUS_VERSION= + ######### MEV Config ######### # MEV timeouts. @@ -208,6 +212,7 @@ LIDODVEXIT_EXIT_EPOCH=256 #CL_GRANDINE_PROMTAIL_MONITORED=false #CHARON_PROMTAIL_MONITORED=false #VC_LODESTAR_PROMTAIL_MONITORED=false +#VC_NIMBUS_PROMTAIL_MONITORED=false #MEV_MEV_BOOST_PROMTAIL_MONITORED=false #MEV_COMMIT_BOOST_PROMTAIL_MONITORED=false #EJECTOR_PROMTAIL_MONITORED=false diff --git a/.env.sample.hoodi b/.env.sample.hoodi index 69c16dc3..dc38fab5 100644 --- a/.env.sample.hoodi +++ b/.env.sample.hoodi @@ -11,7 +11,7 @@ EL=el-nethermind # Available options: lighthouse, grandine. CL=cl-lighthouse # Validator client to be used in a DV setup. -# Available options: lodestar. +# Available options: lodestar, nimbus. VC=vc-lodestar # MEV client to be used in a DV setup. # Available options: mevboost, commitboost. @@ -69,6 +69,10 @@ LIDO_EXECUTION_LAYER_REWARDS_ADDRESS=0xE73a3602b99f1f913e72F8bdcBC235e206794Ac8 #VC_LODESTAR_BUILDER_SELECTION= +# Nimbus validator client docker container image version. +# See available tags https://hub.docker.com/r/statusim/nimbus-validator-client/tags +#VC_NIMBUS_VERSION= + ######### MEV Config ######### # MEV timeouts. @@ -208,6 +212,7 @@ LIDODVEXIT_EXIT_EPOCH=256 #CL_GRANDINE_PROMTAIL_MONITORED=false #CHARON_PROMTAIL_MONITORED=false #VC_LODESTAR_PROMTAIL_MONITORED=false +#VC_NIMBUS_PROMTAIL_MONITORED=false #MEV_MEV_BOOST_PROMTAIL_MONITORED=false #MEV_COMMIT_BOOST_PROMTAIL_MONITORED=false #EJECTOR_PROMTAIL_MONITORED=false diff --git a/.env.sample.mainnet b/.env.sample.mainnet index 34a54d1b..24eb2957 100644 --- a/.env.sample.mainnet +++ b/.env.sample.mainnet @@ -11,7 +11,7 @@ EL=el-nethermind # Available options: lighthouse, grandine. CL=cl-lighthouse # Validator client to be used in a DV setup. -# Available options: lodestar. +# Available options: lodestar, nimbus. VC=vc-lodestar # MEV client to be used in a DV setup. # Available options: mevboost, commitboost. @@ -69,6 +69,10 @@ LIDO_EXECUTION_LAYER_REWARDS_ADDRESS=0x388C818CA8B9251b393131C08a736A67ccB19297 #VC_LODESTAR_BUILDER_SELECTION= +# Nimbus validator client docker container image version. +# See available tags https://hub.docker.com/r/statusim/nimbus-validator-client/tags +#VC_NIMBUS_VERSION= + ######### MEV Config ######### # MEV timeouts. @@ -208,6 +212,7 @@ LIDODVEXIT_EXIT_EPOCH=194048 #CL_GRANDINE_PROMTAIL_MONITORED=false #CHARON_PROMTAIL_MONITORED=false #VC_LODESTAR_PROMTAIL_MONITORED=false +#VC_NIMBUS_PROMTAIL_MONITORED=false #MEV_MEV_BOOST_PROMTAIL_MONITORED=false #MEV_COMMIT_BOOST_PROMTAIL_MONITORED=false #EJECTOR_PROMTAIL_MONITORED=false diff --git a/compose-vc.yml b/compose-vc.yml index f2629762..6154bbf1 100644 --- a/compose-vc.yml +++ b/compose-vc.yml @@ -27,3 +27,27 @@ services: - .charon/validator_keys:/home/charon/validator_keys - ./data/lodestar:/opt/data # Keep data in lodestar and not vc-lodestar for backwards compatibility restart: unless-stopped + + # _ _ + # _ __ (_)_ __ ___ | |__ _ _ ___ + # | '_ \| | '_ ` _ \| '_ \| | | / __| + # | | | | | | | | | | |_) | |_| \__ \ + # |_| |_|_|_| |_| |_|_.__/ \__,_|___/ + + vc-nimbus: + profiles: [vc-nimbus] + build: + context: nimbus + args: + VERSION: ${VC_NIMBUS_VERSION:-multiarch-v25.6.0} + depends_on: [charon] + networks: [dvnode] + environment: + BEACON_NODE_ADDRESS: http://charon:3600 + labels: + - "promtail-monitored=${VC_NIMBUS_PROMTAIL_MONITORED:-true}" + volumes: + - ./nimbus/run.sh:/home/user/data/run.sh + - .charon/validator_keys:/home/validator_keys + - ./data/vc-nimbus:/home/user/data + restart: unless-stopped diff --git a/nimbus/Dockerfile b/nimbus/Dockerfile new file mode 100755 index 00000000..ad27351a --- /dev/null +++ b/nimbus/Dockerfile @@ -0,0 +1,9 @@ +ARG VERSION + +FROM statusim/nimbus-eth2:${VERSION} AS nimbusbn + +FROM statusim/nimbus-validator-client:${VERSION} + +COPY --from=nimbusbn /home/user/nimbus_beacon_node /home/user/nimbus_beacon_node + +ENTRYPOINT ["/home/user/data/run.sh"] diff --git a/nimbus/run.sh b/nimbus/run.sh new file mode 100755 index 00000000..0df30c3f --- /dev/null +++ b/nimbus/run.sh @@ -0,0 +1,46 @@ +#!/usr/bin/env bash + +# Cleanup nimbus directories if they already exist. +rm -rf /home/user/data + +# Refer: https://nimbus.guide/keys.html +# Running a nimbus VC involves two steps which need to run in order: +# 1. Importing the validator keys +# 2. And then actually running the VC +tmpkeys="/home/validator_keys/tmpkeys" +mkdir -p ${tmpkeys} + +for f in /home/validator_keys/keystore-*.json; do + echo "Importing key ${f}" + + # Read password from keystore-*.txt into $password variable. + password=$(<"${f//json/txt}") + + # Copy keystore file to tmpkeys/ directory. + cp "${f}" "${tmpkeys}" + + # Import keystore with the password. + echo "$password" | + /home/user/nimbus_beacon_node deposits import \ + --data-dir=/home/user/data \ + /home/validator_keys/tmpkeys + + # Delete tmpkeys/keystore-*.json file that was copied before. + filename="$(basename ${f})" + rm "${tmpkeys}/${filename}" +done + +# Delete the tmpkeys/ directory since it's no longer needed. +rm -r ${tmpkeys} + +echo "Imported all keys" + +# Now run nimbus VC +exec /home/user/nimbus_validator_client \ + --data-dir=/home/user/data \ + --beacon-node="http://charon:3600" \ + --doppelganger-detection=false \ + --metrics \ + --metrics-address=0.0.0.0 \ + --payload-builder=true \ + --distributed From b034ea18d5c10ae5d8b27526cf95922138be7fcd Mon Sep 17 00:00:00 2001 From: Kaloyan Tanev Date: Mon, 7 Jul 2025 17:23:50 +0200 Subject: [PATCH 16/23] Remove prefix dot in toml examples --- .../{.config.toml.sample.holesky => config.toml.sample.holesky} | 2 +- .../{.config.toml.sample.hoodi => config.toml.sample.hoodi} | 0 .../{.config.toml.sample.mainnet => config.toml.sample.mainnet} | 0 3 files changed, 1 insertion(+), 1 deletion(-) rename commit-boost/{.config.toml.sample.holesky => config.toml.sample.holesky} (99%) rename commit-boost/{.config.toml.sample.hoodi => config.toml.sample.hoodi} (100%) rename commit-boost/{.config.toml.sample.mainnet => config.toml.sample.mainnet} (100%) diff --git a/commit-boost/.config.toml.sample.holesky b/commit-boost/config.toml.sample.holesky similarity index 99% rename from commit-boost/.config.toml.sample.holesky rename to commit-boost/config.toml.sample.holesky index 2245c492..30fa65b9 100644 --- a/commit-boost/.config.toml.sample.holesky +++ b/commit-boost/config.toml.sample.holesky @@ -25,4 +25,4 @@ url = "https://0xb1559beef7b5ba3127485bbbb090362d9f497ba64e177ee2c8e7db74746306e [[relays]] id = "holesky.aestus.live" -url = "https://0xab78bf8c781c58078c3beb5710c57940874dd96aef2835e7742c866b4c7c0406754376c2c8285a36c630346aa5c5f833@holesky.aestus.live" +url = "https://0xab78bf8c781c58078c3beb5710c57940874dd96aef2835e7742c866b4c7c0406754376c2c8285a36c630346aa5c5f833@holesky.aestus.live" \ No newline at end of file diff --git a/commit-boost/.config.toml.sample.hoodi b/commit-boost/config.toml.sample.hoodi similarity index 100% rename from commit-boost/.config.toml.sample.hoodi rename to commit-boost/config.toml.sample.hoodi diff --git a/commit-boost/.config.toml.sample.mainnet b/commit-boost/config.toml.sample.mainnet similarity index 100% rename from commit-boost/.config.toml.sample.mainnet rename to commit-boost/config.toml.sample.mainnet From 4d82579b47bdabd220abc7d0e09c1aecc2c0c0d5 Mon Sep 17 00:00:00 2001 From: Kaloyan Tanev Date: Mon, 7 Jul 2025 17:29:07 +0200 Subject: [PATCH 17/23] Formatting --- .env.sample.holesky | 2 +- .env.sample.hoodi | 2 +- .env.sample.mainnet | 2 +- compose-mev.yml | 37 +++++++++++++++++++------------------ 4 files changed, 22 insertions(+), 21 deletions(-) diff --git a/.env.sample.holesky b/.env.sample.holesky index 8aca1c8d..9bd09af4 100644 --- a/.env.sample.holesky +++ b/.env.sample.holesky @@ -81,7 +81,7 @@ LIDO_EXECUTION_LAYER_REWARDS_ADDRESS=0xE73a3602b99f1f913e72F8bdcBC235e206794Ac8 #MEV_TIMEOUT_GETPAYLOAD= #MEV_TIMEOUT_REGVAL= -# Comma separated list of MEV-Boost relays. You can choose public relays from https://enchanted-direction-844.notion.site/6d369eb33f664487800b0dedfe32171e?v=d255247c822c409f99c498aeb6a4e51d. +# Comma separated list of MEV relays. You can choose public relays from https://enchanted-direction-844.notion.site/6d369eb33f664487800b0dedfe32171e?v=d255247c822c409f99c498aeb6a4e51d. # N.B.: Commit-boost uses TOML configuration instead of env variables. Configure those at commit-boost/. MEV_RELAYS=https://0xafa4c6985aa049fb79dd37010438cfebeb0f2bd42b115b89dd678dab0670c1de38da0c4e9138c9290a398ecd9a0b3110@boost-relay-holesky.flashbots.net,https://0xaa58208899c6105603b74396734a6263cc7d947f444f396a90f7b7d3e65d102aec7e5e5291b27e08d02c50a050825c2f@holesky.titanrelay.xyz,https://0xb1559beef7b5ba3127485bbbb090362d9f497ba64e177ee2c8e7db74746306efad687f2cf8574e38d70067d40ef136dc@relay-stag.ultrasound.money,https://0xab78bf8c781c58078c3beb5710c57940874dd96aef2835e7742c866b4c7c0406754376c2c8285a36c630346aa5c5f833@holesky.aestus.live diff --git a/.env.sample.hoodi b/.env.sample.hoodi index dc38fab5..b9f74711 100644 --- a/.env.sample.hoodi +++ b/.env.sample.hoodi @@ -81,7 +81,7 @@ LIDO_EXECUTION_LAYER_REWARDS_ADDRESS=0xE73a3602b99f1f913e72F8bdcBC235e206794Ac8 #MEV_TIMEOUT_GETPAYLOAD= #MEV_TIMEOUT_REGVAL= -# Comma separated list of MEV-Boost relays. You can choose public relays from https://enchanted-direction-844.notion.site/6d369eb33f664487800b0dedfe32171e?v=d255247c822c409f99c498aeb6a4e51d. +# Comma separated list of MEV relays. You can choose public relays from https://enchanted-direction-844.notion.site/6d369eb33f664487800b0dedfe32171e?v=d255247c822c409f99c498aeb6a4e51d. # N.B.: Commit-boost uses TOML configuration instead of env variables. Configure those at commit-boost/. MEV_RELAYS=https://0x98f0ef62f00780cf8eb06701a7d22725b9437d4768bb19b363e882ae87129945ec206ec2dc16933f31d983f8225772b6@hoodi.aestus.live,https://0xaa58208899c6105603b74396734a6263cc7d947f444f396a90f7b7d3e65d102aec7e5e5291b27e08d02c50a050825c2f@hoodi.titanrelay.xyz,https://0xb1559beef7b5ba3127485bbbb090362d9f497ba64e177ee2c8e7db74746306efad687f2cf8574e38d70067d40ef136dc@relay-hoodi.ultrasound.money,https://0xafa4c6985aa049fb79dd37010438cfebeb0f2bd42b115b89dd678dab0670c1de38da0c4e9138c9290a398ecd9a0b3110@boost-relay-hoodi.flashbots.net,https://0x9110847c15a7f5c80a9fdd5db989a614cc01104e53bd8c252b6f46a4842c7fdef6b9593336035b5094878deff386804c@hoodi-builder-proxy-alpha.interstate.so,https://0xb20c3fe59db9c3655088839ef3d972878d182eb745afd8abb1dd2abf6c14f93cd5934ed4446a5fe1ba039e2bc0cf1011@hoodi-relay.ethgas.com diff --git a/.env.sample.mainnet b/.env.sample.mainnet index 24eb2957..3f6009b2 100644 --- a/.env.sample.mainnet +++ b/.env.sample.mainnet @@ -81,7 +81,7 @@ LIDO_EXECUTION_LAYER_REWARDS_ADDRESS=0x388C818CA8B9251b393131C08a736A67ccB19297 #MEV_TIMEOUT_GETPAYLOAD= #MEV_TIMEOUT_REGVAL= -# Comma separated list of MEV-Boost relays. You can choose public relays from https://enchanted-direction-844.notion.site/6d369eb33f664487800b0dedfe32171e?v=d255247c822c409f99c498aeb6a4e51d. +# Comma separated list of MEV relays. You can choose public relays from https://enchanted-direction-844.notion.site/6d369eb33f664487800b0dedfe32171e?v=d255247c822c409f99c498aeb6a4e51d. # N.B.: Commit-boost uses TOML configuration instead of env variables. Configure those at commit-boost/. MEV_RELAYS=https://0xa15b52576bcbf1072f4a011c0f99f9fb6c66f3e1ff321f11f461d15e31b1cb359caa092c71bbded0bae5b5ea401aab7e@aestus.live,https://0xa7ab7a996c8584251c8f925da3170bdfd6ebc75d50f5ddc4050a6fdc77f2a3b5fce2cc750d0865e05d7228af97d69561@agnostic-relay.net,https://0x8b5d2e73e2a3a55c6c87b8b6eb92e0149a125c852751db1422fa951e42a09b82c142c3ea98d0d9930b056a3bc9896b8f@bloxroute.max-profit.blxrbdn.com,https://0xb0b07cd0abef743db4260b0ed50619cf6ad4d82064cb4fbec9d3ec530f7c5e6793d9f286c4e082c0244ffb9f2658fe88@bloxroute.regulated.blxrbdn.com,https://0xac6e77dfe25ecd6110b8e780608cce0dab71fdd5ebea22a16c0205200f2f8e2e3ad3b71d3499c54ad14d6c21b41a37ae@boost-relay.flashbots.net,https://0xa1559ace749633b997cb3fdacffb890aeebdb0f5a3b6aaa7eeeaf1a38af0a8fe88b9e4b1f61f236d2e64d95733327a62@relay.ultrasound.money,https://0x8c4ed5e24fe5c6ae21018437bde147693f68cda427cd1122cf20819c30eda7ed74f72dece09bb313f2a1855595ab677d@global.titanrelay.xyz diff --git a/compose-mev.yml b/compose-mev.yml index 6ba8aa25..b2adb8df 100644 --- a/compose-mev.yml +++ b/compose-mev.yml @@ -3,11 +3,30 @@ # ${VARIABLE-default} evaluates to default only if VARIABLE is unset in the environment. services: + # _ _ _ _ + # ___ ___ _ __ ___ _ __ ___ (_) |_ | |__ ___ ___ ___| |_ + # / __/ _ \| '_ ` _ \| '_ ` _ \| | __|____| '_ \ / _ \ / _ \/ __| __| + # | (_| (_) | | | | | | | | | | | | ||_____| |_) | (_) | (_) \__ \ |_ + # \___\___/|_| |_| |_|_| |_| |_|_|\__| |_.__/ \___/ \___/|___/\__| + + mev-commitboost: + profiles: [mev-commitboost] + image: ghcr.io/commit-boost/pbs:${MEV_COMMITBOOST_VERSION:-v0.7.0} + environment: + - CB_CONFIG=/etc/commit-boost/config.toml + volumes: + - ./commit-boost/config.toml:/etc/commit-boost/config.toml:ro + labels: + - "promtail-monitored=${MEV_COMMIT_BOOST_PROMTAIL_MONITORED:-true}" + networks: [dvnode] + restart: unless-stopped + # _ _ # _ __ ___ _____ __ | |__ ___ ___ ___| |_ # | '_ ` _ \ / _ \ \ / /____| '_ \ / _ \ / _ \/ __| __| # | | | | | | __/\ V /_____| |_) | (_) | (_) \__ \ |_ # |_| |_| |_|\___| \_/ |_.__/ \___/ \___/|___/\__| + mev-mevboost: profiles: [mev-mevboost] image: flashbots/mev-boost:${MEV_MEVBOOST_VERSION:-1.9} @@ -24,21 +43,3 @@ services: - "promtail-monitored=${MEV_MEV_BOOST_PROMTAIL_MONITORED:-true}" networks: [dvnode] restart: unless-stopped - - # _ _ _ _ - # ___ ___ _ __ ___ _ __ ___ (_) |_ | |__ ___ ___ ___| |_ - # / __/ _ \| '_ ` _ \| '_ ` _ \| | __|____| '_ \ / _ \ / _ \/ __| __| - # | (_| (_) | | | | | | | | | | | | ||_____| |_) | (_) | (_) \__ \ |_ - # \___\___/|_| |_| |_|_| |_| |_|_|\__| |_.__/ \___/ \___/|___/\__| - - mev-commitboost: - profiles: [mev-commitboost] - image: ghcr.io/commit-boost/pbs:${MEV_COMMITBOOST_VERSION:-v0.7.0} - environment: - - CB_CONFIG=/etc/commit-boost/config.toml - volumes: - - ./commit-boost/config.toml:/etc/commit-boost/config.toml:ro - labels: - - "promtail-monitored=${MEV_COMMIT_BOOST_PROMTAIL_MONITORED:-true}" - networks: [dvnode] - restart: unless-stopped From 03091122453b4df6be2202ca510cfa7d9abc4597 Mon Sep 17 00:00:00 2001 From: Kaloyan Tanev Date: Tue, 8 Jul 2025 18:24:55 +0200 Subject: [PATCH 18/23] Bring back LIGHTHOUSE_CHECKPOINT_SYNC_URL --- .env.sample.holesky | 4 ++-- .env.sample.hoodi | 4 ++-- .env.sample.mainnet | 4 ++-- compose-cl.yml | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/.env.sample.holesky b/.env.sample.holesky index 9bd09af4..833dc580 100644 --- a/.env.sample.holesky +++ b/.env.sample.holesky @@ -43,8 +43,8 @@ COMPOSE_FILE=compose-el.yml:compose-cl.yml:compose-vc.yml:compose-mev.yml:docker # CL beacon node host exposed ports. #CL_PORT_P2P= -# Checkpoint sync url used by lighthouse to fast sync. -CL_CHECKPOINT_SYNC_URL=https://checkpoint-sync.holesky.ethpandaops.io/ +# Lighthouse becon node checkpoint sync URL used by consensus layer to fast sync. +LIGHTHOUSE_CHECKPOINT_SYNC_URL=https://checkpoint-sync.holesky.ethpandaops.io/ # In certain cases, beacon nodes produce blocks with unexpected fee recipients. Setting the Lido execution # layer rewards vault as the suggested fee recipient reduces this risk. diff --git a/.env.sample.hoodi b/.env.sample.hoodi index b9f74711..cb24436e 100644 --- a/.env.sample.hoodi +++ b/.env.sample.hoodi @@ -43,8 +43,8 @@ COMPOSE_FILE=compose-el.yml:compose-cl.yml:compose-vc.yml:compose-mev.yml:docker # CL beacon node host exposed ports. #CL_PORT_P2P= -# Checkpoint sync url used by lighthouse to fast sync. -CL_CHECKPOINT_SYNC_URL=https://checkpoint-sync.hoodi.ethpandaops.io +# Lighthouse becon node checkpoint sync URL used by consensus layer to fast sync. +LIGHTHOUSE_CHECKPOINT_SYNC_URL=https://checkpoint-sync.hoodi.ethpandaops.io # In certain cases, beacon nodes produce blocks with unexpected fee recipients. Setting the Lido execution # layer rewards vault as the suggested fee recipient reduces this risk. diff --git a/.env.sample.mainnet b/.env.sample.mainnet index 3f6009b2..9a188b1f 100644 --- a/.env.sample.mainnet +++ b/.env.sample.mainnet @@ -43,8 +43,8 @@ COMPOSE_FILE=compose-el.yml:compose-cl.yml:compose-vc.yml:compose-mev.yml:docker # CL beacon node host exposed ports. #CL_PORT_P2P= -# Checkpoint sync url used by lighthouse to fast sync. -CL_CHECKPOINT_SYNC_URL=https://mainnet.checkpoint.sigp.io/ +# Lighthouse becon node checkpoint sync URL used by consensus layer to fast sync. +LIGHTHOUSE_CHECKPOINT_SYNC_URL=https://mainnet.checkpoint.sigp.io/ # In certain cases, beacon nodes produce blocks with unexpected fee recipients. Setting the Lido execution # layer rewards vault as the suggested fee recipient reduces this risk. diff --git a/compose-cl.yml b/compose-cl.yml index 00d57315..baa9288b 100644 --- a/compose-cl.yml +++ b/compose-cl.yml @@ -26,7 +26,7 @@ services: - --metrics - --metrics-port=5054 - --metrics-address=0.0.0.0 - - --checkpoint-sync-url=${CL_CHECKPOINT_SYNC_URL} + - --checkpoint-sync-url=${LIGHTHOUSE_CHECKPOINT_SYNC_URL} - --builder-url=http://${MEV}:18550 ports: - ${CL_PORT_P2P:-9000}:9000 # P2P TCP+UDP @@ -51,7 +51,7 @@ services: command: | lighthouse bn --network=${NETWORK} - --checkpoint-sync-url=${CL_CHECKPOINT_SYNC_URL} + --checkpoint-sync-url=${LIGHTHOUSE_CHECKPOINT_SYNC_URL} --checkpoint-sync-url-timeout=600 --execution-endpoint=http://${EL}:8551 --execution-jwt=/opt/jwt/jwt.hex From 327c8cf4d74b449be0b37512dbd546077e302bd1 Mon Sep 17 00:00:00 2001 From: Kaloyan Tanev Date: Tue, 8 Jul 2025 18:25:15 +0200 Subject: [PATCH 19/23] Bring back validator-ejector --- docker-compose.yml | 40 ++++++++++++++++++++-------------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index 238702e7..81b5c293 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -211,26 +211,26 @@ services: # \_/ \__,_|_|_|\__,_|\__,_|\__\___/|_| \___|/ |\___|\___|\__\___/|_| # |__/ - # validator-ejector: - # image: lidofinance/validator-ejector:${VALIDATOR_EJECTOR_VERSION:-1.7.0} - # user: ":" - # networks: [dvnode] - # volumes: - # - ./validator-ejector:/exitmessages - # labels: - # - "promtail-monitored=${EJECTOR_PROMTAIL_MONITORED:-true}" - # restart: unless-stopped - # environment: - # - EXECUTION_NODE=${VE_EXECUTION_NODE_URL:-http://nethermind:8545} - # - CONSENSUS_NODE=${VE_BEACON_NODE_URL:-http://lighthouse:5052} - # - LOCATOR_ADDRESS=${VE_LOCATOR_ADDRESS} - # - STAKING_MODULE_ID=${VE_STAKING_MODULE_ID:-2} - # - OPERATOR_ID=${VE_OPERATOR_ID} - # - ORACLE_ADDRESSES_ALLOWLIST=${VE_ORACLE_ADDRESSES_ALLOWLIST} - # - MESSAGES_LOCATION=/exitmessages - # - RUN_METRICS=true - # - HTTP_PORT=8989 - # - DISABLE_SECURITY_DONT_USE_IN_PRODUCTION=${DISABLE_EJECTOR_SECURITY:-false} + validator-ejector: + image: lidofinance/validator-ejector:${VALIDATOR_EJECTOR_VERSION:-1.7.0} + user: ":" + networks: [dvnode] + volumes: + - ./validator-ejector:/exitmessages + labels: + - "promtail-monitored=${EJECTOR_PROMTAIL_MONITORED:-true}" + restart: unless-stopped + environment: + - EXECUTION_NODE=${VE_EXECUTION_NODE_URL:-http://nethermind:8545} + - CONSENSUS_NODE=${VE_BEACON_NODE_URL:-http://lighthouse:5052} + - LOCATOR_ADDRESS=${VE_LOCATOR_ADDRESS} + - STAKING_MODULE_ID=${VE_STAKING_MODULE_ID:-2} + - OPERATOR_ID=${VE_OPERATOR_ID} + - ORACLE_ADDRESSES_ALLOWLIST=${VE_ORACLE_ADDRESSES_ALLOWLIST} + - MESSAGES_LOCATION=/exitmessages + - RUN_METRICS=true + - HTTP_PORT=8989 + - DISABLE_SECURITY_DONT_USE_IN_PRODUCTION=${DISABLE_EJECTOR_SECURITY:-false} # _ _ _ _ _ _ # | (_) __| | ___ __| |_ __ _____ _(_) |_ From 667232968166af2e1fee38c842e8368c5a1611c2 Mon Sep 17 00:00:00 2001 From: Diogo Santos Date: Thu, 17 Jul 2025 12:56:57 +0100 Subject: [PATCH 20/23] increase grandine max-empty-slots --- compose-cl.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/compose-cl.yml b/compose-cl.yml index baa9288b..452c2185 100644 --- a/compose-cl.yml +++ b/compose-cl.yml @@ -28,6 +28,7 @@ services: - --metrics-address=0.0.0.0 - --checkpoint-sync-url=${LIGHTHOUSE_CHECKPOINT_SYNC_URL} - --builder-url=http://${MEV}:18550 + - --max-empty-slots=4096 ports: - ${CL_PORT_P2P:-9000}:9000 # P2P TCP+UDP volumes: From 47bf41a10b4f8351bac9059bf65c56f65d9e21ea Mon Sep 17 00:00:00 2001 From: Kaloyan Tanev Date: Thu, 14 Aug 2025 12:59:10 +0200 Subject: [PATCH 21/23] Refactor .env clients --- .env.sample.holesky | 18 ++++++++++-------- .env.sample.hoodi | 18 ++++++++++-------- .env.sample.mainnet | 18 ++++++++++-------- 3 files changed, 30 insertions(+), 24 deletions(-) diff --git a/.env.sample.holesky b/.env.sample.holesky index 833dc580..0a9f2a69 100644 --- a/.env.sample.holesky +++ b/.env.sample.holesky @@ -4,18 +4,20 @@ # Overrides network for all the relevant services. NETWORK=holesky -# Execution layer client to be used in a DV setup. -# Available options: nethermind. +# Execution layer client to be used in a DV setup. Uncomment only the desired client. EL=el-nethermind -# Consensus layer client to be used in a DV setup. -# Available options: lighthouse, grandine. + +# Consensus layer client to be used in a DV setup. Uncomment only the desired client. CL=cl-lighthouse -# Validator client to be used in a DV setup. -# Available options: lodestar, nimbus. +#CL=cl-grandine + +# Validator client to be used in a DV setup. Uncomment only the desired client. VC=vc-lodestar -# MEV client to be used in a DV setup. -# Available options: mevboost, commitboost. +#VC=vc-nimbus + +# MEV client to be used in a DV setup. Uncomment only the desired client. MEV=mev-mevboost +#MEV=mev-commitboost # Do not edit. These profiles and files dictate Docker which client types and from where to start for execution, consensus, validator and MEV. # The actual adjustable values are specified above diff --git a/.env.sample.hoodi b/.env.sample.hoodi index cb24436e..546bc250 100644 --- a/.env.sample.hoodi +++ b/.env.sample.hoodi @@ -4,18 +4,20 @@ # Overrides network for all the relevant services. NETWORK=hoodi -# Execution layer client to be used in a DV setup. -# Available options: nethermind. +# Execution layer client to be used in a DV setup. Uncomment only the desired client. EL=el-nethermind -# Consensus layer client to be used in a DV setup. -# Available options: lighthouse, grandine. + +# Consensus layer client to be used in a DV setup. Uncomment only the desired client. CL=cl-lighthouse -# Validator client to be used in a DV setup. -# Available options: lodestar, nimbus. +#CL=cl-grandine + +# Validator client to be used in a DV setup. Uncomment only the desired client. VC=vc-lodestar -# MEV client to be used in a DV setup. -# Available options: mevboost, commitboost. +#VC=vc-nimbus + +# MEV client to be used in a DV setup. Uncomment only the desired client. MEV=mev-mevboost +#MEV=mev-commitboost # Do not edit. These profiles and files dictate Docker which client types and from where to start for execution, consensus, validator and MEV. # The actual adjustable values are specified above diff --git a/.env.sample.mainnet b/.env.sample.mainnet index 9a188b1f..74ec7ed0 100644 --- a/.env.sample.mainnet +++ b/.env.sample.mainnet @@ -4,18 +4,20 @@ # Overrides network for all the relevant services. NETWORK=mainnet -# Execution layer client to be used in a DV setup. -# Available options: nethermind. +# Execution layer client to be used in a DV setup. Uncomment only the desired client. EL=el-nethermind -# Consensus layer client to be used in a DV setup. -# Available options: lighthouse, grandine. + +# Consensus layer client to be used in a DV setup. Uncomment only the desired client. CL=cl-lighthouse -# Validator client to be used in a DV setup. -# Available options: lodestar, nimbus. +#CL=cl-grandine + +# Validator client to be used in a DV setup. Uncomment only the desired client. VC=vc-lodestar -# MEV client to be used in a DV setup. -# Available options: mevboost, commitboost. +#VC=vc-nimbus + +# MEV client to be used in a DV setup. Uncomment only the desired client. MEV=mev-mevboost +#MEV=mev-commitboost # Do not edit. These profiles and files dictate Docker which client types and from where to start for execution, consensus, validator and MEV. # The actual adjustable values are specified above From 7822f4b397d76dd9a17ba67c4308a912c230d1d4 Mon Sep 17 00:00:00 2001 From: Kaloyan Tanev Date: Tue, 19 Aug 2025 12:02:40 +0300 Subject: [PATCH 22/23] Add prysm and teku VCs --- .env.sample.holesky | 12 ++++++++++ .env.sample.hoodi | 12 ++++++++++ .env.sample.mainnet | 12 ++++++++++ compose-vc.yml | 53 ++++++++++++++++++++++++++++++++++++++++++++ prysm/run.sh | 54 +++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 143 insertions(+) create mode 100755 prysm/run.sh diff --git a/.env.sample.holesky b/.env.sample.holesky index 0a9f2a69..c271be4a 100644 --- a/.env.sample.holesky +++ b/.env.sample.holesky @@ -14,6 +14,8 @@ CL=cl-lighthouse # Validator client to be used in a DV setup. Uncomment only the desired client. VC=vc-lodestar #VC=vc-nimbus +#VC=vc-prysm +#VC=vc-teku # MEV client to be used in a DV setup. Uncomment only the desired client. MEV=mev-mevboost @@ -75,6 +77,14 @@ LIDO_EXECUTION_LAYER_REWARDS_ADDRESS=0xE73a3602b99f1f913e72F8bdcBC235e206794Ac8 # See available tags https://hub.docker.com/r/statusim/nimbus-validator-client/tags #VC_NIMBUS_VERSION= +# Prysm validator client docker container image version. +# See available tags https://hub.docker.com/r/offchainlabs/prysm-validator/tags +#VC_PRYSM_VERSION= + +# Teku validator client docker container image version. +# See available tags https://hub.docker.com/r/consensys/teku/tags +#VC_TEKU_VERSION= + ######### MEV Config ######### # MEV timeouts. @@ -215,6 +225,8 @@ LIDODVEXIT_EXIT_EPOCH=256 #CHARON_PROMTAIL_MONITORED=false #VC_LODESTAR_PROMTAIL_MONITORED=false #VC_NIMBUS_PROMTAIL_MONITORED=false +#VC_PRYSM_PROMTAIL_MONITORED=false +#VC_TEKU_PROMTAIL_MONITORED=false #MEV_MEV_BOOST_PROMTAIL_MONITORED=false #MEV_COMMIT_BOOST_PROMTAIL_MONITORED=false #EJECTOR_PROMTAIL_MONITORED=false diff --git a/.env.sample.hoodi b/.env.sample.hoodi index 546bc250..c94667a7 100644 --- a/.env.sample.hoodi +++ b/.env.sample.hoodi @@ -14,6 +14,8 @@ CL=cl-lighthouse # Validator client to be used in a DV setup. Uncomment only the desired client. VC=vc-lodestar #VC=vc-nimbus +#VC=vc-prysm +#VC=vc-teku # MEV client to be used in a DV setup. Uncomment only the desired client. MEV=mev-mevboost @@ -75,6 +77,14 @@ LIDO_EXECUTION_LAYER_REWARDS_ADDRESS=0xE73a3602b99f1f913e72F8bdcBC235e206794Ac8 # See available tags https://hub.docker.com/r/statusim/nimbus-validator-client/tags #VC_NIMBUS_VERSION= +# Prysm validator client docker container image version. +# See available tags https://hub.docker.com/r/offchainlabs/prysm-validator/tags +#VC_PRYSM_VERSION= + +# Teku validator client docker container image version. +# See available tags https://hub.docker.com/r/consensys/teku/tags +#VC_TEKU_VERSION= + ######### MEV Config ######### # MEV timeouts. @@ -215,6 +225,8 @@ LIDODVEXIT_EXIT_EPOCH=256 #CHARON_PROMTAIL_MONITORED=false #VC_LODESTAR_PROMTAIL_MONITORED=false #VC_NIMBUS_PROMTAIL_MONITORED=false +#VC_PRYSM_PROMTAIL_MONITORED=false +#VC_TEKU_PROMTAIL_MONITORED=false #MEV_MEV_BOOST_PROMTAIL_MONITORED=false #MEV_COMMIT_BOOST_PROMTAIL_MONITORED=false #EJECTOR_PROMTAIL_MONITORED=false diff --git a/.env.sample.mainnet b/.env.sample.mainnet index 74ec7ed0..b23f735d 100644 --- a/.env.sample.mainnet +++ b/.env.sample.mainnet @@ -14,6 +14,8 @@ CL=cl-lighthouse # Validator client to be used in a DV setup. Uncomment only the desired client. VC=vc-lodestar #VC=vc-nimbus +#VC=vc-prysm +#VC=vc-teku # MEV client to be used in a DV setup. Uncomment only the desired client. MEV=mev-mevboost @@ -75,6 +77,14 @@ LIDO_EXECUTION_LAYER_REWARDS_ADDRESS=0x388C818CA8B9251b393131C08a736A67ccB19297 # See available tags https://hub.docker.com/r/statusim/nimbus-validator-client/tags #VC_NIMBUS_VERSION= +# Prysm validator client docker container image version. +# See available tags https://hub.docker.com/r/offchainlabs/prysm-validator/tags +#VC_PRYSM_VERSION= + +# Teku validator client docker container image version. +# See available tags https://hub.docker.com/r/consensys/teku/tags +#VC_TEKU_VERSION= + ######### MEV Config ######### # MEV timeouts. @@ -215,6 +225,8 @@ LIDODVEXIT_EXIT_EPOCH=194048 #CHARON_PROMTAIL_MONITORED=false #VC_LODESTAR_PROMTAIL_MONITORED=false #VC_NIMBUS_PROMTAIL_MONITORED=false +#VC_PRYSM_PROMTAIL_MONITORED=false +#VC_TEKU_PROMTAIL_MONITORED=false #MEV_MEV_BOOST_PROMTAIL_MONITORED=false #MEV_COMMIT_BOOST_PROMTAIL_MONITORED=false #EJECTOR_PROMTAIL_MONITORED=false diff --git a/compose-vc.yml b/compose-vc.yml index 6154bbf1..bf7c4d41 100644 --- a/compose-vc.yml +++ b/compose-vc.yml @@ -51,3 +51,56 @@ services: - .charon/validator_keys:/home/validator_keys - ./data/vc-nimbus:/home/user/data restart: unless-stopped + + # _ __ _ __ _ _ ___ _ __ ___ + # | '_ \| '__| | | / __| '_ ` _ \ + # | |_) | | | |_| \__ \ | | | | | + # | .__/|_| \__, |___/_| |_| |_| + # |_| |___/ + + vc-prysm: + profiles: [vc-prysm] + image: offchainlabs/prysm-validator:${VC_PRYSM_VERSION:-v6.0.4} + platform: "linux/amd64" + depends_on: [charon] + networks: [dvnode] + entrypoint: /home/prysm/run.sh + environment: + BEACON_NODE_ADDRESS: http://charon:3600 + NETWORK: ${NETWORK} + labels: + - "promtail-monitored=${VC_PRYSM_PROMTAIL_MONITORED:-true}" + volumes: + - ./prysm/run.sh:/home/prysm/run.sh + - ./data/vc-prysm:/data/vc + - .charon/validator_keys:/home/charon/validator_keys + restart: unless-stopped + + # _ _ + # | |_ ___| | ___ _ + # | __/ _ \ |/ / | | | + # | || __/ <| |_| | + # \__\___|_|\_\\__,_| + + vc-teku: + profiles: [vc-teku] + image: consensys/teku:${VC_TEKU_VERSION:-25.7.1} + command: | + validator-client + --beacon-node-api-endpoint "http://charon:3600" + --network="${NETWORK}" + --data-base-path=/home/data + --validator-keys="/opt/charon/validator_keys:/opt/charon/validator_keys" + --validators-keystore-locking-enabled false + --validators-external-signer-slashing-protection-enabled true + --validators-builder-registration-default-enabled true + --validators-proposer-default-fee-recipient "0x0000000000000000000000000000000000000000" + --Xobol-dvt-integration-enabled true + depends_on: [charon] + networks: [dvnode] + labels: + - "promtail-monitored=${VC_TEKU_PROMTAIL_MONITORED:-true}" + volumes: + - .charon/validator_keys:/opt/charon/validator_keys + - ./data/vc-teku:/home/data + restart: unless-stopped diff --git a/prysm/run.sh b/prysm/run.sh new file mode 100755 index 00000000..a8d6c1d9 --- /dev/null +++ b/prysm/run.sh @@ -0,0 +1,54 @@ +#!/usr/bin/env bash + +WALLET_DIR="/prysm-wallet" + +# Cleanup wallet directories if already exists. +rm -rf $WALLET_DIR +mkdir $WALLET_DIR + +# Refer: https://docs.prylabs.network/docs/install/install-with-script#step-5-run-a-validator-using-prysm +# Running a prysm VC involves two steps which need to run in order: +# 1. Import validator keys in a prysm wallet account. +# 2. Run the validator client. +WALLET_PASSWORD="prysm-validator-secret" +echo $WALLET_PASSWORD > /wallet-password.txt +/app/cmd/validator/validator wallet create --accept-terms-of-use --wallet-password-file=wallet-password.txt --keymanager-kind=direct --wallet-dir="$WALLET_DIR" + +tmpkeys="/home/validator_keys/tmpkeys" +mkdir -p ${tmpkeys} + +for f in /home/charon/validator_keys/keystore-*.json; do + echo "Importing key ${f}" + + # Copy keystore file to tmpkeys/ directory. + cp "${f}" "${tmpkeys}" + + # Import keystore with password. + /app/cmd/validator/validator accounts import \ + --accept-terms-of-use=true \ + --wallet-dir="$WALLET_DIR" \ + --keys-dir="${tmpkeys}" \ + --account-password-file="${f//json/txt}" \ + --wallet-password-file=wallet-password.txt + + # Delete tmpkeys/keystore-*.json file that was copied before. + filename="$(basename ${f})" + rm "${tmpkeys}/${filename}" +done + +# Delete the tmpkeys/ directory since it's no longer needed. +rm -r ${tmpkeys} + +echo "Imported all keys" + +# Now run prysm VC +/app/cmd/validator/validator --wallet-dir="$WALLET_DIR" \ + --accept-terms-of-use=true \ + --datadir="/data/vc" \ + --wallet-password-file="/wallet-password.txt" \ + --enable-beacon-rest-api \ + --beacon-rest-api-provider="${BEACON_NODE_ADDRESS}" \ + --beacon-rpc-provider="${BEACON_NODE_ADDRESS}" \ + --beacon-rpc-gateway-provider="${BEACON_NODE_ADDRESS}" \ + --"${NETWORK}" \ + --distributed From 7fe202d874ef797efadbd75385cdb23263ccf9af Mon Sep 17 00:00:00 2001 From: Kaloyan Tanev Date: Tue, 19 Aug 2025 12:04:07 +0300 Subject: [PATCH 23/23] Remove deprecated version field in docker composes --- compose-debug.yml | 14 ++++++-------- relay/docker-compose.yml | 2 -- 2 files changed, 6 insertions(+), 10 deletions(-) diff --git a/compose-debug.yml b/compose-debug.yml index 8eaee4b7..3d872855 100644 --- a/compose-debug.yml +++ b/compose-debug.yml @@ -1,5 +1,3 @@ -version: "3.8" - # Docker-compose file to aid developers in debugging. This is not required for "normal" users. See the "Docker power users" section of the README.md for more info. # Override any defaults specified by `${FOO:-bar}` in `.env` with `FOO=qux`. @@ -11,13 +9,13 @@ services: command: --raw_cgroup_prefix_whitelist=/docker/ --disable_metrics=hugetlb privileged: true volumes: - - '/:/rootfs:ro' - - '/var/run:/var/run:ro' - - '/sys:/sys:ro' - - '/var/lib/docker/:/var/lib/docker:ro' - - '/dev/disk/:/dev/disk:ro' + - "/:/rootfs:ro" + - "/var/run:/var/run:ro" + - "/sys:/sys:ro" + - "/var/lib/docker/:/var/lib/docker:ro" + - "/dev/disk/:/dev/disk:ro" devices: - - '/dev/kmsg:/dev/kmsg' + - "/dev/kmsg:/dev/kmsg" restart: unless-stopped node-exporter: diff --git a/relay/docker-compose.yml b/relay/docker-compose.yml index e948a02a..369177ea 100644 --- a/relay/docker-compose.yml +++ b/relay/docker-compose.yml @@ -1,5 +1,3 @@ -version: "3.8" - services: # _ _ _ # _ _ ___ | | __ _ | || |