Skip to content
BaseHub by wbnns Updated

Configuration Reference

The Base Reth Node inherits Reth’s comprehensive CLI. View all options:

Terminal window
./target/release/base-reth-node --help

Key option categories:

  • Network — Chain selection, bootnodes, P2P port
  • RPC — HTTP/WS endpoints, CORS, API namespaces
  • Database — Data directory, state pruning
  • Metrics — Prometheus endpoint
  • Engine API — JWT secret, engine API endpoint
  • Logging — Log level, log format

Configuration can also be set via environment variables. The devnet uses etc/docker/devnet-env for its environment.

The workspace defines several Cargo build profiles:

ProfileUse CaseKey Settings
devDevelopmentdebug = "line-tables-only"
releaseProductionopt-level = 3, lto = "thin", codegen-units = 16, strip = "symbols", panic = "unwind"
release-symbolsProduction build you need to profileInherits release, then debug = "line-tables-only", strip = "none"
benchCallgrind-driven benchmarksInherits release, then debug = true, strip = false
profilingPerformance analysisInherits release, then lto = false, debug = "line-tables-only", strip = "none"
ciCI buildsInherits dev, then debug = false, incremental = false

There is no longer a maxperf profile. It was removed from the workspace, and release is now the single production profile — both the published ghcr.io/base/node image and a local --build come from it.

Two of these exist because release strips symbols. release-symbols restores them without changing any codegen setting, so a profiled binary matches what you ship. bench goes further and keeps full debug info, which iai-callgrind needs to find the function it measures; without symbols every counter reads zero.

Dependencies drop their debug info in dev builds through a [profile.dev.package."*"] override. Workspace crates keep theirs. This mostly targets the C and C++ build scripts behind rocksdb, mdbx, and jemalloc, which otherwise dominate the size of target.

The basectl utility provides configuration management for different network targets:

Terminal window
# Mainnet configuration
cargo run -p basectl --release -- -c mainnet
# Sepolia testnet
cargo run -p basectl --release -- -c sepolia
# Local devnet
cargo run -p basectl --release -- -c devnet