I want to test peer discovery in regtest mode of bitcoin core, running in Docker. However, I noticed in the source code of bitcoin core that there is a check if the address is routable before answering to a getaddr message. So I first create a network with routable addresses (IsRFC6598):
docker network create -d bridge --subnet 100.64.0.0/24 bridge_sharedrange
Then I launch four Docker machines with bitcoind installed (and using the bridge_sharedrange network). The bitcoin daemon is then started in all of these four machines with:
bitcoind -regtest -daemon
Running ifconfig on these nodes show that they are running on 100.64.0.2,3,4,5. From the first machine (100.64.0.2) I then execute the command:
bitcoin-cli addnode 100.64.0.3 add
From the third machine (100.64.0.4) I then execute the command:
bitcoin-cli addnode 100.64.0.3 add
So basically, the node with address 100.64.0.3 now has two peers (checked with bitcoin-cli getpeerinfo). I would expect now that
- 100.64.0.2 learned about 100.64.0.4 &
- 100.64.0.4 learned about 100.64.0.2
But that is not the case. They only know 100.64.0.3. Is this normal behaviour? I read on https://en.bitcoin.it/wiki/Satoshi_Client_Node_Discovery#Command_Line_Provided_Addresses that it might have to do with the timestamp of the addr, but I’m not certian this can be the cause, and how can circumvent that.
BTW, I also tested with
bitcoind -regtest -daemon -discover=1