From 13a869a490fe24af547de581719ee8ceed1b9f6b Mon Sep 17 00:00:00 2001 From: okwn Date: Thu, 21 May 2026 22:27:34 +0000 Subject: [PATCH 1/4] docs: add table of contents to README for faster navigation --- README.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/README.md b/README.md index 2e0b62998..37d146316 100644 --- a/README.md +++ b/README.md @@ -10,6 +10,15 @@ Base is a secure, low-cost, developer-friendly Ethereum L2 built on Optimism's [ [![Twitter Base](https://img.shields.io/twitter/follow/Base?style=social)](https://x.com/Base) [![Farcaster Base](https://img.shields.io/badge/Farcaster_Base-3d8fcc)](https://farcaster.xyz/base) +## Table of Contents +- [Quick Start](#quick-start) +- [Supported Clients](#supported-clients) +- [Requirements](#requirements) +- [Configuration](#configuration) +- [Snapshots](#snapshots) +- [Supported Networks](#supported-networks) +- [Troubleshooting](#troubleshooting) + ## Quick Start 1. Ensure you have an Ethereum L1 full node RPC and beacon endpoint available. From 689f8d3a0390f31d302f3a1fef8f4d232f552f39 Mon Sep 17 00:00:00 2001 From: Hermes Agent Date: Fri, 22 May 2026 06:27:30 +0000 Subject: [PATCH 2/4] fix: add autorestart=true to supervisord and healthcheck to docker-compose Addresses issues #1054 and #1045 - if either the consensus client or execution client crashes, supervisord will now automatically restart it without requiring manual operator intervention. Also adds a healthcheck to the execution service so docker compose ps accurately reflects service health rather than always showing healthy. --- docker-compose.yml | 6 ++++++ supervisord.conf | 2 ++ 2 files changed, 8 insertions(+) diff --git a/docker-compose.yml b/docker-compose.yml index c88064344..4815a87ff 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -15,6 +15,12 @@ services: - ${HOST_DATA_DIR:-./reth-data}:/data env_file: - ${NETWORK_ENV:-.env.mainnet} # Use .env.mainnet by default, override with .env.sepolia for testnet + healthcheck: + test: ["CMD", "curl", "--fail", "-X", "POST", "http://localhost:8545", "--data", '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'] + interval: 30s + timeout: 10s + retries: 3 + start_period: 10s node: build: context: . diff --git a/supervisord.conf b/supervisord.conf index 77d11a461..283060842 100644 --- a/supervisord.conf +++ b/supervisord.conf @@ -9,6 +9,7 @@ stdout_logfile=/dev/fd/1 stdout_logfile_maxbytes=0 redirect_stderr=true stopwaitsecs=300 +autorestart=true [program:execution] command=/app/execution-entrypoint @@ -16,3 +17,4 @@ stdout_logfile=/dev/fd/1 stdout_logfile_maxbytes=0 redirect_stderr=true stopwaitsecs=300 +autorestart=true From f0701d9e5309e26a47c178c035ee90fb85fd83b2 Mon Sep 17 00:00:00 2001 From: Hermes Agent Date: Fri, 22 May 2026 06:29:06 +0000 Subject: [PATCH 3/4] fix: add missing BASE_NODE_RPC_PORT to .env.mainnet and .env.sepolia The consensus service (port 7545) is mapped in docker-compose.yml, but .env.mainnet and .env.sepolia did not define BASE_NODE_RPC_PORT, so the consensus RPC was unreachable from the host on the expected mapped port. Fixes issue #1088. --- .env.mainnet | 1 + .env.sepolia | 1 + 2 files changed, 2 insertions(+) diff --git a/.env.mainnet b/.env.mainnet index ac9e52b66..81f4e11f0 100644 --- a/.env.mainnet +++ b/.env.mainnet @@ -22,6 +22,7 @@ BASE_NODE_L1_TRUST_RPC="false" BASE_NODE_L2_ENGINE_RPC=ws://execution:8551 BASE_NODE_L2_ENGINE_AUTH=/tmp/engine-auth-jwt BASE_NODE_L2_ENGINE_AUTH_RAW=688f5d737bad920bdfb2fc2f488d6b6209eebda1dae949a8de91398d932c517a +BASE_NODE_RPC_PORT=7545 # P2P CONFIGURATION # ----------------- diff --git a/.env.sepolia b/.env.sepolia index e518129fb..b37b45028 100644 --- a/.env.sepolia +++ b/.env.sepolia @@ -22,6 +22,7 @@ BASE_NODE_L1_TRUST_RPC="false" BASE_NODE_L2_ENGINE_RPC=http://execution:8551 BASE_NODE_L2_ENGINE_AUTH=/tmp/engine-auth-jwt BASE_NODE_L2_ENGINE_AUTH_RAW=688f5d737bad920bdfb2fc2f488d6b6209eebda1dae949a8de91398d932c517a +BASE_NODE_RPC_PORT=7545 # P2P CONFIGURATION # ----------------- From 1a283bb9153661e47fbbd67b7a4828e3169f3931 Mon Sep 17 00:00:00 2001 From: Hermes Agent Date: Fri, 22 May 2026 06:30:57 +0000 Subject: [PATCH 4/4] fix: quote variables to prevent word-splitting (SC2086) Quotes unquoted variables in execution-entrypoint to comply with ShellCheck SC2086 (double quoting to prevent word splitting). Fixes: - $ADDITIONAL_ARGS when appending pruning args - $RETH_FB_WEBSOCKET_URL in the Flashblocks conditional --- execution-entrypoint | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/execution-entrypoint b/execution-entrypoint index cea226016..8b57d5f9f 100755 --- a/execution-entrypoint +++ b/execution-entrypoint @@ -23,8 +23,8 @@ fi # Enable Flashblocks support if websocket URL is provided if [[ -n "${RETH_FB_WEBSOCKET_URL:-}" ]]; then - ADDITIONAL_ARGS="$ADDITIONAL_ARGS --websocket-url=$RETH_FB_WEBSOCKET_URL" - echo "Enabling Flashblocks support with endpoint: $RETH_FB_WEBSOCKET_URL" + ADDITIONAL_ARGS="${ADDITIONAL_ARGS} --websocket-url=${RETH_FB_WEBSOCKET_URL}" + echo "Enabling Flashblocks support with endpoint: ${RETH_FB_WEBSOCKET_URL}" else echo "Running in vanilla node mode (no Flashblocks URL provided)" fi @@ -70,7 +70,7 @@ wait_for_pid() { # Add pruning for base if [[ "${RETH_PRUNING_ARGS+x}" = x ]]; then echo "Adding pruning arguments: $RETH_PRUNING_ARGS" - ADDITIONAL_ARGS="$ADDITIONAL_ARGS $RETH_PRUNING_ARGS" + ADDITIONAL_ARGS="${ADDITIONAL_ARGS} ${RETH_PRUNING_ARGS}" fi if [[ "$RETH_HISTORICAL_PROOFS" == "true" && -n "$RETH_HISTORICAL_PROOFS_STORAGE_PATH" ]]; then