馃嚜馃嚫 Actualizaci贸n del dise帽o de Ouroboros Genesis

Actualizaci贸n del dise帽o de Ouroboros Genesis

Una inmersi贸n profunda en el dise帽o e implementaci贸n de Ouroboros Genesis, la 煤ltima encarnaci贸n del protocolo de consenso responsable de la fiabilidad y seguridad de Cardano.

Autor: Nicholas Frisby - Ingeniero de software - Tweag

ucarecdn

Ouroboros Genesis es una serie de mejoras al ya robusto protocolo Ouroboros, con contramedidas para proteger a un nodo de la red cuando es nuevo o regresa tras una ausencia.

Ouroboros es el protocolo de consenso en el coraz贸n de la cadena de bloques Cardano. Dado el continuo desarrollo y la creciente aceptaci贸n de Cardano, Ouroboros ha progresado a lo largo de su plan de actualizaci贸n. Ouroboros Classic fue el primer protocolo proof-of-stake de seguridad demostrable. Ouroboros BFT fue una soluci贸n provisional que permiti贸 la actualizaci贸n de Byron. Ouroboros Praos continu贸 el desarrollo de Ouroboros Classic. La evoluci贸n de Ouroboros dar谩 un paso m谩s con Ouroboros Genesis, cuya entrega est谩 prevista para el tercer trimestre de 2024.

En este art铆culo se describen las recientes actualizaciones del desarrollo y la implantaci贸n del protocolo Ouroboros Genesis.

La historia de Ouroboros hasta ahora

Una cadena de bloques es un libro de contabilidad distribuido que se replica en m谩quinas llamadas nodos. Dado que no existe una autoridad central 煤nica, debe existir un mecanismo que garantice la coherencia y la inmutabilidad de todas las copias del libro de contabilidad. Ese mecanismo es el protocolo de consenso. El protocolo tambi茅n establece incentivos para que los nodos validen nuevos bloques y los a帽adan a la cadena.

Ouroboros divide el tiempo de Cardano en 茅pocas, que a su vez se subdividen en ranuras. Las ranuras representan periodos de tiempo cortos en los que se pueden crear bloques.

Ouroboros Classic es seguro cuando la mayor铆a de los nodos est谩n en l铆nea y tienen copias coherentes del libro mayor. Los adversarios no pod铆an predecir qu茅 nodo ser铆a el siguiente l铆der de ranura (el nodo que consigue a帽adir un bloque a la cadena), lo que hac铆a que los ataques fueran muy costosos.

Ouroboros Praos aument贸 la aleatoriedad en la selecci贸n del siguiente l铆der de ranura y a帽adi贸 contramedidas para otros posibles ataques.

Ouroboros G茅nesis abordar谩 la situaci贸n en la que un nodo se une por primera vez a la red (a partir del bloque g茅nesis), o se reincorpora tras una ausencia prolongada. Estos nodos se encuentran en una situaci贸n vulnerable hasta que se ponen al d铆a. Por ejemplo, se produce un ataque de largo alcance cuando un adversario intenta reescribir la historia de la cadena. El adversario acumula una gran participaci贸n, que le permite crear en secreto bloques m谩s r谩pidamente que la cadena principal. Entonces, cuando la cadena hist贸rica alternativa est谩 lista, el adversario intenta cambiar la cadena principal por la cadena del adversario. La implementaci贸n de G茅nesis mitigar谩 los ataques de largo alcance, a menos que el nodo de sincronizaci贸n se eclipse. Un ataque de eclipse se produce cuando el adversario intenta rodear el nodo v铆ctima con pares maliciosos, oscureciendo la red real.

脷ltimas novedades

G茅nesis introduce los siguientes conceptos nuevos:

  • pares del libro mayor
  • puntos de control ligeros (como alternativa temporal)
  • l铆mite de entusiasmo (LoE)
  • desconexiones de densidad g茅nesis (GDD)
  • l铆mite de paciencia (LoP)
  • la m谩quina de estado de G茅nesis.

Pares del libro mayor

La desviaci贸n m谩s profunda del documento Genesis fue una decisi贸n arquitect贸nica temprana para preservar la limitaci贸n del nodo Praos en la reversi贸n. Bajo Praos, un nodo Cardano no retroceder谩 m谩s de 2.160 bloques sin intervenci贸n manual. Como se describe en el documento de G茅nesis, un nodo bajo ataque de eclipse s贸lo podr铆a seleccionar extensiones de una cadena adversaria durante a帽os y luego, cuando finalmente se conecta a un nodo que sirve a la cadena honesta, revertir abruptamente cualquier n煤mero de bloques.

Como en la pr谩ctica no es necesario que un nodo tenga una capacidad de reversi贸n ilimitada, los arquitectos dieron prioridad al l铆mite de reversi贸n, que es clave para muchos l铆mites en el uso de recursos. Abandonarlo para G茅nesis eliminar铆a una invariante b谩sica invocada por una parte significativa del trabajo de ingenier铆a precedente. Adem谩s, mientras el nodo Cardano Genesis que se sincroniza tenga acceso a un peer honesto y sano, no deber铆a, como el nodo Praos, requerir un rollback de m谩s de 2.160 bloques.

Los eclipses son potencialmente una amenaza m谩s importante para el nodo G茅nesis de lo expresado en el documento, que no los aborda directamente. Estos ataques ponen en peligro la propiedad de seguridad de G茅nesis, ya que un eclipse que dure m谩s de unos segundos es suficiente para que un nodo G茅nesis de sincronizaci贸n seleccione potencialmente 2.161 bloques de una cadena adversaria, a pesar de implementar fielmente las comparaciones de densidad de G茅nesis. Sin conocimiento de la cadena honesta, la regla de G茅nesis simplemente seleccionar谩 la cadena m谩s densa actualmente accesible. En una situaci贸n de eclipse, puede que no sea necesariamente la cadena honesta. Esto contrasta con el art铆culo de G茅nesis, en el que un nodo eclipsado y sus usuarios son simplemente retrasados, confundidos, mal informados, etc. Eso conlleva riesgos relacionados, pero no compromete las propiedades de seguridad o liveness, ya que el nodo podr铆a eventualmente conectar a un peer honesto y por lo tanto recuperarse.

Considerando s贸lo una red Praos, en la que te贸ricamente los nodos nunca se quedan atr谩s, los eclipses pueden seguir siendo perjudiciales. La diferencia clave con G茅nesis es que un nodo Praos (inherentemente atrapado) puede soportar un eclipse mucho m谩s largo antes de que haya una probabilidad significativa de que pueda comprometerse con una cadena adversaria. Sin embargo, incluso sin tener en cuenta la vulnerabilidad adicional durante la sincronizaci贸n, un nodo Praos necesita alguna defensa contra los eclipses.

Una defensa consiste en introducir el concepto de pares del libro mayor dentro de la l贸gica de selecci贸n de pares para limitar suficientemente la probabilidad y duraci贸n de los eclipses. Durante la sincronizaci贸n, un nodo G茅nesis ajusta su configuraci贸n de pares del libro mayor para reducir dr谩sticamente la probabilidad de eclipsarse. Y sin eclipses, el nodo G茅nesis nunca seleccionar谩 2.161 bloques de una cadena adversaria.

El cambio en la selecci贸n de pares funciona as铆. Examinando una distribuci贸n reciente de participaciones, un nodo G茅nesis selecciona pares de muestra que han participado en el mantenimiento de la red, lo que reduce enormemente la probabilidad de seleccionar nodos maliciosos.

Una soluci贸n alternativa: el control ligero

El documento Genesis establece que la mejor cadena dentro de una red Praos sana tendr谩 m谩s bloques que cualquier otra cadena en una ventana fija de ranuras inmediatamente despu茅s de la intersecci贸n de las dos cadenas. La 煤nica excepci贸n es que la red Praos no est茅 en buen estado.

Una interrupci贸n grave de la red justificar铆a la ejecuci贸n de un plan de recuperaci贸n de desastres, uno que requiera la cooperaci贸n fuera de la cadena entre las partes interesadas para reescribir la cadena dentro del intervalo de interrupci贸n para reparar la cadena honesta. Una vez hecho esto, la regla de G茅nesis volver铆a a favorecer a la cadena honesta.

Sin embargo, un plan de recuperaci贸n en caso de cat谩strofe es intr铆nsecamente dif铆cil y caro de ejecutar. Al menos mientras tanto, un sencillo mecanismo de puntos de control permitir铆a a un subconjunto suficientemente grande de operadores de grupos de estaca vigilantes mantener r谩pida y f谩cilmente el control de la red durante o inmediatamente despu茅s de la interrupci贸n de la producci贸n de bloques.

La l贸gica es simple y coherente con el resto del protocolo: un archivo de configuraci贸n que especifica una lista de pares de n煤meros de bloque y hash, cada uno de los cuales hace que cualquier otro bloque con el mismo n煤mero de bloque sea tratado como no v谩lido. Los datos de configuraci贸n de ese punto de control deben utilizarse con cuidado y adquirirse s贸lo de fuentes fiables. Idealmente, la eventual ejecuci贸n del plan de recuperaci贸n permitir谩 (e incluso requerir谩) que las adiciones reactivas a la lista de puntos de control sean temporales. Los 煤nicos puntos de control permanentes ser谩n el conjunto que asegura que las claves de g茅nesis de la era Byron ya no son relevantes para la cadena Cardano.

L铆mite de entusiasmo

Dado que los pares del ledger evitan efectivamente los eclipses, un nodo de sincronizaci贸n puede asumir que tiene al menos un par sano que sirve a toda una cadena honesta. Por tanto, la propiedad de seguridad se garantiza directamente simplemente prohibiendo al nodo G茅nesis sincronizador que seleccione nunca m谩s de 2.160 bloques de una cadena m谩s all谩 de la intersecci贸n de las cadenas de sus pares del ledger. S贸lo seleccionar谩 bloques con los que est茅n de acuerdo todos los pares del ledger, entre los que casi con toda seguridad se encuentra un par honesto. Esta restricci贸n se denomina l铆mite de entusiasmo (LoE), porque el nodo de sincronizaci贸n no debe comprometerse con entusiasmo con el mejor bloque que ha visto hasta el momento. Un peer adversario puede ser capaz de servir sus bloques alternativos mucho m谩s r谩pido de lo que cualquier peer honesto puede servir los bloques hist贸ricos.

Desconexiones de densidad g茅nesis (GDD)

Es trivial para un adversario abusar del LoE para provocar que la v铆ctima deje de sincronizar bloques, violando la propiedad de vitalidad del nodo sincronizador. Hay tres formas de hacerlo

  • el atacante afirma que no tiene m谩s bloques
  • el par atacante sirve una cadena alternativa
  • el par atacante afirma que tiene bloques alternativos pero tampoco los sirve.

La regla fundamental del art铆culo de Genesis mitiga directamente las dos primeras. Si dos pares sirven cadenas diferentes y al menos una de las cadenas tiene no menos de 2.161 bloques despu茅s de la intersecci贸n, G茅nesis favorece a la cadena que tiene m谩s bloques en la ventana fija de ranuras despu茅s de la intersecci贸n de las dos cadenas. (Una cadena honesta siempre ganar谩 esta comparaci贸n. Recordemos que un prefijo compartido refleja una intersecci贸n de cadenas, incluso si una de las cadenas es simplemente la extensi贸n de otra). El nodo G茅nesis favorecer谩 a la cadena honesta desconect谩ndose del otro peer. Esta acci贸n se conoce como desconexi贸n de densidad G茅nesis (GDD). Despu茅s de suficientes GDD, la intersecci贸n de los pares restantes estar谩 m谩s lejos a lo largo de la cadena honesta hist贸rica.

Limite de paciencia (LoP)

El tercer vector de ataque es el m谩s dif铆cil de analizar. La GDD est谩 desactivada porque el peer est谩 reclamando tener m谩s bloques. Es decir, est谩 afirmando que su recuento de bloques en esa ventana fija aumentar谩 si se le permite m谩s tiempo para servir m谩s bloques. Un par honesto siempre hace esa afirmaci贸n, hasta que el nodo de sincronizaci贸n tiene todos los bloques honestos. Pero un usuario atacante podr铆a hacer esa afirmaci贸n de mala fe. El l铆mite de paciencia (LoP) garantiza que un par que afirma tener m谩s bloques debe enviarlos realmente, y hacerlo con prontitud. La principal complicaci贸n es que ni siquiera los pares honestos pueden mantener una capacidad de respuesta perfecta durante horas, sino que ocasionalmente tendr谩n r谩fagas de latencia, etc. Por esta raz贸n, el LoP se implementa como un cubo con fugas para cada peer, donde la fuga es la tasa de procesamiento de bloques mientras el peer ha reclamado bloques y los est谩 sirviendo m谩s despacio que alguna generosa tasa m铆nima, pero la capacidad del cubo de cada peer honesto ser谩 lo suficientemente alta como para absorber las r谩fagas de latencia t铆picamente esperadas de los peers sanos del ledger.

La m谩quina de estado de G茅nesis

El nodo G茅nesis desactivar谩 LoE, GDD y LoP una vez que concluya que est谩 atrapado, por dos razones importantes. En primer lugar, un nodo atrapado en una red Praos fundamentalmente debe acu帽ar el mejor bloque que pueda en una ranura en la que ha sido elegido. Por ejemplo, si un nodo de este tipo siguiera utilizando las reglas de G茅nesis, un adversario fuerte podr铆a potencialmente abusar de la LoE para prohibir temporalmente a la v铆ctima seleccionar el bloque que acaba de acu帽ar, impidiendo as铆 que se propague a la red. Es dif铆cil limitar las consecuencias de tal vector en todo el sistema, por lo que el nodo G茅nesis deber铆a comportarse exactamente igual que un nodo Praos siempre que no est茅 sincronizando.

En segundo lugar, un nodo atrapado no necesita tantos pares como un nodo sincronizador, ya que no es tan vulnerable a los eclipses. Por lo tanto, la importante carga adicional que supone para la red que todos los nodos mantengan inflados los recuentos de pares del libro mayor es innecesaria e indeseable. La m谩quina de estado G茅nesis gestiona las transiciones del nodo entre considerarse alcanzado o no:

  • Una vez alcanzado, el nodo desactiva LoE, GDD y LoP. - Un nodo concluye que est谩 atrapado si se cumplen estas condiciones

    • Tiene suficientes pares en el ledger.
    • Todos los pares afirman no tener bloques adicionales (lo que un LoP bien ajustado garantiza que ocurrir谩 pronto).
    • El nodo ya ha seleccionado la mejor de las cadenas de pares.Esto es m谩s robusto que confiar en la antig眉edad de la selecci贸n local, etc., ya que un peer atacante podr铆a ser capaz de activar dichos umbrales, haciendo que la v铆ctima baje prematuramente sus defensas.
  • Un nodo vuelve a sincronizarse si la punta de su cadena es demasiado antigua (por ejemplo, 20 minutos m谩s o menos). En particular, esto ocurrir谩 durante el tiempo de vida del proceso del sistema operativo del nodo si la m谩quina duerme durante el tiempo suficiente (por ejemplo, un usuario cierra la tapa de su port谩til durante un tiempo).

Pr贸ximos pasos

El dise帽o anterior se ha estabilizado a lo largo del 煤ltimo a帽o. Aunque sigue evolucionando ligeramente, no ha habido cambios importantes. IOG ha estado colaborando con Tweag durante los 煤ltimos meses para implementarlo y probarlo.

El lanzamiento de la primera implementaci贸n compatible con Genesis est谩 previsto para el tercer trimestre de 2024. En este momento, la mayor inc贸gnita que queda por despejar es el grado de optimizaci贸n necesario para compensar el mayor n煤mero de pares necesario para evitar los eclipses.

Hasta entonces, el inminente dise帽o de los pares de arranque sirve como incremento hacia G茅nesis. La m谩quina de estado bootstrap es una variante m谩s simple de la m谩quina de estado Genesis. Durante la sincronizaci贸n, un nodo s贸lo se comunica con pares de arranque, cada uno de los cuales es de confianza, y por lo tanto el LoE, GDD y LoP son innecesarios. En cambio, G茅nesis permitir谩 que un nodo de sincronizaci贸n incluya de forma segura a pares no fiables, siempre que no sea eclipsado (es decir, siempre que un par sea honesto), lo que permitir谩 retirar a los pares de arranque, descentralizando as铆 la infraestructura para los nodos de sincronizaci贸n y cumpliendo la promesa de G茅nesis Ouroboros.

Neil Burgess ha contribuido a este art铆culo.


Traducci贸n al Espa帽ol :es: por Mart铆n Ungar @LatinStakePools
Texto original: https://iohk.io/en/blog/posts/2024/05/08/ouroboros-genesis-design-update/

1 Like