馃嚜馃嚫 驴C贸mo funciona el protocolo Ouroboros?

:es: Traducci贸n al espa帽ol de How Ouroboros Proof of stake works?

Publicado por Carlos L贸pez de Lara en su blog de Medium, el 8 de Mayo de 2019.

Las cadenas de bloques requieren un mecanismo de acuerdo entre los participantes de la red sobre c贸mo a帽adir nuevas transacciones al ledger. Este mecanismo se conoce como protocolo de consenso.

El objetivo del protocolo de consenso es asegurar que s贸lo se adopte y se siga una cadena, de lo contrario, el sistema colapsar铆a inmediatamente.

El algoritmo de consenso de la prueba de trabajo

Bitcoin implement贸 un algoritmo de consenso llamado Prueba de Trabajo. En este protocolo, para a帽adir un nuevo bloque a la cadena de bloques, el nodo que lo intenta debe proporcionar una prueba de trabajo, que se expresa mediante la soluci贸n de un rompecabezas matem谩tico. Este proceso se conoce como miner铆a.

El nodo que resuelve el puzzle tiene derecho a crear un nuevo bloque, y es recompensado por ello.

Este esquema pone a todos los nodos en una carrera, y como s贸lo un nodo es recompensado, se desperdicia mucha potencia computacional y energ铆a el茅ctrica.

Estos residuos han suscitado preocupaci贸n por el impacto medioambiental de Bitcoin. Actualmente, el proceso minero de Bitcoin consume tanta energ铆a como pa铆ses como Holanda o Islandia.

Adem谩s de las preocupaciones medioambientales, el sistema de recompensas del algoritmo de prueba de trabajo tambi茅n ha llevado a la centralizaci贸n de la red Bitcoin. Hasta el 75% de la potencia de c谩lculo de la red Bitcoin se encuentra en China. Y un solo operador, Bitmain, controla m谩s del 40% de la tasa de hash de la red.

El problema subyacente es que Bitcoin hace una clara distinci贸n entre los usuarios reales de la red y los mineros. La tenencia de Bitcoins no otorga ning煤n control sobre la red, ni ning煤n poder sobre las decisiones relativas a la evoluci贸n del sistema. El mismo es controlado por un peque帽o grupo de desarrolladores y mineros.

Ouroboros, un algoritmo de consenso de prueba de participaci贸n

En Ouroboros, no hay una carrera entre las partes interesadas para producir un bloque. En su lugar, un l铆der del intervalo (slot) es seleccionado al azar, proporcionalmente a la cantidad de tokens que posea (stake), para tener la oportunidad de crear un nuevo bloque.

As铆 que no es el poder lo que te da la oportunidad de producir un nuevo bloque (y ser recompensado por ello), es el stake lo que aumenta las posibilidades de ser elegido.

Dado que no hay una carrera para minar un bloque, no hay desperdicio de energ铆a ni de recursos computacionales. En ese sentido, Ouroboros es un protocolo m谩s eficiente y econ贸mico que el protocolo de Bitcoin, manteniendo todas las garant铆as de seguridad.

驴Qu茅 pasa si no est谩s en l铆nea? (piscinas de estacas)

Para generar un bloque hay que estar en l铆nea, pero pedir a todos que est茅n en l铆nea en todo momento es poco pr谩ctico y poco realista. Es por ello que Ouroboros introduce la figura de Participaci贸n Delegada. Como parte interesada, puedes delegar tu participaci贸n a un tercero para que act煤e en tu nombre siempre que sea elegido l铆der del intervalo.

A estos delegados se les conoce como stake pools. Son miembros de la comunidad que se comprometen a ejecutar el protocolo en tu nombre, y a estar en l铆nea casi el 100% del tiempo.

Una cosa importante que hay que tener en cuenta es que s贸lo delegas tus derechos para participar en el protocolo, no sus tokens reales. Tus ADA a煤n est谩 seguras y bajo tu control en tu billetera, y los fondos no ser谩n bloqueados, por lo que incluso puedes realizar transacciones.

驴Qu茅 hay de los incentivos?

Las partes interesadas que crean bloques son incentivadas a participar en el protocolo mediante el cobro de comisiones por transacci贸n. Pero Ouroboros no incentiva a las partes interesadas a invertir recursos computacionales para crear los bloques. M谩s bien, prefiere la disponibilidad y la verificaci贸n de transacciones.

Las recompensas provienen de dos fuentes: las comisiones por transacci贸n y los fondos extra铆dos de la reserva de ADA.

En Ouroboros, los incentivos no dependen de los bloques, sino que las recompensas de un ciclo (epoch) se recogen de un fondo de reserva y se distribuyen entre las partes delegantes y los stake pools que participaron durante los intervalos (slots) de forma proporcional a su participaci贸n.

En el caso de los stake pools, cada pool l铆der obtiene una fracci贸n de las recompensas para cubrir sus costes operativos y un margen de beneficio. El resto se distribuye entre los miembros del pool l铆der, de forma proporcional a la participaci贸n que han deelgado al mismo.

Se puede elegir un stake pool diferente, o actuar por cuenta propia, en cualquier momento.

驴Y si por alguna raz贸n se produce una bifurcaci贸n?

Dado que las partes interesadas no siempre est谩n en l铆nea, van y vienen (tambi茅n conocida como disponibilidad din谩mica), y a veces est谩n fuera de l铆nea durante largos per铆odos, es importante que puedan volver a sincronizarse con la cadena correcta cuando vuelvan a estar en l铆nea.

La caracter铆stica clave de Ouroboros G茅nesis es que, gracias a una 煤nica regla de selecci贸n de la cadena, permite a las partes nuevas, o las que se unen de nuevo, sincronizarse con la 鈥渃adena buena鈥 con s贸lo una copia confiable del bloque genesis. Esto hace que el protocolo sea seguro contra el llamado 鈥渁taque de largo alcance鈥 (long-range attack).

Aleatoriedad autogenerada

Hacer que la selecci贸n del l铆der del intervalo sea justa y segura procedimiento de staking requiere una fuerte dosis de aleatoriedad.

El protocolo Ouroboros (espec铆ficamente Ouroboros Praos y Ouroboros Genesis) incorpora una caracter铆stica llamada Global Random Oracle que produce una aleatoriedad distinta en cada ciclo.

Esto se logra mediante la implementaci贸n de una Funci贸n Aleatoria Verificable (Verifiable Random Function). Cuando se eval煤a con la llave de un stake pool, devuelve un valor aleatorio que se almacena en cada bloque producido. El hashing de todos los valores del ciclo anterior se convierte en la semilla aleatoria para el procedimiento de staking. La propia cadena de bloques se convierte en su fuente de nueva aleatoriedad.

Por eso el protocolo se llama Ouroboros, la serpiente que se come su propia cola.

Promoviendo la descentralizaci贸n

Finalmente, el mecanismo de incentivos de Ouroboros promueve la descentralizaci贸n del sistema de una manera mejor que la Prueba de Trabajo (PoW), porque Ouroboros considera dos escenarios clave:

  • Por un lado, un stake pool s贸lo puede actuar como delegado si representa a un cierto n煤mero de partes interesadas cuya participaci贸n conjunta supera un determinado umbral, por ejemplo, el 0,1% de toda la participaci贸n en la cadena de bloques. Esto evita un ataque de fragmentaci贸n, donde alguien intenta afectar el funcionamiento del protocolo aumentando la poblaci贸n de delegados.
  • Al mismo tiempo, cuando la participaci贸n agregada de un stake pool crece m谩s all谩 de un cierto umbral, las recompensas se vuelven constantes. Esto hace que dicho pool en particular sea menos atractivo, ya que las partes interesadas no estar铆an maximizando sus recompensas. Por ejemplo, si el umbral se fija en el 1%, una stake pool con una participaci贸n del 2% obtendr铆a las mismas recompensas que otra con una participaci贸n de s贸lo el 1%.

Todas estas funcionalidades convierten a Ouroboros en la mejor tecnolog铆a PoS hasta la fecha. Y su implementaci贸n se encuentra exclusivamente en la cadena de bloques de Cardano.

驴C贸mo funciona el protocolo Ouroboros?


Diagrama del protocolo Ouroboros Genesis

1 - El tiempo se divide en ciclos (epochs) e intervalos (slots), y comienza en el bloque Genesis. S贸lo el l铆der de un intervalo puede firmar un bloque para dicho intervalo en particular.

2 - Registro: Lo primero que un usuario debe hacer para participar en el protocolo es registrarse a la red, para sincronizar con el ledger.

  • El reloj global indica el intervalo actual.
  • El Or谩culo Aleatorio Global (Global Random Oracle) produce valores aleatorios (v) y los entrega al usuario.

3 - Procedimiento de staking:

3.1 - Al principio de cada ciclo, los participantes obtienen -de la cadena de bloques- la distribuci贸n del stake del 煤ltimo bloque de 2 ciclos anteriores. Por ejemplo, si el ciclo actual es el 100, la distribuci贸n del stake utilizada es la misma que en el 煤ltimo bloque del ciclo 98.

3.2 - Or谩culo Aleatorio Global: Es una funci贸n de hashing que toma los valores aleatorios 鈥渧鈥 (incluidos en cada bloque por el l铆der del intervalo para este prop贸sito) de los primeros 鈪 de los intervalos del ciclo anterior y los hash juntos, y los usa como la semilla aleatoria para seleccionar los l铆deres del intervalo.

3.3 - En cada intervalo los participantes eval煤an la Funci贸n Aleatoria Verificable (Verifiable Random Function - VRF) con su clave secreta. Si el valor de salida (v) est谩 por debajo de un determinado umbral, el pool se convierte en el l铆der del intervalo.

4 - Certificado: La VRF produce dos salidas: un valor aleatorio (v) y una prueba (蟺) que el l铆der del intervalo incluir谩 en el bloque que produce para certificar que es el l铆der leg铆timo de ese intervalo en particular.

5 - El l铆der del intervalo realiza las siguientes tareas:

5.1 - Obtiene las transacciones a incluir en su bloque.
5.2 - Incluye en su bloque el valor aleatorio (v) y la prueba (蟺) obtenida a partir de la salida de la VRF.
5.3 - Antes de crear el bloque, genera una nueva llave secreta llamada Firma de la Llave-Evolutiva (Key-evolving Signature). La llave p煤blica sigue siendo la misma, pero la llave secreta se actualiza en cada paso y se borra la llave antigua. Es imposible falsificar firmas antiguas con llaves nuevas. Y tambi茅n es imposible derivar llaves anteriores a partir de otras nuevas.
5.4 - Finalmente, transmite el nuevo bloque a la red.

6 - Las recompensas obtenidas por los l铆deres de intervalos se calculan al final del ciclo. Las recompensas provienen de las comisiones por transacci贸n y de los fondos de la reserva de ADA.

驴Qu茅 sucede en el caso de que haya una bifurcaci贸n en la cadena?

Un aspecto clave del procedimiento descrito anteriormente es que, de vez en cuando, producir谩 intervalos sin un l铆der o intervalos con varios l铆deres. Esto significa que los nodos pueden recibir cadenas v谩lidas de m煤ltiples fuentes. Para determinar qu茅 cadena adoptar, cada parte re煤ne todas las cadenas v谩lidas y aplica la regla de selecci贸n de cadena. Lo mismo hacen los usuarios que han estado desconectados durante un tiempo y necesitan sincronizarse con la cadena.

En primer lugar, el usuario utiliza el reloj global para asegurarse de que todos los par谩metros de tiempo relevantes, ciclo, intervalo, etc., est谩n actualizados.

Luego filtra todas las cadenas v谩lidas (cadenas cuyas firmas son consistentes con el bloque g茅nesis y con las claves registradas por la Firma de la Llave-Evolutiva, la Funci贸n Aleatoria Verificable y el Or谩culo Aleatorio Global.

Finalmente, aplica la regla de selecci贸n de cadena: se elije la cadena m谩s larga, siempre y cuando crezca m谩s r谩pidamente (sea m谩s densa) en los intervalos que siguen al 煤ltimo bloque com煤n de ambas cadenas competidoras.

Esta regla de selecci贸n de cadena permite que una parte que se une a la red en cualquier momento se sincronice con la cadena de bloques correcta bas谩ndose s贸lo en una copia confiable del bloque g茅nesis, y observando c贸mo crece la cadena durante un tiempo suficiente.

Nota: Este procedimiento describe a Ouroboros Genesis tal como aparece en el documento original. Su implementaci贸n posterior puede cambiar o ser adaptada.

5 Likes