Перейти до основного вмісту
Change page

Атестації

Редагувати сторінку (opens in a new tab)

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

Що таке атестація?

Кожну (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 валідаторів у кожній підмережі обираються як 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 епох і слугують резервом на випадок відсутності агрегаторів.

Відсутній пропонувач блоку

Зауважте, що в деяких випадках щасливий агрегатор також може стати пропонувачем блоку. Якщо атестація не була включена через те, що пропонувач блоку зник, наступний пропонувач блоку підхопить агреговану атестацію та включить її в наступний блок. Однак затримка включення збільшиться на одиницю.

Подальше читання

Знаєте ресурс спільноти, який вам допоміг? Відредагуйте цю сторінку та додайте його!

Останнє оновлення сторінки: 21 жовтня 2025 р.