He estado pensando en esto por un tiempo y parece que no puedo entender parte de la red.
Supongamos que soy un nodo que ha estado fuera de línea durante 5 meses y quiero recuperar los nuevos bloques. Cuando transmito el mensaje getblocks, lo ven diferentes nodos, ¿responden todos mis compañeros o algunos responden y los demás lo ignoran debido a las otras respuestas? Y si todos responden, ¿mi nodo elegiría de cuál/es desea obtener los datos, o obtendría los datos de todos ellos? Si obtiene los datos de todos ellos, ¿no ralentizaría mucho el sistema y crearía mucho más tráfico en la red?
Un nodo no sabe acerca de los otros nodos a los que está conectado uno de sus pares. Responderán con lo que su nodo les solicite, incluso si esto termina siendo bloques duplicados.
Debido a que las conexiones de red son flujos directos, su nodo sabe exactamente lo que ha enviado y recibido de cada uno de sus pares. Por lo tanto, su nodo elegirá los pares de los que desea descargar bloques y les enviará solicitudes específicas para esos bloques. Dado que Bitcoin Core utiliza la primera sincronización de encabezados, no es necesario enviar simplemente un mensaje getblocks; en su lugar, puede usar mensajes getdata para solicitar bloques específicos y distribuir la descarga entre varios pares.
En versiones anteriores de Bitcoin Core, elegiría un nodo para sincronizar y descargar todos los bloques solo desde ese nodo. Sin embargo, este comportamiento ya no se realiza, aunque sigue siendo parte del protocolo y todavía se puede realizar.
agah ebrahimi
andres chow