You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The running-head fork-choice hardening in #79 raises the cost of a peer-table eclipse, but it's only as good as the diversity of the peer set feeding the head. If an attacker can fully capture the gossip peer table (the "get into your peer table 5 times" attack, zenground0 / fil-curio-dev 2026-06-30), they control every candidate the fork-choice rule sees.
Lantern already has the primitives: net/bitswapPreferredPeers (warm-pinned), gossipsub peer-scoring (net/blockpub, net/hello), and MinPeers/MaxPeers connection-manager bounds (net/libp2p/host.go). They are not yet wired into a deliberate anti-eclipse posture for the head path.
Diversity requirement on head-bearing peers. Don't let a single peer (or single ASN/IP prefix, best-effort) be the sole source of a head advance. Require head candidates from a minimum number of distinct, scored peers before adopting.
Lean on existing gossipsub peer-score so peers that forward non-canonical / non-advancing blocks decay out of the mesh.
What this does NOT do
Same boundary as #79: hardening, not a finality guarantee. Closing the unfinalized-tip fork against a powerful adversary is F3's job. This is eclipse-resistance hygiene, pure-Go, no ffi.
Acceptance
Trusted anchor/beacon peers are an un-evictable floor in the head-following peer set
Head advance requires corroboration from >=N distinct scored peers (config, sane default)
Tests: single-peer-only head advance is held; pinned floor survives a flood of attacker dials
Context: fil-curio-dev thread w/ zenground0, 2026-06-30. Pairs with #79.
Problem
The running-head fork-choice hardening in #79 raises the cost of a peer-table eclipse, but it's only as good as the diversity of the peer set feeding the head. If an attacker can fully capture the gossip peer table (the "get into your peer table 5 times" attack, zenground0 / fil-curio-dev 2026-06-30), they control every candidate the fork-choice rule sees.
Lantern already has the primitives:
net/bitswapPreferredPeers(warm-pinned), gossipsub peer-scoring (net/blockpub,net/hello), andMinPeers/MaxPeersconnection-manager bounds (net/libp2p/host.go). They are not yet wired into a deliberate anti-eclipse posture for the head path.Proposed fix (pure-Go)
cmd/lantern/beacon_peer_provider.go, security Security: bootstrap/beacon peer trust — operator-pinned + DHT-discovered peers feed cert-exchange without an authenticity floor #59). Ensure the head-following peer set always retains those pinned peers so the table can't be fully replaced by attacker-dialed peers.What this does NOT do
Same boundary as #79: hardening, not a finality guarantee. Closing the unfinalized-tip fork against a powerful adversary is F3's job. This is eclipse-resistance hygiene, pure-Go, no ffi.
Acceptance
Context: fil-curio-dev thread w/ zenground0, 2026-06-30. Pairs with #79.