4

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.

  • 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 Oct 30 '15 at 1:34
  • 1
    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 Oct 30 '15 at 2:18
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
  • 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 Oct 30 '15 at 2:23
  • 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 Oct 30 '15 at 14:48

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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