Коллатор

Верификация

Верификация мастер-блока собирает и проверяет подписи валидаторов для уже построенного мастер-блока. Она идет отдельно от коллации, позволяет подтвердить локально собранный блок по весу подписей и сохраняет подписи в proof мастер-блока.

Роль

Верификация подтверждает, что локально собранный мастер-блок набрал порог корректных подписей валидаторов по весу.

  • Самопроверка валидатора: если локальная нода собрала мастер-блок с другим идентификатором, чем у остальных валидаторов текущей сессии, она не сможет набрать порог корректных подписей для своего локального блока. Часть подписей не пройдет криптографическую проверку для локального идентификатора, а порог по суммарному весу не будет достигнут.
  • Подтверждение локального мастер-блока: менеджер коллации ждет успешную верификацию, чтобы перевести локально собранный мастер-блок в подтвержденное состояние и перейти к его коммиту.
  • Сохранение подписей в proof: после успешной верификации подписи валидаторов и их суммарный вес сохраняются в proof мастер-блока.
  • Отделение от коллации: верификация не формирует вход для коллации и не заменяет консенсус по DAG. Она подтверждает уже построенный мастер-блок и может идти асинхронно относительно следующих шагов коллации.

Обмен подписями

Валидаторы обмениваются подписями на идентификатор одного и того же мастер-блока.

Для каждого мастер-блока валидатор сначала подписывает идентификатор своей локальной копии блока. При обмене по сети он передает только порядковый номер мастер-блока и свою подпись. Сам идентификатор блока в этом сообщении не пересылается.

Если получатель уже собрал и проверяет мастер-блок с этим номером, он сверяет подпись с локальным идентификатором блока. Корректная подпись сохраняется для текущего блока, после чего узел возвращает в ответ свою подпись.

Если получатель еще не дошел до этого номера мастер-блока, он не может сразу проверить подпись. В этом случае подпись сохраняется в кэше для нескольких ближайших будущих мастер-блоков и будет проверена позже, когда соответствующий блок появится локально.

Порог

Верификация завершается после достижения порога по суммарному весу подписей.

Порог считается по набору валидаторов текущей сессии и равен больше чем две трети общего веса плюс один. В этот вес входит и собственная подпись валидатора. Как только набор корректных подписей достигает этого порога, мастер-блок считается верифицированным и может быть подтвержден как локально собранный результат.