diff options
| author | Suhas Daftuar <[email protected]> | 2019-03-09 12:55:06 -0500 |
|---|---|---|
| committer | Suhas Daftuar <[email protected]> | 2019-09-04 14:58:36 -0400 |
| commit | 3a5e885306ea954d7eccdc11502e91a51dab8ec6 (patch) | |
| tree | d0fa4fd1f947425ca84bf0c4b6f93a033c58c75d /src/init.cpp | |
| parent | Add comment explaining intended use of m_tx_relay (diff) | |
| download | discoin-3a5e885306ea954d7eccdc11502e91a51dab8ec6.tar.xz discoin-3a5e885306ea954d7eccdc11502e91a51dab8ec6.zip | |
Add 2 outbound block-relay-only connections
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).)
Diffstat (limited to 'src/init.cpp')
| -rw-r--r-- | src/init.cpp | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/src/init.cpp b/src/init.cpp index 25c964205..1bc5eb3f7 100644 --- a/src/init.cpp +++ b/src/init.cpp @@ -1753,7 +1753,8 @@ bool AppInitMain(InitInterfaces& interfaces) CConnman::Options connOptions; connOptions.nLocalServices = nLocalServices; connOptions.nMaxConnections = nMaxConnections; - connOptions.nMaxOutbound = std::min(MAX_OUTBOUND_CONNECTIONS, connOptions.nMaxConnections); + connOptions.m_max_outbound_full_relay = std::min(MAX_OUTBOUND_FULL_RELAY_CONNECTIONS, connOptions.nMaxConnections); + connOptions.m_max_outbound_block_relay = std::min(MAX_BLOCKS_ONLY_CONNECTIONS, connOptions.nMaxConnections-connOptions.m_max_outbound_full_relay); connOptions.nMaxAddnode = MAX_ADDNODE_CONNECTIONS; connOptions.nMaxFeeler = 1; connOptions.nBestHeight = chain_active_height; |