Quiero probar el descubrimiento de pares en el modo de registro del núcleo de bitcoin, ejecutándose en Docker. Sin embargo, noté en el código fuente del núcleo de bitcoin que hay una verificación si la dirección es enrutable antes de responder a un mensaje getaddr. Así que primero creo una red con direcciones enrutables (IsRFC6598):
docker network create -d bridge --subnet 100.64.0.0/10 bridge_sharedrange
Luego lanzo cuatro máquinas Docker con bitcoind instalado (y usando la red bridge_sharedrange, con diferentes direcciones /16). A continuación, se inicia el demonio bitcoin en todas estas cuatro máquinas con:
bitcoind -regtest -daemon
Ejecutar ifconfig en estos nodos muestra que se están ejecutando en 100.64.0.2, 100.65.0.2, 100.66.0.2, 100.67.0.2. Desde la primera máquina (100.64.0.2) ejecuto el comando:
bitcoin-cli addnode 100.65.0.2 add
Desde la tercera máquina (100.66.0.2) ejecuto el comando:
bitcoin-cli addnode 100.65.0.2 add
Básicamente, el nodo con la dirección 100.65.0.2 ahora tiene dos pares (comprobado con bitcoin-cli getpeerinfo). Yo esperaría ahora que
Pero ese no es el caso. Solo conocen 100.65.0.2. ¿Es este comportamiento normal? Leí en https://en.bitcoin.it/wiki/Satoshi_Client_Node_Discovery#Command_Line_Provided_Addresses que podría tener que ver con la marca de tiempo de la dirección, pero no estoy seguro de que esta pueda ser la causa y cómo se puede evitar.
Por cierto, también probé con
bitcoind -regtest -daemon -discover=1
Actualización : parece que esta característica de descubrir nodos LAN locales está en discusión: https://github.com/bitcoin/bitcoin/issues/3802 , sin embargo, creo que las reglas WAN se aplican a mi situación, ya que uso direcciones RFC6598 en mi configuración de prueba.
Bitcoin Core no transmite inmediatamente un nuevo addr
mensaje a los nodos con cada nueva conexión que obtiene. En promedio, esas transmisiones son cada 30 segundos, pero podrían ocurrir tarde o temprano, ya que el retraso sigue una distribución de Poisson. Debe esperar unos minutos antes de volver a comprobar. Además, el hecho de que conozcan la dirección no significa que los nodos realmente elijan conectarse a ellos.
Miguel
andres chow
Miguel