Ver Documento Original aquí.
Algoritmo de Prueba de Participación (Proof of Stake - PoS) Ouroboros
El Algoritmo de Prueba de Participación (PoS) Ouroboros es la parte más importante del protocolo. Define la forma en que los nodos alcanzan el consenso sobre el estado del libro mayor.
Ouroboros es único como primer protocolo de prueba de participación de cadenas de bloques (blockchain) basado en investigaciones académicas formales y revisadas por pares.
¿Por qué prueba de participación?
Lo más importante a la hora de elegir un algoritmo de prueba de participación (PoS) en lugar de un algoritmo de prueba de trabajo (PoW) (tal y como ha sido adoptado por Bitcoin), son las consideraciones de consumo de energía. La ejecución del protocolo bitcoin es una tarea muy costosa que utiliza grandes cantidades de energía. Se estima que 3,8 hogares estadounidenses pueden ser alimentados durante un día con la energía que se gasta para generar una transacción de bitcoin. Estos requisitos de energía para el funcionamiento del protocolo bitcoin siguen creciendo a medida que más y más mineros de bitcoin invierten dinero en la minería. Además, se necesita más energía a medida que aumenta la dificultad de los problemas que encuentran sus computadoras o plataformas mineras. Por esta razón, los investigadores han investigado formas alternativas de llegar a un consenso, como el uso de los denominados BFT (Byzantine Fault Tolerant), los algoritmos de consenso y los algoritmos PoS.
¿Qué es la Prueba de participación?
La Prueba de Participación (Proof of Stake- PoS) es un enfoque novedoso para la generación de bloques. La idea central de Proof of Stake es que en lugar de desperdiciar electricidad en problemas computacionalmente graves, se selecciona un nodo para generar (o “acuñar”) un nuevo bloque con una probabilidad proporcional a la cantidad de monedas que tiene este nodo. Si un nodo tiene una participación positiva (> 0), se denomina “parte interesada”. Si un nodo es elegido para acuñar un nuevo bloque, se le llama “líder de franja”.
Prueba
La parte “prueba” de la “prueba de participación” se refiere a la prueba de que los bloques de transacciones son legítimos.
Participación
Mientras que “participación” (stake) significa “el valor relativo que tienen las direcciones en el nodo”. Por “valor relativo” se entiende “todo el valor total que poseen las billeteras de un determinado nodo dividido por el valor total del sistema Cardano SL”. Para más información, por favor vea: Saldo y participación en Cardano SL
Acerca de los Líderes de Franja
Los nodos con un interés positivo se denominan partes interesadas, y sólo éstas pueden participar en la ejecución del protocolo. Además, para poder generar nuevos bloques para la cadena de bloques, se debe elegir a una parte interesada como líder de la franja horaria. El líder de la franja puede escuchar las transacciones anunciadas por otros nodos, hacer un bloque de esas transacciones, firmar este bloque con su clave secreta y publicarlo en la red.
Se puede pensar en un líder de franja como un minero en bitcoin, pero el consenso antes mencionado define quién podrá explotar, cuándo y cuánto.
Épocas y Franjas
El protocolo de Ouroboros divide el tiempo físico en épocas, y cada época se divide en franjas horarias. Por ejemplo:
Nota: una franja es un período de tiempo relativamente corto (por ejemplo, 20 segundos).
Cada franja tiene un y sólo un líder (líder de franja, SL):
El líder de la franja tiene derecho (exclusivo) a producir un único bloque durante su turno.
Esto significa que el número de líderes de franja es estrictamente igual al número de franjas en la época (llamémosle N), por lo que es imposible producir más de N bloques durante una época.
Si el líder de la franja perdió su franja (por ejemplo, cuando está fuera de línea), el derecho a producir un bloque se pierde hasta que sea elegido de nuevo.
Nota: Una o más franjas pueden permanecer vacías (sin bloques generados), pero la mayoría de los bloques (al menos 50% + 1) deben generarse durante un período.
Cómo funcionan las elecciones de los líderes de las franjas
Los líderes de las franjas se eligen del grupo de todas las partes interesadas. Tenga en cuenta que no todas las partes interesadas participan en esta elección, sino sólo aquellas que tienen suficiente participación (por ejemplo, el 2% de la participación total). Este grupo de actores se conoce como “electores”.
Los electores eligen a los líderes de las franjas para la siguiente época durante la época actual. Así, al final de la época N ya se sabe quiénes son los líderes de las franjas para la época N+1, y no se puede cambiar.
Usted puede pensar en estas elecciones como una “lotería justa”; cualquier persona del grupo de partes interesadas puede convertirse en un líder de franja. Sin embargo, una idea importante del PoS es que cuanto mayor sea el número de partes interesadas, mayores serán las posibilidades de ser elegido como líder de la franja horaria.
Nota: Una parte interesada puede ser elegida como líder de tfranja para más de una franja durante la misma época.
Computación multipartita
Uno de los problemas fundamentales del proceso de elección del líder de la franja horaria es su imparcialidad. Se necesita un cierto grado de aleatoriedad como base para la elección, en este caso, los resultados de esta elección son aleatorios y justos. Así que la pregunta es: ¿de dónde se puede obtener esta aleatoriedad?
Para lograr esta aleatoriedad se utiliza un enfoque de computación multipartidista (MPC) en el que cada elector realiza de forma independiente una acción que se denomina “lanzamiento de monedas” y después comparte los resultados con otros electores. La idea es que los resultados son generados aleatoriamente por cada elector, pero al final coinciden en el mismo valor final.
Fase de compromiso
En primer lugar, un elector genera un secreto (o valor aleatorio especial). A continuación, un elector forma un “compromiso” que es un mensaje que contiene acciones cifradas (véase una explicación más adelante) y prueba de secreto.
El siguiente paso es cuando un elector firma este compromiso con su clave secreta, especifica el número de la época y adjunta su clave pública. En este caso, todo el mundo puede comprobar quién creó este compromiso y a qué época se refiere.
Posteriormente, un elector envía su compromiso a otros electores, por lo que, con el tiempo, cada elector recoge los compromisos de todos los demás electores.
Nota: estos compromisos se ponen en el bloque, es decir, se convierten en parte de la cadena de bloques.
Fase de revelación
La fase de revelación es cuando un elector envía una “apertura”, o valor especial para abrir un compromiso. Un compromiso es como una caja cerrada (con un secreto), y el acto de abrirla implica que una llave que abre la caja recupera el secreto.
Nota: todas las aberturas se introducen en el bloque, es decir, pasan a formar parte de la cadena de bloques.
Fase de recuperación
La fase final del proceso se denomina fase de recuperación.
Eventualmente, un elector tiene tanto compromisos como aperturas. Teóricamente algunos electores pueden ser adversarios y pueden publicar su compromiso pero no publicar su apertura.
En este caso, los electores honestos pueden publicar todas las acciones (mencionadas anteriormente) para reconstruir el secreto. La idea es simple: una elección termina con éxito aunque algunos electores sean adversarios.
Posteriormente, un elector verifica que los compromisos y las aperturas coinciden, y si es así, extrae los secretos de los compromisos y forma una semilla (cadena de bytes generada al azar) de estos secretos. Así que todos los electores obtienen la misma semilla, y se usará para el algoritmo Follow the Satoshi (FTS).
Sigue el Satoshi
En este momento, los electores tienen la semilla (la aleatoriedad que necesitamos). Ahora tienen que seleccionar un líder de franja en particular para la siguiente época. Aquí es donde entra en vigor el algoritmo Follow the Satoshi (FTS):
Para explicar cómo se selecciona un líder de franja, piense en la más pequeña pieza atómica de valor como una moneda llamada “Lovelace”. Fundamentalmente, el libro mayor produce la distribución de monedas, y como los líderes de franja sólo pueden ser seleccionados de la distribución de la participación de las partes interesadas. FTS es un algoritmo que selecciona una moneda de forma verificable, y cuando la moneda de propiedad de la parte interesada S es seleccionada, S se convierte en un líder de franja. Es evidente que cuantas más monedas tenga S, mayor será la probabilidad de que se recoja una de sus monedas.
La razón por la que se llama “Follow the Satoshi” es que en bitcoin, una pieza atómica de la moneda se llama “Satoshi”, en honor a Satoshi Nakamoto, el creador de bitcoin.
Mayoría Honesta
El supuesto fundamental de un protocolo se conoce como mayoría honesta. Esto significa que los participantes que poseen al menos el 50% + 1 de la participación total son honestos. En este caso podemos demostrar que los adversarios no pueden romper la persistencia y la vitalidad de la cadena de bloques. Para más información, véase el documento (páginas 2 y 3).