In bitcoin network will there be a path from every node to every other node?

4

1

In bitcoin's gossip network will there be a path from every node to every other node? It can certainly have different number of hops.

I have a private testnet in which I modified some source code. I get a graph like this

A->B->C 

So we have a path from A to C but not C to A. So when C mines a block, the information is remained with it and it does not send inv messages out. Not sure if I am wrong or this is expected?

Edit:

The only change I did is to make testnet work on my localhost. Removed the IsLocal() check from IsRoutable() and added my own hardcoded seeds.

Guhan S

Posted 2015-10-29T02:22:23.723

Reputation: 85

To clarify - did you modify any code that would prevent the nodes from sharing blocks? For example, if you added code that caused a node to never accept a block from a node with a higher port number than itself, that would produce the behavior you see.Nick ODell 2015-10-30T01:34:35.973

1The only change I did is to make testnet work on my localhost. Removed the IsLocal() check from IsRoutable() and added my own hardcoded seeds.Guhan S 2015-10-30T02:18:03.130

Answers

1

The bitcoin network is only as connected as each node wants to be. The protocol is designed in such a way as to incentivize being connected to the network, so in practice, almost every full node is connected to a lot of other nodes and hence, there's at least a very good chance of a short path between any two nodes.

However, that's not to say that every node is connected. It is entirely possible to run a full node that's not connected, like you seem to have done. In your case, it seems C does not have any peers, so C's mined block won't get to anyone else.

Run this command to see which peers it has:

$ bitcoin-cli getpeerinfo

You'll want to add connections this way:

$ bitcoin-cli addnode <node ip and port> add

Jimmy Song

Posted 2015-10-29T02:22:23.723

Reputation: 7 067

getpeerinfo tells me that it does not have any connections. The only change I did is made it pick up my hardcoded addresses. So you mean to say this is completely possible in bitcoin? I do not want to check manually and add nodes explicitly. Is there a way where I can achieve this peerdiscovery automatically?Guhan S 2015-10-30T02:23:13.060

So if bitcoind is ever connected to the network, it will keep a list of previously connected peers around and use that every time it starts up. You only need to do this once.Jimmy Song 2015-10-30T14:48:04.703