Перейти к основному контенту
Change page

Аттестации

Ожидается, что валидатор будет создавать, подписывать и транслировать аттестацию в течение каждой эпохи. На этой странице описывается, как выглядят эти аттестации, а также как они обрабатываются и передаются между клиентами консенсуса.

Что такое аттестация?

Каждую (6,4 минуты) валидатор предлагает аттестацию в сеть. Аттестация предназначена для определенного слота в эпохе. Цель аттестации — проголосовать за видение цепи валидатором, в частности за самый последний обоснованный блок и первый блок в текущей эпохе (известные как контрольные точки source и target). Эта информация объединяется для всех участвующих валидаторов, что позволяет сети достичь консенсуса о состоянии блокчейна.

Аттестация содержит следующие компоненты:

  • aggregation_bits: битовый список валидаторов, где позиция соответствует индексу валидатора в их комитете; значение (0/1) указывает, подписал ли валидатор data (т. е. активен ли он и согласен ли с предлагающим блок)
  • data: детали, относящиеся к аттестации, как определено ниже
  • signature: BLS-подпись, которая агрегирует подписи отдельных валидаторов

Первая задача для аттестующего валидатора — создать data. data содержит следующую информацию:

  • slot: номер слота, к которому относится аттестация
  • index: число, идентифицирующее, к какому комитету принадлежит валидатор в данном слоте
  • beacon_block_root: корневой хеш блока, который валидатор видит в начале цепи (результат применения алгоритма выбора форка)
  • source: часть голоса за финальность, указывающая, что валидаторы видят как самый последний обоснованный блок
  • target: часть голоса за финальность, указывающая, что валидаторы видят как первый блок в текущей эпохе

Как только data создана, валидатор может изменить бит в aggregation_bits, соответствующий его собственному индексу валидатора, с 0 на 1, чтобы показать, что он участвовал.

Наконец, валидатор подписывает аттестацию и транслирует ее в сеть.

Агрегированная аттестация

Существуют значительные накладные расходы, связанные с передачей этих данных по сети для каждого валидатора. Поэтому аттестации от отдельных валидаторов агрегируются внутри подсетей перед более широкой трансляцией. Это включает в себя совместное агрегирование подписей, так что транслируемая аттестация включает в себя data консенсуса и единую подпись, сформированную путем объединения подписей всех валидаторов, которые согласны с этой data. Это можно проверить с помощью aggregation_bits, поскольку он предоставляет индекс каждого валидатора в его комитете (чей ID указан в data), который можно использовать для запроса отдельных подписей.

В каждой эпохе 16 валидаторов в каждой подсети выбираются в качестве aggregators. Агрегаторы собирают все аттестации, о которых они узнают через gossip-сеть, имеющие эквивалентные data их собственным. Отправитель каждой совпадающей аттестации записывается в aggregation_bits. Затем агрегаторы транслируют агрегированную аттестацию в более широкую сеть.

Когда валидатор выбирается в качестве предлагающего блок, он упаковывает агрегированные аттестации из подсетей вплоть до последнего слота в новый блок.

Жизненный цикл включения аттестации

  1. Генерация
  2. Распространение
  3. Агрегация
  4. Распространение
  5. Включение

Жизненный цикл аттестации представлен на схеме ниже:

attestation lifecycle

Вознаграждения

Валидаторы получают вознаграждение за отправку аттестаций. Вознаграждение за аттестацию зависит от флагов участия (источник, цель и начало), базового вознаграждения и уровня участия.

Каждый из флагов участия может быть истинным (true) или ложным (false), в зависимости от отправленной аттестации и задержки ее включения.

Наилучший сценарий возникает, когда все три флага истинны, и в этом случае валидатор заработает (за каждый правильный флаг):

reward += base reward * flag weight * flag attesting rate / 64

Уровень аттестации флага измеряется с использованием суммы эффективных балансов всех аттестующих валидаторов для данного флага по сравнению с общим активным эффективным балансом.

Базовое вознаграждение

Базовое вознаграждение рассчитывается в соответствии с количеством аттестующих валидаторов и их эффективными балансами застейканного эфира:

base reward = validator effective balance x 2^6 / SQRT(Effective balance of all active validators)

Задержка включения

В то время, когда валидаторы голосовали за начало цепи (block n), block n+1 еще не был предложен. Поэтому аттестации естественным образом включаются на один блок позже, так что все аттестации, проголосовавшие за то, что block n является началом цепи, были включены в block n+1, и задержка включения равна 1. Если задержка включения удваивается до двух слотов, вознаграждение за аттестацию уменьшается вдвое, поскольку для расчета вознаграждения за аттестацию базовое вознаграждение умножается на обратную величину задержки включения.

Сценарии аттестации

Отсутствующий голосующий валидатор

У валидаторов есть максимум 1 эпоха для отправки своей аттестации. Если аттестация была пропущена в эпоху 0, они могут отправить ее с задержкой включения в эпоху 1.

Отсутствующий агрегатор

Всего в каждой эпохе 16 агрегаторов. Кроме того, случайные валидаторы подписываются на две подсети на 256 эпох и служат резервом на случай отсутствия агрегаторов.

Отсутствующий предлагающий блок

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

Дополнительная литература

Знаете ресурс сообщества, который помог вам? Отредактируйте эту страницу и добавьте его!