Cada ronda de consenso debe incluir un nuevo bloque. Pero el whitepaper dice que esta ronda no se completa en un solo paso, sino en múltiples iteraciones, y que cada iteración se divide en tres fases. La sección 3.2 del whitepaper llama a estas tres fases Proposal, Validation y Ratification.

Primera fase: Proposal. El algoritmo DS selecciona aleatoriamente un provisioner como productor del bloque, que se encarga de generar un bloque candidato y difundirlo por toda la red. Si el bloque candidato no se produce o no se recibe dentro del tiempo de espera estipulado, esta fase devuelve NIL e inmediatamente pasa a la siguiente; pero como no hay un bloque candidato en la mano, ¿qué se vota en las votaciones posteriores? La respuesta es: no se emiten votos vacíos, sino que se vota NoCandidate, lo que significa "no hay ningún bloque candidato verificable". $DUSK

Segunda fase: Validation. El algoritmo DS selecciona aleatoriamente un conjunto de comités de votación para verificar el bloque candidato de la fase anterior. Si el bloque candidato es válido, se vota Valid; si no es válido, se vota Invalid; y si no hay bloque candidato, se vota NoCandidate. El comité de votación necesita una mayoría absoluta de 2/3 para alcanzar quorum. Si el quorum aún no se alcanza cuando vence el tiempo, se devuelve NoQuorum. El resultado de esta fase es un ValidationResult, que incluye el tipo de voto que alcanzó el quorum y las firmas agregadas de todos los votantes. @Dusk

Tercera fase: Ratification. Se selecciona otro comité nuevo de votación para confirmar el resultado de Validation. Si en el paso anterior se alcanzó el quorum de Valid, lo confirman; si el paso anterior fue NoQuorum o falló, votan NoQuorum. Esta fase asegura que el resultado de la verificación no lo decida únicamente una minoría, sino que sea reconocido por un mayor número de provisioners.

Si la salida de Ratification es Success, el bloque candidato se acepta formalmente como el nuevo bloque y la ronda termina. Si la salida es Fail u unknown, se entra en la siguiente iteración: se vuelve a seleccionar el productor del bloque y se vuelve a votar. El whitepaper indica que el número máximo de iteraciones lo determina un parámetro global; el valor actual es 50. Si las iteraciones fallan consecutivamente 16 veces, el protocolo entra en modo de emergencia (ángulo 10).

La lógica central del diseño de tres fases es el equilibrio: el productor del bloque solo puede generar bloques candidatos, pero no puede votar; el comité de verificación solo puede verificar, pero no puede confirmar; y el comité de confirmación solo puede confirmar el resultado de la verificación, pero no puede volver a verificar. Ningún rol puede decidir por sí solo el destino de un bloque. #dusk