Как протокол консенсуса Clique PoA выбирает следующий узел для создания блоков?

Как протокол консенсуса Clique PoA выбирает следующий узел чеканки/майнинга? Является ли он случайным (в пределах количества блоков, которые должны пройти, прежде чем узел сможет отчеканить/добыть другой блок)?

Я еще больше сбит с толку, заглянув на https://www.rinkeby.io/#stats и увидев, что там указан хешрейт и сложность сети.

@ j-doe, ты нашел ответ на этот вопрос? У меня такая же проблема.
@IvanBurlutskiy Точного ответа не нашел, извините. Насколько я могу судить, узлы просто «соревнуются» в подписании блоков (когда они имеют право, потому что с момента последней подписи прошло необходимое количество блоков). Чтобы «гонка» не была слишком близкой и не вызывала разветвления, к интервалу блока добавляется случайное время «смещения». Это приводит к тому, что один узел подписывает раньше других. [Я не уверен, что это правильно, но это мое наивное прочтение кода]

Ответы (1)

Все детали задокументированы здесь: https://github.com/ethereum/EIPs/issues/225

Вкратце, факты для системы с N уплотнителями:

  • у каждого блока есть предпочтительный герметик (подписание в свою очередь), который установит сложность блока на 2
  • если предпочитаемый силер не подписывает блок, другие силеры могут подключиться (вне очереди), но они могут установить сложность блока только на 1
  • Предпочтительный герметик переключается путем применения циклического перебора.
  • Форки все еще могут случиться, победит самая тяжелая цепочка (-> добавлены сложности блоков) (-> GHOST-протокол)
  • Запечатальщики вне очереди будут откладывать блокировку предложения, чтобы дать запечатавшему в свою очередь больше шансов распространить свое предложение по сети.
  • Когда силер в Clique подписывает блок, ему не разрешается запечатывать следующие floor(N / 2)блоки .