For educational purposes only; not investment advice. Investing may result in loss.
Direct answer
An eclipse attack isolates a target node from honest peers by controlling all, or enough, of its network connections. The attacker can then delay, suppress, or selectively relay blocks and transactions so the victim sees an attacker-shaped view of the network.
The victim may continue validating signatures, proof of work, and every other consensus rule. That does not make its view complete or current. A fully validating node can reject invalid data while still being kept on a valid but stale branch, prevented from seeing a conflicting transaction, or misled about what the wider network has accepted.
This differs from a network-wide majority attack. The attacker targets one node or a limited set of nodes at the peer-to-peer layer and need not control most of the network’s mining power or stake. A Sybil attack can support an eclipse attack by supplying many attacker-controlled identities or addresses, but the concepts are not identical: Sybil describes identity multiplication; eclipse describes successful isolation of a victim’s information view.
How the isolation works
Peer-to-peer clients discover candidate addresses, store them, select outbound peers, accept some inbound peers, and reconnect after failures or restarts. The exact algorithms vary by client and version. An attacker looks for a way to bias enough of those decisions toward infrastructure the attacker controls.
A typical attack path has 4 stages:
- Prepare attacker-controlled peers. The attacker operates reachable nodes or identities across addresses that are likely to be treated as distinct by the victim’s peer-selection rules.
- Bias the candidate set. Malicious peers advertise attacker-controlled addresses or otherwise try to crowd honest entries out of the victim’s address manager. Practical feasibility depends on bucket design, netgroup rules, rate limits, and the quality of addresses already stored.
- Trigger or await reconnection. A restart, connection churn, denial of service, or routing disruption can make the target replace honest peers. Isolation is easier when the target has few independent paths or begins from a weak address database.
- Monopolize and filter. Once the victim’s relevant connections lead to the attacker, the attacker relays only the chosen blocks and transactions, often staying within consensus rules to avoid immediate rejection.
The 2015 USENIX study demonstrated this class of attack against the then-current Bitcoin peer-to-peer implementation and described consequences including confirmation-based double spending, selfish-mining assistance, and adversarial forks. Its exact resource estimates and client details are historical, not universal constants for current Bitcoin Core or other networks.
Modern clients can raise the cost of isolation through randomized and segmented address storage, peer-source diversity, test connections, protected outbound or block-relay connections, anchors across restarts, eviction rules, and address-relay limits. These are layered mitigations, not proofs that eclipse attacks are impossible.
Payment example and response
Suppose a merchant’s node receives a payment and displays 6 confirmations. An attacker who has eclipsed that node may show it a privately maintained valid branch containing the payment while a conflicting transaction is accepted on the honest network. If the merchant releases irreversible goods based only on the isolated node, the displayed count does not establish that the honest network confirmed the payment.
The incident response should preserve evidence before making disruptive changes:
- Record the reported chain tip, cumulative work, recent block hashes, peer list, connection direction, network type, mapped autonomous system when available, and timestamps for the last block received.
- Compare the tip and transaction state with independently operated nodes reached through genuinely separate network and administrative paths. Public explorers are useful only if their infrastructure is also independent.
- Pause high-value settlement or automated release when independent views disagree. More confirmations from the same isolated view do not resolve the problem.
- Rotate to known-good software and configuration, investigate DNS, routing, firewall, proxy, and host compromise, and rebuild peer state according to the client’s documented recovery procedure.
- Reconnect gradually and verify that peers, network groups, block arrival, chain work, and transaction observations diversify. Do not blindly restore a possibly poisoned peer database.
- Retain logs and escalate to the node or protocol security team. A suspected eclipse may overlap with ordinary outages, routing incidents, or a broader host intrusion.
On Bitcoin Core 30.0, getpeerinfo exposes fields such as network, mapped_as, inbound, last_block, synced_headers, synced_blocks, and connection_type. These fields support investigation, but no single field proves isolation. Monitoring should establish a normal baseline and correlate peer concentration with independent chain observations.
Risks and controls
- Double spending against a receiver: the victim can be shown confirmations on an attacker-controlled branch. Require independent observation for high-value or irreversible delivery and set limits that reflect settlement risk.
- Mining or validator disruption: an isolated operator may work from stale information, lose revenue, or help an adversarial branch. Monitor chain work, head freshness, and peer diversity outside the production node.
- Selective censorship: the attacker can hide transactions or delay blocks without sending invalid data. Alert on unusual block-arrival gaps and disagreement among independent observers.
- Bridge, oracle, and RPC failure: off-chain services that trust one upstream node can relay stale state or miss a reorganization. Use multiple independently administered and networked data sources with explicit quorum and freshness rules.
- False confidence from connection count: 20 peers controlled by one organization, one network, or one address source may provide less independence than a smaller diverse set. Measure diversity, not only quantity.
- Centralization through fixed peers: one manually configured trusted peer can bypass a poisoned candidate pool but creates a single point of failure. If fixed anchors are appropriate, use several independently operated paths and retain randomized connections.
Node operators should keep supported client releases current, understand client-specific peer-management defaults, protect administrative access, and monitor both inbound and outbound topology. Payment and protocol operators should separate signing, broadcasting, chain observation, and release decisions so one isolated node cannot authorize an irreversible action by itself.
Common misconceptions
- A full node cannot be fooled. A full node rejects consensus-invalid data; it does not automatically know that honest peers are withholding a better valid chain from it.
- A high confirmation count is always sufficient. Confirmations are meaningful only relative to the chain view being observed. Independence of the observation path matters when isolation is plausible.
- More peers always solve the problem. Additional peers help only when their ownership, network paths, discovery sources, and failure modes are sufficiently independent.
- Eclipse and Sybil attacks are the same. Sybil resources can make isolation easier, but an eclipse attack is the resulting control of a victim’s peer view.
- One matching block explorer proves the node is healthy. The explorer may share an upstream provider, network path, or administrative domain with the affected system.
- Any stale node is under attack. Software defects, congestion, maintenance, routing faults, and resource exhaustion can produce similar symptoms. Treat eclipse as a hypothesis to test with multiple signals.
Related topics
Sources
- Eclipse Attacks on Bitcoin’s Peer-to-Peer Network - USENIX Association (accessed: 2026-08-20)
- Bitcoin Core RPC: getpeerinfo - Bitcoin Core (accessed: 2026-08-20)
- Bitcoin Core: connection_types.cpp - Bitcoin Core (accessed: 2026-08-20)