Consenso de Unidad – Zero to Hero – Aion

Para los no técnicos que quieren aprender cómo funciona Unity, ¡explicamos lo que hace que este algoritmo de consenso funcione! Si tiene una inclinación técnica, puede leer la preimpresión de Unity.

En mayo, lanzamos el primer borrador del algoritmo de consenso de Unity; lee esto para saber más sobre por qué estamos entusiasmados con Unity y en qué se diferencia del consenso actual de Aion. Como la implementación de los jefes de Unity en curso, quisimos responder a la pregunta que recibimos con más frecuencia de la comunidad no técnica: “¿cómo combina Unity la Prueba de participación (PoS) y la Prueba de trabajo (PoW)?”.

Asumiré que sabes lo que es un algoritmo de consenso de blockchain y, al menos, vagamente, conocer la mecánica del algoritmo de consenso de Nakamoto, conocido popularmente como "Prueba de trabajo" (PoW).

Lo primero que debes saber sobre Unity es que es un consenso híbrido. Dependiendo de con quién hable, el término consenso híbrido tiene un significado diferente. En el contexto de Unity, híbrido describe el hecho de que tanto el poder de hachís producido por los mineros, como la participación de los tenedores de monedas de Aion, se combinan en un mecanismo que llega a un consenso sobre el estado de la cadena de bloques.

Vamos a utilizar algunas abstracciones simples, a menudo empleadas en la implementación, para describir aspectos clave del diseño de consenso de Unity:

Algoritmo de producción de bloques: Este algoritmo decide quién puede agregar el siguiente bloque a la cadena de bloques. Regla de elección de trabajo (FCR): Este algoritmo decide qué cadena es "la correcta", si se proponen varias cadenas simultáneamente. Algoritmo de ajuste de dificultad: Este algoritmo ajusta algún parámetro del sistema llamado "dificultad", para obtener un tiempo de bloqueo objetivo (por ejemplo, 10 segundos en Aion).

Prueba de producción de bloques de trabajo

Comencemos con el ejemplo con el que es más probable que estés familiarizado: el consenso de Nakamoto. Los bloques se “producen” a través de lotería; Sus posibilidades de ser elegido para proponer un bloque a una altura determinada dependen de la potencia hash que posea, en proporción al resto de la red. En función del parámetro de dificultad, tendrá que realizar (probabilísticamente) un cierto número de operaciones de hash (incrementando el nonce en el bloque) para obtener un "golpe". Si dibujamos un cuadro alrededor de este mecanismo y lo llamamos un "algoritmo de producción de bloques", podemos visualizarlo así:

Prueba de producción de bloques de estaca

Prueba de estaca (PoS) es otro término más, que puede significar diferentes cosas para diferentes personas. Existen varias estrategias diferentes en la naturaleza para incorporar la participación en un algoritmo de consenso con el fin de asegurar una cadena de bloques. Unity usa una estrategia de PoS particular que simula un proceso aleatorio (estocástico), en el espíritu del consenso de Nakamoto.

Intentemos comprender este sabor particular de PoS de forma aislada, antes de hablar de cómo Unity lo hibrida con PoW. Entonces, supongamos que tienes una cadena de bloques de PoS puro; en esta cadena de bloques, los bloques se "producen" a través de un lotería; Sus posibilidades de ser elegido para proponer un bloque a una altura determinada dependen de la "potencia de replanteo" (monedas de red) que posee en proporción al resto de la red. Como una función de su clave secreta, proporción de participación en la red, último bloque y dificultad, se le asigna un tiempo aleatorio de acuerdo con alguna distribución. Para "ganar" esta lotería, debe tener la cantidad mínima de tiempo de todos los stakers en línea para esa altura de bloque, y Esté en línea para propagar este bloque de manera oportuna (como en PoW). De nuevo, podemos visualizar este proceso así:

¿Parecer familiar? Como mencionamos anteriormente, este sabor de PoS imita la dinámica del algoritmo de prueba de trabajo con el que la mayoría de las personas están familiarizadas. Aquí está la clave para lograr la hibridación propuesta por Unity.

Bloque de producción

¡Lo que hace la unidad, es que ejecuta los algoritmos PoW y PoS a la vez! Dado que el algoritmo de PoS se ajusta para producir bloques con la misma distribución (proceso determinado aleatoriamente) como PoW, los bloques producidos por ambos algoritmos pueden ser intercalados en una cadena. Podemos visualizar así:

Observe que no se impone ningún orden en la secuencia de bloques de PoS y PoW, pero al final de la animación, el número de bloques de PoS y PoW (aproximadamente) es igual a otro.

No vamos a sumergirnos en cómo se especifican exactamente cómo funcionan los algoritmos FCR y de ajuste de dificultad (lea el documento para obtener más información); en lugar de eso, nos centraremos en los problemas que resuelven estos algoritmos en el contexto de este diseño y por qué desempeñan un papel clave en la activación de Unity.

Debido a la aleatoriedad involucrada en el algoritmo de producción de bloques, en cualquier altura de bloque dada, podríamos tener múltiples cadenas (bifurcaciones) que pretenden ser "cadena principal". La regla de elección de horquillas (FCR) en Unity está diseñada para ser eficiente elegir alguna cadena más pesada Basado en las dificultades combinadas de los procesos de producción de bloques de PoW y PoS.

Otro problema que surge en este trabajo de hibridación es cómo mantener la producción de bloques equitativa entre PoS y PoW (es decir, ambos procesos producen el 50% de los bloques a lo largo del tiempo). El algoritmo de ajuste de dificultad Hace que la distribución de bloques sea igual en el tiempo. seleccionando un tiempo de bloque para cada algoritmo de producción que sea el doble del tiempo de bloque objetivo (por ejemplo, 20 segundos en Aion-Unity); De esta manera, debido a la forma en que las distribuciones conjeturadas de los procesos de producción de bloques se "suman", se obtiene un bloque producido a la tasa de bloque objetivo (por ejemplo, 10 segundos en Aion-Unity).

¡Eso es! Se omitieron muchos detalles en esta presentación, pero, con suerte, se fue con una mejor intuición de cómo está diseñado para que funcione el algoritmo de consenso de Unity.