EIP-7549: Move committee index outside Attestation
EIP-7549 является вторым предложением по изменению на уровне консенсуса и предлагает переместить индекс комитета за пределы аттестации. Звучит интересно, но непонятно. Начнём разбираться издалека.
▫️Введение в работу валидатора
Все мы знаем, что валидаторы оставляют 32 ETH в качестве депозита и после этого запускают специальное программное обеспечение, которое состоит из трёх частей:
Execution Client
Consensus Client
Validator Client
Перед началом полноценной работы (этот процесс называют активацией) валидаторы ждут в очереди, которая регулирует скорость присоединения новых валидаторов. После активации валидаторы начинают получать блоки от других участников сети. Сначала проверяются транзакции из полученного блока, чтобы удостовериться, что изменения валидны, и проверяется подпись блока. После этого валидатор отправляет свой голос, который гарантирует, что блок действительный. Этот голос и называется аттестацией.
▫️Структура слотов и эпох в Ethereum
Далее стоит отметить, что сейчас в Ethereum время появления блоков фиксированное и делится на слоты. Один слот — 12 секунд, эпоха — 32 слота. Для каждого слота случайным образом выбирается валидатор, предлагающий блок. В его обязанности входит создание и отправка блока другим участникам. Также в слоте случайным образом выбирается комитет валидаторов, аттестации которых должны подтвердить, что блок действительный. Разделение валидаторов на комитеты необходимо для управления нагрузкой на сеть. Деление на комитеты организовано так, чтобы каждый активный валидатор подтверждал блок в каждой эпохе, но не в каждом слоте.
▫️Понятие финализации блоков
Но это ещё не всё. Чтобы транзакция считалась окончательной, она должна быть частью блока, который уже не может быть изменён без больших затрат. Этот процесс называется финализацией. Управляется это при помощи специальных «checkpoints». Первый блок каждой эпохи — это и есть checkpoint. Требуется две трети от общего застейканного эфира всех валидаторов, которые предоставят свои аттестации.
▫️Разбор полей аттестации
Это всё в теории. Под капотом консенсуса работают два компонента: Casper-FFG и алгоритм выбора форка LMD-GHOST. Первый компонент отвечает за финализацию блоков, получение валидатором вознаграждения или наказания, второй компонент следит за раздвоением сети.
Ожидается, что активный валидатор создаст, подпишет и передаст аттестацию в течение каждой эпохи как минимум. Каждая аттестация содержит в себе следующие поля:
aggregation_bits: Массив бит валидаторов, где каждый индекс соответствует номеру валидатора в комитете.
data: Сведения для аттестации (подтверждения действительности блока).
slot: Номер слота, для которого подготовлена аттестация.
index: Номер, который идентифицирует, к какому комитету принадлежит валидатор в данном слоте.
beacon_block_root: Хеш блока, за который валидатор голосует.
source: Последний согласованный чекпоинт.
target: Целевой чекпоинт текущей эпохи.
signature: Подпись BLS, которая подписывает данные поля data.
▫️Предлагаемое изменение в EIP-7549
Вот мы и добрались до индекса, который EIP-7549 предлагает вынести за пределы аттестации. Для Casper-FFG это критически важное изменение. Суть в том, что все участники разных комитетов голосуют за одну и ту же информацию, подписывая данные в поле data аттестации. Зачастую данные одинаковые, за исключением индекса комитета, который не позволяет агрегировать эти подписи в одну. Поэтому предлагается убрать индекс и объединить одинаковые аттестации, что позволит уменьшить их количество.
Вот так, покопавшись в сути этого EIP, который на первый взгляд мог выглядеть странно, я могу сделать вывод, что звучит всё логично, по крайней мере идея становится понятной. Видимо, поэтому мне и не удалось найти каких-то явных противостояний или противников EIP-7549. Отдельно стоит отметить, что этот EIP вносит обратно несовместимые изменения в проверку блоков на уровне консенсуса, поэтому он и включается в хард-форк.
Подписывайтесь на наш телеграм-канал:)