馃嚜馃嚫 Presentaci贸n del P2P din谩mico de Cardano: un salto adelante en la descentralizaci贸n

Presentaci贸n del P2P din谩mico de Cardano: un salto adelante en la descentralizaci贸n

Autor: Armando Santos, Ingeniero del equipo de redes IOG.

Introducci贸n

A medida que el ecosistema Cardano contin煤a creciendo y evolucionando, los colaboradores del ecosistema Cardano se comprometen a refinar y optimizar continuamente la infraestructura de red de Cardano. El lanzamiento de la red din谩mica peer-to-peer (P2P), entregado con el nodo v.1.35.6, fue un esfuerzo de colaboraci贸n del equipo de redes de IOG, Well-Typed, PNSol y la Fundaci贸n Cardano y representa un producto de alto rendimiento y un hito importante en el camino de Cardano hacia el establecimiento de una plataforma blockchain totalmente descentralizada y segura.

Dado que Cardano funciona como un sistema estoc谩stico en tiempo real, su rendimiento y seguridad est谩n intr铆nsecamente interconectados. El equipo de redes sigue empe帽ado en encontrar el equilibrio ideal entre diversos factores, incluidas consideraciones topol贸gicas y topogr谩ficas, para mejorar la puntualidad y la conectividad.

Esta entrada de blog te lleva a trav茅s del viaje de ingenier铆a que hay detr谩s del desarrollo del dise帽o Dynamic P2P de Cardano. Profundiza en los principios b谩sicos del dise帽o, destaca los retos encontrados en el camino y desvela las soluciones que el equipo ide贸 para establecer un sistema de red robusto y escalable.

Qu茅 es el P2P din谩mico

La implementaci贸n de P2P Din谩mico refina de forma continua y din谩mica la topolog铆a activa mediante un proceso de selecci贸n de pares, con el objetivo de reducir el tiempo de difusi贸n global en toda la red. Los resultados de la investigaci贸n sugieren que la utilizaci贸n de una pol铆tica basada 煤nicamente en informaci贸n local puede dar lugar a un resultado global casi 贸ptimo. Esto se consigue controlando la puntualidad y frecuencia de los pares que proporcionan una cabecera de bloque, que en 煤ltima instancia se incorpora a la cadena.

El objetivo principal es eliminar a los pares altamente 鈥渘o 贸ptimos鈥, manteniendo al mismo tiempo una fuerte conectividad. Para lograrlo, los pares considerados menos 煤tiles seg煤n esta m茅trica se 鈥渆xpulsan鈥 peri贸dicamente y se sustituyen por alternativas seleccionadas al azar. Los resultados de la simulaci贸n indican que este m茅todo de optimizaci贸n converge hacia un resultado global casi 贸ptimo en un n煤mero relativamente peque帽o de iteraciones.

En la pr谩ctica, el P2P din谩mico sustituye a la configuraci贸n manual de la selecci贸n de pares (por ejemplo, mediante la herramienta de actualizaci贸n de la topolog铆a).

Con la configuraci贸n manual, los operadores de validadores (SPO) deb铆an establecer conexiones con un n煤mero significativo de pares (50, por ejemplo) para mantener un m铆nimo de 20 conexiones activas de forma constante. Este enfoque era necesario debido a la naturaleza est谩tica de los pares configurados y a la disponibilidad variable de los repetidores de los SPO.

Sin embargo, con P2P Din谩mico, los nodos pueden configurarse para mantener un n煤mero espec铆fico de conexiones activas entre pares (por ejemplo, 20) y seleccionar entre todos los repetidores SPO registrados en la cadena. En caso de que se pierda la conexi贸n con un peer, el nodo seleccionar谩 autom谩ticamente peers alternativos e intentar谩 conexiones de forma persistente hasta alcanzar el objetivo deseado.

Como resultado, el P2P Din谩mico elimina la necesidad de sobre aprovisionamiento de conexiones, ofreciendo una soluci贸n de red m谩s eficiente y adaptable.

La visi贸n del dise帽o

Cardano funciona como un sistema cooperativo compuesto por nodos aut贸nomos. No est谩 dise帽ado como un modelo cliente-servidor, lo que significa que no existe un punto central de control ni una clase privilegiada de servidores gestionados centralmente. Aunque la topolog铆a de la red puede haber comenzado inicialmente como federada durante la fase de desarrollo de Byron, el objetivo era convertirla en un sistema de red distribuida totalmente fiable capaz de satisfacer las demandas cambiantes del ecosistema Cardano, garantizando al mismo tiempo una conectividad y un rendimiento 贸ptimos.

Cuando el equipo de redes se embarc贸 en esta aventura de ingenier铆a, era muy consciente de que se encontrar铆a con numerosos retos y complejidades en el camino. Sin embargo, se enfrentaron a estos retos de frente, perfeccionando continuamente las ideas centrales que, en 煤ltima instancia, dar铆an forma al dise帽o del sistema P2P din谩mico:

  1. Modularidad y extensibilidad: el sistema se dise帽贸 teniendo en cuenta la modularidad, lo que facilita la sustituci贸n o mejora de componentes individuales seg煤n sea necesario. Esta extensibilidad permite integrar sin problemas nuevas funciones y mejoras, garantizando que el dise帽o se adapte a las necesidades cambiantes del ecosistema Cardano. La modularidad es especialmente 煤til cuando se aplican m茅todos formales para probar la correcci贸n de los dise帽os de bajo nivel en relaci贸n con las especificaciones de alto nivel. Al dividir el sistema en componentes m谩s peque帽os y manejables, es posible aplicar pruebas basadas en propiedades a cada m贸dulo de forma m谩s eficaz, asegurando que el comportamiento de cada parte est谩 bien definido y se adhiere a las propiedades esperadas. Por supuesto, la elecci贸n de la programaci贸n funcional con Haskell como lenguaje de programaci贸n principal desempe帽贸 un papel importante en la consecuci贸n de este nivel de modularidad y extensibilidad.

  2. Escalabilidad: a medida que crece la red, tambi茅n aumenta la demanda de un sistema capaz de gestionar un mayor n煤mero de nodos y transacciones respetando las restricciones de tiempo de Ouroboros. Para abordar este requisito de escalabilidad en la visi贸n del dise帽o P2P, el equipo tuvo en cuenta las propiedades de escalabilidad desde el principio e incorpor贸 estrategias como la selecci贸n inteligente de pares.

  3. Seguridad y resiliencia: en una red descentralizada, la resiliencia y la seguridad son de vital importancia. El objetivo era construir un sistema capaz de resistir interrupciones internas y externas. Para lograrlo, el equipo de redes implant贸 s贸lidos mecanismos de gesti贸n de errores dise帽ados para resistir los abusos, garantizando que los usuarios no puedan atacar el sistema mediante ataques asim茅tricos de denegaci贸n de servicio que agoten los recursos de la red para otros usuarios. Con el enfoque P2P, cada nodo puede dar prioridad a su conexi贸n con pares configurados localmente. Esto garantiza que el nodo mantenga una conexi贸n con pares de confianza y pueda progresar en la red. Las conexiones entrantes est谩n limitadas en cuanto a velocidad, y los objetivos de pares configurables permiten al nodo ajustar su consumo de recursos. Adem谩s, la gesti贸n cuidadosa de los estados de conexi贸n permite reutilizar las conexiones d煤plex, lo que permite a los nodos situados detr谩s de cortafuegos mejorar su conectividad de forma segura al tiempo que se reduce la superficie de ataque global.

  4. Rendimiento: una red de alto rendimiento es crucial para garantizar una experiencia de usuario fluida. Se ha invertido un gran esfuerzo en optimizar el dise帽o empleando t茅cnicas como la transmisi贸n eficiente de datos mediante multiplexaci贸n y la utilizaci贸n de protocolos compatibles con la canalizaci贸n. Adem谩s, la selecci贸n inteligente de pares es vital para reducir la latencia y garantizar una red fiable y con capacidad de respuesta.

Establecer una comunicaci贸n efectiva dentro de la red Cardano requiere lograr una baja latencia y una buena conectividad. Para cumplir con estos requisitos esenciales, P2P Din谩mico fue dise帽ado para garantizar una base s贸lida, escalable y resistente para el crecimiento continuo del ecosistema. Sin embargo, es importante reconocer que la confianza entre pares es un factor cr铆tico para mantener una red segura y fiable. Aunque ahondar en los detalles de la fiabilidad est谩 fuera del alcance de esta entrada de blog, vale la pena se帽alar que el dise帽o P2P incorpora m煤ltiples medidas para mitigar los riesgos potenciales y salvaguardar la red.

An谩lisis de la selecci贸n de pares para enlaces en bloque en Ouroboros

Garantizar el rendimiento y la seguridad de Ouroboros es crucial, y un aspecto cr铆tico de ello es la retransmisi贸n puntual de nuevos bloques a trav茅s de la red. Lo ideal ser铆a que las conexiones dentro de la red P2P se organizaran de forma que se minimizara el tiempo necesario para que un bloque fuera retransmitido desde cualquier nodo a todos los dem谩s nodos de la red.

Sin embargo, la realizaci贸n de este objetivo plantea un reto complejo, y los trabajos previos disponibles aplicables en un entorno sin confianza son limitados. Para abordar eficazmente este problema era necesario desarrollar soluciones innovadoras que pudieran lograr un equilibrio entre la rapidez de la comunicaci贸n y el mantenimiento de la integridad y la seguridad de la red descentralizada.

Enunciado del problema

Una soluci贸n eficaz para optimizar el rendimiento consiste en minimizar el n煤mero de 鈥渟altos鈥 que un bloque debe recorrer a trav茅s de la red. En t茅rminos gr谩ficos, esto se traduce en reducir el n煤mero medio de aristas que atraviesa un bloque. Adem谩s, la longitud de cada salto o arista es crucial. Los enlaces locales presentan menor latencia que los intercontinentales, aunque algunos enlaces intercontinentales son necesarios para la retransmisi贸n global de bloques. Por ejemplo, una soluci贸n sub贸ptima implicar铆a un exceso de enlaces intercontinentales, como el encaminamiento de Europa a Asia y viceversa.

Los algoritmos de red existentes pueden generar 鈥溍boles de expansi贸n鈥 贸ptimos que podr铆an servir como rutas para la retransmisi贸n en bloque. Sin embargo, estos algoritmos dependen de que los nodos conf铆en los unos en los otros para intercambiar informaci贸n precisa, lo que resulta inadecuado para una red P2P de cadenas de bloques en la que los nodos no pueden confiar intr铆nsecamente los unos en los otros.

Una soluci贸n ideal deber铆a basarse en informaci贸n 鈥渓ocal鈥 m谩s que 鈥済lobal鈥, es decir, informaci贸n que los nodos puedan evaluar individualmente sin depender de datos compartidos y de confianza. No obstante, disponer de una soluci贸n 贸ptima que dependa de una informaci贸n global perfecta puede servir como valioso punto de referencia.

Investigaci贸n preliminar

El equipo de redes del IOG colabor贸 con investigadores de redes de la Universidad de Atenas, especializados en sistemas descentralizados y sus protocolos, para llevar a cabo una tarea crucial: simular distintas pol铆ticas de red y estudiar las compensaciones en el tiempo de difusi贸n.

La cuesti贸n central de la difusi贸n es determinar qu茅 nodos deben reenviarse bloques entre s铆 o, m谩s exactamente, qu茅 enlaces de difusi贸n deben establecerse entre los nodos para mejorar la velocidad de difusi贸n.

Para abordar esta cuesti贸n, junto con los investigadores seguimos dos enfoques principales:

  • El primer enfoque supone que los enlaces son independientes del proceso de difusi贸n. Se trata de simular una superposici贸n est谩tica en la que los enlaces se establecen seg煤n reglas predefinidas. A continuaci贸n, se ejecutan m煤ltiples difusiones para medir el rendimiento.
  • El segundo enfoque consiste en ajustar din谩micamente la superposici贸n. En este enfoque, los nodos establecen inicialmente conexiones con nodos aleatorios de la red y supervisan continuamente las estad铆sticas de rendimiento de sus vecinos. Peri贸dicamente, cada nodo ajusta su conjunto de vecinos bas谩ndose en estas estad铆sticas, decidiendo qu茅 vecinos conservar y cu谩les sustituir.

El gr谩fico muestra la r谩pida difusi贸n de un bloque por la red, que llega a todos los nodos. En este experimento, todos los nodos utilizan exactamente la misma pol铆tica Cercano-Aleatorio; por ejemplo, C6R4 significa que los nodos se conectan a seis pares cercanos y a cuatro pares aleatorios. Inicialmente, todos los nodos est谩n desinformados, lo que significa que a煤n no han recibido el bloque espec铆fico. Sin embargo, se les informa en alg煤n momento del experimento. La l铆nea de puntos representa la soluci贸n 贸ptima te贸rica, suponiendo que todos los nodos informados poseen un conocimiento completo de cu谩les son los pares m谩s ventajosos, lo que permite este tipo de conexiones (pol铆tica de vista de dios).

Es importante aclarar que la pol铆tica Cercana-Aleatoria no se aplic贸 directamente. M谩s bien, se emple贸 como herramienta te贸rica pr谩ctica. Consigue un equilibrio al incorporar factores no locales y, al mismo tiempo, ser lo suficientemente sencilla como para poder aproximarse utilizando 煤nicamente informaci贸n local.

Este an谩lisis demuestra lo cerca que se puede estar de una soluci贸n ideal utilizando principalmente informaci贸n local. Lo intrigante es que esta aproximaci贸n supera las expectativas. Lograr un resultado a un factor de dos de la perfecci贸n habr铆a sido encomiable, pero el equipo descubri贸 que es posible superarlo incluso.

La figura anterior compara los resultados de los dos enfoques descritos anteriormente. En la simulaci贸n, cada nodo ten铆a seis vecinos cercanos (seg煤n el tiempo de ida y vuelta, RTT en ingl茅s) y cuatro nodos aleatorios. Estos enlaces se mantuvieron est谩ticos durante todo el experimento (de ah铆 las l铆neas azules constantes). En la pol铆tica de 鈥渄os grupos (<=100ms y >100ms)鈥, cada nodo mantiene un n煤mero fijo de enlaces cercanos y remotos: 鈥榗ercano鈥 significa que el RTT a ese vecino es menor o igual a 100 ms, mientras que 鈥榬emoto鈥 implica que el RTT es superior a 100 ms. Los nodos comienzan con todos los enlaces aleatorios y los calibran peri贸dicamente. Durante esta calibraci贸n, retienen hasta un n煤mero fijo de vecinos que tienen un RTT inferior a 100 ms, y sustituyen algunos de los vecinos restantes por nodos aleatorios reci茅n elegidos.

Esta pol铆tica de dos grupos sirve como aproximaci贸n directa y eficaz para evaluar el comportamiento de la pol铆tica de puntuaci贸n. Sin embargo, cabe se帽alar que esta pol铆tica no es la que se emplea actualmente.

En esta 煤ltima figura se presenta un an谩lisis comparativo entre los resultados de la pol铆tica Cercana-Aleatoria y otra pol铆tica de puntuaci贸n de pares. Esta pol铆tica alternativa eval煤a a los pares en funci贸n de la frecuencia con la que suministran una nueva cabecera de bloque al nodo antes que los dem谩s. En esta configuraci贸n experimental, los nodos comienzan con enlaces aleatorios y se someten peri贸dicamente a calibraci贸n. Durante estos intervalos de calibraci贸n, el 20% o el 40% de los pares con peores resultados son sustituidos por nuevos nodos seleccionados al azar.

La l铆nea azul del gr谩fico representa la pol铆tica que se est谩 utilizando actualmente (en la secci贸n siguiente se ofrecen m谩s detalles al respecto). La l铆nea verde ilustra el 贸ptimo te贸rico.

Al examinar detenidamente este gr谩fico y compararlo con el anterior, podemos identificar variaciones clave en la eficacia de las distintas pol铆ticas de puntuaci贸n. No obstante, es fundamental tener en cuenta que estas variaciones no son directamente comparables debido a los diferentes par谩metros aplicados en cada experimento. Algunos experimentos miden el tiempo de difusi贸n completo, mientras que otros consideran el percentil 99, que representa un valor ligeramente inferior. Adem谩s, las trazas de latencia entre nodos difieren entre experimentos, lo que da lugar a resultados distintos.

En este contexto, el percentil 99 para la pol铆tica del 20% muestra un equilibrio inferior en comparaci贸n con los dos grupos. Sin embargo, no se trata de una comparaci贸n directa 鈥渕anzanas con manzanas鈥 por las razones expuestas anteriormente.

La pol铆tica que empleamos actualmente va m谩s all谩 del uso del RTT a la hora de seleccionar a los pares. En nuestra b煤squeda de un enfoque m谩s s贸lido y fiable, buscamos una alternativa que refleje con precisi贸n la utilidad de un par. Esto nos llev贸 al concepto de recompensar a los pares por ser los primeros en presentar a un nodo un nuevo encabezado o bloque. Este enfoque ofrece una medida aut茅ntica de la contribuci贸n de un par a la red y, a diferencia del RTT, no puede manipularse ni falsificarse f谩cilmente.

Redes P2P basadas en informaci贸n local

En el dise帽o P2P din谩mico, cada nodo mantiene una visi贸n local de la red y eval煤a las conexiones potenciales teniendo en cuenta el rendimiento hist贸rico. Los nodos supervisan y ajustan continuamente sus conexiones, buscando pares con mejor rendimiento para optimizar su posici贸n en la red y minimizar el n煤mero de saltos necesarios para la retransmisi贸n en bloque.

Cada nodo mantiene tres conjuntos de nodos pares conocidos:

  • Pares fr铆os: pares conocidos sin una conexi贸n de red establecida.
  • Pares tibios: pares con una conexi贸n de portador establecida, utilizados para mediciones de red pero no para protocolos de consenso a nivel de aplicaci贸n; su funci贸n principal es servir como conjunto de nodos f谩cilmente disponibles.
  • Pares calientes: pares con una conexi贸n portadora activa, utilizados para los protocolos de consenso a nivel de aplicaci贸n.

Como se ha mencionado anteriormente, los nodos mantienen una informaci贸n limitada sobre estos pares, basada en interacciones directas previas. En el caso de los nodos fr铆os, a menudo esta informaci贸n puede estar ausente debido a la falta de interacciones directas previas. Esta informaci贸n se asemeja a la 鈥渞eputaci贸n鈥 de otros sistemas, pero es esencial destacar que es puramente local y no se comparte con ning煤n otro nodo.

La figura anterior ilustra el ciclo de ascensos/descensos, gestionado por el gobernador de selecci贸n de pares (PSG en ingl茅s). Este componente es responsable de alcanzar objetivos espec铆ficos, como mantener un n煤mero determinado de pares conocidos y activos.

Adem谩s, se puede utilizar una configuraci贸n est谩tica local para designar determinados nodos como calientes o tibios. Este enfoque permite relaciones fijas entre nodos gestionados por una 煤nica organizaci贸n, como un validador con m煤ltiples enlaces. Tambi茅n facilita los acuerdos de enlaces privados entre SPO y otros posibles escenarios de despliegue.

En casos de comportamiento adverso, un par puede ser degradado inmediatamente de los conjuntos caliente, templado y fr铆o. La decisi贸n es no retener la informaci贸n negativa de los pares durante periodos prolongados para limitar el consumo de recursos en un sistema sin permisos, ya que hacerlo podr铆a simplificar potencialmente los ataques Sybil.

Rotaci贸n y pol铆ticas locales

El gobernador de pares rotativos (PCG en ingl茅s) es un componente que desempe帽a un papel fundamental en la gesti贸n de la salud y la eficiencia de una red sorteando los problemas relacionados con la partici贸n de la red y los ataques de eclipse, ajustando los valores de los objetivos de los peers calientes, c谩lidos y fr铆os para promover su churning.

En este proceso, el PCG modifica la frecuencia con la que los pares son promovidos (mejorados de fr铆os a calientes, o de calientes a calientes) o degradados (degradados de calientes a calientes, o de calientes a fr铆os). Esta decisi贸n est谩 guiada por funciones de puntuaci贸n que eval煤an a los compa帽eros en funci贸n de su utilidad y rendimiento.

Estas funciones de puntuaci贸n incluyen:

  • Pol铆tica de degradaci贸n caliente: responsable de determinar qu茅 pares 鈥渃alientes鈥 (muy activos y valiosos) deben ser degradados. La puntuaci贸n se calcula en funci贸n de la contribuci贸n de un peer a la red, teniendo en cuenta factores como el n煤mero de bloques que ha sido el primero en proporcionar y/o el n煤mero de bytes que ha proporcionado. Durante el funcionamiento normal, se utiliza una combinaci贸n de estos factores para calcular la puntuaci贸n. Sin embargo, durante la sincronizaci贸n masiva de datos, el n煤mero de bytes proporcionados tiene prioridad.

  • Pol铆tica de degradaci贸n tibia y fr铆a: gestionan los pares 鈥渢ibios鈥 y 鈥渇r铆os鈥, determinando qu茅 pares deben ser degradados o eliminados de la red. En estas decisiones influyen un cierto nivel de aleatoriedad y diversas caracter铆sticas. Entre los factores que se tienen en cuenta est谩n los fallos anteriores o una bandera de tibieza, que indica menor fiabilidad o niveles de actividad m谩s bajos en los pares.

Durante el proceso de sincronizaci贸n de nodos, el PCG garantiza que no se utilicen m谩s de dos conexiones activas para evitar la sobre utilizaci贸n de recursos. Una vez que el nodo est谩 totalmente sincronizado, el PCG facilita la rotaci贸n peri贸dica, refrescando el 20% de los pares cada hora. Esto promueve una red robusta y adaptable.

Aunque las pol铆ticas Cercana-Aleatoria o basadas en puntajes exploradas en la investigaci贸n no se replican directamente en el entorno de producci贸n, han influido significativamente en el dise帽o de las pol铆ticas implementadas. As铆, los resultados de la investigaci贸n han desempe帽ado un papel crucial en la configuraci贸n de las pol铆ticas de red dentro del entorno de producci贸n de Cardano.

Enfoque de desarrollo

La implementaci贸n P2P de Cardano se basa en Haskell, un lenguaje de programaci贸n funcional ampliamente reconocido por su correcci贸n, seguridad y facilidad de mantenimiento. El robusto sistema de tipos de Haskell ayuda a detectar posibles problemas durante el desarrollo, lo que se traduce en un c贸digo m谩s robusto y fiable. Adem谩s, el equipo de redes ha desarrollado y emplea io-sim, una biblioteca de simulaci贸n de eventos discretos basada en el tiempo que ofrece un control preciso de la entrop铆a y la temporizaci贸n en las simulaciones. Esta herramienta replica fielmente el sistema de tiempo de ejecuci贸n de Haskell, incluidas funciones como la memoria transaccional de software (STM), MVars y otras. Este nivel de control permite la reproducibilidad, las pruebas de regresi贸n y el examen de los peores escenarios. La combinaci贸n de Haskell e io-sim permite realizar pruebas rigurosas del mismo c贸digo utilizado en el sistema de producci贸n P2P en una amplia gama de condiciones, lo que garantiza su preparaci贸n para afrontar los retos del mundo real.

En su compromiso por construir un sistema fiable, el equipo de redes del IOG emple贸 pruebas exhaustivas basadas en propiedades. Estas pruebas se dise帽aron espec铆ficamente para descubrir fallos complejos y casos aislados que podr铆an pasar desapercibidos en enfoques de pruebas tradicionales como las pruebas unitarias. Un aspecto distintivo del proceso de pruebas es la inclusi贸n de simulaciones que reproducen a帽os de funcionamiento del sistema. Este enfoque integral permite imitar a帽os de actividad y descubrir fallos poco frecuentes que s贸lo pueden aparecer en condiciones espec铆ficas o prolongadas. Sin embargo, es importante se帽alar que la calidad de estas pruebas depende en 煤ltima instancia de la calidad de los generadores empleados. Los generadores desempe帽an un papel fundamental a la hora de producir entradas diversas y representativas para una evaluaci贸n exhaustiva.


Traducci贸n al Espa帽ol :es: por Mart铆n Ungar @LatinStakePools
Texto original: Unveiling Cardano's Dynamic P2P: a leap forward in decentralization | IOG Engineering