En Bitcoin ocurre algo interesante: una computadora puede intercambiar información con una red mundial sin necesidad de conectarse individualmente con todos sus participantes.
¿Cómo es posible?
Porque los nodos establecen conexiones con otros nodos, y esas conexiones permiten que la información viaje por distintos caminos.
Para comprender cómo funciona este mecanismo necesitamos conocer un concepto fundamental: los PEERS.
La palabra peer significa par. En Bitcoin, un peer es otro nodo con el que se mantiene una conexión de red.
Por ejemplo, si utilizás Bitcoin Core para ejecutar un nodo completo en tu computadora, el programa puede establecer conexiones con otros nodos de Bitcoin.
Cada uno de esos nodos conectados será un peer del tuyo.
Esto significa que peer no es un tipo especial de computadora ni una categoría diferente de participante. Es el nombre que recibe otro nodo en relación con una conexión establecida.
Un nodo puede iniciar conexiones hacia otros participantes y, si su configuración lo permite, también aceptar conexiones entrantes.
A través de ellas se intercambian mensajes definidos por el protocolo Bitcoin, principalmente relacionados con transacciones y bloques.
Pero lo verdaderamente interesante es cómo se organiza ese intercambio.
¿CÓMO SE COMUNICAN DOS PEERS?
Supongamos que el nodo A recibe una nueva transacción y quiere anunciarla a uno de sus peers, el nodo B.
Podría enviar directamente todos los datos de esa operación. Sin embargo, existe una forma más eficiente de comunicar que dispone de información.
Para eso puede utilizar un mensaje llamado INV, abreviatura de inventory.
Este mensaje permite anunciar una o varias transacciones mediante sus identificadores, sin transmitir inicialmente su contenido completo.
Imaginemos que el nodo B recibe ese anuncio.
Si ya conoce la transacción, no necesita solicitarla nuevamente.
Pero si la desconoce y corresponde obtenerla, puede enviar otro mensaje denominado GETDATA.
Este mensaje funciona como una solicitud: el nodo B pide los datos correspondientes a la transacción anunciada.
Si el nodo A dispone de la información y puede proporcionarla, responde mediante un mensaje llamado TX, que contiene la transacción completa.
De esta manera, tenemos tres mensajes importantes:
- INV: anuncia la existencia de información mediante identificadores.
- GETDATA: permite solicitar los datos anunciados.
- TX: transmite el contenido de una transacción.
Una vez recibida, el nodo B puede examinar la transacción y, si cumple las condiciones correspondientes para aceptarla y retransmitirla, anunciarla a otros peers.
Estos participantes pueden repetir el procedimiento y extender su difusión por la red.
Así, una transacción puede llegar a computadoras que nunca estuvieron conectadas directamente con el nodo que la anunció inicialmente.
Es importante aclarar que este mecanismo no obliga a los participantes a solicitar todo lo anunciado ni garantiza que cada solicitud reciba una respuesta.
¿Y CÓMO SE PROPAGA UN BLOQUE?
Cuando se encuentra un nuevo bloque, también resulta necesario comunicar su existencia para que otros nodos puedan obtenerlo.
Pero los bloques presentan una particularidad: pueden contener numerosas transacciones, por lo que transmitir toda esa información repetidamente puede consumir recursos importantes.
Para mejorar la eficiencia, Bitcoin dispone de diferentes mecanismos de propagación.
Uno de ellos permite anunciar bloques mediante sus encabezados, que contienen datos fundamentales para identificarlos y relacionarlos criptográficamente con los anteriores.
Otro mecanismo es Compact Block Relay, definido en la propuesta técnica BIP 152.
Su finalidad es reducir la cantidad de información necesaria para transmitir un bloque.
¿Cómo lo consigue?
Supongamos que el nodo A conoce un bloque recién encontrado y quiere comunicarlo al nodo B.
Es posible que el nodo B ya disponga de muchas de las transacciones incluidas en ese bloque, porque las recibió anteriormente a través de la red.
En lugar de enviar nuevamente todas esas transacciones completas, el mecanismo permite transmitir información compacta para que el receptor intente reconstruir el bloque utilizando los datos que ya posee.
Si faltan determinadas transacciones, puede solicitarlas.
Esto permite reducir el tráfico de datos y favorecer una propagación más eficiente.
Sin embargo, los nodos pueden utilizar distintos mecanismos de comunicación según las características y capacidades de sus conexiones.
¿TODOS LOS PEERS RECIBEN LA INFORMACIÓN AL MISMO TIEMPO?
No necesariamente... Las comunicaciones necesitan tiempo para viajar por Internet. Además, cada nodo mantiene diferentes conexiones y no todos reciben o retransmiten exactamente los mismos mensajes.
Por ejemplo, una transacción puede llegar primero a determinados participantes y algunos segundos después a otros.
Incluso puede haber nodos que todavía desconozcan su existencia.
Lo mismo puede suceder con un bloque recién encontrado.
Estas diferencias temporales forman parte del funcionamiento normal de una red distribuida.
Por eso, la propagación no debe imaginarse como una comunicación instantánea que alcanza simultáneamente a todas las computadoras del mundo.
Tampoco significa que cada peer retransmita automáticamente todo lo que recibe.
¿QUÉ SUCEDE SI UN PEER SE DESCONECTA?
Las conexiones no son necesariamente permanentes.... Un peer puede dejar de responder, perder su conexión a Internet o simplemente apagar el equipo.
Cuando eso ocurre, los demás nodos no necesitan detener su funcionamiento.
Si mantienen otras conexiones activas, pueden continuar intercambiando información con otros peers.
Además, pueden establecer nuevas conexiones para reemplazar las que se interrumpieron.
Esto contribuye a la capacidad de Bitcoin para seguir funcionando aunque determinados participantes se desconecten.
Sin embargo, no significa que la red sea inmune a cualquier interrupción. Un nodo que pierde todas sus conexiones queda temporalmente aislado hasta recuperar la comunicación.
¿POR QUÉ SON TAN IMPORTANTES LOS PEERS EN BITCOIN?
Porque permiten que la información circule entre participantes sin depender de un único servidor encargado de distribuirla.
Cada conexión representa una vía de comunicación, y el conjunto de esas conexiones permite que las transacciones y los bloques se propaguen por la red.
Pero hay una diferencia esencial que debemos comprender.
LOS PEERS PERMITEN INTERCAMBIAR INFORMACIÓN, PERO NO DETERMINAN POR SÍ MISMOS QUÉ INFORMACIÓN ES VÁLIDA.
Un nodo puede recibir mensajes de numerosos peers y, aun así, rechazar una transacción o un bloque que no cumpla las condiciones exigidas por Bitcoin.
Por lo tanto, la cantidad de participantes que anuncian determinada información no constituye una prueba de su validez.
Y aquí surge una pregunta decisiva...
Si los peers permiten distribuir la información y los nodos completos pueden comprobarla independientemente, ¿cuáles son las reglas que determinan qué transacciones y bloques pueden ser aceptados?
Para responder esto, necesitamos conocer uno de los fundamentos más importantes del funcionamiento de Bitcoin:
LAS REGLAS DE CONSENSO.
$BTC $ETH $USDC #bitcoin #nodos #PEER #CRİPTO