diff --git a/.env.sample.holesky b/.env.sample.holesky index 5ba80b45..c271be4a 100644 --- a/.env.sample.holesky +++ b/.env.sample.holesky @@ -4,58 +4,108 @@ # Overrides network for all the relevant services. NETWORK=holesky -# Enables builder api for lodestar VC and charon services. +# 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. Uncomment only the desired client. +CL=cl-lighthouse +#CL=cl-grandine + +# 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 +#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 +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. #BUILDER_API_ENABLED= -#BUILDER_API_RELAY_URL=http://mev-boost:18550 -#BUILDER_SELECTION= -######### Nethermind Config ######### +######### Execution Layer Config ######### + +# 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, e.g. `latest` or `1.25.3`. +# 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 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 +# 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 -######### 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= +# Nimbus validator client docker container image version. +# See available tags https://hub.docker.com/r/statusim/nimbus-validator-client/tags +#VC_NIMBUS_VERSION= -######### Teku Config ######### +# 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, e.g. `latest` or `24.1.1`. +# Teku validator client docker container image version. # See available tags https://hub.docker.com/r/consensys/teku/tags -#TEKU_VERSION= +#VC_TEKU_VERSION= + +######### 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 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= + +# Commit-Boost docker container image version. +#MEV_COMMITBOOST_VERSION= ######### Charon Config ######### -# Charon docker container image version, e.g. `latest` or `v1.0.0`. +# Charon docker container image version. # See available tags https://hub.docker.com/r/obolnetwork/charon/tags. #CHARON_VERSION= @@ -72,10 +122,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. @@ -93,67 +143,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. @@ -164,57 +200,54 @@ 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 +#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 +#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 7d7403c1..c94667a7 100644 --- a/.env.sample.hoodi +++ b/.env.sample.hoodi @@ -4,58 +4,108 @@ # Overrides network for all the relevant services. NETWORK=hoodi -# Enables builder api for lodestar VC and charon services. +# 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. Uncomment only the desired client. +CL=cl-lighthouse +#CL=cl-grandine + +# 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 +#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 +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. #BUILDER_API_ENABLED= -#BUILDER_API_RELAY_URL=http://mev-boost:18550 -#BUILDER_SELECTION= -######### Nethermind Config ######### +######### Execution Layer Config ######### + +# 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, e.g. `latest` or `1.25.3`. +# 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= +######### Consensus Layer Config ######### -######### 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= +# CL beacon node host exposed ports. +#CL_PORT_P2P= -# Lighthouse beacon node host exposed ports -#LIGHTHOUSE_PORT_P2P= - -# Checkpoint sync url used by lighthouse to fast sync. +# 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 +# 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 -######### 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= +# Nimbus validator client docker container image version. +# See available tags https://hub.docker.com/r/statusim/nimbus-validator-client/tags +#VC_NIMBUS_VERSION= -######### Teku Config ######### +# 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, e.g. `latest` or `24.1.1`. +# Teku validator client docker container image version. # See available tags https://hub.docker.com/r/consensys/teku/tags -#TEKU_VERSION= +#VC_TEKU_VERSION= + +######### 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 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= + +# Commit-Boost docker container image version. +#MEV_COMMITBOOST_VERSION= ######### Charon Config ######### -# Charon docker container image version, e.g. `latest` or `v1.0.0`. +# Charon docker container image version. # See available tags https://hub.docker.com/r/obolnetwork/charon/tags. #CHARON_VERSION= @@ -72,10 +122,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. @@ -93,66 +143,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. @@ -163,57 +200,54 @@ 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 +#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 +#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 4641326b..b23f735d 100644 --- a/.env.sample.mainnet +++ b/.env.sample.mainnet @@ -4,52 +4,108 @@ # Overrides network for all the relevant services. NETWORK=mainnet -# Enables builder api for lodestar VC and charon services. +# 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. Uncomment only the desired client. +CL=cl-lighthouse +#CL=cl-grandine + +# 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 +#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 +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. #BUILDER_API_ENABLED= -######### Nethermind Config ######### +######### Execution Layer Config ######### + +# 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, e.g. `latest` or `1.25.3`. +# 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 ######### +######### Consensus Layer 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= - -# 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 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 +# 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 -######### 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= -# Override prometheus metrics port for lodestar validator client. -#LODESTAR_PORT_METRICS= +# Nimbus validator client docker container image version. +# 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. +# 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 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= + +# Commit-Boost docker container image version. +#MEV_COMMITBOOST_VERSION= ######### Charon Config ######### -# Charon docker container image version, e.g. `latest` or `v1.0.0`. +# Charon docker container image version. # See available tags https://hub.docker.com/r/obolnetwork/charon/tags. #CHARON_VERSION= @@ -66,10 +122,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. @@ -87,98 +143,111 @@ 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= + +# Execution node URL. +#VE_EXECUTION_NODE_URL= + +######### Lido lido-dv-exit Config ######### + +# lido-dv-exit container image version. +#LIDO_DV_EXIT_VERSION= -# MEV-Boost docker container image version, e.g. `latest` or `1.6`. -#MEVBOOST_VERSION= -#MEVBOOST_TIMEOUT_GETHEADER= -#MEVBOOST_TIMEOUT_GETPAYLOAD= -#MEVBOOST_TIMEOUT_REGVAL= +# lido-dv-exit beacon node endpoint. +#LIDO_DV_EXIT_BEACON_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 +# 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 +#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 +#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/.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..30fa65b9 --- /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" \ No newline at end of file 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-cl.yml b/compose-cl.yml new file mode 100644 index 00000000..452c2185 --- /dev/null +++ b/compose-cl.yml @@ -0,0 +1,74 @@ +# 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 + labels: + - "promtail-monitored=${CL_GRANDINE_PROMTAIL_MONITORED:-true}" + command: + - --data-dir=/root/.grandine + - --eth1-rpc-urls=http://${EL}:8551 + - --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-url=http://${MEV}:18550 + - --max-empty-slots=4096 + ports: + - ${CL_PORT_P2P:-9000}:9000 # P2P TCP+UDP + volumes: + - ./data/cl-grandine:/root/.grandine + - ./jwt:/jwt:ro + networks: [dvnode] + + # _ _ _ _ _ + # | (_) __ _| |__ | |_| |__ ___ _ _ ___ ___ + # | | |/ _` | '_ \| __| '_ \ / _ \| | | / __|/ _ \ + # | | | (_| | | | | |_| | | | (_) | |_| \__ \ __/ + # |_|_|\__, |_| |_|\__|_| |_|\___/ \__,_|___/\___| + # |___/ + + cl-lighthouse: + profiles: [cl-lighthouse] + image: sigp/lighthouse:${LIGHTHOUSE_VERSION:-v7.0.1} + restart: unless-stopped + labels: + - "promtail-monitored=${CL_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}: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} + ports: + - ${CL_PORT_P2P:-9000}:9000 # P2P TCP+UDP + volumes: + - ./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-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/compose-el.yml b/compose-el.yml new file mode 100644 index 00000000..c3cf8c1d --- /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:${EL_NETHERMIND_VERSION:-1.32.2} + restart: unless-stopped + ports: + - ${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=${EL_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-mev.yml b/compose-mev.yml new file mode 100644 index 00000000..b2adb8df --- /dev/null +++ b/compose-mev.yml @@ -0,0 +1,45 @@ +# 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: + # _ _ _ _ + # ___ ___ _ __ ___ _ __ ___ (_) |_ | |__ ___ ___ ___| |_ + # / __/ _ \| '_ ` _ \| '_ ` _ \| | __|____| '_ \ / _ \ / _ \/ __| __| + # | (_| (_) | | | | | | | | | | | | ||_____| |_) | (_) | (_) \__ \ |_ + # \___\___/|_| |_| |_|_| |_| |_|_|\__| |_.__/ \___/ \___/|___/\__| + + 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} + command: | + -${NETWORK} + -loglevel=debug + -addr=0.0.0.0:18550 + -relay-check + -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_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..bf7c4d41 --- /dev/null +++ b/compose-vc.yml @@ -0,0 +1,106 @@ +# 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:${VC_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: ${VC_LODESTAR_BUILDER_SELECTION:-builderalways} + labels: + - "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 # 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 + + # _ __ _ __ _ _ ___ _ __ ___ + # | '_ \| '__| | | / __| '_ ` _ \ + # | |_) | | | |_| \__ \ | | | | | + # | .__/|_| \__, |___/_| |_| |_| + # |_| |___/ + + 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/docker-compose.yml b/docker-compose.yml index 20b7803d..81b5c293 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -8,8 +8,10 @@ services: # | '_ \ / _ \ __| '_ \ / _ \ '__| '_ ` _ \| | '_ \ / _` | # | | | | __/ |_| | | | __/ | | | | | | | | | | | (_| | # |_| |_|\___|\__|_| |_|\___|_| |_| |_| |_|_|_| |_|\__,_| + nethermind: image: nethermind/nethermind:${NETHERMIND_VERSION:-1.32.2} + profiles: [""] restart: unless-stopped ports: - ${NETHERMIND_PORT_P2P:-30303}:30303/tcp # P2P TCP @@ -47,6 +49,7 @@ services: 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 @@ -84,7 +87,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://${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} @@ -121,6 +124,7 @@ services: lodestar: image: chainsafe/lodestar:${LODESTAR_VERSION:-v1.31.0} + profiles: [""] depends_on: [charon] entrypoint: /opt/lodestar/run.sh networks: [dvnode] @@ -142,8 +146,10 @@ services: # | '_ ` _ \ / _ \ \ / /____| '_ \ / _ \ / _ \/ __| __| # | | | | | | __/\ V /_____| |_) | (_) | (_) \__ \ |_ # |_| |_| |_|\___| \_/ |_.__/ \___/ \___/|___/\__| + mev-boost: image: ${MEVBOOST_IMAGE:-flashbots/mev-boost}:${MEVBOOST_VERSION:-1.9} + profiles: [""] command: | -${NETWORK} -loglevel=debug @@ -166,7 +172,7 @@ services: # |___/ prometheus: - image: prom/prometheus:${PROMETHEUS_VERSION:-v2.46.0} + image: prom/prometheus:${PROMETHEUS_VERSION:-v2.53.5} user: ":" networks: [dvnode] volumes: @@ -189,7 +195,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 @@ -231,7 +237,6 @@ services: # | | |/ _` |/ _ \ _____ / _` \ \ / /____ / _ \ \/ / | __| # | | | (_| | (_) |_____| (_| |\ V /_____| __/> <| | |_ # |_|_|\__,_|\___/ \__,_| \_/ \___/_/\_\_|\__| - # lido-dv-exit: image: obolnetwork/lido-dv-exit:${LIDO_DV_EXIT_VERSION:-v0.3.0} 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 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 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: # _ _ _ # _ _ ___ | | __ _ | || |