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

Attestations

Останні оновлення сторінки: 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. Потім агрегатори транслюють агрегат атестації в ширшу мережу.

Коли валідатора обирають пропонувачем блоку, він пакує агреговані атестації з підмереж до останнього слота в новому блоці.

Життєвий цикл включення атестації

  1. Генерація
  2. Поширення
  3. Агрегація
  4. Поширення
  5. Включення

Життєвий цикл атестації показано на схемі нижче:

життєвий цикл атестації

Винагороди

Валідатори отримують винагороду за подання атестацій. Винагорода за атестацію залежить від прапорців участі (source, target і head), базової винагороди та коефіцієнта участі.

Кожен із прапорців участі може бути істинним або хибним, залежно від поданої атестації та затримки її включення.

Найкращий сценарій виникає, коли всі три прапорці істинні, і в цьому випадку валідатор заробляє (за кожен правильний прапорець):

винагорода += базова винагорода * вага прапорця * коефіцієнт атестації прапорця / 64

Коефіцієнт атестації прапорця вимірюється за допомогою суми ефективних балансів усіх атестуючих валідаторів для даного прапорця порівняно із загальним активним ефективним балансом.

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

Базова винагорода розраховується відповідно до кількості атестуючих валідаторів та їхніх ефективних балансів застейканого ефіру:

базова винагорода = ефективний баланс валідатора x 2^6 / SQRT(Ефективний баланс усіх активних валідаторів)

Затримка включення

На момент, коли валідатори голосували за голову ланцюга (блок n), блок n+1 ще не був запропонований. Тому атестації природним чином включаються на один блок пізніше, тому всі атестації, які проголосували за те, що блок n є головою ланцюга, були включені в блок n+1, і затримка включення становить 1. Якщо затримка включення подвоюється до двох слотів, винагорода за атестацію зменшується вдвічі, оскільки для розрахунку винагороди за атестацію базова винагорода множиться на величину, обернену до затримки включення.

Сценарії атестації

Відсутній голосуючий валідатор

Валідатори мають максимум 1 епоху, щоб подати свою атестацію. Якщо атестація була пропущена в епосі 0, вони можуть подати її із затримкою включення в епосі 1.

Відсутній агрегатор

Загалом є 16 агрегаторів на епоху. Крім того, випадкові валідатори підписуються на дві підмережі на 256 епох і служать резервною копією на випадок відсутності агрегаторів.

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

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

Для подальшого читання

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

Чи була ця стаття корисною?