¡Vote por franceos como productor de bloque!
BP ID : franceosysbp¿Cómo votar?
franceos API : https://api.franceos.fr

5. Funcionamiento técnico de EOS

franceos

¿Quién es la persona más legítima para explicar de manera concisa un mecanismo complejo? Su propio creador, por supuesto! Por lo tanto, citaremos aquí el artículo de Dan Larimer «DPOS Consensus Algorithm – The Missing White Paper» (Algoritmo de consenso del PDdP – El White Paper que falta), que es sin duda el más claro disponible en la web. Si el lector está interesado en el personaje, encontrará muchas ideas interesantes y brillantemente escritas a su gusto, siempre y cuando no sea alérgico al lenguaje de Cervantes, por supuesto.

Para esta ilustración, el número de productores de bloques se reduce a tres: productores A, B y C. Por lo tanto, cada bloque será producido aleatoriamente por A, B o C, y validado por los tres delegados (esto es una simplificación, en realidad hay 21 delegados y los bloques deben ser aprobados por dos tercios de los delegados más uno). Aquí, es el productor C quien separa los casos exclusivos.

Cabe señalar que el problema antes mencionado de nada en juego no se plantea en el caso del PDdP : los titulares de las fichas votan a favor de los validadores, no de los bloques. El número de validadores es fijo y el orden en el que producen los bloques también está definido por el protocolo: es imposible para una minoría de ellos crear un «fork» que pueda hacerse cargo de la cadena(chain) «correcta»

Situación de funcionamiento normal

Cuando la red funciona normalmente, el algoritmo asigna un intervalo de tiempo de tres segundos a cada productor de bloques, durante el cual puede crear un bloque y enviarlo a los otros validadores. Cualquier bloque enviado a los validadores fuera del intervalo de tiempo asignado a su productor será rechazado. Si ningún productor pierde su turno, la cadena (chain) más larga siempre se producirá de esta manera.

¿Qué pasa si hay un tenedor minoritario?

En el caso de que una parte minoritaria de los actores -hasta 1/3 de los productores de bloques – produzca una cadena de bloques diferente (comportamiento malicioso o defecto técnico), el tiempo dedicado a la producción de estos bloques será siempre mayor que el tiempo que el resto de los participantes dedicará a la construcción de la cadena mayoritaria (1 bloque cada 9 segundos en este ejemplo, frente a 2 bloques cada 9 segundos para la cadena «justa»). Por lo tanto, siempre será la cadena «honesta» la más larga, por la que el resto de la red la considerará válida.

Doble producción por una minoría desconectada

Una vez más, si una minoría produce varios «forks», el tiempo dedicado a la creación de estos bloques siempre será mayor que el requerido para que la mayoría de los productores construyan una cadena válida. Por lo tanto, estos «forks» siempre serán inválidos.

Fragmentación de la red

En caso de conectividad deficiente entre productores, es posible que haya cadenas multiples.

Si ninguno de ellos tiene la mayoría de los votos de los productores, la cadena minoritaria más larga toma el relevo.

Si dos cadenas mayoritarias tienen una longitud equivalente, en el momento de la reconexión, los productores que hayan falsificado una cadena minoritaria optarán por unirse a una de las cadenas mayoritarias y sólo una de ellas se hará cargo de ella.

Doble producción por una minoría conectada

En este caso, una minoría de productores decide producir varios bloques en el mismo intervalo de tiempo. En la siguiente ronda, el siguiente productor debe elegir cualquiera de las cadenas alternativas propuestas, haciendo la cadena más larga. Por lo tanto, el resto de los nodos elegirán la mas larga: esto asegura que, sea cual sea el número de bloques «alternativos» producidos por la minoría malintencionada, sólo formarán parte de la cadena más larga durante un único intervalo de tiempo.

Finalidad: último bloque irreversible

«La noción de «finalidad» es específica de la prueba de participación – es el punto a partir del cual un bloque es considerado irreversible, inmutable, por el software del cliente. En el caso de la prueba de trabajo, esta noción de finalidad no existe: un bloque es válido tan pronto como el consenso de los nodos de la red ha permitido su inscripción en la cadena de bloques (blockchain). Las confirmaciones adicionales garantizarán que el riesgo de «fork» sea insignificante.

En algunos casos de «fragmentación» prolongada de la red, podrían seguir desarrollándose varias cadenas. Como se ha visto antes, siempre será la cadena más larga la que gane; pero debe haber una forma para que los observadores (los nodos que transmiten las transacciones) determinen con certeza el punto donde se finaliza un bloque. Es aquí donde se requiere la confirmación de dos tercios de los validadores más uno: una vez realizada la votación, se puede estar seguro de que ninguna cadena alternativa puede ser más larga que la cadena elegida por los productores de bloques (en la medida, por supuesto, de que al menos dos tercios de los participantes sean honestos). Esto es similar a la regla de las 6 confirmaciones en la red Bitcoin, a partir de la cual consideramos que la probabilidad de que un «fork» que compite con la «blockchain» sea sometida a la red se vuelve totalmente insignificante. El caso extremo en el que, por colusión muy bien coordinada de los atacantes, podrían coexistir dos bloques irreversibles diferentes, lo que requeriría un control total de las comunicaciones entre los productores, puede, a la larga, ser mitigado por la regla de la blockchain más larga. Dan Larimer considera este ataque muy improbable y sus consecuencias económicas serían insignificantes.

No hay quórum para los productores de bloques

En el improbable caso de que no haya consenso entre los productores, una cadena minoritaria podría sobrevivir. Son entonces los titulares de fichas que votarán para seleccionar un nuevo conjunto de productores, restableciendo así la tasa máxima de participación. Es posible entonces que sea la cadena minoritaria el que se encuentre con el 100% de participación, convirtiéndose así en la unica cadena válida. En este caso, los observadores de la red deben tener en cuenta que existe una pequeña probabilidad de que el consenso valide una cadena minoritaria en el tiempo «t». Esto equivale a considerar válida una transacción con menos de tres confirmaciones en la red Bitcoin.

Corrupción de la mayoría de los productores de bloques

En el caso de que más de dos tercios de los productores de bloques se corrompieran, éstos podrían hacer coexistir multiples «forks», presentando bloques con idénticas confirmaciones. Entonces le corresponderá a la minoría inclinar la balanza en una dirección. Los poseedores de fichas votarán para eliminar a estos productores corruptos.

La orden de paso de los productores y la transacción como prueba de participación

En la práctica, el mecanismo de selección que determina el «orden de paso» de los productores de bloques es aleatorio. Este «orden de paso» cambia todos los bloques N, donde N es el número de productores de bloques.

También hay que añadir que cada vez que una transacción es firmada y luego liberada en la red, presenta un hash que hace referencia a un bloque anterior. Si este bloqueo no existe en la cadena más larga (por ejemplo, si el usuario que firma su operación ha seleccionado un status de bloqueo que se ha invalidado por consenso), se rechazará esta operación.

Esto significa, indirectamente, que cada usuario confirma el estado de la cadena de bloqueo como válida en cada transacción (a través de la prueba de Merkel, contrariamente a las alegaciones de Vitalik).

Related Posts

Leave a Reply

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.