Vote account (голосувальний рахунок) — це спеціалізований обліковий запис у мережі Solana, через який валідатор бере участь у консенсусі: підтверджує блоки та голосує за них. Коли ви делегуєте свій стейк, ваш stake account привʼязується саме до vote account валідатора, а не до його ідентичності безпосередньо. Розуміння цієї різниці допомагає точніше читати дані про валідатора та усвідомлено приймати рішення.
Визначення vote account та його роль
Vote account — це програмно-похідний рахунок (PDA), який належить до вбудованої програми Vote. Його створює сам валідатор перед початком роботи, і цей рахунок є обовʼязковою умовою участі в консенсусі.
Роль vote account зводиться до трьох основних функцій:
- Голосування за блоки. Валідатор підписує та відправляє транзакції-голоси через свій vote account. Кожен голос — це підтвердження того, що валідатор бачив певний слот і вважає його валідним.
- Накопичення кредитів. За кожен успішний голос валідатор отримує кредити. Саме кількість кредитів визначає частку винагороди, яку валідатор отримує від протоколу, а отже — і частку, що передається делегаторам.
- Відстеження історії. Vote account зберігає хронологію голосів, поточний root (останній підтверджений слот) та інші метадані, які використовуються для оцінки надійності валідатора.
Технічно vote account не зберігає стейк. Він виконує роль інтерфейсу між валідатором і консенсусом, тоді як самі токени SOL знаходяться на stake accounts делегаторів.
Зв'язок vote account зі stake account делегатора
Коли ви створюєте stake account і делегуєте на ньому SOL, у структурі цього рахунку вказується публічний ключ vote account валідатора. Це поле називається voter_pubkey у даних програми Stake. Саме цей звʼязок визначає, кому дістанеться ваша делегація.
Важливі нюанси цього звʼязку:
- Один vote account — безліч stake accounts. До одного vote account може бути делеговано будь-яку кількість stake accounts від різних користувачів. Валідатор не бачить і не контролює ваш особистий stake account — він лише отримує агреговану вагу голосів від усіх привʼязаних до нього делегацій.
- Зміна валідатора — це зміна vote account. Коли ви переспрямовуєте свій стейк на іншого валідатора, ви фактично змінюєте поле voter_pubkey у своєму stake account на інший vote account.
- Розділення ключів. Валідатор має identity account (основний ключ вузла) і окремий vote account. Вони різні, хоча й повʼязані. Identity account підписує блоки, а vote account — голоси. Це розділення дозволяє протоколу чітко розрізняти функції.
Отже, vote account — це точка прицілювання вашої делегації. Ви не делегуєте «на валідатор» в абстрактному сенсі — ви делегуєте на конкретний vote account, який контролює цей валідатор.
Яку інформацію містить vote account
Дані vote account є відкритими, і їх можна прочитати з блокчейну. Ось основні поля, які містить цей рахунок:
- Node pubkey (identity). Публічний ключ identity account валідатора — показує, який саме вузол контролює цей vote account.
- Authorized voter. Ключ, який має право підписувати голоси від імені цього vote account. Зазвичай це той самий identity, але технічно може бути інший ключ.
- Commission. Комісія валідатора у відсотках (0–100). Це та частка винагороди, яку валідатор утримує собі перед розподілом решти між делегаторами. Значення фіксується при створенні vote account і може бути змінене валідатором із обмеженнями протоколу.
- Credits. Загальна кількість накопичених кредитів. Відображає історичну активність валідатора в голосуванні.
- Epoch credits. Розбивка кредитів по епохах — дозволяє побачити, скільки кредитів валідатор заробив у кожній конкретній епохі.
- Root slot. Останній слот, який валідатор вважає остаточно підтвердженим.
- Last timestamp. Час останнього голосу. Дозволяє оцінити, чи активний валідатор зараз.
Ця інформація корисна для аналізу поведінки валідатора: чи голосує він стабільно, чи є періоди простою, чи змінювалася комісія. Проте для оцінки орієнтовної дохідності цих даних недостатньо — для цього потрібні додаткові розрахунки, які описані в окремому матеріалі.
Як знайти vote account обраного валідатора
Існує кілька практичних способів знайти vote account конкретного валідатора:
Через офіційний CLI Solana. Команда solana validators виводить список усіх активних валідаторів із їхніми vote account та identity pubkey. Це найпряміший спосіб, якщо ви працюєте з терміналом.
Через блокчейн-експлорери. На таких сервісах, як Solscan або SolanaFM, можна знайти валідатора за назвою або identity pubkey. На сторінці валідатора буде вказано його vote account. Звертайте увагу, що експлорери можуть показувати обидва ключі — і identity, і vote account — і важливо не переплутати їх.
Через інтерфейси стейкінгу. Кошельки та стейкінг-платформи (наприклад, нативний стейкінг у Phantom чи Solflare) показують vote account при виборі валідатора. Зазвичай він відображається у вигляді скороченого публічного ключа або як деталь у профілі валідатора.
Через власні комунікаційні канали валідатора. Багато валідаторів публікують свій vote account на сайті або в документації. У такому разі варто перевірити цей ключ через експлорер, щоб переконатися, що він справді належить заявленому валідатору.
Типова помилка при пошуку — використання identity pubkey замість vote account під час делегації через CLI або програмно. Stake account приймає саме vote account як адресу для делегації, і передача identity pubkey призведе до помилки.
Після того як ви знайшли vote account, наступний крок — перевірити його дані та, за потреби, делегувати свій стейк. Якщо ви вже делегували і хочете змінити валідатора, це окрема процедура, яка описана в наступному матеріалі розділу.