From 47cd41c45dd2e96fe4ccb38d617042bd29a0e960 Mon Sep 17 00:00:00 2001 From: thedevbirb Date: Fri, 17 Jan 2025 10:28:20 +0100 Subject: [PATCH 01/16] fix(holesky): cb config --- testnets/holesky/commit-boost/cb-bolt-config.toml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/testnets/holesky/commit-boost/cb-bolt-config.toml b/testnets/holesky/commit-boost/cb-bolt-config.toml index 7a64cd83..b0a6d39c 100644 --- a/testnets/holesky/commit-boost/cb-bolt-config.toml +++ b/testnets/holesky/commit-boost/cb-bolt-config.toml @@ -7,10 +7,13 @@ chain = "Holesky" # Configuration for the PBS module [pbs] # Docker image to use for the PBS module. -docker_image = "ghcr.io/chainbound/bolt-boost:v0.3.0-alpha" +docker_image = "ghcr.io/chainbound/bolt-boost:v0.4.0-alpha" # Whether to enable the PBS module to request signatures from the Signer module (not used in the default PBS image) # OPTIONAL, DEFAULT: false with_signer = false +# Host to receive BuilderAPI calls from beacon node +# OPTIONAL, DEFAULT: 127.0.0.1 +host = "0.0.0.0" # Bolt: Port to receive BuilderAPI calls from the bolt-sidecar. port = 18551 # Whether to forward `status` calls to relays or skip and return 200 @@ -74,7 +77,7 @@ id = "BOLT_SIDECAR" # Type of the module. Supported values: commit, events type = "commit" # Docker image of the module -docker_image = "ghcr.io/chainbound/bolt-sidecar:v0.3.0-alpha" +docker_image = "ghcr.io/chainbound/bolt-sidecar:v0.4.0-alpha" [modules.env] # The bolt sidecar uses its own env file so we don't need to add stuff here. From 0ee14910cf5ce10a3e17b6adeebf4950aa2284d5 Mon Sep 17 00:00:00 2001 From: Jonas Bostoen Date: Fri, 17 Jan 2025 10:45:33 +0100 Subject: [PATCH 02/16] docs(holesky): cb config port --- testnets/holesky/commit-boost/cb-bolt-config.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/testnets/holesky/commit-boost/cb-bolt-config.toml b/testnets/holesky/commit-boost/cb-bolt-config.toml index b0a6d39c..62ab4931 100644 --- a/testnets/holesky/commit-boost/cb-bolt-config.toml +++ b/testnets/holesky/commit-boost/cb-bolt-config.toml @@ -12,7 +12,7 @@ docker_image = "ghcr.io/chainbound/bolt-boost:v0.4.0-alpha" # OPTIONAL, DEFAULT: false with_signer = false # Host to receive BuilderAPI calls from beacon node -# OPTIONAL, DEFAULT: 127.0.0.1 +# OPTIONAL, DEFAULT: 0.0.0.0 host = "0.0.0.0" # Bolt: Port to receive BuilderAPI calls from the bolt-sidecar. port = 18551 From 5089ef7ac1d4335247cffbab729b7ba613e57d40 Mon Sep 17 00:00:00 2001 From: Jonas Bostoen Date: Fri, 17 Jan 2025 10:54:10 +0100 Subject: [PATCH 03/16] feat(holesky): update cb config --- .../holesky/commit-boost/cb-bolt-config.toml | 18 +++-- .../commit-boost/cb.docker-compose.yml | 77 ++++++++++++++----- testnets/holesky/commit-boost/targets.json | 4 +- 3 files changed, 69 insertions(+), 30 deletions(-) diff --git a/testnets/holesky/commit-boost/cb-bolt-config.toml b/testnets/holesky/commit-boost/cb-bolt-config.toml index 62ab4931..ddbd1fd0 100644 --- a/testnets/holesky/commit-boost/cb-bolt-config.toml +++ b/testnets/holesky/commit-boost/cb-bolt-config.toml @@ -35,14 +35,11 @@ skip_sigverify = false # Minimum bid in ETH that will be accepted from `get_header` # OPTIONAL, DEFAULT: 0.0 min_bid_eth = 0.0 -# List of URLs of relay monitors to send registrations to -# OPTIONAL -relay_monitors = [] # How late in milliseconds in the slot is "late". This impacts the `get_header` requests, by shortening timeouts for `get_header` calls to # relays and make sure a header is returned within this deadline. If the request from the CL comes later in the slot, then fetching headers is skipped # to force local building and miniminzing the risk of missed slots. See also the timing games section below # OPTIONAL, DEFAULT: 2000 -late_in_slot_time_ms = 1000 +late_in_slot_time_ms = 2000 # The PBS module needs one or more [[relays]] as defined below. [[relays]] @@ -65,6 +62,16 @@ url = "https://0x821f2a65afb70e7f2e820a925a9b4c80a159620582c1766b1b09729fec178b1 # OPTIONAL # headers = { X-MyCustomHeader = "MyCustomValue" } +# NOTE: the signer module is currently not used. +[signer.local] +# Docker image to use for the Signer module. +# OPTIONAL, DEFAULT: ghcr.io/commit-boost/signer:latest +docker_image = "ghcr.io/commit-boost/signer:latest" + +# NOTE: this is unused. +[signer.local.loader] +key_path = "./keys.json" + # Commit-Boost can optionally run "modules" which extend the capabilities of the sidecar. # Currently, two types of modules are supported: # - "commit": modules which request commitment signatures from the validator keys @@ -79,9 +86,6 @@ type = "commit" # Docker image of the module docker_image = "ghcr.io/chainbound/bolt-sidecar:v0.4.0-alpha" -[modules.env] -# The bolt sidecar uses its own env file so we don't need to add stuff here. - # Configuration for how metrics should be collected and scraped # OPTIONAL, skip metrics collection if missing [metrics] diff --git a/testnets/holesky/commit-boost/cb.docker-compose.yml b/testnets/holesky/commit-boost/cb.docker-compose.yml index acbb1960..148cd6f3 100644 --- a/testnets/holesky/commit-boost/cb.docker-compose.yml +++ b/testnets/holesky/commit-boost/cb.docker-compose.yml @@ -1,38 +1,73 @@ services: cb_bolt_sidecar: - image: ghcr.io/chainbound/bolt-sidecar:v0.3.1-alpha + image: ghcr.io/chainbound/bolt-sidecar:v0.4.0-alpha container_name: cb_bolt_sidecar - env_file: - - bolt-sidecar.env environment: - CB_MODULE_ID: BOLT - CB_CONFIG: /cb-bolt-config.toml - ports: - - 8017:8017 - - 18550:18550 - networks: - - monitoring_network + CB_MODULE_ID: BOLT_SIDECAR + CB_CONFIG: /cb-config.toml + CB_SIGNER_JWT: ${CB_JWT_BOLT_SIDECAR} + CB_SIGNER_URL: http://cb_signer:20000 + CB_METRICS_PORT: 10000 + CB_LOGS_DIR: /var/logs/commit-boost volumes: + - ./cb-bolt-config.toml:/cb-config.toml:ro + - ./logs/bolt_sidecar:/var/logs/commit-boost - ./delegations.json:/etc/delegations.json:ro + networks: + - signer_network + - monitoring_network + depends_on: + cb_signer: + condition: service_healthy cb_pbs: - image: ghcr.io/chainbound/bolt-boost:v0.3.0-alpha + healthcheck: + test: curl -f http://localhost:18551/eth/v1/builder/status + interval: 30s + timeout: 5s + retries: 3 + start_period: 5s + image: ghcr.io/chainbound/bolt-boost:v0.4.0-alpha container_name: cb_pbs ports: - - 18551:18551 + - 0.0.0.0:18551:18551 environment: - CB_CONFIG: /cb-bolt-config.toml + CB_CONFIG: /cb-config.toml CB_METRICS_PORT: 10000 CB_LOGS_DIR: /var/logs/commit-boost + CB_PBS_ENDPOINT: 0.0.0.0:18551 volumes: - - ./cb-bolt-config.toml:/cb-bolt-config.toml:ro + - ./cb-bolt-config.toml:/cb-config.toml:ro - ./logs/pbs:/var/logs/commit-boost networks: - monitoring_network + cb_signer: + healthcheck: + test: curl -f http://localhost:20000/status + interval: 30s + timeout: 5s + retries: 3 + start_period: 5s + image: ghcr.io/commit-boost/signer:latest + container_name: cb_signer + environment: + CB_CONFIG: /cb-config.toml + CB_JWTS: ${CB_JWTS} + CB_SIGNER_PORT: 20000 + CB_METRICS_PORT: 10000 + CB_LOGS_DIR: /var/logs/commit-boost + CB_SIGNER_LOADER_FILE: /keys.json + volumes: + - ./cb-bolt-config.toml:/cb-config.toml:ro + - ./keys.json:/keys.json:ro + - ./logs/signer:/var/logs/commit-boost + networks: + - signer_network + - monitoring_network cb_prometheus: - image: prom/prometheus:latest + image: prom/prometheus:v3.0.0 container_name: cb_prometheus ports: - - 9090:9090 + - 127.0.0.1:9090:9090 volumes: - ./cb-prometheus.yml:/etc/prometheus/prometheus.yml - ./targets.json:/etc/prometheus/targets.json @@ -40,15 +75,13 @@ services: networks: - monitoring_network cb_grafana: - image: grafana/grafana:latest + image: grafana/grafana:11.3.1 container_name: cb_grafana ports: - - 3000:3000 + - 127.0.0.1:3000:3000 environment: - GF_SECURITY_ADMIN_PASSWORD=admin volumes: - - ./grafana/dashboards:/etc/grafana/provisioning/dashboards - - ./grafana/datasources:/etc/grafana/provisioning/datasources - grafana-data:/var/lib/grafana networks: - monitoring_network @@ -60,7 +93,7 @@ services: image: gcr.io/cadvisor/cadvisor container_name: cb_cadvisor ports: - - 8080:8080 + - 127.0.0.1:8080:8080 volumes: - /var/run/docker.sock:/var/run/docker.sock:ro - /sys:/sys:ro @@ -75,3 +108,5 @@ volumes: networks: monitoring_network: driver: bridge + signer_network: + driver: bridge diff --git a/testnets/holesky/commit-boost/targets.json b/testnets/holesky/commit-boost/targets.json index 6eb23eea..0bc47581 100644 --- a/testnets/holesky/commit-boost/targets.json +++ b/testnets/holesky/commit-boost/targets.json @@ -1,10 +1,10 @@ [ { "targets": [ - "cb_bolt:10000" + "cb_bolt_sidecar:10000" ], "labels": { - "job": "cb_bolt" + "job": "cb_bolt_sidecar" } }, { From db107efc5a4f736483c1e22d1f8ca6a480ff84bb Mon Sep 17 00:00:00 2001 From: nicolas <48695862+merklefruit@users.noreply.github.com> Date: Fri, 17 Jan 2025 12:40:02 +0100 Subject: [PATCH 04/16] fix: configs for cb to work on dev box --- testnets/holesky/commit-boost/bolt-sidecar.env.example | 4 ++-- testnets/holesky/commit-boost/cb.docker-compose.yml | 5 ++--- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/testnets/holesky/commit-boost/bolt-sidecar.env.example b/testnets/holesky/commit-boost/bolt-sidecar.env.example index ac4cae3c..d09d6f24 100644 --- a/testnets/holesky/commit-boost/bolt-sidecar.env.example +++ b/testnets/holesky/commit-boost/bolt-sidecar.env.example @@ -36,9 +36,9 @@ BOLT_SIDECAR_CONSTRAINTS_API_URL="http://cb_pbs:18551" BOLT_SIDECAR_FEE_RECIPIENT= # Secret ECDSA key to sign commitment messages with. The ETH address derived from the public key -# associated to it must be then used when registering the operator in the `BoltManager` contract. +# associated to it must be then used when registering the operator in the bolt contracts. # SET THIS 👇 -BOLT_SIDECAR_COMMITMENT_PRIVATE_KEY= +BOLT_SIDECAR_OPERATOR_PRIVATE_KEY= # Secret BLS key to sign fallback payloads with. This should be a BLS secret of 32 bytes. # You can generate one with the `bolt generate bls` command. diff --git a/testnets/holesky/commit-boost/cb.docker-compose.yml b/testnets/holesky/commit-boost/cb.docker-compose.yml index 148cd6f3..0e4a7ac3 100644 --- a/testnets/holesky/commit-boost/cb.docker-compose.yml +++ b/testnets/holesky/commit-boost/cb.docker-compose.yml @@ -2,6 +2,8 @@ services: cb_bolt_sidecar: image: ghcr.io/chainbound/bolt-sidecar:v0.4.0-alpha container_name: cb_bolt_sidecar + env_file: + - bolt-sidecar.env environment: CB_MODULE_ID: BOLT_SIDECAR CB_CONFIG: /cb-config.toml @@ -16,9 +18,6 @@ services: networks: - signer_network - monitoring_network - depends_on: - cb_signer: - condition: service_healthy cb_pbs: healthcheck: test: curl -f http://localhost:18551/eth/v1/builder/status From d2884defc7d619b335cc265fd89a2d0e943330d2 Mon Sep 17 00:00:00 2001 From: nicolas <48695862+merklefruit@users.noreply.github.com> Date: Fri, 17 Jan 2025 12:49:02 +0100 Subject: [PATCH 05/16] fix: update cb configs --- .../commit-boost/bolt-sidecar.env.example | 30 +++++++++++-------- .../holesky/commit-boost/cb-bolt-config.toml | 2 ++ .../commit-boost/cb.docker-compose.yml | 2 +- 3 files changed, 21 insertions(+), 13 deletions(-) diff --git a/testnets/holesky/commit-boost/bolt-sidecar.env.example b/testnets/holesky/commit-boost/bolt-sidecar.env.example index d09d6f24..e4679a10 100644 --- a/testnets/holesky/commit-boost/bolt-sidecar.env.example +++ b/testnets/holesky/commit-boost/bolt-sidecar.env.example @@ -1,6 +1,17 @@ # Port to listen on for incoming JSON-RPC requests of the Commitments API. # (This is where users will send preconfirmation requests to) -BOLT_SIDECAR_PORT=8017 +# If you are using the Firewall RPCs option, this variable MUST remain empty. +BOLT_SIDECAR_PORT= + +# Comma-separated list of allowed RPC addresses to subscribe via websocket to receive +# incoming commitments requests. +# This is incompatible with the `BOLT_SIDECAR_RPC_URL` option. +BOLT_SIDECAR_FIREWALL_RPCS="wss://rpc-holesky.bolt.chainbound.io/api/v1/firewall_stream" + +# Secret ECDSA key to sign commitment messages with. The ETH address derived from the public key +# associated to it must be then used when registering the operator in the bolt contracts. +# SET THIS 👇 +BOLT_SIDECAR_OPERATOR_PRIVATE_KEY= # Execution client API URL # CHANGE THIS ACCORDING TO YOUR NODE SETUP 👇 @@ -15,12 +26,6 @@ BOLT_SIDECAR_BEACON_API_URL="http://127.0.0.1:5052" # CHANGE THIS ACCORDING TO YOUR NODE SETUP 👇 BOLT_SIDECAR_ENGINE_API_URL="http://127.0.0.1:8551" -# Execution client Engine Secret. -# This is the secret token token to authenticate calls to the engine API. It can be -# either be a hex-encoded string or a file path to a file containing the secret. -# SET THIS ACCORDING TO YOUR NODE SETUP 👇 -BOLT_SIDECAR_ENGINE_JWT_HEX= - # The port from which the Bolt sidecar will receive Builder-API requests from the Beacon client. # E.g. on Lighthouse this is set by the `--builder http://localhost:18550` flag. # YOU DON'T HAVE TO CHANGE THIS @@ -31,15 +36,16 @@ BOLT_SIDECAR_CONSTRAINTS_PROXY_PORT=18550 # YOU DON'T HAVE TO CHANGE THIS BOLT_SIDECAR_CONSTRAINTS_API_URL="http://cb_pbs:18551" +# Execution client Engine Secret. +# This is the secret token token to authenticate calls to the engine API. It can be +# either be a hex-encoded string or a file path to a file containing the secret. +# SET THIS ACCORDING TO YOUR NODE SETUP 👇 +BOLT_SIDECAR_ENGINE_JWT_HEX= + # The fee recipient address for fallback blocks (this is the address that will receive the fees). # SET THIS ACCORDING TO YOUR VALIDATOR SETUP 👇 BOLT_SIDECAR_FEE_RECIPIENT= -# Secret ECDSA key to sign commitment messages with. The ETH address derived from the public key -# associated to it must be then used when registering the operator in the bolt contracts. -# SET THIS 👇 -BOLT_SIDECAR_OPERATOR_PRIVATE_KEY= - # Secret BLS key to sign fallback payloads with. This should be a BLS secret of 32 bytes. # You can generate one with the `bolt generate bls` command. # YOU DON'T HAVE TO CHANGE THIS diff --git a/testnets/holesky/commit-boost/cb-bolt-config.toml b/testnets/holesky/commit-boost/cb-bolt-config.toml index ddbd1fd0..9686a26e 100644 --- a/testnets/holesky/commit-boost/cb-bolt-config.toml +++ b/testnets/holesky/commit-boost/cb-bolt-config.toml @@ -85,6 +85,8 @@ id = "BOLT_SIDECAR" type = "commit" # Docker image of the module docker_image = "ghcr.io/chainbound/bolt-sidecar:v0.4.0-alpha" +# Environment file for the module +env_file = "./bolt-sidecar.env" # Configuration for how metrics should be collected and scraped # OPTIONAL, skip metrics collection if missing diff --git a/testnets/holesky/commit-boost/cb.docker-compose.yml b/testnets/holesky/commit-boost/cb.docker-compose.yml index 0e4a7ac3..ef7f03f3 100644 --- a/testnets/holesky/commit-boost/cb.docker-compose.yml +++ b/testnets/holesky/commit-boost/cb.docker-compose.yml @@ -3,7 +3,7 @@ services: image: ghcr.io/chainbound/bolt-sidecar:v0.4.0-alpha container_name: cb_bolt_sidecar env_file: - - bolt-sidecar.env + - ./bolt-sidecar.env environment: CB_MODULE_ID: BOLT_SIDECAR CB_CONFIG: /cb-config.toml From cd1718c57021caba31708ce7f74d86a54454d8aa Mon Sep 17 00:00:00 2001 From: nicolas <48695862+merklefruit@users.noreply.github.com> Date: Fri, 17 Jan 2025 12:53:43 +0100 Subject: [PATCH 06/16] chore: update .env.example --- bolt-sidecar/.env.example | 33 ++++++++++++++----- .../commit-boost/bolt-sidecar.env.example | 4 +-- 2 files changed, 26 insertions(+), 11 deletions(-) diff --git a/bolt-sidecar/.env.example b/bolt-sidecar/.env.example index 431509fe..e9170eee 100644 --- a/bolt-sidecar/.env.example +++ b/bolt-sidecar/.env.example @@ -1,57 +1,71 @@ -# Ethereum Node Connections + PBS URLs +# --- Ethereum Node Connections + PBS URLs --- # Port to listen on for incoming JSON-RPC requests of the Commitments API. This # port should be open on your firewall in order to receive external requests! +# If you are using the BOLT_SIDECAR_FIREWALL_RPCS option, this variable MUST remain empty. BOLT_SIDECAR_PORT= + # Comma-separated list of allowed RPC addresses to subscribe via websocket to receive # incoming commitments requests. -# This is incompatible with the `BOLT_SIDECAR_RPC_URL` option. +# This is incompatible with the `BOLT_SIDECAR_PORT` option. BOLT_SIDECAR_FIREWALL_RPCS="wss://rpc-holesky.bolt.chainbound.io/api/v1/firewall_stream" + # Secret ECDSA key to sign commitment messages with. The public key associated # to it must be then used when registering the operator in bolt # contracts BOLT_SIDECAR_OPERATOR_PRIVATE_KEY= + # Execution client API URL BOLT_SIDECAR_EXECUTION_API_URL="http://localhost:8545" + # URL for the beacon client BOLT_SIDECAR_BEACON_API_URL="http://localhost:5052" + # Execution client Engine API URL. This is needed for fallback block building # and must be a synced Geth node BOLT_SIDECAR_ENGINE_API_URL="http://localhost:8551" + # The port from which the Bolt sidecar will receive Builder-API requests from the Beacon client BOLT_SIDECAR_CONSTRAINTS_PROXY_PORT=18550 + # URL to forward the constraints produced by the Bolt sidecar to a server # supporting the Constraints API, such as an MEV-Boost fork BOLT_SIDECAR_CONSTRAINTS_API_URL="http://localhost:18551" + # The JWT secret token to authenticate calls to the engine API. It can be # either be a hex-encoded string or a file path to a file containing the # hex-encoded secret. BOLT_SIDECAR_ENGINE_JWT_HEX= + # The fee recipient address for fallback blocks BOLT_SIDECAR_FEE_RECIPIENT= + # Secret BLS key to sign fallback payloads with BOLT_SIDECAR_BUILDER_PRIVATE_KEY= -# Commitments limits +# --- Commitments limits --- + # Max committed gas per slot BOLT_SIDECAR_MAX_COMMITTED_GAS_PER_SLOT=10_000_000 + # Min profit per gas to accept a commitment BOLT_SIDECAR_MIN_PROFIT=2000000000 # 2 Gwei = 2 * 10^9 wei -# Chain configuration +# --- Chain configuration --- + # Chain on which the sidecar is running BOLT_SIDECAR_CHAIN="holesky" -# The slot time duration in seconds. If provided, it overrides the default for -# the selected [chain] -BOLT_SIDECAR_SLOT_TIME=12 + # The deadline in the slot at which the sidecar will stop accepting new # commitments for the next block (parsed as milliseconds) BOLT_SIDECAR_COMMITMENT_DEADLINE=8000 + # Toggle to enable unsafe lookahead for the sidecar. If `true`, commitments requests will be # validated against a two-epoch lookahead window. BOLT_SIDECAR_ENABLE_UNSAFE_LOOKAHEAD=false -# Signing options. +# --- Signing options --- + BOLT_SIDECAR_CONSTRAINT_PRIVATE_KEY= BOLT_SIDECAR_CB_SIGNER_URL= BOLT_SIDECAR_CB_JWT_HEX= @@ -60,6 +74,7 @@ BOLT_SIDECAR_KEYSTORE_SECRETS_PATH= BOLT_SIDECAR_KEYSTORE_PATH= BOLT_SIDECAR_DELEGATIONS_PATH= -# Telemetry and Metrics +# --- Telemetry and Metrics options --- + BOLT_SIDECAR_METRICS_PORT=9091 BOLT_SIDECAR_DISABLE_METRICS=false diff --git a/testnets/holesky/commit-boost/bolt-sidecar.env.example b/testnets/holesky/commit-boost/bolt-sidecar.env.example index e4679a10..d9e2f25d 100644 --- a/testnets/holesky/commit-boost/bolt-sidecar.env.example +++ b/testnets/holesky/commit-boost/bolt-sidecar.env.example @@ -1,11 +1,11 @@ # Port to listen on for incoming JSON-RPC requests of the Commitments API. # (This is where users will send preconfirmation requests to) -# If you are using the Firewall RPCs option, this variable MUST remain empty. +# If you are using the BOLT_SIDECAR_FIREWALL_RPCS option, this variable MUST remain empty. BOLT_SIDECAR_PORT= # Comma-separated list of allowed RPC addresses to subscribe via websocket to receive # incoming commitments requests. -# This is incompatible with the `BOLT_SIDECAR_RPC_URL` option. +# This is incompatible with the `BOLT_SIDECAR_PORT` option. BOLT_SIDECAR_FIREWALL_RPCS="wss://rpc-holesky.bolt.chainbound.io/api/v1/firewall_stream" # Secret ECDSA key to sign commitment messages with. The ETH address derived from the public key From cbc3acd8fc31a38eea654cf37d813fdcf4e4357b Mon Sep 17 00:00:00 2001 From: nicolas <48695862+merklefruit@users.noreply.github.com> Date: Fri, 17 Jan 2025 14:21:09 +0100 Subject: [PATCH 07/16] chore: update preset.env.example --- .../sidecar-delegations-preset.env.example | 47 ++++++++++++++----- 1 file changed, 36 insertions(+), 11 deletions(-) diff --git a/testnets/holesky/presets/sidecar-delegations-preset.env.example b/testnets/holesky/presets/sidecar-delegations-preset.env.example index 10fb3d17..e51e7dcd 100644 --- a/testnets/holesky/presets/sidecar-delegations-preset.env.example +++ b/testnets/holesky/presets/sidecar-delegations-preset.env.example @@ -1,53 +1,78 @@ -# Ethereum Node Connections + PBS URLs +# --- Ethereum Node Connections + PBS URLs --- + +# Port to listen on for incoming JSON-RPC requests of the Commitments API. This +# port should be open on your firewall in order to receive external requests! +# If you are using the BOLT_SIDECAR_FIREWALL_RPCS option, this variable MUST remain empty. +BOLT_SIDECAR_PORT=8017 # Comma-separated list of allowed RPC addresses to subscribe via websocket to receive # incoming commitments requests. -# This is incompatible with the `BOLT_SIDECAR_RPC_URL` option. +# This is incompatible with the `BOLT_SIDECAR_PORT` option. BOLT_SIDECAR_FIREWALL_RPCS="wss://rpc-holesky.bolt.chainbound.io/api/v1/firewall_stream" + # Secret ECDSA key to sign commitment messages with. The public key associated # to it must be then used when registering the operator in bolt contracts BOLT_SIDECAR_OPERATOR_PRIVATE_KEY= + # Execution client API URL -BOLT_SIDECAR_EXECUTION_API_URL="http://host.docker.internal:8545" +BOLT_SIDECAR_EXECUTION_API_URL="http://172.56.0.1:8545" + # URL for the beacon client -BOLT_SIDECAR_BEACON_API_URL="http://host.docker.internal:5052" +BOLT_SIDECAR_BEACON_API_URL="http://172.56.0.1:5052" + # Execution client Engine API URL. This is needed for fallback block building # and must be a synced Geth node -BOLT_SIDECAR_ENGINE_API_URL="http://host.docker.internal:8551" +BOLT_SIDECAR_ENGINE_API_URL="http://172.56.0.1:8551" + # The port from which the Bolt sidecar will receive Builder-API requests from the Beacon client BOLT_SIDECAR_CONSTRAINTS_PROXY_PORT=18550 + # URL to forward the constraints produced by the Bolt sidecar to a server # supporting the Constraints API, such as an MEV-Boost fork BOLT_SIDECAR_CONSTRAINTS_API_URL="http://bolt-mev-boost-holesky:18551" + # The JWT secret token to authenticate calls to the engine API. It can be # either be a hex-encoded string or a file path to a file containing the # hex-encoded secret. BOLT_SIDECAR_ENGINE_JWT_HEX= + # The fee recipient address for locally-built fallback blocks. It should be the same as the # one set for your validators. BOLT_SIDECAR_FEE_RECIPIENT= -# Commitments limits +# Secret BLS key to sign fallback payloads with +BOLT_SIDECAR_BUILDER_PRIVATE_KEY= + +# --- Commitments limits --- + # Max committed gas per slot -BOLT_SIDECAR_MAX_COMMITTED_GAS=10_000_000 +BOLT_SIDECAR_MAX_COMMITTED_GAS_PER_SLOT=10_000_000 + # Min profit per gas to accept a commitment BOLT_SIDECAR_MIN_PROFIT=2000000000 # 2 Gwei = 2 * 10^9 wei -# Chain configuration +# --- Chain configuration --- + # Chain on which the sidecar is running BOLT_SIDECAR_CHAIN="holesky" + # The deadline in the slot at which the sidecar will stop accepting new # commitments for the next block (parsed as milliseconds) BOLT_SIDECAR_COMMITMENT_DEADLINE=8000 + # Enable a two-epoch lookahead by enabling unsafe lookahead option BOLT_SIDECAR_ENABLE_UNSAFE_LOOKAHEAD=true -# Signing options. +# --- Signing options --- + # The path to the delegations file BOLT_SIDECAR_DELEGATIONS_PATH= + # The private key of the account for which delegations have been made. BOLT_SIDECAR_CONSTRAINT_PRIVATE_KEY= -# Telemetry and Metrics -BOLT_SIDECAR_METRICS_PORT=9091 # Changing this requires also changing the `target.json` file +# --- Telemetry and Metrics --- + +# Changing this requires also changing the `target.json` file +BOLT_SIDECAR_METRICS_PORT=9091 BOLT_SIDECAR_DISABLE_METRICS=false From e3faebc9d3cb94ff0976c6d1cb40c9b6f2ad0153 Mon Sep 17 00:00:00 2001 From: nicolas <48695862+merklefruit@users.noreply.github.com> Date: Fri, 17 Jan 2025 14:30:00 +0100 Subject: [PATCH 08/16] fix: use correct interface for exposing ports to the host --- testnets/holesky/commit-boost/cb.docker-compose.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/testnets/holesky/commit-boost/cb.docker-compose.yml b/testnets/holesky/commit-boost/cb.docker-compose.yml index ef7f03f3..02e139a6 100644 --- a/testnets/holesky/commit-boost/cb.docker-compose.yml +++ b/testnets/holesky/commit-boost/cb.docker-compose.yml @@ -28,7 +28,7 @@ services: image: ghcr.io/chainbound/bolt-boost:v0.4.0-alpha container_name: cb_pbs ports: - - 0.0.0.0:18551:18551 + - 18551:18551 environment: CB_CONFIG: /cb-config.toml CB_METRICS_PORT: 10000 @@ -66,7 +66,7 @@ services: image: prom/prometheus:v3.0.0 container_name: cb_prometheus ports: - - 127.0.0.1:9090:9090 + - 9090:9090 volumes: - ./cb-prometheus.yml:/etc/prometheus/prometheus.yml - ./targets.json:/etc/prometheus/targets.json @@ -77,7 +77,7 @@ services: image: grafana/grafana:11.3.1 container_name: cb_grafana ports: - - 127.0.0.1:3000:3000 + - 3000:3000 environment: - GF_SECURITY_ADMIN_PASSWORD=admin volumes: @@ -92,7 +92,7 @@ services: image: gcr.io/cadvisor/cadvisor container_name: cb_cadvisor ports: - - 127.0.0.1:8080:8080 + - 8080:8080 volumes: - /var/run/docker.sock:/var/run/docker.sock:ro - /sys:/sys:ro From 7ab2d9ac02db9ed7b105640ed9000f6e7dfae4b9 Mon Sep 17 00:00:00 2001 From: nicolas <48695862+merklefruit@users.noreply.github.com> Date: Fri, 17 Jan 2025 14:30:14 +0100 Subject: [PATCH 09/16] fix: use correct sidecar metrics port: 10000 --- testnets/holesky/commit-boost/bolt-sidecar.env.example | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/testnets/holesky/commit-boost/bolt-sidecar.env.example b/testnets/holesky/commit-boost/bolt-sidecar.env.example index d9e2f25d..c392d46d 100644 --- a/testnets/holesky/commit-boost/bolt-sidecar.env.example +++ b/testnets/holesky/commit-boost/bolt-sidecar.env.example @@ -111,5 +111,5 @@ BOLT_SIDECAR_DELEGATIONS_PATH="/etc/delegations.json" # Telemetry and Metrics # Changing this requires also changing the `target.json` file -BOLT_SIDECAR_METRICS_PORT=9091 +BOLT_SIDECAR_METRICS_PORT=10000 BOLT_SIDECAR_DISABLE_METRICS=false From 15aa817596693ced3501ed25052546ad19161825 Mon Sep 17 00:00:00 2001 From: nicolas <48695862+merklefruit@users.noreply.github.com> Date: Fri, 17 Jan 2025 14:40:58 +0100 Subject: [PATCH 10/16] revert fix: use correct interface in cb config --- testnets/holesky/commit-boost/cb.docker-compose.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/testnets/holesky/commit-boost/cb.docker-compose.yml b/testnets/holesky/commit-boost/cb.docker-compose.yml index 02e139a6..7b48e43e 100644 --- a/testnets/holesky/commit-boost/cb.docker-compose.yml +++ b/testnets/holesky/commit-boost/cb.docker-compose.yml @@ -28,7 +28,7 @@ services: image: ghcr.io/chainbound/bolt-boost:v0.4.0-alpha container_name: cb_pbs ports: - - 18551:18551 + - 0.0.0.0:18551:18551 environment: CB_CONFIG: /cb-config.toml CB_METRICS_PORT: 10000 @@ -66,7 +66,7 @@ services: image: prom/prometheus:v3.0.0 container_name: cb_prometheus ports: - - 9090:9090 + - 0.0.0.0:9090:9090 volumes: - ./cb-prometheus.yml:/etc/prometheus/prometheus.yml - ./targets.json:/etc/prometheus/targets.json @@ -77,7 +77,7 @@ services: image: grafana/grafana:11.3.1 container_name: cb_grafana ports: - - 3000:3000 + - 0.0.0.0:3000:3000 environment: - GF_SECURITY_ADMIN_PASSWORD=admin volumes: @@ -92,7 +92,7 @@ services: image: gcr.io/cadvisor/cadvisor container_name: cb_cadvisor ports: - - 8080:8080 + - 0.0.0.0:8080:8080 volumes: - /var/run/docker.sock:/var/run/docker.sock:ro - /sys:/sys:ro From 82b0fb2a4e15c90f03a31e1a3eb1701c674c891e Mon Sep 17 00:00:00 2001 From: nicolas <48695862+merklefruit@users.noreply.github.com> Date: Fri, 17 Jan 2025 14:42:10 +0100 Subject: [PATCH 11/16] chore: add host to cb toml config --- testnets/holesky/commit-boost/cb-bolt-config.toml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/testnets/holesky/commit-boost/cb-bolt-config.toml b/testnets/holesky/commit-boost/cb-bolt-config.toml index 9686a26e..25cba9b9 100644 --- a/testnets/holesky/commit-boost/cb-bolt-config.toml +++ b/testnets/holesky/commit-boost/cb-bolt-config.toml @@ -91,6 +91,9 @@ env_file = "./bolt-sidecar.env" # Configuration for how metrics should be collected and scraped # OPTIONAL, skip metrics collection if missing [metrics] +# Host for prometheus, grafana, and cadvisor +# OPTIONAL, DEFAULT: 127.0.0.1 +host = "0.0.0.0" # Path to a `prometheus.yml` file to use in Prometheus. If using a custom config file, be sure to add a # file discovery section as follows: # ```yml From 7a20fc578c88fd462036d18a63b7718e5125f2a6 Mon Sep 17 00:00:00 2001 From: nicolas <48695862+merklefruit@users.noreply.github.com> Date: Fri, 17 Jan 2025 14:57:16 +0100 Subject: [PATCH 12/16] fix: align MAX_COMMITTED_GAS variable across env files --- bolt-sidecar/.env.example | 2 +- testnets/holesky/commit-boost/bolt-sidecar.env.example | 2 +- testnets/holesky/presets/sidecar-delegations-preset.env.example | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/bolt-sidecar/.env.example b/bolt-sidecar/.env.example index e9170eee..608f5a8b 100644 --- a/bolt-sidecar/.env.example +++ b/bolt-sidecar/.env.example @@ -46,7 +46,7 @@ BOLT_SIDECAR_BUILDER_PRIVATE_KEY= # --- Commitments limits --- # Max committed gas per slot -BOLT_SIDECAR_MAX_COMMITTED_GAS_PER_SLOT=10_000_000 +BOLT_SIDECAR_MAX_COMMITTED_GAS=10_000_000 # Min profit per gas to accept a commitment BOLT_SIDECAR_MIN_PROFIT=2000000000 # 2 Gwei = 2 * 10^9 wei diff --git a/testnets/holesky/commit-boost/bolt-sidecar.env.example b/testnets/holesky/commit-boost/bolt-sidecar.env.example index c392d46d..43aaf92b 100644 --- a/testnets/holesky/commit-boost/bolt-sidecar.env.example +++ b/testnets/holesky/commit-boost/bolt-sidecar.env.example @@ -58,7 +58,7 @@ BOLT_SIDECAR_BUILDER_PRIVATE_KEY=0c824d40ad3545b4973d1d491d7e8f318536b3aad11609e # Commitments limits # Max committed gas per slot # YOU CAN CHANGE THIS TO YOUR LIKING 👇 -BOLT_SIDECAR_MAX_COMMITTED_GAS_PER_SLOT=10000000 +BOLT_SIDECAR_MAX_COMMITTED_GAS=10000000 # Min profit per gas to accept a commitment # YOU CAN CHANGE THIS TO YOUR LIKING 👇 diff --git a/testnets/holesky/presets/sidecar-delegations-preset.env.example b/testnets/holesky/presets/sidecar-delegations-preset.env.example index e51e7dcd..958e6e38 100644 --- a/testnets/holesky/presets/sidecar-delegations-preset.env.example +++ b/testnets/holesky/presets/sidecar-delegations-preset.env.example @@ -46,7 +46,7 @@ BOLT_SIDECAR_BUILDER_PRIVATE_KEY= # --- Commitments limits --- # Max committed gas per slot -BOLT_SIDECAR_MAX_COMMITTED_GAS_PER_SLOT=10_000_000 +BOLT_SIDECAR_MAX_COMMITTED_GAS=10_000_000 # Min profit per gas to accept a commitment BOLT_SIDECAR_MIN_PROFIT=2000000000 # 2 Gwei = 2 * 10^9 wei From 827daad7241fac3fbd0b444332f280baab5b3958 Mon Sep 17 00:00:00 2001 From: thedevbirb Date: Fri, 17 Jan 2025 15:01:42 +0100 Subject: [PATCH 13/16] fix(holesky): preset --- .../presets/sidecar-delegations-preset.env.example | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/testnets/holesky/presets/sidecar-delegations-preset.env.example b/testnets/holesky/presets/sidecar-delegations-preset.env.example index 958e6e38..54ffb4ac 100644 --- a/testnets/holesky/presets/sidecar-delegations-preset.env.example +++ b/testnets/holesky/presets/sidecar-delegations-preset.env.example @@ -1,10 +1,5 @@ # --- Ethereum Node Connections + PBS URLs --- -# Port to listen on for incoming JSON-RPC requests of the Commitments API. This -# port should be open on your firewall in order to receive external requests! -# If you are using the BOLT_SIDECAR_FIREWALL_RPCS option, this variable MUST remain empty. -BOLT_SIDECAR_PORT=8017 - # Comma-separated list of allowed RPC addresses to subscribe via websocket to receive # incoming commitments requests. # This is incompatible with the `BOLT_SIDECAR_PORT` option. @@ -15,14 +10,14 @@ BOLT_SIDECAR_FIREWALL_RPCS="wss://rpc-holesky.bolt.chainbound.io/api/v1/firewall BOLT_SIDECAR_OPERATOR_PRIVATE_KEY= # Execution client API URL -BOLT_SIDECAR_EXECUTION_API_URL="http://172.56.0.1:8545" +BOLT_SIDECAR_EXECUTION_API_URL="http://host.docker.internal:8545" # URL for the beacon client -BOLT_SIDECAR_BEACON_API_URL="http://172.56.0.1:5052" +BOLT_SIDECAR_BEACON_API_URL="http://host.docker.internal:5052" # Execution client Engine API URL. This is needed for fallback block building # and must be a synced Geth node -BOLT_SIDECAR_ENGINE_API_URL="http://172.56.0.1:8551" +BOLT_SIDECAR_ENGINE_API_URL="http://host.docker.internal:8551" # The port from which the Bolt sidecar will receive Builder-API requests from the Beacon client BOLT_SIDECAR_CONSTRAINTS_PROXY_PORT=18550 From 54a7f390b5b1039a4868822b58dcaaffc8c4d1bc Mon Sep 17 00:00:00 2001 From: Jonas Bostoen Date: Fri, 17 Jan 2025 15:03:21 +0100 Subject: [PATCH 14/16] chore(testnets): bump sidecar version --- testnets/holesky/docker-compose.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/testnets/holesky/docker-compose.yml b/testnets/holesky/docker-compose.yml index ab411c1e..76cbf705 100644 --- a/testnets/holesky/docker-compose.yml +++ b/testnets/holesky/docker-compose.yml @@ -1,6 +1,6 @@ services: bolt-sidecar-holesky: - image: ghcr.io/chainbound/bolt-sidecar:v0.3.1-alpha + image: ghcr.io/chainbound/bolt-sidecar:v0.4.0-alpha container_name: bolt-sidecar-holesky restart: unless-stopped ports: From 174f1d0efe4fd38185bc2be5ab23646909700003 Mon Sep 17 00:00:00 2001 From: Jonas Bostoen Date: Fri, 17 Jan 2025 15:05:31 +0100 Subject: [PATCH 15/16] docs: update bolt-boost version in README --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index ce26e70b..aa517cab 100644 --- a/README.md +++ b/README.md @@ -190,7 +190,7 @@ mev_params: # Bolt-specific images: # Adding the `bolt_boost_image` will start the devnet with Bolt-Boost # instead of MEV-Boost - bolt_boost_image: ghcr.io/chainbound/bolt-boost:0.1.0 + bolt_boost_image: ghcr.io/chainbound/bolt-boost:v0.4.0-alpha # ... the rest of the `mev_params` ``` From 431770b563d325e547ae50b8d8c40cfb3700d7d7 Mon Sep 17 00:00:00 2001 From: Jonas Bostoen Date: Fri, 17 Jan 2025 15:07:52 +0100 Subject: [PATCH 16/16] feat: update bolt-boost + bolt-sidecar Cargo version --- bolt-boost/Cargo.lock | 2 +- bolt-boost/Cargo.toml | 9 ++------- bolt-sidecar/Cargo.lock | 2 +- bolt-sidecar/Cargo.toml | 2 +- 4 files changed, 5 insertions(+), 10 deletions(-) diff --git a/bolt-boost/Cargo.lock b/bolt-boost/Cargo.lock index 77ea621c..5ec066ce 100644 --- a/bolt-boost/Cargo.lock +++ b/bolt-boost/Cargo.lock @@ -1266,7 +1266,7 @@ dependencies = [ [[package]] name = "bolt-boost" -version = "0.3.0-alpha" +version = "0.4.0-alpha" dependencies = [ "alloy", "alloy-rlp", diff --git a/bolt-boost/Cargo.toml b/bolt-boost/Cargo.toml index 71d0cff5..b894d06b 100644 --- a/bolt-boost/Cargo.toml +++ b/bolt-boost/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "bolt-boost" -version = "0.3.0-alpha" +version = "0.4.0-alpha" edition = "2021" [profile.release] @@ -34,12 +34,7 @@ ethereum_ssz = "0.8.2" ethereum_ssz_derive = "0.8.1" # alloy -alloy = { version = "0.8.3", features = [ - "signer-local", - "provider-trace-api", - "rpc-types-beacon", - "rpc-types-engine", -] } +alloy = { version = "0.8.3", features = ["signer-local", "provider-trace-api", "rpc-types-beacon", "rpc-types-engine"] } alloy-rlp = "0.3.10" # commit-boost diff --git a/bolt-sidecar/Cargo.lock b/bolt-sidecar/Cargo.lock index 2bcd2999..21304a39 100644 --- a/bolt-sidecar/Cargo.lock +++ b/bolt-sidecar/Cargo.lock @@ -2093,7 +2093,7 @@ dependencies = [ [[package]] name = "bolt-sidecar" -version = "0.4.0-alpha.rc1" +version = "0.4.0-alpha" dependencies = [ "account_utils", "alloy 0.9.2", diff --git a/bolt-sidecar/Cargo.toml b/bolt-sidecar/Cargo.toml index ef79212b..f24e8238 100644 --- a/bolt-sidecar/Cargo.toml +++ b/bolt-sidecar/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "bolt-sidecar" -version = "0.4.0-alpha.rc1" +version = "0.4.0-alpha" edition = "2021" default-run = "bolt-sidecar"