🇪🇸 Batalla de Slot, Batalla de Altura, y Bloques Huérfanos

:cuba::es: Traducción de contenido publicado por Beavr Tim operador del Pool BEAVR.

Palabras y frases claves del ecosistema Cardano que serán respetadas en el idioma inglés, dado su continuo uso en el foro, artículos de sitios web, y redes sociales.

Stake Pool: Entidad de la red que, entre otras cosas, se encarga de producir y validar bloques. Puede actuar individualmente, o como tercero en nombre de varios usuarios de la red que lo elijan para ello.

Slot: Unidad de tiempo de la red Cardano que dura un segundo, dentro de cada Slot puede existir la posibilidad de crear un bloque.

Slot Leader: Stake Pool que se le ha asignado la posibilidad de crear un bloque para un Slot en particular.

Verified Random Function (VRF): Función aleatoria verificada que se usa, entre otras cosas, para saber si eres elegido como Slot Leader para un Slot en particular.


En Ouroboros Praos, el algoritmo de consenso usado por Cardano, es posible que un bloque producido por un Stake Pool quede huérfano.

Bloque huérfano: Es un bloque que fue creado, y luego descartado por los nodos de la red debido a ciertas circunstancias. Los bloques huérfanos no cuentan en cuanto al rendimiento del Stake Pool, y no son tomados en cuenta a la hora de calcular las recompensas.

Las condiciones para que un bloque creado por un Stake Pool quede huérfano son:

  1. Batalla de Slot
  2. Batalla de Altura

Batalla de Slot

En la publicación previa del blog mencionamos que cada Stake Pool verifica si es asignado como Slot Leader usando su llave VRF para esto, lo cual forma parte del algoritmo del consenso Ouroboros Praos. Esto implica que, es posible para dos o más Stake Pools convertirse en Slot Leaders para un Slot específico.

¿Cómo decide la red cuál bloque usar para alargar la blockchain, si dos o más bloques son válidos para un solo Slot?. Esta, es la base de una batalla de Slot.

La figura de abajo ilustra como un Nodo Cardano en la red resuelve este conflicto de bloques.

Cuando un nodo recibe dos bloques válidos para un solo Slot, el bloque con la menor prueba VRF es elegido como el último bloque, y es propagado a través de la red. El otro bloque queda sin uso, y se convierte en huérfano. Las batallas de Slot son inevitables en Ouroboros Praos, y el resultado de ello es cuestión de suerte. Sin embargo, los Stake Pools con poco Stake activo tienen una ventaja en la batalla de Slot, porque es más probable que ellos generen menores valores en la prueba VRF cuando compiten contra Stake Pools con bastante Stake.

Batalla de altura

Otra forma de que un bloque quede huérfano es a través de una competencia llamada, Batalla de Altura. Básicamente, un bloque quedará huérfano si no es propagado en tiempo hacia el Stake Pool que debe producir el próximo bloque. El término “Batalla de Altura”, es debido a que el bloque ganador de la batalla, determinará para ese momento, la altura o largo de la blockchain.

La figura de abajo muestra como un bloque queda huérfano al no ser propagado lo suficientemente rápido hacia el Stake Pool que está creando el próximo bloque.

Aunque los nodos en la red reciban el bloque del Pool X primero, este quedará huérfano porque el bloque del Pool Y llegó en un slot posterior, pero con el mismo número de bloque que el emitido por el Pool X. Esto sucedió, porque el Pool Y no recibió el bloque del Pool X en tiempo, y por tanto no incrementó el contador del número de su bloque. Así, los Pooles X y Y enviaron sus bloques con igual número a través de la red, pero en diferentes Slots. Y los nodos de la red siempre elegirán el bloque con el mayor número de Slot, y el otro quedará huérfano.

Para que un bloque evite quedar huérfano por una batalla de altura, es primordial que llegue en tiempo al Stake Pool que producirá el próximo bloque.

La figura de abajo ilustra cómo el Pool X es capaz de propagar rápidamente su bloque hacia Y, y así este último produce su bloque con el número siguiente al recibido por el Pool X.

Para prevenir que los bloques queden huérfanos por batallas de altura, es importante que se propaguen por toda la red en menos de 1 segundo (1s), ya que eso es lo que dura un Slot en la red Cardano, 1 segundo. De ese modo, te puedes asegurar que el Stake Pool en producir el próximo bloque, ya recibió el que tú produjiste con anterioridad, y por tanto alargue la blockchain en base al bloque tuyo que ya recibió.

Para propagar un bloque a través de la red de forma rápida, se necesita una diversidad suficiente de nodos emparejados con el tuyo, los cuales deben estar a su vez emparejados con otros nodos. La implementación actual de los Nodos Cardano no soportan el emparejamiento automático, por lo que dicho emparejamiento debe ser creado manualmente. También puede ser perjudicial tener muchos Nodos emparejados, ya que al tener que procesar muchos emparejamientos bajará la habilidad de procesamiento del Nodo para propagar los bloques a través de la red. La cantidad recomendada de emparejamientos para un solo nodo es de 20 o menos.

Una de las herramientas más útiles sobre estadísticas de bloques huérfanos, y tiempos de propagación de bloques de los Stake Pools en la red es, pooltool.io.

Referencias

[1] Ouroboros Praos, EuroCrypt 2018 https://eurocrypt.iacr.org/2018/Slides/Tuesday/TrackA/01-03.pdf

[2] Randomized Outcome of Slot Battles, GitHub, https://github.com/input-output-hk/jormungandr/issues/215

Muchas Gracias

1 Like

Muchas gracias, Leo!