Аттестации
Последнее обновление страницы: 21 октября 2025 г.
Ожидается, что валидатор будет создавать, подписывать и транслировать аттестацию в течение каждой эпохи. На этой странице описано, как выглядят эти аттестации и как они обрабатываются и передаются между клиентами консенсуса.
Что такое аттестация?
Каждую (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, поскольку они предоставляют индекс каждого валидатора в его комитете (идентификатор которого указан в data), который можно использовать для запроса отдельных подписей.
В каждую эпоху 16 валидаторов в каждой подсети выбираются в качестве агрегаторов. Агрегаторы собирают все аттестации, о которых они узнают по gossip-сети и которые содержат data, эквивалентные их собственным. Отправитель каждой совпадающей аттестации записывается в aggregation_bits. Затем агрегаторы транслируют аттестационную совокупность в более широкую сеть.
Когда валидатор выбирается в качестве предлагающего блок, он упаковывает совокупные аттестации из подсетей вплоть до последней ячейки в новом блоке.
Жизненный цикл включения аттестации
- Генерация
- Распространение
- Объединение в совокупность
- Распространение
- Включение
Жизненный цикл аттестации представлен на схеме ниже:
Вознаграждения
Валидаторы получают вознаграждение за отправку аттестаций. Вознаграждение за аттестацию зависит от флагов участия (источник, цель и голова), базового вознаграждения и коэффициента участия.
Каждый из флагов участия может быть истинным или ложным, в зависимости от предоставленной аттестации и задержки ее включения.
Наилучший сценарий возникает, когда все три флага истинны, и в этом случае валидатор получает (за каждый правильный флаг):
reward += base reward * flag weight * flag attesting rate / 64
Коэффициент аттестации флага измеряется как сумма эффективных балансов всех аттестующих валидаторов для данного флага в сравнении с общим активным эффективным балансом.
Базовое вознаграждение
Базовое вознаграждение рассчитывается в соответствии с количеством аттестующих валидаторов и их эффективными балансами застейканного эфира:
base reward = validator effective balance x 2^6 / SQRT(Effective balance of all active validators)
Задержка включения
В тот момент, когда валидаторы голосовали за голову цепи (блок n), блок n+1 еще не был предложен. Поэтому аттестации естественным образом включаются на один блок позже, так что все аттестации, в которых блок n был выбран головой цепи, включаются в блок n+1, а задержка включения составляет 1. Если задержка вхождения удваивается до двух ячеек, вознаграждение за аттестацию уменьшается вдвое, поскольку для расчета вознаграждения за аттестацию базовое вознаграждение умножается на величину, обратную задержке вхождения.
Сценарии аттестации
Отсутствующий голосующий валидатор
У валидаторов есть максимум 1 эпоха для предоставления своей аттестации. Если аттестация была пропущена в эпоху 0, они могут отправить ее с задержкой вхождения в эпоху 1.
Отсутствующий агрегатор
Всего на каждую эпоху приходится 16 агрегаторов. Кроме того, случайные валидаторы подписываются на две подсети на 256 эпох и служат резервной копией на случай отсутствия агрегаторов.
Отсутствующий создатель блока
Обратите внимание, что в некоторых случаях удачливый агрегатор также может стать предлагающим блок. Если аттестация не была включена из-за того, что предлагающий блок пропал, следующий предлагающий блок валидатор подберет агрегированную аттестацию и включит ее в следующий блок. Однако задержка включения увеличится на единицу.
Дополнительные материалы
- Аттестации в аннотированной спецификации консенсуса от Виталика (opens in a new tab)
- Аттестации на eth2book.info (opens in a new tab)
Знаете ресурс сообщества, который вам пригодился? Измените эту страницу и добавьте его!
