BABE

Introducción

La asignación ciega para Blockchain Extension (BABE) sirve como motor de producción de bloques, inspirándose en Ouroboros Praos .(se abre en una nueva pestaña), otro protocolo de prueba de participación. Funciona de forma autónoma, ofreciendo finalidad probabilística, o puede integrarse con un mecanismo de finalidad como GRANDPA.

BABE opera con un algoritmo basado en tragamonedas, dividiendo el tiempo en eras, épocas y luego segmentado en tragamonedas. Dentro del contexto de disponibilidad, cada espacio tiene una duración de veinte segundos, alineándose con el tiempo de bloque objetivo. En cada espacio, BABE determina un autor (o potencialmente varios autores) responsable de producir un bloque.

Si no está familiarizado con la terminología de Avail, puede consultar nuestraGlosario.

En el explorador de Avail, puede observar las eras y épocas navegando a la página de apuestas y ubicando la información en la esquina superior derecha.

Proceso de producción de bloques BABE

Cada espacio puede tener un autor principal y uno secundario, elegidos entre un conjunto de validadores activos. La asignación de autores principales, también conocidos como líderes de espacios, es un proceso aleatorio regido por la función VRF. Sin embargo, debido a la forma en que funciona la función, puede haber casos en los que ningún validador califique como autor principal. Para mantener un tiempo de bloque constante, BABE emplea un sistema de turnos para designar líderes de espacios secundarios, quienes producen nuevos bloques sin un líder designado.

Como sabemos, la selección de los autores principales se basa en una función aleatoria verificable (VRF). Por lo tanto, resulta crucial establecer una forma de aleatoriedad universalmente aceptada que permanezca intacta y verificable para todas las partes involucradas. Los VRF abordan este desafío generando un número pseudoaleatorio acompañado de una prueba de su generación adecuada. Estas funciones toman varios parámetros, incluida una clave privada. El VRF considera una semilla aleatoria de época (predeterminada por todos los nodos), un número de ranura y la clave privada del autor. Como cada nodo posee una clave privada única, esto garantiza la generación de un valor pseudoaleatorio distinto para cada ranura.

Durante una época, cada autor emplea su VRF para cada espacio. Para los espacios en los que la salida cae por debajo de un umbral acordado, el validador obtiene el derecho de crear un bloque durante ese espacio. La naturaleza aleatoria de la asignación de espacios introduce la posibilidad de espacios sin un líder primario y aquellos con múltiples primarios.

Para abordar los espacios vacantes y mantener la producción de bloques ininterrumpida, BABE incorpora un mecanismo de reserva por turnos. A cada puesto se le asigna un líder secundario. En los casos en los que ninguna entidad se declara como líder principal al comienzo del espacio, el líder secundario interviene para producir un bloque. Este mecanismo alternativo garantiza que cada espacio tenga un autor de bloque asignado, lo que contribuye a garantizar un tiempo de bloque constante.

A continuación se muestra un ejemplo de producción de bloques BABE en acción.

 🎁 Prepared block for proposing at 127907 (121 ms) [hash: 0x7f68240041f3e921c33968dd834468335da4150ea323d99f60b6cdf28ac82bbf; parent_hash: 0xb34c…9bf8; extrinsics (15): [0x04c0…652f, 0x8751…b60b, 0xfbe4…23f7, 0x9817…c7ee, 0x33ab…b82f, 0x5296…ab61, 0xfb50…16a7, 0xba5e…bf07, 0xafba…c299, 0xc383…ec57, 0x2876…e25b, 0x4971…0cc8, 0x5204…5aa5, 0xbf53…3ab0, 0xdd87…ef68] 🔖 Pre-sealed block for proposal at 127907. Hash now 0x329230818f4aba570925f85d4ed78eca38cdd3f08996777588fd29050f565e4a, previously 0x7f68240041f3e921c33968dd834468335da4150ea323d99f60b6cdf28ac82bbf. 🎁 Prepared block for proposing at 127939 (126 ms) [hash: 0xcc5158a686169433cf8c8b7a417103381d9cf96e8c57a695c8bae2a9cf466378; parent_hash: 0x35f0…9f48; extrinsics (11): [0x3386…2d55, 0xe4df…ba5a, 0xe924…a0e9, 0x7265…be43, 0x0d0e…4365, 0x474c…e485, 0x2613…e297, 0x3d2b…e930, 0x5d93…e34f, 0x3457…4676, 0xbfdf…76c9] 🔖 Pre-sealed block for proposal at 127939. Hash now 0x20ba2195108a6b76faf3c83656d9ba265e426041e97681a66264c15362c0241e, previously 0xcc5158a686169433cf8c8b7a417103381d9cf96e8c57a695c8bae2a9cf466378.

Funciones del bebé

A continuación se ofrece una descripción general de cómo funciona BABE.

Consenso basado en ranuras : BABE opera con un mecanismo basado en ranuras, donde el tiempo se divide en intervalos fijos conocidos como ranuras. Cada espacio representa un período de tiempo designado durante el cual se puede producir un nuevo bloque.

Elección de líder : en cada ranura, se elige un líder para proponer y producir un nuevo bloque para la parachain. El proceso de elección de líder en BABE es determinista y depende de una combinación del hash del bloque y un número aleatorio derivado del esquema VRF (Función aleatoria verificable). El VRF ayuda a garantizar la imprevisibilidad y al mismo tiempo permite a los nodos verificar la legitimidad del líder.

Asignación ciega : El término "Asignación ciega" en BABE se refiere al proceso de selección del líder para un puesto sin revelar la identidad del líder hasta que se produce el bloque. Esto añade un elemento de seguridad y previene posibles ataques basados ​​en saber de antemano quién será el líder.

Duración del intervalo de tiempo adaptable : BABE presenta una duración del intervalo de tiempo adaptable, lo que significa que la duración de cada intervalo se puede ajustar dinámicamente según las condiciones de la red. Esta adaptabilidad ayuda a Avail a manejar las variaciones en los tiempos de producción de bloques de manera más eficiente.

Finalización : si bien BABE es responsable de proponer y producir bloques, la finalización de los bloques se logra mediante el algoritmo de consenso GRANDPA. GRANDPA es responsable de garantizar la seguridad general y la coherencia de la cadena Avail.

Si bien BABE es un algoritmo poderoso para seleccionar nuevos autores de bloques de una manera verificablemente aleatoria, Avail usa GRANDPA además de BABE para lograr una finalización determinista de la cadena. En el próximo artículo, aprenderemos sobre GRANDPA, el mecanismo de finalización de bloques de Avail.

Last updated