馃嚜馃嚫 Explora Cardano: 3. Red Cardano: a. Acerca de la red Cardano

Explora Cardano: 3. Red Cardano: a. Acerca de la red Cardano

La red Cardano es una infraestructura t茅cnica que combina los nodos Cardano y sus interacciones relativas en un sistema unificado. Consiste en una colecci贸n de nodos que se comunican entre s铆 para mantener el libro mayor distribuido. Estos nodos son los actores de Cardano que validan los bloques, a帽aden bloques a la cadena y distribuyen las transacciones.

La capa de red es la fuerza motriz para cumplir con los requisitos de intercambio de informaci贸n, que incluye la difusi贸n de nuevos bloques y la informaci贸n de las transacciones para establecer un mejor flujo de datos. Los nodos de Cardano mantienen conexiones con pares que han sido elegidos a trav茅s de un proceso de selecci贸n de pares personalizado.

Sigue estos enlaces para encontrar las especificaciones detalladas de:

Flujo de datos entre y dentro de los nodos

Para entender c贸mo se comunican los nodos entre s铆, supongamos que el nodo A est谩 conectado al nodo B . Entonces, el protocolo Ouroboros programa un nodo N para que genere un nuevo bloque en un slot de tiempo determinado. Dependiendo de la ubicaci贸n de los nodos A, B y N en la topolog铆a de la red, y de si un nuevo bloque llega primero a A o a B , el nodo A puede estar situado m谩s arriba o m谩s abajo del nodo B .

Se utiliza un conjunto de miniprotocolos para permitir la comunicaci贸n entre diferentes nodos. Cada miniprotocolo implementa un requisito b谩sico de intercambio de informaci贸n, como informar a los compa帽eros del 煤ltimo bloque, compartir bloques seg煤n sea necesario o compartir nuevas transacciones en la red Cardano. A efectos de conexi贸n, los miniprotocolos est谩n determinados por la versi贸n del protocolo de la red. Por ejemplo, hay dos conjuntos de protocolos: nodo a nodo y nodo a cliente. El conjunto de protocolos de nodo a cliente lo utilizan los monederos y los consumidores de la cadena. Los conjuntos de protocolos utilizan diferentes conjuntos de miniprotocolos y la versi贸n se negocia cuando se establece una nueva conexi贸n utilizando un protocolo espec铆fico (los protocolos se describen en las siguientes secciones).

Los clientes tambi茅n pueden elegir qu茅 miniprotocolos de nodo a cliente utilizar, pero es importante tener en cuenta que el nodo debe ser capaz de responder a todos ellos para soportar diferentes casos de uso. Por ejemplo, para comunicarse, el nodo A ejecuta su instancia del lado del cliente del miniprotocolo chain-sync que habla con una instancia del servidor del miniprotocolo chain-sync en el nodo B. Esta situaci贸n es similar a la funcionalidad de otros miniprotocolos.

El esquema siguiente ilustra c贸mo fluyen los datos dentro de un nodo. Los c铆rculos representan los threads del protocolo y los threads internos que se encargan de ejecutar los procesos del cliente y del servidor dentro de los respectivos miniprotocolos.

explore-3a-1

Existen dos tipos de flujo de datos:

  1. Los miniprotocolos se comunican con los miniprotocolos de otros nodos enviando y recibiendo mensajes a trav茅s de una red p煤blica (Internet); este flujo no est谩 contemplado en el esquema anterior, pero se dise帽ar谩 potencialmente para una mejor comprensi贸n.
  2. Dentro de un nodo, los miniprotocolos se comunican entre s铆 leyendo de, y escribiendo en, una variable mutable compartida, que est谩 representada por recuadros en el esquema. Las flechas indican si un thread tiene acceso de lectura o escritura al estado compartido.

C贸mo se abordan las complejidades y limitaciones de la red

Para dise帽ar una arquitectura de red eficiente y robusta, se han evaluado una serie de cuestiones potenciales relacionadas con la complejidad y las restricciones.

El control de la congesti贸n es una de estas caracter铆sticas y se utiliza para hacer frente a la sobrecarga del sistema. El control de la congesti贸n es vital para asegurar que el sistema es lo suficientemente robusto mientras opera con altas cargas de trabajo. Dentro del dise帽o de la red, es com煤n que el n煤mero de transacciones que se producen pueda ser mayor que el n煤mero que puede ser realmente procesado para su inclusi贸n en el blockchain. Por lo tanto, es importante garantizar que el aumento de la tasa de presentaci贸n de transacciones en un bloque no disminuya el rendimiento del blockchain.

El nodo actual tiene un l铆mite en la cantidad de datos que puede procesar. En particular, un nodo puede tener que compartir su capacidad de procesamiento con otros procesos que se ejecutan en la misma m谩quina o instancia del sistema operativo. Esto significa que un nodo puede ralentizarse y hacer que el sistema no pueda procesar todos los datos disponibles de la red.

Para solucionar estos problemas, la funci贸n de control de la congesti贸n se ha dise帽ado para que funcione adecuadamente en una situaci贸n de este tipo y se recupere de las condiciones transitorias. En cualquier caso, un nodo no debe sobrepasar sus l铆mites de memoria, por lo que deben existir l铆mites de memoria definidos, cuyas infracciones se tratan como violaciones del protocolo. Estos factores hacen que el sistema pueda cumplir los objetivos de rendimiento.

Las restricciones de tiempo real y el tiempo universal coordinado son otros aspectos que se han tenido en cuenta al dise帽ar la arquitectura de red. En Cardano, los protocolos de consenso Ouroboros modelan el paso del tiempo f铆sico como una secuencia infinita de slots de tiempo, asignando l铆deres de slot para crear un nuevo bloque en esos slots de tiempo. La elecci贸n de un tiempo de slot, sin embargo, puede causar ciertas complejidades en cuanto a la longitud del slot, ya que debe ser lo suficientemente largo para que un nuevo bloque tenga una buena oportunidad de llegar al siguiente l铆der de slot a tiempo. Por ello, el valor elegido para la longitud de slot se fij贸 inicialmente en 20 segundos en la era Byron. Con Ouroboros Praos ahora implementado en la era Shelley, se elige una longitud de slot de 1 segundo pero, en promedio, s贸lo 0,05 de los slots producir谩n un bloque (y por lo tanto, en promedio, habr谩 intervalos de 20 segundos entre bloques). Se supone que las desviaciones de reloj entre los relojes locales de los nodos son peque帽as con respecto a la longitud del slot. No obstante, hay que tener en cuenta las posibles imprecisiones del reloj, especialmente cuando se trata de bloques entrantes con marca de tiempo. Es importante diferenciar si hay una diferencia de tiempo o si el nodo considera un comportamiento adverso de otro nodo.

Utilizaci贸n de mini-protocolos

Los miniprotocolos se utilizan para la comunicaci贸n entre m煤ltiples nodos mientras se implementan los requisitos de intercambio de informaci贸n. Un miniprotocolo es un bloque de construcci贸n modular definido del protocolo de red. La estructuraci贸n del protocolo de red en torno a los miniprotocolos ayuda a gestionar la complejidad general del dise帽o, al tiempo que garantiza una flexibilidad 煤til.

Los miniprotocolos describen tanto al iniciador como al respondedor dentro del flujo de comunicaci贸n. El iniciador es el elemento dual del respondedor y viceversa. Un nodo suele ejecutar muchas instancias de miniprotocolos, que incluyen muchas instancias del mismo miniprotocolo. Cada instancia de miniprotocolo del nodo se comunica entonces con la instancia dual del par exacto. Todos los miniprotocolos que se comunican con el mismo par comparten un 煤nico canal de comunicaci贸n (pipe o socket). Se utiliza un multiplexor o desmultiplexor para multiplexar los respectivos protocolos por ese canal.

El conjunto de miniprotocolos que se utiliza para la conexi贸n entre dos participantes del sistema depende del papel de estos participantes, por ejemplo, si el nodo act煤a como un nodo completo o un consumidor de blockchain (por ejemplo, un monedero).

Tambi茅n cabe destacar que la implementaci贸n de los miniprotocolos utiliza un marco gen茅rico para las m谩quinas de estado . Este marco utiliza t茅cnicas de correcci贸n por construcci贸n para garantizar la implementaci贸n de varias propiedades del protocolo. En particular, esta t茅cnica asegura que no se produzcan bloqueos y que la comunicaci贸n se cancele en los siguientes escenarios:

  • cuando se espera que una de las partes transmita el siguiente mensaje, y la otra parte est谩 esperando el mensaje, y ambas partes est谩n de acuerdo en que el protocolo ha terminado
  • cuando cualquiera de las partes recibe un mensaje que no se espera seg煤n el protocolo

Todos los miniprotocolos basados en este marco incluyen la siguiente informaci贸n en su descripci贸n:

  • una descripci贸n informal del protocolo
  • estados de la m谩quina de estado
  • mensajes intercambiados
  • un gr谩fico de transici贸n de la vista global de la m谩quina de estado
  • la implementaci贸n del protocolo por parte del cliente
  • la implementaci贸n del protocolo por parte del servidor

Ejemplos de miniprotocolos

Esta secci贸n presenta algunos ejemplos de miniprotocolos.

Protocolo Ping Pong

Se trata de un sencillo protocolo de prueba que un cliente puede utilizar para comprobar que el servidor responde. El protocolo Ping-Pong es muy simple porque los mensajes no llevan ning煤n dato y el cliente Ping-Pong, as铆 como el servidor Ping-Pong, no acceden al estado interno del nodo.

Protocolo de Solicitud de Respuesta

El protocolo de solicitud de respuesta es polim贸rfico en cuanto a los datos de solicitud y respuesta que se transmiten. Esto significa que hay diferentes aplicaciones posibles de este protocolo y la aplicaci贸n del protocolo determina los tipos de solicitudes enviadas y respuestas recibidas.

Protocolo de Sincronizaci贸n de Cadena

El protocolo de sincronizaci贸n de la cadena es utilizado por un consumidor de blockchain para replicar localmente la blockchain del productor. Un nodo se comunica con varios nodos ascendentes y descendentes y ejecuta una instancia de cliente independiente y una instancia de servidor independiente para cada nodo con el que se comunica.

El protocolo de sincronizaci贸n de cadena es polim贸rfico. El protocolo de nodo a cliente utiliza una instancia del protocolo de sincronizaci贸n de cadena que transfiere bloques completos, mientras que la instancia de nodo a nodo s贸lo transfiere cabeceras de bloque. En el escenario de nodo a nodo, el protocolo de obtenci贸n de bloques se utiliza para transferir bloques completos.

Protocolo de Obtenci贸n de Bloques

El protocolo de obtenci贸n de bloques permite a un nodo descargar un rango de bloques.

Miniprotocolo de Presentaci贸n de Transacciones Locales

El Miniprotocolo de Presentaci贸n de Transacciones Locales es utilizado por los clientes locales, por ejemplo, los monederos o las herramientas CLI, para enviar transacciones a un nodo local. El protocolo no se utiliza para enviar transacciones de un nodo central a otro. El protocolo sigue un patr贸n simple de solicitud-respuesta:

  1. el cliente env铆a una solicitud con una sola transacci贸n.
  2. el servidor acepta la transacci贸n (devolviendo una confirmaci贸n), o la rechaza (devolviendo el motivo).

Protocolo de Presentaci贸n de Transacciones de Nodo a Nodo

El protocolo de env铆o de transacciones de nodo a nodo se utiliza para transferir transacciones entre nodos completos. El protocolo sigue una estrategia basada en la extracci贸n, en la que el iniciador solicita nuevas transacciones y el respondedor responde con transacciones. Es adecuado para un entorno sin confianza en el que ambas partes necesitan protegerse de los ataques de consumo de recursos de la otra parte. La implementaci贸n del miniprotocolo de transacciones de nodo a nodo se basa en un marco de miniprotocolo gen茅rico (el mismo que para todos los dem谩s miniprotocolos). Por razones t茅cnicas, los papeles del iniciador y del respondedor se invierten en este caso en comparaci贸n con la forma en que se implementan otros miniprotocolos en el marco. En otras palabras, el servidor es el iniciador que solicita nuevas transacciones, y el cliente es el respondedor que responde con transacciones.

Mini protocolo Handshake

El miniprotocolo handshake se utiliza para negociar la versi贸n del protocolo y los par谩metros del mismo que utilizan el cliente y el servidor. Se utiliza en primer lugar cuando se inicia una nueva conexi贸n y consiste en una 煤nica solicitud del cliente y una 煤nica respuesta del servidor. El miniprotocolo handshake es un protocolo gen茅rico que puede negociar cualquier tipo de par谩metros de protocolo. Asume que los par谩metros del protocolo pueden ser codificados y decodificados a partir de t茅rminos de Representaci贸n Concisa de Objetos Binarios (CBOR). Un nodo que ejecute el protocolo handshake debe instanciarlo con el conjunto de versiones de protocolo soportadas y funciones callback para manejar los par谩metros del protocolo. Estas funciones de llamada de retorno son espec铆ficas para las versiones de protocolo soportadas.


Encuentra una copia oficial de este documento aqu铆:

https://docs.cardano.org/explore-cardano/cardano-network/about-the-cardano-network

M谩s traducciones de Cardano en: Cardano For The World