La red distribuye la información sobre las transacciones y la creación de bloques entre todos los nodos activos. Esto permite que el sistema valide y añada bloques a la cadena y verifique las transacciones. En consecuencia, una red distribuida de nodos ha de mantener al mínimo los retardos en la comunicación y ser lo suficientemente resiliente (auto-reparable) como para hacer frente a fallos, limitaciones de capacidad o piratas informáticos.
En la era Byron (la era de la fundación), la blockchain era construida por bloques validados por los nodos federados (OBFT) controlados por la Fundación Cardano, Emurgo e IOHK.
Con el inicio de la era Shelley (la era de la descentralización), la red tuvo participación de stake pools, la red se fue descentralizando, hasta llegar a d=0, parámetro que indica la creación total de los bloques por parte de la comunidad de operadores de pool, llegando así a la descentralización total.
Durante el antiguo sistema federado, la conexión de los nodos se establecía mediante una configuración estática determinada en un archivo de topología. Tras la introducción de Shelley, el sistema funciona en un modo híbrido, en el cual los nodos se conectan a los relés federados y a los relés de otros SPO. Aunque esta conectividad se construye parcialmente de forma manual, los SPO pueden intercambiar información sobre bloques y transacciones sin recurrir a los nodos federados.
Dado que hemos alcanzado la plena descentralización en términos de producción de bloques, también es esencial que la conectividad de la red esté descentralizada. Cardano lo logrará a través de un cambio hacia la conectividad entre pares (P2P).
La red entre pares (P2P)
El «stack» (apilamiento), se trata de un conjunto de herramientas de software recientemente mejoradas por el equipo de ingenieros de IOHK a fin de hacer frente a una red más grande, dinámica y compleja.
La comunicación P2P potenciará el flujo de información entre los nodos. Para alcanzar la resiliencia deseada, el equipo de redes de IOHK ha estado ocupado mejorando el stack de la red con capacidades P2P avanzadas. Las mejoras no necesitan un cambio de protocolo, sino que permiten la selección y comunicación automatizada de los pares.
Un conjunto de miniprotocolos permite la comunicación entre nodos. Cada protocolo implementa un requisito básico de intercambio de información, como informar a los compañeros (sus pares) del último bloque, compartir bloques o procesar transacciones. Los protocolos Chain-sync, block-fetch y tx-submission han sido utilizados para distribuir cadenas de bloques y transacciones para la comunicación de nodo a nodo [de par a par] en la red:
- block-fetch extrae información de la base de datos de la cadena.
- chain-sync sincroniza los datos obtenidos en la red.
- tx-submission2 consume las transacciones de los mempools ² de los pares y las añade al mempool local, lo que permite a los pares enviar sus transacciones al nodo. Se trata de una modificación del actual protocolo tx-submission.
Estos miniprotocolos son compatibles con el protocolo de consenso Ouroboros. Con el fin de garantizar un servicio de red óptimo, el equipo ha implementado protocolos adicionales:
- keep-alive: asegura la conexión continua entre nodos y minimiza los fallos de rendimiento.
- tip-sample: provee información sobre qué pares ofrecen mejor conectividad en términos de rendimiento.
La gestión de las conexiones
El servicio de red es compatible con Linux, Windows y macOS, sin embargo, el número de conexiones que admite cada sistema operativo varía.
Con el fin de prevenir la sobrecarga del sistema, un multiplexor combina varios canales en un único canal de conexión del Protocolo de Control de Transmisión (TCP). Esta solución ofrece dos ventajas: la comunicación bidireccional entre pares (por lo que cualquier par puede iniciar la comunicación sin restricciones, ya que ambas partes tienen permisos de lectura y escritura dentro del mismo canal), y una comunicación mejorada de nodo a nodo sin afectar al rendimiento.
Nuestro equipo de redes ha implementado un “gestor de conexiones” bidireccional integrado en el gobernador entre pares (P2P), que actualmente está en fase de pruebas finales antes de su despliegue.
La funcionalidad del gobernador de los pares (P2P)
Son múltiples nodos pares los que incluye la red Cardano que se clasifican en tres categorías:
- pares fríos
- pares cálidos
- pares calientes
El Gobernador P2P gestiona las conexiones y ofrece información sobre qué pares están activos y tienen un buen rendimiento. Esta característica promueve las conexiones entre pares para mejorar el rendimiento del sistema y también proporciona una excelente visibilidad al construir y mantener un mapa de conectividad de toda la red. También promueve o degrada a los pares entre los estados frío, cálido y caliente, e interactúa con el administrador de conexiones para abrir nuevas conexiones o reutilizar las existentes.
Hoja de ruta del despliegue P2P
El equipo de redes de IOHK se encuentra inmerso en las últimas fases de pruebas de calidad de la integración del gobernador P2P con el nodo. Posteriormente, el equipo ampliará el stack de red con más protocolos, en particular el de gossip (divulgación), que garantizará un intercambio de datos sin fisuras entre pares y ayudará a construir un mapa de comunicación descentralizado.
Una vez finalizadas las pruebas, todos los SPO podrán actualizar y simplificar sus preferencias de configuración para mejorar la conectividad.