Justificación del diseño de Elrond

Nota: A lo largo de este artículo por proponente, nos referiremos a un nodo / entidad en la red que está a cargo en un momento específico de proponer un nuevo bloque, mientras que los validadores designarán los nodos / entidades responsables de validar el bloque presentado por el proponente, por lo tanto efectivamente "responder" por el proponente.

Los dos problemas que Elrond intenta resolver desde el principio son el aumento del rendimiento, que se puede lograr mediante fragmentación y la disminución del gasto de energía, que se puede lograr al pasar de un consenso basado en la prueba de trabajo a un consenso de prueba de participación. Cada una de estas dos puntas requiere que se tengan en cuenta diferentes aspectos al diseñar la arquitectura y los componentes a su alrededor.

El aspecto de PoS necesita solucionar todos los problemas comunes (¿la mayoría?) En los sistemas de PoS, lo que incentiva el comportamiento racional. El aspecto de fragmentación necesita mecanismos para alcanzar acuerdos dentro de cada parte más pequeña de la red (fragmento), así como un acuerdo entre los participantes en una transacción que abarca más fragmentos. Y todo esto también debe tener en cuenta el posible comportamiento bizantino (adversario).

Antes que nada, detallemos un enfoque común cuando hablamos de blockchains basados ​​en la prueba de participación: todos tienden a medir el tiempo con dos unidades; el obvio llamado tiempo de bloque (el intervalo entre dos bloques sucesivos) pero también uno de orden superior llamado época o era. Desde este punto de vista, el intervalo requerido para generar un número específico (X) de bloques es una era (por lo tanto, siempre era = X * tiempo de bloque).

Conoce a tu enemigo…

Todas las cadenas de bloques de PoS, existentes hoy o simplemente teorizadas, usan incentivos criptoeconómicos para garantizar que el comportamiento de las personas (como sus personajes de red representados por nodos) sigue un patrón esperado: los nodos son recompensados ​​por hacer cosas buenas (por la red) y ser castigado por hacer cosas malas. Si bien en algunos casos, este enfoque de palo y zanahoria enfatiza demasiado un lado de la ecuación (es decir, hay casos en los que no hay castigos por el comportamiento de confrontación), la mayoría de las veces estos dos lados están equilibrados. También vale la pena señalar que los castigos están en gran medida relacionados con una estaca que cada nodo se bloquea durante un período predefinido (normalmente varias épocas). El comportamiento de confrontación en ausencia de esta estaca bloqueada que el nodo puede perder (en parte o en su totalidad) se llama ataque Nada en juego.

Otro tipo de comportamiento de confrontación relacionado con las apuestas bloqueadas implica que un nodo sea parte del proceso de "decisión", luego abandone este proceso y recupere su apuesta. Algún tiempo después de estos eventos, utilizando las credenciales asociadas con la estaca (es decir, las claves), el nodo / entidad puede intentar "falsificar" un historial diferente (ya sea por sí mismo o al proporcionar estas credenciales a una parte maliciosa); transformando así el ataque en un juego retrasado, generalmente llamado ataque de largo alcance. Desde este punto de vista, refiriéndose a los términos descritos en el artículo anterior, es importante que el desbloqueo de estaca se realice solo después de que se finalicen los bloques propuestos o validados por el nodo en discusión.

En algunos tipos de ataques de largo alcance realizados en blockchains que implementan penalizaciones (principalmente aquellos con objetivos de vida), publicar esta historia alternativa podría dar la impresión de que algunos de los nodos no han cumplido con sus deberes y, por lo tanto, son castigados (injustamente). Este tipo de comportamiento de confrontación se llama ataque de sangrado de estaca [SB].

Por último, pero no menos importante, podemos tener situaciones en las que los nodos están aislados de la red por los adversarios, que les "alimentan" una visión distorsionada de la realidad (por ejemplo, solo retransmiten transacciones de sus "amigos" y censuran transacciones legítimas) Este tipo de ataques se llaman ataques de eclipse.

... pero también conoce tus debilidades para contrarrestar

Como se describió anteriormente, los sistemas PoS tienen que cubrir algunos puntos más débiles cuando se trata con adversarios, dos de los más importantes son:

  • Externo: el DoS (o de otro modo perjudicial) de los validadores o proponentes actuales para que no puedan comunicarse con el resto de los nodos y no puedan tomar decisiones. Obviamente, esto afecta las capacidades de vida de la cadena de bloques, pero también puede afectar la seguridad (lo que conduce a resultados impredecibles).
  • Interno: los nodos (identidades o entidades) que se eligen en un paso específico para asumir uno de los roles 'oficiales' para el (los) siguiente (s) paso (s) pueden comportarse de manera contradictoria (por ejemplo, proponer bloques no válidos, negarse a participar en la firma colectiva procedimientos, etc.)

Si recuerda del artículo anterior, se describieron tres tipos de fragmentación: red, transacción y estado. Hemos optado por hacer fragmentos de estado y, como respuesta a estos dos problemas particulares que acabamos de describir, hemos ideado dos conceptos que hemos denominado Prueba segura de estaca y Fragmento de estado adaptativo.

Un enfoque novedoso para el comportamiento adversario a través de la adaptabilidad robusta

La intuición de todos dice que cuanto más anticipado es un adversario sobre el nodo proponente y / o los nodos validadores, comenzando por la identidad del nodo pero quizás también sus 'coordenadas de red', más daño puede infligir este adversario en el nodo (y, por extensión , a la red). Un escenario aún peor es si, al conocer de antemano quién va a ser responsable de una propuesta de bloque en particular, el adversario puede coludir con dicho proponente (o validador) para que propongan (o validen) bloques no válidos (por ejemplo, permitiendo un doble gastar o acuñar monedas de la nada, a diferencia de lo que hacen los bancos centrales hoy en día :-D). Como resultado, es deseable conocer la función de un nodo para un paso específico (bloque) con la mayor anticipación posible.

Para resolver este enigma, hemos adoptado el siguiente enfoque: utilizamos la firma del bloque actual como fuente de aleatoriedad y, en función de eso, elegimos un proponente / actual y un conjunto de validadores actuales. Una forma de lograr esto es que todos los elegibles ejecuten una Función aleatoria verificable (VRF) en el hash del bloque actual y obtengan un número aleatorio (y una prueba de que el número aleatorio fue generado correctamente por el VRF elegido).

Los números aleatorios están ordenados (digamos de menor a mayor) y el primero (productor del número más pequeño) es el proponente, los siguientes N son los validadores. De esta manera, aunque el proponente puede elegir un bloque en particular, no podrá decir cuál de los otros participantes del consenso obtendrá un número aleatorio quizás más pequeño en el siguiente paso.

Para hacer las cosas aún más difíciles para los nodos bizantinos, también hemos ideado un proceso mediante el cual de vez en cuando (por ejemplo, cada época) una parte de los nodos de fragmentos se reasigna a fragmentos diferentes, sin que nadie en la red pueda saber de antemano qué el nodo será reasignado y, además, a qué fragmento se moverá. El proceso de reasignación puede ser, nuevamente, el resultado de ejecutar un VRF.

La particularidad que hemos empleado en el diseño de nuestros mecanismos de zanahoria y palo es que, además de las recompensas y la reducción, cada nodo tendrá una calificación que representa la vista de la red sobre el comportamiento de dicho nodo. Jugar según las reglas aumentará (hasta un límite) la calificación del nodo, mientras que los comportamientos adversos lo disminuirán.

Esta calificación se combinará con la apuesta del nodo al calcular las probabilidades relacionadas con la apuesta, es decir, al final una ponderación en la apuesta del usuario. Las calificaciones positivas actuarán como si la apuesta del nodo fuera mayor que la apuesta real, mientras que las negativas tendrán el mismo efecto que reducir la apuesta del nodo. Las recompensas y los castigos reales también podrían verse afectados por esta calificación (por lo tanto, un comportamiento positivo beneficiaría a un nodo más, a largo plazo, que uno negativo, suponiendo la misma apuesta para empezar)

Comida para llevar

En conclusión, nos propusimos construir esta nueva arquitectura de blockchain al encontrar los mecanismos óptimos (creemos) a través de los cuales:

  • Incentivar el buen comportamiento: pidiendo a las entidades que quieren "jugar" que "pongan su dinero donde está su boca", mientras que al mismo tiempo ofrecen recompensas por ser parte del mecanismo de consenso
  • Minimice la capacidad de sesgo de ciertas decisiones y la exposición de los participantes a los ataques tomando algunas decisiones (asignación de fragmentos, elecciones de grupo y líder) basadas en una fuente de aleatoriedad (firmas de bloque y nodo).
  • Elimine (o al menos reduzca drásticamente las probabilidades de) colusión barajando nodos en fragmentos de vez en cuando, y también cambiando los roles dentro de un fragmento

Referencias

[SB] https://eprint.iacr.org/2018/248.pdf, “Ataques de sangrado de estaca
en blockchains de prueba de participación ”
[LRA] https://blog.cosmos.network/consensus-compare-casper-vs-tendermint-6df154ad56ae “Comparación de consenso: Casper vs. Tendermint”

Para más información, visítenos:

  • Sitio web oficial: www.elrond.com
  • Elrond Github: https://github.com/ElrondNetwork
  • Libro blanco: https://elrond.com/files/Elrond_Whitepaper_EN.pdf
  • Twitter: https://twitter.com/elrondnetwork