¿Cómo elige el protocolo de consenso Clique PoA el próximo nodo de acuñación de bloques?

¿Cómo elige el protocolo de consenso Clique PoA el próximo nodo de acuñación/minería? ¿Es aleatorio (dentro de los límites del número de bloques que deben transcurrir antes de que un nodo pueda acuñar/minar otro bloque)?

Estoy aún más confundido al mirar https://www.rinkeby.io/#stats y ver que enumeran un hashrate y una dificultad de red.

@ j-doe, ¿ha encontrado la respuesta a esta pregunta? Tengo el mismo problema.
@IvanBurlutskiy No he encontrado una respuesta definitiva, lo siento. Por lo que puedo decir, los nodos simplemente "corren" para firmar bloques (cuando son elegibles, porque la cantidad requerida de bloques ha transcurrido desde la última vez que firmaron). Para evitar que la "carrera" esté demasiado cerca y provoque bifurcaciones, se agrega un tiempo de "compensación" aleatorio al intervalo del bloque. Esto hace que un nodo firme antes que los demás. [No estoy seguro de que nada de esto sea correcto, pero es mi lectura ingenua del código]

Respuestas (1)

Todos los detalles están documentados aquí: https://github.com/ethereum/EIPs/issues/225

En resumen, los hechos para un sistema con N selladores:

  • cada bloque tiene un sellador preferido (firma por turnos), que establecerá la dificultad del bloque en 2
  • si el sellador preferido no firma el bloque, otros selladores pueden participar (fuera de turno), pero pueden establecer la dificultad del bloque solo en 1
  • El sellador preferido es cambiar mediante la aplicación de round-robin
  • Las bifurcaciones todavía pueden suceder, la cadena más pesada (-> dificultades de bloqueo añadidas) ganará (-> protocolo GHOST)
  • Los selladores fuera de turno retrasarán la propuesta de bloqueo, para darle al sellador en turno una mejor oportunidad de propagar su propuesta a través de la red.
  • Cuando un sellador en Clique firma un bloque, no se le permite sellar los siguientes floor(N / 2)bloques