feat: separate EL and CL into distinct ports with independent ENRs#21
Open
filoozom wants to merge 2 commits into
Open
feat: separate EL and CL into distinct ports with independent ENRs#21filoozom wants to merge 2 commits into
filoozom wants to merge 2 commits into
Conversation
BREAKING CHANGE: - --bind-port replaced by --el-bind-port (default 30303) and --cl-bind-port (default 9000) - --enr-port replaced by --el-enr-port and --cl-enr-port - --enable-el and --enable-cl flags removed - --devnet-shim now takes an IP instead of IP:port
dapplion
added a commit
to dapplion/bootnodoor
that referenced
this pull request
Apr 18, 2026
… works ethpandaops/ethereum-package's bootnodoor_launcher.star reads /enr once and passes the result as --boot-nodes / --bootstrap-node to every CL client in the enclave. Before this PR, /enr returned an ENR with both eth and eth2, so lighthouse/prysm/etc. could bootstrap from it. With the split to separate EL/CL ENRs, this PR's shim served the EL-only ENR on /enr 'for backward compat' — but that ENR has eth instead of eth2 and CL clients silently stay at peer_count: 0. Prefer CL over EL on /enr when CL is configured, which restores the behaviour CL consumers relied on. Keep /el-enr and /cl-enr as the explicit endpoints for consumers that want a specific layer. Reproduced with a custom kurtosis devnet (no public network so no inherited bootnodes): lighthouse + prysm against the PR ethpandaops#21 image — before this fix, both CL clients sat at 0 peers indefinitely; after, they establish discv5 sessions with the host bootnodoor and pick up each other's ENRs via FINDNODE.
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.
Currently, there is a single ENR for both EL and CL. Unfortunately, some clients don't like having unexpected fields (
ethin CL oreth2in EL). This PR aims to solve that issue.As this PR introduces different ENRs, it also makes sense to have different ports, rather than multiplexer logic. However, this produces fairly substantial breaking changes. I could also rewrite it to support the previous architecture if you'd prefer.
Breaking changes:
--bind-portreplaced by--el-bind-port(default30303) and--cl-bind-port(default9000)--enr-portreplaced by--el-enr-portand--cl-enr-port--enable-eland--enable-clflags removed--devnet-shimnow takes an IP instead of IP:portI'm not 100% sure that I correctly understood the point of the devnet shim, so hopefully I didn't mess that up too much.