From 55e5ac48ac8771402602e768721bde21bcb4c141 Mon Sep 17 00:00:00 2001 From: Niran Babalola Date: Wed, 24 Sep 2025 01:01:00 -0500 Subject: [PATCH 01/12] Add a consensus layer for the simulator's reth node --- docker-compose.yml | 17 +++++- docker/.env.playground | 72 ++++++++++++++++++++++++++ docker/build-base-node-image.sh | 91 +++++++++++++++++++++++++++++++++ justfile | 2 +- 4 files changed, 180 insertions(+), 2 deletions(-) create mode 100644 docker/.env.playground create mode 100755 docker/build-base-node-image.sh diff --git a/docker-compose.yml b/docker-compose.yml index cfeeedf..d013f2c 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -89,4 +89,19 @@ services: /usr/bin/mc mb minio/tips; /usr/bin/mc anonymous set public minio/tips; exit 0; - " \ No newline at end of file + " + simulator-cl: + image: base-node-reth + container_name: tips-simulator-cl + ports: + - "18545:8545" # RPC + - "19222:9222" # P2P TCP + - "19222:9222/udp" # P2P UDP + - "17300:7300" # metrics + - "16060:6060" # pprof + command: ["bash", "./op-node-entrypoint"] + volumes: + - ~/.playground/devnet/:/artifacts + - ~/.playground/devnet/rollup.json:/data/rollup.json + env_file: + - ${NETWORK_ENV:-./docker/.env.playground} diff --git a/docker/.env.playground b/docker/.env.playground new file mode 100644 index 0000000..cb2d7fd --- /dev/null +++ b/docker/.env.playground @@ -0,0 +1,72 @@ +# BUILDER PLAYGROUND NODE CONFIGURATION +# ===================================== + +# NETWORK CONFIGURATION +# -------------------- +OP_NODE_NETWORK="" +OP_NODE_ROLLUP_CONFIG=/data/rollup.json + +# BASE SEQUENCER ENDPOINTS +# ----------------------- +RETH_SEQUENCER_HTTP=http://host.docker.internal:8547 +OP_SEQUENCER_HTTP=http://host.docker.internal:8547 +OP_RETH_SEQUENCER_HTTP=http://host.docker.internal:8547 + +# SYNC CONFIGURATION +# ----------------- +OP_NODE_SYNCMODE=execution-layer +OP_NODE_VERIFIER_L1_CONFS=4 +OP_NODE_ROLLUP_LOAD_PROTOCOL_VERSIONS=true + +# [REQUIRED] L1 CONFIGURATION +# -------------------------- +# Replace these values with your L1 (Ethereum) node endpoints +OP_NODE_L1_ETH_RPC=http://host.docker.internal:8545 +OP_NODE_L1_BEACON=http://host.docker.internal:3500 +#OP_NODE_L1_BEACON_ARCHIVER= +#OP_NODE_L1_BEACON_FETCH_ALL_SIDECARS="true" +OP_NODE_L1_RPC_KIND="debug_geth" +OP_NODE_L1_TRUST_RPC="false" + +# ENGINE CONFIGURATION +# ------------------- +OP_NODE_L2_ENGINE_KIND=reth +OP_NODE_L2_ENGINE_RPC=ws://host.docker.internal:8554 +OP_NODE_L2_ENGINE_AUTH=/tmp/jwtsecret +OP_NODE_L2_ENGINE_AUTH_RAW=688f5d737bad920bdfb2fc2f488d6b6209eebda1dae949a8de91398d932c517a + +# P2P CONFIGURATION +# --------------- +#OP_NODE_P2P_AGENT=base +OP_NODE_P2P_LISTEN_IP=0.0.0.0 +OP_NODE_P2P_LISTEN_TCP_PORT=9222 +OP_NODE_P2P_LISTEN_UDP_PORT=9222 +OP_NODE_INTERNAL_IP="true" +OP_NODE_P2P_BOOTNODES=enr:-JS4QLc1tV4yObjbrFTt6WJIPsd3GF-pr4O2tJjXrIC81Q88d8RX1BWDcv9Pr_cVK4wF5-hykWL-VYbZFmV_pVGP4mqGAZl6Al1MgmlkgnY0h29wc3RhY2uCDQCJc2VjcDI1NmsxoQPDfIdJRpVlvvckXkG9FjJotlbcPAkUhgEJGBalxevFwYN0Y3CCIyuDdWRwgiMr + +# RETH CONFIGURATION +# ---------------- +OP_RETH_DISABLE_DISCOVERY="false" +OP_RETH_DISABLE_TX_POOL_GOSSIP="true" +#OP_RETH_OP_NETWORK="base" + +# RPC CONFIGURATION +# --------------- +OP_NODE_RPC_ADDR=0.0.0.0 +OP_NODE_RPC_PORT=8545 + +# LOGGING & MONITORING +# ------------------ +OP_NODE_LOG_LEVEL=info +OP_NODE_LOG_FORMAT="json" +OP_NODE_SNAPSHOT_LOG=/tmp/op-node-snapshot-log +OP_NODE_METRICS_ENABLED="true" +OP_NODE_METRICS_ADDR=0.0.0.0 +OP_NODE_METRICS_PORT="7300" +STATSD_ADDRESS="172.17.0.1" + +# OPTIONAL SETTINGS +# =============== + +# TRUSTED RPC MODE (OPTIONAL - UNCOMMENT TO ENABLE) +# OP_NODE_L1_TRUST_RPC=true diff --git a/docker/build-base-node-image.sh b/docker/build-base-node-image.sh new file mode 100755 index 0000000..1970996 --- /dev/null +++ b/docker/build-base-node-image.sh @@ -0,0 +1,91 @@ +#!/usr/bin/env bash + +set -euo pipefail + +REPO_URL="https://github.com/base/node.git" +DEFAULT_REF="main" + +usage() { + cat <<'EOF' +Usage: build-base-node-image.sh [docker build args...] + +Arguments: + Which execution client to build. Must be one of: geth, reth. + [docker build args] Additional arguments forwarded to docker build. + +Environment variables: + BASE_NODE_REPO Override the git repository to clone. Defaults to https://github.com/base/node.git. + BASE_NODE_REF Git ref (branch, tag, or commit) to checkout after cloning. Defaults to main. + +Examples: + ./build-base-node-image.sh geth + ./build-base-node-image.sh reth --build-arg FOO=bar +EOF +} + +if [[ ${1:-} == "-h" || ${1:-} == "--help" ]]; then + usage + exit 0 +fi + +if [[ $# -lt 1 ]]; then + echo "error: missing required argument" >&2 + usage + exit 1 +fi + +CLIENT=$1 +shift || true + +case "$CLIENT" in + geth|reth) + ;; + *) + echo "error: unsupported client '$CLIENT'; expected 'geth' or 'reth'" >&2 + exit 1 + ;; +esac + +REPO_URL=${BASE_NODE_REPO:-$REPO_URL} +GIT_REF=${BASE_NODE_REF:-$DEFAULT_REF} + +if ! command -v git >/dev/null 2>&1; then + echo "error: git is required but not installed" >&2 + exit 1 +fi + +if ! command -v docker >/dev/null 2>&1; then + echo "error: docker is required but not installed" >&2 + exit 1 +fi + +TMP_DIR=$(mktemp -d 2>/dev/null || mktemp -d -t "base-node") +cleanup() { + rm -rf "$TMP_DIR" +} +trap cleanup EXIT + +echo "Cloning $REPO_URL into $TMP_DIR" >&2 +git clone "$REPO_URL" "$TMP_DIR" + +pushd "$TMP_DIR" >/dev/null + +if [[ -n "$GIT_REF" ]]; then + echo "Checking out ref $GIT_REF" >&2 + git checkout "$GIT_REF" +fi + +IMAGE_NAME="base-node-$CLIENT" +DOCKERFILE_PATH="$CLIENT/Dockerfile" + +if [[ ! -f "$DOCKERFILE_PATH" ]]; then + echo "error: expected Dockerfile at $DOCKERFILE_PATH" >&2 + exit 1 +fi + +echo "Building Docker image '$IMAGE_NAME' using $DOCKERFILE_PATH" >&2 +docker build -t "$IMAGE_NAME" -f "$DOCKERFILE_PATH" "$@" . + +popd >/dev/null + +echo "Successfully built image $IMAGE_NAME" >&2 diff --git a/justfile b/justfile index cc52d89..90f7126 100644 --- a/justfile +++ b/justfile @@ -101,7 +101,7 @@ simulator: cargo run --bin tips-simulator node simulator-playground: - cargo run --bin tips-simulator node --builder.playground --datadir ~/.playground/devnet/tips-simulator + cargo run --bin tips-simulator node --builder.playground --datadir ~/.playground/devnet/tips-simulator --authrpc.port=8554 ui: cd ui && yarn dev From cd8c56784902ba1fbce1c85e939b91d2adebc6ff Mon Sep 17 00:00:00 2001 From: Niran Babalola Date: Wed, 24 Sep 2025 01:16:55 -0500 Subject: [PATCH 02/12] Move the simulator-cl to its own compose file simulator-cl needs to be started after the simulator itself is running, so it can't be in the same docker-compose with the dependencies. --- docker-compose.yml | 15 --------------- docker/{ => simulator}/.env.playground | 0 .../{ => simulator}/build-base-node-image.sh | 0 docker/simulator/docker-compose.yml | 18 ++++++++++++++++++ 4 files changed, 18 insertions(+), 15 deletions(-) rename docker/{ => simulator}/.env.playground (100%) rename docker/{ => simulator}/build-base-node-image.sh (100%) create mode 100644 docker/simulator/docker-compose.yml diff --git a/docker-compose.yml b/docker-compose.yml index d013f2c..c889de8 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -90,18 +90,3 @@ services: /usr/bin/mc anonymous set public minio/tips; exit 0; " - simulator-cl: - image: base-node-reth - container_name: tips-simulator-cl - ports: - - "18545:8545" # RPC - - "19222:9222" # P2P TCP - - "19222:9222/udp" # P2P UDP - - "17300:7300" # metrics - - "16060:6060" # pprof - command: ["bash", "./op-node-entrypoint"] - volumes: - - ~/.playground/devnet/:/artifacts - - ~/.playground/devnet/rollup.json:/data/rollup.json - env_file: - - ${NETWORK_ENV:-./docker/.env.playground} diff --git a/docker/.env.playground b/docker/simulator/.env.playground similarity index 100% rename from docker/.env.playground rename to docker/simulator/.env.playground diff --git a/docker/build-base-node-image.sh b/docker/simulator/build-base-node-image.sh similarity index 100% rename from docker/build-base-node-image.sh rename to docker/simulator/build-base-node-image.sh diff --git a/docker/simulator/docker-compose.yml b/docker/simulator/docker-compose.yml new file mode 100644 index 0000000..decfb7b --- /dev/null +++ b/docker/simulator/docker-compose.yml @@ -0,0 +1,18 @@ +services: + simulator-cl: + image: base-node-reth + container_name: tips-simulator-cl + ports: + - "18545:8545" # RPC + - "19222:9222" # P2P TCP + - "19222:9222/udp" # P2P UDP + - "17300:7300" # metrics + - "16060:6060" # pprof + command: ["bash", "./op-node-entrypoint"] + volumes: + - ~/.playground/devnet/:/artifacts + - ~/.playground/devnet/rollup.json:/data/rollup.json + env_file: + - ${NETWORK_ENV:-.env.playground} + + From e029382d3ec262435108d37d86f380b556441299 Mon Sep 17 00:00:00 2001 From: Niran Babalola Date: Wed, 24 Sep 2025 01:38:55 -0500 Subject: [PATCH 03/12] Initialize tracing --- crates/simulator/src/main.rs | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/crates/simulator/src/main.rs b/crates/simulator/src/main.rs index 7b5e191..560474f 100644 --- a/crates/simulator/src/main.rs +++ b/crates/simulator/src/main.rs @@ -2,10 +2,23 @@ use reth_optimism_cli::commands::Commands; use reth_optimism_node::args::RollupArgs; use tips_simulator::{config::Cli, config::CliExt, ListenersWithWorkers}; use tracing::info; +use tracing_subscriber::{layer::SubscriberExt, util::SubscriberInitExt}; + +fn init_tracing() { + let env_filter = tracing_subscriber::EnvFilter::try_from_default_env() + .unwrap_or_else(|_| tracing_subscriber::EnvFilter::new("info")); + + tracing_subscriber::registry() + .with(env_filter) + .with(tracing_subscriber::fmt::layer()) + .init(); +} fn main() -> eyre::Result<()> { dotenvy::dotenv().ok(); + init_tracing(); + let cli = ::parsed(); let config = match &cli.command { Commands::Node(node) => node.ext.clone(), @@ -25,6 +38,16 @@ fn main() -> eyre::Result<()> { "Starting reth node with both ExEx and mempool event listeners" ); + if let Commands::Node(node_command) = &cli.command { + match node_command.rpc.auth_jwtsecret.as_ref() { + Some(secret_path) => info!( + auth_jwtsecret = %secret_path.display(), + "Auth RPC JWT secret configured" + ), + None => info!("Auth RPC JWT secret not configured"), + } + } + cli.run(|builder, _| async move { // Keep the Base mempool private. let rollup_args = RollupArgs { From defd11e4805f981b7ce1e669d4326b06c9a12413 Mon Sep 17 00:00:00 2001 From: Niran Babalola Date: Wed, 24 Sep 2025 02:14:46 -0500 Subject: [PATCH 04/12] Copy the JWT secret from a mount --- docker/simulator/.env.playground | 1 - docker/simulator/docker-compose.yml | 4 +++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/docker/simulator/.env.playground b/docker/simulator/.env.playground index cb2d7fd..72ae014 100644 --- a/docker/simulator/.env.playground +++ b/docker/simulator/.env.playground @@ -33,7 +33,6 @@ OP_NODE_L1_TRUST_RPC="false" OP_NODE_L2_ENGINE_KIND=reth OP_NODE_L2_ENGINE_RPC=ws://host.docker.internal:8554 OP_NODE_L2_ENGINE_AUTH=/tmp/jwtsecret -OP_NODE_L2_ENGINE_AUTH_RAW=688f5d737bad920bdfb2fc2f488d6b6209eebda1dae949a8de91398d932c517a # P2P CONFIGURATION # --------------- diff --git a/docker/simulator/docker-compose.yml b/docker/simulator/docker-compose.yml index decfb7b..dde64f5 100644 --- a/docker/simulator/docker-compose.yml +++ b/docker/simulator/docker-compose.yml @@ -8,9 +8,11 @@ services: - "19222:9222/udp" # P2P UDP - "17300:7300" # metrics - "16060:6060" # pprof - command: ["bash", "./op-node-entrypoint"] + # As written, op-node-entrypoint must write its own JWT secret to the file system. + command: ["bash", "-c", "OP_NODE_L2_ENGINE_AUTH_RAW=$(cat /data/jwtsecret) exec ./op-node-entrypoint"] volumes: - ~/.playground/devnet/:/artifacts + - ~/.playground/devnet/jwtsecret:/data/jwtsecret - ~/.playground/devnet/rollup.json:/data/rollup.json env_file: - ${NETWORK_ENV:-.env.playground} From 3bac29e3c4096477a4b01692f78947a702aa46a0 Mon Sep 17 00:00:00 2001 From: Niran Babalola Date: Wed, 24 Sep 2025 10:53:52 -0500 Subject: [PATCH 05/12] Populate bootnodes from the logged op-node ENR --- docker/simulator/.env.playground | 2 -- docker/simulator/docker-compose.yml | 9 ++++++++- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/docker/simulator/.env.playground b/docker/simulator/.env.playground index 72ae014..9f31325 100644 --- a/docker/simulator/.env.playground +++ b/docker/simulator/.env.playground @@ -36,12 +36,10 @@ OP_NODE_L2_ENGINE_AUTH=/tmp/jwtsecret # P2P CONFIGURATION # --------------- -#OP_NODE_P2P_AGENT=base OP_NODE_P2P_LISTEN_IP=0.0.0.0 OP_NODE_P2P_LISTEN_TCP_PORT=9222 OP_NODE_P2P_LISTEN_UDP_PORT=9222 OP_NODE_INTERNAL_IP="true" -OP_NODE_P2P_BOOTNODES=enr:-JS4QLc1tV4yObjbrFTt6WJIPsd3GF-pr4O2tJjXrIC81Q88d8RX1BWDcv9Pr_cVK4wF5-hykWL-VYbZFmV_pVGP4mqGAZl6Al1MgmlkgnY0h29wc3RhY2uCDQCJc2VjcDI1NmsxoQPDfIdJRpVlvvckXkG9FjJotlbcPAkUhgEJGBalxevFwYN0Y3CCIyuDdWRwgiMr # RETH CONFIGURATION # ---------------- diff --git a/docker/simulator/docker-compose.yml b/docker/simulator/docker-compose.yml index dde64f5..d13a255 100644 --- a/docker/simulator/docker-compose.yml +++ b/docker/simulator/docker-compose.yml @@ -9,7 +9,14 @@ services: - "17300:7300" # metrics - "16060:6060" # pprof # As written, op-node-entrypoint must write its own JWT secret to the file system. - command: ["bash", "-c", "OP_NODE_L2_ENGINE_AUTH_RAW=$(cat /data/jwtsecret) exec ./op-node-entrypoint"] + command: + - bash + - -c + - | + OP_NODE_L2_ENGINE_AUTH_RAW=$(cat /data/jwtsecret) + OP_NODE_P2P_BOOTNODES=$(grep 'enr=' /artifacts/logs/op-node.log | sed -n 's/.*enr=\([^ ]*\).*/\1/p') + export OP_NODE_L2_ENGINE_AUTH_RAW OP_NODE_P2P_BOOTNODES + exec ./op-node-entrypoint volumes: - ~/.playground/devnet/:/artifacts - ~/.playground/devnet/jwtsecret:/data/jwtsecret From 040343d30093c7dc27205f5311279e8ed7144a48 Mon Sep 17 00:00:00 2001 From: Niran Babalola Date: Wed, 24 Sep 2025 14:24:18 -0500 Subject: [PATCH 06/12] Remove OP_NODE_VERIFIER_L1_CONFS that was forcing proofs for old blocks --- docker/simulator/.env.playground | 8 -------- 1 file changed, 8 deletions(-) diff --git a/docker/simulator/.env.playground b/docker/simulator/.env.playground index 9f31325..98b11cb 100644 --- a/docker/simulator/.env.playground +++ b/docker/simulator/.env.playground @@ -15,7 +15,6 @@ OP_RETH_SEQUENCER_HTTP=http://host.docker.internal:8547 # SYNC CONFIGURATION # ----------------- OP_NODE_SYNCMODE=execution-layer -OP_NODE_VERIFIER_L1_CONFS=4 OP_NODE_ROLLUP_LOAD_PROTOCOL_VERSIONS=true # [REQUIRED] L1 CONFIGURATION @@ -45,7 +44,6 @@ OP_NODE_INTERNAL_IP="true" # ---------------- OP_RETH_DISABLE_DISCOVERY="false" OP_RETH_DISABLE_TX_POOL_GOSSIP="true" -#OP_RETH_OP_NETWORK="base" # RPC CONFIGURATION # --------------- @@ -61,9 +59,3 @@ OP_NODE_METRICS_ENABLED="true" OP_NODE_METRICS_ADDR=0.0.0.0 OP_NODE_METRICS_PORT="7300" STATSD_ADDRESS="172.17.0.1" - -# OPTIONAL SETTINGS -# =============== - -# TRUSTED RPC MODE (OPTIONAL - UNCOMMENT TO ENABLE) -# OP_NODE_L1_TRUST_RPC=true From 4b6134803d1c99920317e838b374ccefa14712e1 Mon Sep 17 00:00:00 2001 From: Niran Babalola Date: Thu, 25 Sep 2025 01:42:22 -0500 Subject: [PATCH 07/12] Make the simulator-cl advertise docker ip/port for builder-playground --- docker/simulator/.env.playground | 9 ++++----- docker/simulator/docker-compose.yml | 15 ++++++++++----- justfile | 2 +- 3 files changed, 15 insertions(+), 11 deletions(-) diff --git a/docker/simulator/.env.playground b/docker/simulator/.env.playground index 98b11cb..9c04c33 100644 --- a/docker/simulator/.env.playground +++ b/docker/simulator/.env.playground @@ -39,11 +39,10 @@ OP_NODE_P2P_LISTEN_IP=0.0.0.0 OP_NODE_P2P_LISTEN_TCP_PORT=9222 OP_NODE_P2P_LISTEN_UDP_PORT=9222 OP_NODE_INTERNAL_IP="true" +OP_NODE_P2P_ADVERTISE_IP=host.docker.internal +OP_NODE_P2P_ADVERTISE_TCP=19222 +OP_NODE_P2P_ADVERTISE_UDP=19222 -# RETH CONFIGURATION -# ---------------- -OP_RETH_DISABLE_DISCOVERY="false" -OP_RETH_DISABLE_TX_POOL_GOSSIP="true" # RPC CONFIGURATION # --------------- @@ -52,7 +51,7 @@ OP_NODE_RPC_PORT=8545 # LOGGING & MONITORING # ------------------ -OP_NODE_LOG_LEVEL=info +OP_NODE_LOG_LEVEL=debug OP_NODE_LOG_FORMAT="json" OP_NODE_SNAPSHOT_LOG=/tmp/op-node-snapshot-log OP_NODE_METRICS_ENABLED="true" diff --git a/docker/simulator/docker-compose.yml b/docker/simulator/docker-compose.yml index d13a255..dea8241 100644 --- a/docker/simulator/docker-compose.yml +++ b/docker/simulator/docker-compose.yml @@ -13,12 +13,17 @@ services: - bash - -c - | - OP_NODE_L2_ENGINE_AUTH_RAW=$(cat /data/jwtsecret) - OP_NODE_P2P_BOOTNODES=$(grep 'enr=' /artifacts/logs/op-node.log | sed -n 's/.*enr=\([^ ]*\).*/\1/p') - export OP_NODE_L2_ENGINE_AUTH_RAW OP_NODE_P2P_BOOTNODES - exec ./op-node-entrypoint + echo "Writing JWT secret to $${OP_NODE_L2_ENGINE_AUTH}" + cat /data/jwtsecret > "$${OP_NODE_L2_ENGINE_AUTH}" + export OP_NODE_P2P_BOOTNODES=$(grep 'enr=' /artifacts/logs/op-node.log | sed -n 's/.*enr=\([^ ]*\).*/\1/p') + eval "OP_NODE_L2_ENGINE_HTTP=\$${OP_NODE_L2_ENGINE_RPC/ws/http}" + until [ "$(curl -s -w '%{http_code}' -o /dev/null "$${OP_NODE_L2_ENGINE_HTTP}")" -eq 401 ]; do + echo "waiting for execution client to be ready" + sleep 5 + done + exec ./op-node volumes: - - ~/.playground/devnet/:/artifacts + - ~/.playground/devnet:/artifacts - ~/.playground/devnet/jwtsecret:/data/jwtsecret - ~/.playground/devnet/rollup.json:/data/rollup.json env_file: diff --git a/justfile b/justfile index 90f7126..9766048 100644 --- a/justfile +++ b/justfile @@ -101,7 +101,7 @@ simulator: cargo run --bin tips-simulator node simulator-playground: - cargo run --bin tips-simulator node --builder.playground --datadir ~/.playground/devnet/tips-simulator --authrpc.port=8554 + RUST_LOG=debug cargo run --bin tips-simulator node --builder.playground --datadir ~/.playground/devnet/tips-simulator --authrpc.port=8554 ui: cd ui && yarn dev From 0e3b4ed60ac141ccacba3461d5c2a5c09185ba21 Mon Sep 17 00:00:00 2001 From: Niran Babalola Date: Fri, 26 Sep 2025 15:39:43 -0500 Subject: [PATCH 08/12] Move simulator-cl into the docker-compose.yml with other dependencies --- docker-compose.yml | 78 +++++++++++++++++++ .../{simulator => }/build-base-node-image.sh | 0 docker/simulator/.env.playground | 60 -------------- docker/simulator/docker-compose.yml | 32 -------- justfile | 16 +++- 5 files changed, 90 insertions(+), 96 deletions(-) rename docker/{simulator => }/build-base-node-image.sh (100%) delete mode 100644 docker/simulator/.env.playground delete mode 100644 docker/simulator/docker-compose.yml diff --git a/docker-compose.yml b/docker-compose.yml index c889de8..fdff0ae 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -90,3 +90,81 @@ services: /usr/bin/mc anonymous set public minio/tips; exit 0; " + + simulator-cl: + image: base-node-reth + container_name: tips-simulator-cl + profiles: + - simulator + ports: + - "18545:8545" # RPC + - "19222:9222" # P2P TCP + - "19222:9222/udp" # P2P UDP + - "17300:7300" # metrics + - "16060:6060" # pprof + command: + - bash + - -c + - | + # builder-playground's op-node generates a new ENR for each run + export OP_NODE_P2P_BOOTNODES=$(grep 'enr=' /artifacts/logs/op-node.log | sed -n 's/.*enr=\([^ ]*\).*/\1/p') + + # Derived from op-node-entrypoint + echo "Writing JWT secret to $${OP_NODE_L2_ENGINE_AUTH}" + cat /data/jwtsecret > "$${OP_NODE_L2_ENGINE_AUTH}" + eval "OP_NODE_L2_ENGINE_HTTP=\$${OP_NODE_L2_ENGINE_RPC/ws/http}" + until [ "$(curl -s -w '%{http_code}' -o /dev/null "$${OP_NODE_L2_ENGINE_HTTP}")" -eq 401 ]; do + echo "waiting for execution client to be ready" + sleep 5 + done + exec ./op-node + volumes: + - ~/.playground/devnet:/artifacts + - ~/.playground/devnet/jwtsecret:/data/jwtsecret + - ~/.playground/devnet/rollup.json:/data/rollup.json + environment: + # NETWORK CONFIGURATION + OP_NODE_NETWORK: "" + OP_NODE_ROLLUP_CONFIG: /data/rollup.json + + # BASE SEQUENCER ENDPOINTS + RETH_SEQUENCER_HTTP: http://host.docker.internal:8547 + OP_SEQUENCER_HTTP: http://host.docker.internal:8547 + OP_RETH_SEQUENCER_HTTP: http://host.docker.internal:8547 + + # SYNC CONFIGURATION + OP_NODE_SYNCMODE: execution-layer + OP_NODE_ROLLUP_LOAD_PROTOCOL_VERSIONS: "true" + + # L1 CONFIGURATION + OP_NODE_L1_ETH_RPC: http://host.docker.internal:8545 + OP_NODE_L1_BEACON: http://host.docker.internal:3500 + OP_NODE_L1_RPC_KIND: debug_geth + OP_NODE_L1_TRUST_RPC: "false" + + # ENGINE CONFIGURATION + OP_NODE_L2_ENGINE_KIND: reth + OP_NODE_L2_ENGINE_RPC: ws://simulator:4444 + OP_NODE_L2_ENGINE_AUTH: /tmp/jwtsecret + + # P2P CONFIGURATION + OP_NODE_P2P_LISTEN_IP: 0.0.0.0 + OP_NODE_P2P_LISTEN_TCP_PORT: "9222" + OP_NODE_P2P_LISTEN_UDP_PORT: "9222" + OP_NODE_INTERNAL_IP: "true" + OP_NODE_P2P_ADVERTISE_IP: host.docker.internal + OP_NODE_P2P_ADVERTISE_TCP: "19222" + OP_NODE_P2P_ADVERTISE_UDP: "19222" + + # RPC CONFIGURATION + OP_NODE_RPC_ADDR: 0.0.0.0 + OP_NODE_RPC_PORT: "8545" + + # LOGGING & MONITORING + OP_NODE_LOG_LEVEL: debug + OP_NODE_LOG_FORMAT: json + OP_NODE_SNAPSHOT_LOG: /tmp/op-node-snapshot-log + OP_NODE_METRICS_ENABLED: "true" + OP_NODE_METRICS_ADDR: 0.0.0.0 + OP_NODE_METRICS_PORT: "7300" + STATSD_ADDRESS: "172.17.0.1" diff --git a/docker/simulator/build-base-node-image.sh b/docker/build-base-node-image.sh similarity index 100% rename from docker/simulator/build-base-node-image.sh rename to docker/build-base-node-image.sh diff --git a/docker/simulator/.env.playground b/docker/simulator/.env.playground deleted file mode 100644 index 9c04c33..0000000 --- a/docker/simulator/.env.playground +++ /dev/null @@ -1,60 +0,0 @@ -# BUILDER PLAYGROUND NODE CONFIGURATION -# ===================================== - -# NETWORK CONFIGURATION -# -------------------- -OP_NODE_NETWORK="" -OP_NODE_ROLLUP_CONFIG=/data/rollup.json - -# BASE SEQUENCER ENDPOINTS -# ----------------------- -RETH_SEQUENCER_HTTP=http://host.docker.internal:8547 -OP_SEQUENCER_HTTP=http://host.docker.internal:8547 -OP_RETH_SEQUENCER_HTTP=http://host.docker.internal:8547 - -# SYNC CONFIGURATION -# ----------------- -OP_NODE_SYNCMODE=execution-layer -OP_NODE_ROLLUP_LOAD_PROTOCOL_VERSIONS=true - -# [REQUIRED] L1 CONFIGURATION -# -------------------------- -# Replace these values with your L1 (Ethereum) node endpoints -OP_NODE_L1_ETH_RPC=http://host.docker.internal:8545 -OP_NODE_L1_BEACON=http://host.docker.internal:3500 -#OP_NODE_L1_BEACON_ARCHIVER= -#OP_NODE_L1_BEACON_FETCH_ALL_SIDECARS="true" -OP_NODE_L1_RPC_KIND="debug_geth" -OP_NODE_L1_TRUST_RPC="false" - -# ENGINE CONFIGURATION -# ------------------- -OP_NODE_L2_ENGINE_KIND=reth -OP_NODE_L2_ENGINE_RPC=ws://host.docker.internal:8554 -OP_NODE_L2_ENGINE_AUTH=/tmp/jwtsecret - -# P2P CONFIGURATION -# --------------- -OP_NODE_P2P_LISTEN_IP=0.0.0.0 -OP_NODE_P2P_LISTEN_TCP_PORT=9222 -OP_NODE_P2P_LISTEN_UDP_PORT=9222 -OP_NODE_INTERNAL_IP="true" -OP_NODE_P2P_ADVERTISE_IP=host.docker.internal -OP_NODE_P2P_ADVERTISE_TCP=19222 -OP_NODE_P2P_ADVERTISE_UDP=19222 - - -# RPC CONFIGURATION -# --------------- -OP_NODE_RPC_ADDR=0.0.0.0 -OP_NODE_RPC_PORT=8545 - -# LOGGING & MONITORING -# ------------------ -OP_NODE_LOG_LEVEL=debug -OP_NODE_LOG_FORMAT="json" -OP_NODE_SNAPSHOT_LOG=/tmp/op-node-snapshot-log -OP_NODE_METRICS_ENABLED="true" -OP_NODE_METRICS_ADDR=0.0.0.0 -OP_NODE_METRICS_PORT="7300" -STATSD_ADDRESS="172.17.0.1" diff --git a/docker/simulator/docker-compose.yml b/docker/simulator/docker-compose.yml deleted file mode 100644 index dea8241..0000000 --- a/docker/simulator/docker-compose.yml +++ /dev/null @@ -1,32 +0,0 @@ -services: - simulator-cl: - image: base-node-reth - container_name: tips-simulator-cl - ports: - - "18545:8545" # RPC - - "19222:9222" # P2P TCP - - "19222:9222/udp" # P2P UDP - - "17300:7300" # metrics - - "16060:6060" # pprof - # As written, op-node-entrypoint must write its own JWT secret to the file system. - command: - - bash - - -c - - | - echo "Writing JWT secret to $${OP_NODE_L2_ENGINE_AUTH}" - cat /data/jwtsecret > "$${OP_NODE_L2_ENGINE_AUTH}" - export OP_NODE_P2P_BOOTNODES=$(grep 'enr=' /artifacts/logs/op-node.log | sed -n 's/.*enr=\([^ ]*\).*/\1/p') - eval "OP_NODE_L2_ENGINE_HTTP=\$${OP_NODE_L2_ENGINE_RPC/ws/http}" - until [ "$(curl -s -w '%{http_code}' -o /dev/null "$${OP_NODE_L2_ENGINE_HTTP}")" -eq 401 ]; do - echo "waiting for execution client to be ready" - sleep 5 - done - exec ./op-node - volumes: - - ~/.playground/devnet:/artifacts - - ~/.playground/devnet/jwtsecret:/data/jwtsecret - - ~/.playground/devnet/rollup.json:/data/rollup.json - env_file: - - ${NETWORK_ENV:-.env.playground} - - diff --git a/justfile b/justfile index 9766048..18e817d 100644 --- a/justfile +++ b/justfile @@ -40,12 +40,12 @@ sync-env: # Change other dependencies sed -i '' 's/localhost/host.docker.internal/g' ./.env.docker -stop-all: - export COMPOSE_FILE=docker-compose.yml:docker-compose.tips.yml && docker compose down && docker compose rm && rm -rf data/ +stop-all profile="default": + export COMPOSE_FILE=docker-compose.yml:docker-compose.tips.yml && docker compose --profile {{ profile }} down && docker compose --profile {{ profile }} rm && rm -rf data/ # Start every service running in docker, useful for demos -start-all: stop-all - export COMPOSE_FILE=docker-compose.yml:docker-compose.tips.yml && mkdir -p data/postgres data/kafka data/minio && docker compose build && docker compose up -d +start-all profile="default": (stop-all profile) ensure-base-node-image + export COMPOSE_FILE=docker-compose.yml:docker-compose.tips.yml && mkdir -p data/postgres data/kafka data/minio && docker compose --profile {{ profile }} build && docker compose --profile {{ profile }} up -d # Stop only the specified service without stopping the other services or removing the data directories stop-only program: @@ -78,6 +78,14 @@ start-except programs: stop-all export COMPOSE_FILE=docker-compose.yml:docker-compose.tips.yml && mkdir -p data/postgres data/kafka data/minio && docker compose build && docker compose up -d ${result_services[@]} +# Ensure the base-node-reth Docker image exists, building it if necessary +ensure-base-node-image: + #!/bin/bash + if ! docker image inspect base-node-reth >/dev/null 2>&1; then + echo "base-node-reth image not found, building it..." + ./docker/build-base-node-image.sh reth + fi + ### RUN SERVICES ### deps-reset: COMPOSE_FILE=docker-compose.yml:docker-compose.tips.yml docker compose down && docker compose rm && rm -rf data/ && mkdir -p data/postgres data/kafka data/minio && docker compose up -d From 255b85b5dd0a80829af262a45c151cb7b46d9291 Mon Sep 17 00:00:00 2001 From: Niran Babalola Date: Fri, 26 Sep 2025 17:27:36 -0500 Subject: [PATCH 09/12] Use a prebuilt op-node image --- .gitignore | 1 + crates/simulator/Dockerfile | 2 +- docker-compose.tips.yml | 9 ++-- docker-compose.yml | 30 ++++------- docker/build-base-node-image.sh | 91 --------------------------------- justfile | 15 +++--- 6 files changed, 23 insertions(+), 125 deletions(-) delete mode 100755 docker/build-base-node-image.sh diff --git a/.gitignore b/.gitignore index f380f46..3126c46 100644 --- a/.gitignore +++ b/.gitignore @@ -19,6 +19,7 @@ Thumbs.db # Environment variables .env .env.docker +.env.playground /ui/.env # Claude diff --git a/crates/simulator/Dockerfile b/crates/simulator/Dockerfile index 1c0d295..1aeadc9 100644 --- a/crates/simulator/Dockerfile +++ b/crates/simulator/Dockerfile @@ -32,7 +32,7 @@ RUN --mount=type=cache,target=/usr/local/cargo/registry \ FROM debian:bookworm -RUN apt-get update && apt-get install -y libssl3 ca-certificates && rm -rf /var/lib/apt/lists/* +RUN apt-get update && apt-get install -y libssl3 ca-certificates curl && rm -rf /var/lib/apt/lists/* WORKDIR /app diff --git a/docker-compose.tips.yml b/docker-compose.tips.yml index bf71f4c..4082cdd 100644 --- a/docker-compose.tips.yml +++ b/docker-compose.tips.yml @@ -53,15 +53,16 @@ services: context: . dockerfile: crates/simulator/Dockerfile container_name: tips-simulator - ports: - # Listen on the loopback interface to fail fast if the ports are already in use by op-rbuilder - - "127.0.0.1:2222:2222" - - "127.0.0.1:4444:4444" volumes: - ${TIPS_SIMULATOR_DATADIR}:/data - ${TIPS_SIMULATOR_BUILDER_PLAYGROUND_DIR}:/playground env_file: - .env.docker restart: unless-stopped + healthcheck: + test: [ "CMD-SHELL", "[ \"$(curl -s -w '%{http_code}' -o /dev/null \"localhost:4444\")\" = \"401\" ]" ] + interval: 10s + timeout: 5s + retries: 10 profiles: - simulator diff --git a/docker-compose.yml b/docker-compose.yml index fdff0ae..fd5d3ce 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -92,8 +92,11 @@ services: " simulator-cl: - image: base-node-reth + image: us-docker.pkg.dev/oplabs-tools-artifacts/images/op-node:v1.13.7 container_name: tips-simulator-cl + depends_on: + simulator: + condition: service_healthy profiles: - simulator ports: @@ -102,24 +105,7 @@ services: - "19222:9222/udp" # P2P UDP - "17300:7300" # metrics - "16060:6060" # pprof - command: - - bash - - -c - - | - # builder-playground's op-node generates a new ENR for each run - export OP_NODE_P2P_BOOTNODES=$(grep 'enr=' /artifacts/logs/op-node.log | sed -n 's/.*enr=\([^ ]*\).*/\1/p') - - # Derived from op-node-entrypoint - echo "Writing JWT secret to $${OP_NODE_L2_ENGINE_AUTH}" - cat /data/jwtsecret > "$${OP_NODE_L2_ENGINE_AUTH}" - eval "OP_NODE_L2_ENGINE_HTTP=\$${OP_NODE_L2_ENGINE_RPC/ws/http}" - until [ "$(curl -s -w '%{http_code}' -o /dev/null "$${OP_NODE_L2_ENGINE_HTTP}")" -eq 401 ]; do - echo "waiting for execution client to be ready" - sleep 5 - done - exec ./op-node volumes: - - ~/.playground/devnet:/artifacts - ~/.playground/devnet/jwtsecret:/data/jwtsecret - ~/.playground/devnet/rollup.json:/data/rollup.json environment: @@ -144,8 +130,8 @@ services: # ENGINE CONFIGURATION OP_NODE_L2_ENGINE_KIND: reth - OP_NODE_L2_ENGINE_RPC: ws://simulator:4444 - OP_NODE_L2_ENGINE_AUTH: /tmp/jwtsecret + OP_NODE_L2_ENGINE_RPC: http://simulator:4444 + OP_NODE_L2_ENGINE_AUTH: /data/jwtsecret # P2P CONFIGURATION OP_NODE_P2P_LISTEN_IP: 0.0.0.0 @@ -155,6 +141,8 @@ services: OP_NODE_P2P_ADVERTISE_IP: host.docker.internal OP_NODE_P2P_ADVERTISE_TCP: "19222" OP_NODE_P2P_ADVERTISE_UDP: "19222" + # Only connect to the sequencer in playground mode + OP_NODE_P2P_NO_DISCOVERY: "true" # RPC CONFIGURATION OP_NODE_RPC_ADDR: 0.0.0.0 @@ -168,3 +156,5 @@ services: OP_NODE_METRICS_ADDR: 0.0.0.0 OP_NODE_METRICS_PORT: "7300" STATSD_ADDRESS: "172.17.0.1" + env_file: + - .env.playground diff --git a/docker/build-base-node-image.sh b/docker/build-base-node-image.sh deleted file mode 100755 index 1970996..0000000 --- a/docker/build-base-node-image.sh +++ /dev/null @@ -1,91 +0,0 @@ -#!/usr/bin/env bash - -set -euo pipefail - -REPO_URL="https://github.com/base/node.git" -DEFAULT_REF="main" - -usage() { - cat <<'EOF' -Usage: build-base-node-image.sh [docker build args...] - -Arguments: - Which execution client to build. Must be one of: geth, reth. - [docker build args] Additional arguments forwarded to docker build. - -Environment variables: - BASE_NODE_REPO Override the git repository to clone. Defaults to https://github.com/base/node.git. - BASE_NODE_REF Git ref (branch, tag, or commit) to checkout after cloning. Defaults to main. - -Examples: - ./build-base-node-image.sh geth - ./build-base-node-image.sh reth --build-arg FOO=bar -EOF -} - -if [[ ${1:-} == "-h" || ${1:-} == "--help" ]]; then - usage - exit 0 -fi - -if [[ $# -lt 1 ]]; then - echo "error: missing required argument" >&2 - usage - exit 1 -fi - -CLIENT=$1 -shift || true - -case "$CLIENT" in - geth|reth) - ;; - *) - echo "error: unsupported client '$CLIENT'; expected 'geth' or 'reth'" >&2 - exit 1 - ;; -esac - -REPO_URL=${BASE_NODE_REPO:-$REPO_URL} -GIT_REF=${BASE_NODE_REF:-$DEFAULT_REF} - -if ! command -v git >/dev/null 2>&1; then - echo "error: git is required but not installed" >&2 - exit 1 -fi - -if ! command -v docker >/dev/null 2>&1; then - echo "error: docker is required but not installed" >&2 - exit 1 -fi - -TMP_DIR=$(mktemp -d 2>/dev/null || mktemp -d -t "base-node") -cleanup() { - rm -rf "$TMP_DIR" -} -trap cleanup EXIT - -echo "Cloning $REPO_URL into $TMP_DIR" >&2 -git clone "$REPO_URL" "$TMP_DIR" - -pushd "$TMP_DIR" >/dev/null - -if [[ -n "$GIT_REF" ]]; then - echo "Checking out ref $GIT_REF" >&2 - git checkout "$GIT_REF" -fi - -IMAGE_NAME="base-node-$CLIENT" -DOCKERFILE_PATH="$CLIENT/Dockerfile" - -if [[ ! -f "$DOCKERFILE_PATH" ]]; then - echo "error: expected Dockerfile at $DOCKERFILE_PATH" >&2 - exit 1 -fi - -echo "Building Docker image '$IMAGE_NAME' using $DOCKERFILE_PATH" >&2 -docker build -t "$IMAGE_NAME" -f "$DOCKERFILE_PATH" "$@" . - -popd >/dev/null - -echo "Successfully built image $IMAGE_NAME" >&2 diff --git a/justfile b/justfile index 18e817d..64e808c 100644 --- a/justfile +++ b/justfile @@ -44,7 +44,7 @@ stop-all profile="default": export COMPOSE_FILE=docker-compose.yml:docker-compose.tips.yml && docker compose --profile {{ profile }} down && docker compose --profile {{ profile }} rm && rm -rf data/ # Start every service running in docker, useful for demos -start-all profile="default": (stop-all profile) ensure-base-node-image +start-all profile="default": (stop-all profile) export COMPOSE_FILE=docker-compose.yml:docker-compose.tips.yml && mkdir -p data/postgres data/kafka data/minio && docker compose --profile {{ profile }} build && docker compose --profile {{ profile }} up -d # Stop only the specified service without stopping the other services or removing the data directories @@ -78,14 +78,6 @@ start-except programs: stop-all export COMPOSE_FILE=docker-compose.yml:docker-compose.tips.yml && mkdir -p data/postgres data/kafka data/minio && docker compose build && docker compose up -d ${result_services[@]} -# Ensure the base-node-reth Docker image exists, building it if necessary -ensure-base-node-image: - #!/bin/bash - if ! docker image inspect base-node-reth >/dev/null 2>&1; then - echo "base-node-reth image not found, building it..." - ./docker/build-base-node-image.sh reth - fi - ### RUN SERVICES ### deps-reset: COMPOSE_FILE=docker-compose.yml:docker-compose.tips.yml docker compose down && docker compose rm && rm -rf data/ && mkdir -p data/postgres data/kafka data/minio && docker compose up -d @@ -113,3 +105,8 @@ simulator-playground: ui: cd ui && yarn dev + +playground-env: + echo "OP_NODE_P2P_BOOTNODES=$(grep 'enr=' ~/.playground/devnet/logs/op-node.log | sed -n 's/.*enr=\([^ ]*\).*/\1/p')" > .env.playground + +start-playground: playground-env (start-all "simulator") From 6771613ee88bfc386d9ae749ac95ffcee8e8e135 Mon Sep 17 00:00:00 2001 From: Niran Babalola Date: Sun, 28 Sep 2025 15:23:20 -0500 Subject: [PATCH 10/12] Prefer OP_NODE_P2P_STATIC to OP_NODE_P2P_BOOTNODES since multiaddrs are more convenient --- justfile | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/justfile b/justfile index 64e808c..cefe96c 100644 --- a/justfile +++ b/justfile @@ -107,6 +107,8 @@ ui: cd ui && yarn dev playground-env: - echo "OP_NODE_P2P_BOOTNODES=$(grep 'enr=' ~/.playground/devnet/logs/op-node.log | sed -n 's/.*enr=\([^ ]*\).*/\1/p')" > .env.playground + echo "BUILDER_PLAYGROUND_HOST_IP=$(docker run --rm alpine nslookup host.docker.internal | awk '/Address: / && $2 !~ /:/ {print $2; exit}')" > .env.playground + echo "BUILDER_PLAYGROUND_PEER_ID=$(grep 'started p2p host' ~/.playground/devnet/logs/op-node.log | sed -n 's/.*peerID=\([^ ]*\).*/\1/p' | head -1)" >> .env.playground + echo "OP_NODE_P2P_STATIC=/ip4/\$BUILDER_PLAYGROUND_HOST_IP/tcp/9003/p2p/\$BUILDER_PLAYGROUND_PEER_ID" >> .env.playground start-playground: playground-env (start-all "simulator") From a069923a8dd0e51c1a1cd10ef48b32a242c9f326 Mon Sep 17 00:00:00 2001 From: Niran Babalola Date: Sun, 28 Sep 2025 15:24:12 -0500 Subject: [PATCH 11/12] Docker compose tweaks --- docker-compose.tips.yml | 3 +++ docker-compose.yml | 6 +++--- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/docker-compose.tips.yml b/docker-compose.tips.yml index 4082cdd..9cfd8d7 100644 --- a/docker-compose.tips.yml +++ b/docker-compose.tips.yml @@ -59,6 +59,9 @@ services: env_file: - .env.docker restart: unless-stopped + depends_on: + postgres: + condition: service_healthy healthcheck: test: [ "CMD-SHELL", "[ \"$(curl -s -w '%{http_code}' -o /dev/null \"localhost:4444\")\" = \"401\" ]" ] interval: 10s diff --git a/docker-compose.yml b/docker-compose.yml index fd5d3ce..46b87a9 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -106,8 +106,8 @@ services: - "17300:7300" # metrics - "16060:6060" # pprof volumes: - - ~/.playground/devnet/jwtsecret:/data/jwtsecret - - ~/.playground/devnet/rollup.json:/data/rollup.json + - ~/.playground/devnet/jwtsecret:/data/jwtsecret:ro + - ~/.playground/devnet/rollup.json:/data/rollup.json:ro environment: # NETWORK CONFIGURATION OP_NODE_NETWORK: "" @@ -119,7 +119,7 @@ services: OP_RETH_SEQUENCER_HTTP: http://host.docker.internal:8547 # SYNC CONFIGURATION - OP_NODE_SYNCMODE: execution-layer + OP_NODE_SYNCMODE: consensus-layer OP_NODE_ROLLUP_LOAD_PROTOCOL_VERSIONS: "true" # L1 CONFIGURATION From 0bbc899abecbd66dbee67d0ae522f423263273af Mon Sep 17 00:00:00 2001 From: Niran Babalola Date: Sun, 28 Sep 2025 15:57:27 -0500 Subject: [PATCH 12/12] Revert "Initialize tracing" This reverts commit e029382d3ec262435108d37d86f380b556441299. --- crates/simulator/src/main.rs | 23 ----------------------- 1 file changed, 23 deletions(-) diff --git a/crates/simulator/src/main.rs b/crates/simulator/src/main.rs index 560474f..7b5e191 100644 --- a/crates/simulator/src/main.rs +++ b/crates/simulator/src/main.rs @@ -2,23 +2,10 @@ use reth_optimism_cli::commands::Commands; use reth_optimism_node::args::RollupArgs; use tips_simulator::{config::Cli, config::CliExt, ListenersWithWorkers}; use tracing::info; -use tracing_subscriber::{layer::SubscriberExt, util::SubscriberInitExt}; - -fn init_tracing() { - let env_filter = tracing_subscriber::EnvFilter::try_from_default_env() - .unwrap_or_else(|_| tracing_subscriber::EnvFilter::new("info")); - - tracing_subscriber::registry() - .with(env_filter) - .with(tracing_subscriber::fmt::layer()) - .init(); -} fn main() -> eyre::Result<()> { dotenvy::dotenv().ok(); - init_tracing(); - let cli = ::parsed(); let config = match &cli.command { Commands::Node(node) => node.ext.clone(), @@ -38,16 +25,6 @@ fn main() -> eyre::Result<()> { "Starting reth node with both ExEx and mempool event listeners" ); - if let Commands::Node(node_command) = &cli.command { - match node_command.rpc.auth_jwtsecret.as_ref() { - Some(secret_path) => info!( - auth_jwtsecret = %secret_path.display(), - "Auth RPC JWT secret configured" - ), - None => info!("Auth RPC JWT secret not configured"), - } - } - cli.run(|builder, _| async move { // Keep the Base mempool private. let rollup_args = RollupArgs {