2

Gavin Andresen and James Lopp seem to think that nodes that don't accept inbound connections could be called "leechers" in the same way a torrent leecher takes but doesn't give (or at least they did 5 years ago). I see no reason why leeching or seeding has anything to do with whether you accept inbound connections or not.

Is this actually true in some way I haven't thought of?

2 Answers 2

5

An outbound connection is functionally equivalent to an inbound connection except in the respect that you initiated it. An outbound only node provides the same resources to the network except that it doesn't provide incoming connection slots. Outbound-only nodes forward blocks and transactions just like any other node. I think it is generally misleading to describe them as leeches.

You could consider one to be a connection slot leech but not a leech in any other respect. There have been times in the past when the Bitcoin network has been short of inbound connection slot capacity, and a troubling percentage of listening nodes are concentrated in a few datacenters (and many appear to be run by parties with ill intent for Bitcoin users)... so it is certainly good for you to accept connections if you at all can.

Nodes without open inbound also provide important DOS and privacy protection to the network: It is much more difficult for an attacker to get connected to nodes that don't accept random connections, since the attacker must wait for the victim to come to them. So the presence of outbound-only peers has the advantage of strengthening the network against some kinds of attack. (That said, the network has more than enough out-only peers to achieve those benefits already...)

1
  • 1
    That's an interesting idea that private nodes might provide some security advantages - I haven't thought of that. Have people considered implementing nat traversal technique in Bitcoin to increase the number of nodes that can accept connections?
    – B T
    Jun 4, 2019 at 5:03
1

Non-listening nodes can be considered leechers because they take up available node capacity and don't provide capacity of their own thereby reducing the total number of nodes that can be on the network. Every node has a limited number of inbound connection slots due to resource constraints. Bitcoin Core defaults to a limit of 125 connections total (including outbound connections).

Since Bitcoin Core defaults to 8 outbound connections, such non-listening nodes take up 8 connection slots. However they don't provide their own connection slots thus reducing the overall number of nodes that can be on the network. Thus such nodes can be thought of as leeches since they are taking a resource (connection slots) and not providing their own resources (not accepting incoming connections).

1
  • I see. I would argue that's not equivalent to a torrent leecher, who's not providing data to peers. Even if a node doesn't accept inbound connections, as long as they're running an honest node (or as long as their connections enforce their honesty), that node will still provide as much data as they consume. But its true the network needs enough public nodes to service all the private nodes. However, at the current limit of 125 inbound connections and 8 outbound, the network should have enough connections such that only 6.5% of the network needs to consist of public nodes.
    – B T
    Jun 3, 2019 at 5:19

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.