fix(l1): add reachable sepolia bootnodes - #7079
Conversation
… the network. All five of sepolia's EF execution-layer bootnodes stopped answering UDP discovery on 2026-07-30, in a window between 12:39 and 15:44 UTC, and have not come back. They are the only entries in this file, so a node starting with an empty peer table has no way into the DHT at all: it re-pings those five addresses forever and sits at zero peers, unable to begin snap sync even though the network itself is healthy. The effect is not subtle. Both sepolia snapsync jobs now fail every run, each burning its full 3h30m budget, which puts that workflow over its 6h cron and queues runs behind themselves. On the multisync host the sepolia leg has failed every cycle since 23:15 UTC that same day -- having never failed before -- and the stuck container had downloaded not one header or account after eight hours, having sent ~143k discovery packets to those five addresses and received nothing back, while hoodi and mainnet synced normally beside it. Keep the EF entries: they are the canonical bootnodes, upstream still publishes them unchanged, and they may well come back. Append twelve nodes taken from the network's public DNS node list, each verified individually by starting a node with that bootnode as its only entry and confirming discovery replies come back -- 23 of the 24 candidates tested were responsive. They are spread across distinct providers and regions on purpose: the five EF bootnodes were all on one provider, which is why losing them was all-or-nothing. Verified end to end on this branch, with no command-line overrides: a cold start now reaches peers within 30 seconds, and the "failed to find target block header" loop that characterises the outage does not appear at all. This buys back the ability to sync sepolia today. It is not a substitute for being able to read that node list at runtime, since hardcoded addresses are what just failed here; that is a separate change.
|
🤖 Kimi Code ReviewFile: Security Concern: Unverified Bootnode Sources
Code Quality: OK
Recommendation: Require source attribution before merging. If these are from an official upstream, the change is straightforward. If manually curated, they need verification against multiple reputable sources. Automated review by Kimi (Moonshot AI) · kimi-k2.5 · custom prompt |
🤖 Claude Code ReviewThat's fine — file ending format is a trivial nit, not worth pursuing further. I have enough to write the review. Review:
|
Greptile SummaryAdds twelve geographically and provider-diverse Sepolia execution-layer bootnodes while retaining the five canonical EF entries, restoring discovery options for fresh nodes when the canonical endpoints are unavailable. Confidence Score: 5/5The PR appears safe to merge. The added enode URLs satisfy the repository parser’s required key and socket-address format, preserve valid JSON, and introduce no identified startup or discovery regression.
|
| Filename | Overview |
|---|---|
| cmd/ethrex/networks/sepolia/bootnodes.json | Adds twelve syntactically valid enode entries to improve Sepolia bootstrap availability; no actionable defect was identified. |
Reviews (1): Last reviewed commit: "Add reachable sepolia bootnodes so a col..." | Re-trigger Greptile
There was a problem hiding this comment.
Pull request overview
This PR updates ethrex’s bundled Sepolia execution-layer bootnode list to mitigate the current discovery outage where the five canonical EF bootnodes are not responding to UDP discovery, preventing cold-start nodes from joining the DHT.
Changes:
- Keeps the existing 5 EF Sepolia bootnodes.
- Appends 12 additional reachable Sepolia bootnodes to restore bootstrap connectivity for fresh datadirs/CI.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
🤖 Codex Code ReviewNo findings. The PR is a static bootnode list update in cmd/ethrex/networks/sepolia/bootnodes.json. I checked how the file is consumed ( Residual risk is operational rather than code-level: peer discovery quality now depends on these new endpoints actually being reachable and maintained on Sepolia. I couldn’t verify liveness from this environment. Automated review by OpenAI Codex · gpt-5.4 · custom prompt |
Motivation
All five of sepolia's EF execution-layer bootnodes stopped answering UDP discovery on 2026-07-30, in a window between 12:39 and 15:44 UTC, and have not come back. They are the only entries in
cmd/ethrex/networks/sepolia/bootnodes.json, so a node starting with an empty peer table has no way into the DHT at all: it re-pings those five addresses forever and sits at zero peers, unable to begin snap sync even though the network itself is healthy and the consensus client peers normally.The impact is broad, because everything that starts from a fresh datadir hits it:
30594206688is representative —sepolia - Lighthouseandsepolia - Prysmboth failed at 3h31m while both hoodi jobs passed. That is over 7h of a 6h cron window, so runs now queue behind each other.This is not a regression and not a fork mismatch: commit
2f1593f2passed sepolia twice before failing on the same SHA, and sepolia'seth_configreports its current fork withnext: null, matching our genesis exactly. The bootnode hosts are alive — they answer ICMP, and one still serves consensus-layer discv5 — so only the execution-layer discovery service is gone. Upstreameth-clients/sepoliastill lists all five unchanged, so nothing has been retired on paper.Description
Keeps the five EF entries and appends twelve reachable nodes taken from sepolia's public DNS node list.
Verified end to end on this branch with no command-line overrides: a cold start reaches peers within 30 seconds, and the
failed to find target block headerloop that characterises the outage does not appear at all (0 occurrences, against 906 on the stuck multisync container).This buys back the ability to sync sepolia today, and it covers CI, the multisync host and users in one change. It is explicitly not a substitute for reading that node list at runtime — hardcoded addresses are exactly what failed here, and these are community nodes rather than dedicated infrastructure, so they will drift over time. #7077 is the durable fix.
Supersedes #7076, which worked around the same outage in the snapsync action only; that PR can be closed in favour of this one.
Checklist
STORE_SCHEMA_VERSION(crates/storage/lib.rs) if the PR includes breaking changes to theStorerequiring a re-sync.Not applicable — no storage change, and no resync is required.