feat: switch consensus client from op-node to base-consensus#985
Draft
feat: switch consensus client from op-node to base-consensus#985
Conversation
Switch consensus client from op-node (Go) to base-consensus (Rust) from the base repo. Add new base-consensus-entrypoint that uses BASE_NODE_* env vars, update supervisord to run base-consensus, and rename versions.env vars from BASE_RETH_NODE_* to BASE_NODE_* since the repo now provides multiple binaries. Ultraworked with [Sisyphus](http://github.com/code-yeongyu/oh-my-opencode) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Consolidate reth Dockerfile to build both base-reth-node and base-consensus from a single git clone of the base repo, removing the separate Go build stage for op-node. Update reth-entrypoint to use BASE_NODE_* auth env vars. Ultraworked with [Sisyphus](http://github.com/code-yeongyu/oh-my-opencode) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Replace Go op-node build stage with Rust base-consensus stage. Update geth-entrypoint to use BASE_NODE_* auth vars and OP_GETH_OP_NETWORK for --op-network flag since BASE_NODE_NETWORK is now a numeric chain ID. Ultraworked with [Sisyphus](http://github.com/code-yeongyu/oh-my-opencode) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
…p-node Replace Go op-node build stage with Rust base-consensus stage. Update nethermind-entrypoint to use BASE_NODE_* auth vars and OP_NETHERMIND_NETWORK for --config flag. Ultraworked with [Sisyphus](http://github.com/code-yeongyu/oh-my-opencode) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Translate all OP_NODE_* consensus vars to BASE_NODE_* equivalents across .env.mainnet and .env.sepolia. Remove syncmode (not supported by Kona), beacon archiver, engine kind, RPC, and snapshot log vars. Add OP_NETHERMIND_NETWORK and OP_GETH_OP_NETWORK for execution clients that need string network names. Update docker-compose.yml to use base-consensus-entrypoint. Add .env.sepolia-alpha to .gitignore. Ultraworked with [Sisyphus](http://github.com/code-yeongyu/oh-my-opencode) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Collaborator
🟡 Heimdall Review Status
|
refcell
reviewed
Mar 5, 2026
refcell
reviewed
Mar 5, 2026
Add BASE_NODE_P2P_BOOTNODES to .env.mainnet and .env.sepolia with the same ENR bootnode records previously under OP_NODE_P2P_BOOTNODES. Ultraworked with [Sisyphus](http://github.com/code-yeongyu/oh-my-opencode) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
op-node(Go, fromethereum-optimism/optimism) withbase-consensus(Rust, frombase/base) as the consensus client across all execution client Docker images (reth, geth, nethermind)OP_NODE_*environment variables toBASE_NODE_*equivalents; remove vars not supported by Kona (syncmode, beacon archiver, engine kind, RPC server, snapshot log)versions.envto useBASE_NODE_*naming since the base repo provides multiple binaries (base-reth-node + base-consensus)Changes
Core
base-consensus-entrypoint(new) — replacesop-node-entrypoint, exec's./base-consensus nodewithBASE_NODE_*env varssupervisord.conf—[program:op-node]→[program:base-consensus]versions.env—BASE_RETH_NODE_*→BASE_NODE_*, removedOP_NODE_*varsDockerfiles
reth/Dockerfile— single Rust stage builds bothbase-reth-nodeandbase-consensusfrom one clone, Go stage removedgeth/Dockerfile— Go op-node stage → Rust base-consensus stagenethermind/Dockerfile— Go op-node stage → Rust base-consensus stageEnvironment
.env.mainnet/.env.sepolia—OP_NODE_*→BASE_NODE_*, addedOP_GETH_OP_NETWORK/OP_NETHERMIND_NETWORKfor clients needing string network names.env.sepolia-alpha— new env for chain 11763072 (gitignored)docker-compose.yml— updated entrypoint referenceExecution entrypoints
reth/reth-entrypoint,geth/geth-entrypoint,nethermind/nethermind-entrypoint— auth vars updated toBASE_NODE_*Testing