HomePhabricator

Add 2 outbound block-relay-only connections

Description

Add 2 outbound block-relay-only connections

Summary:
Transaction relay is primarily optimized for balancing redundancy/robustness
with bandwidth minimization -- as a result transaction relay leaks information
that adversaries can use to infer the network topology.

Network topology is better kept private for (at least) two reasons:

(a) Knowledge of the network graph can make it easier to find the source IP of
a given transaction.

(b) Knowledge of the network graph could be used to split a target node or
nodes from the honest network (eg by knowing which peers to attack in order to
achieve a network split).

We can eliminate the risks of (b) by separating block relay from transaction
relay; inferring network connectivity from the relay of blocks/block headers is
much more expensive for an adversary.

After this commit, bitcoind will make 2 additional outbound connections that
are only used for block relay. (In the future, we might consider rotating our
transaction-relay peers to help limit the effects of (a).)

This is a partial backport of Core PR15759 : https://github.com/bitcoin/bitcoin/pull/15759/commits/3a5e885306ea954d7eccdc11502e91a51dab8ec6

Depends on D6424 and D6452

Test Plan:

ninja all check-all

Reviewers: #bitcoin_abc, majcosta

Reviewed By: #bitcoin_abc, majcosta

Subscribers: majcosta

Differential Revision: https://reviews.bitcoinabc.org/D6429

Details

Provenance
Suhas Daftuar <sdaftuar@gmail.com>Authored on Mar 9 2019, 17:55
deadalnixCommitted on Jun 8 2020, 18:01
deadalnixPushed on Jun 8 2020, 18:01
Reviewer
Restricted Project
Differential Revision
D6429: Add 2 outbound block-relay-only connections
Parents
rABC9df59f0e695c: [backport#18247] test: Remove redundant sync_with_ping after add_p2p_connection
Branches
Unknown
Tags
Unknown