Stake account у Solana — це окремий блокчейн-рахунок, який зберігає делеговані токени SOL, фіксує обраного валідатора та відстежує стан стейкінгу. Без цього рахунку нативний стейкінг у мережі неможливий: саме в ньому записано, скільки SOL заблоковано, кому делеговано і хто має право керувати цими коштами.

Визначення stake account та його призначення

У Solana кожен рахунок має тип і власну структуру даних. Stake account — це рахунок із типом Stake, який мережа розпізнає як контейнер для стейкінгу. Його призначення — відокремити стейковані кошти від звичайних коштів на гаманці та зберігати всю необхідну інформацію для участі в консенсусі.

Усередині stake account записані такі ключові дані:

  • Stake authority — адреса, яка має право делегувати stake іншому валідатору або змінити налаштування.
  • Withdraw authority — адреса, яка має право вивести SOL із stake account назад на звичайний рахунок.
  • Валідатор (vote account) — адреса ноди-валідатора, якій делеговані кошти.
  • Кількість SOL — сума токенів, що перебуває в стейкінгу.
  • Lockup — обмеження на зняття, якщо воно встановлене (дата або номер епохи).
  • Стан рахунку — поточний статус у життєвому циклі стейкінгу.

Головна функція stake account — дати мережі точне уявлення про те, які кошти підтримують якого валідатора. Це потрібно для розподілу винагород і формування балансу стейку при голосуванні за блоки.

Типи stake accounts у Solana

Класифікація stake accounts базується на їхньому стані — тобто на тому, на якому етапі життєвого циклу вони перебувають. Мережа розрізняє такі стани:

  • Uninitialized — щойно створений рахунок, у який ще не внесено SOL і не встановлено валідатора. Він існує на блокчейні, але не бере участі в стейкінгу.
  • Initialized — на рахунок внесено мінімальну суму SOL, обрано валідатора, але делегація ще не активована.
  • Staked — рахунок повністю активний. Делеговані кошти беруть участь у консенсусі та приносять винагороду.
  • Activating — проміжний стан між Initialized і Staked. Делегація подана, але ще не набула повної сили.
  • Deactivating — процес зняття стейку розпочато, але кошти ще не повністю деактивовані.
  • Inactive — рахунок деактивовано, кошти готові до виведення.

Окремий вимір — наявність lockup. Stake account може бути:

  • Без lockup — кошти можна деактивувати та вивести в будь-який момент (з урахуванням часу деактивації).
  • З lockup — встановлено обмеження за датою або за номером епохи, до настання якого виведення неможливе. Такі рахунки типові для інституційних учасників або специфічних смарт-контрактів.

Для більшості індивідуальних делегаторів актуальний сценарій — створити рахунок без lockup, делегувати його та за потреби деактивувати. Рахунки з lockup зустрічаються рідше і зазвичай повʼязані з програмними механізмами, а не з ручним стейкінгом.

Як stake account пов'язаний з гаманцем

Поширене хибне уявлення — що stake account «знаходиться всередині» гаманця. Насправді гаманець і stake account — це два різні блокчейн-рахунки, які повʼязані через права управління.

Гаманець (системний рахунок типу System) зберігає ваші звичайні SOL, якими ви можете вільно розпоряджатися. Коли ви вирішуєте застейкати частину коштів, ви створюєте окремий stake account і переводите туди SOL. Після цього ці токени більше не належать системному рахунку гаманця — вони фіксуються на stake account.

Звʼязок між ними забезпечується через дві authority:

  • Якщо ваша адреса гаманця вказана як stake authority — ви можете змінювати валідатора або ініціювати деактивацію.
  • Якщо ваша адреса вказана як withdraw authority — ви можете вивести SOL після деактивації.

Важливий наслідок: один гаманець може бути повʼязаний із будь-якою кількістю stake accounts. Ви можете створити кілька рахунків і делегувати їх різним валідаторам. І навпаки — stake authority та withdraw authority можуть належати різним адресам, що використовується в децентралізованих фінансових протоколах.

Коли ви відкриваєте інтерфейс стейкінгу у своєму гаманці (Phantom, Solflare чи іншому), програма просто запитує мережу: «які stake accounts мають мою адресу як одну з authority?» — і відображає їх. Сам гаманець не «тримає» стейк, він лише керує ним через права.

Обмеження та особливості stake account

Створення та закриття stake account

Створення stake account — це транзакція на блокчейні, яка потребує оплати ренти (rent-exempt мінімум). Ця сума резервується на рахунку і повертається при закритті. Створити stake account можна через гаманець, CLI-інструмент solana-cli або програмно.

Серед ключових обмежень:

  • Один валідатор на рахунок. Stake account може бути делегований лише одному vote account одночасно. Якщо ви хочете змінити валідатора, ви ініціюєте перемикання делегації — але це не створює новий рахунок, а змінює параметри поточного.
  • Неможливість часткового зняття. Ви не можете вивести «частину» SOL із stake account. Щоб зняти частину, потрібно деактивувати весь рахунок, закрити його та створити новий із бажаною сумою. Це архітектурне обмеження, яке варто враховувати при плануванні сум стейкінгу.
  • Час деактивації. Процес переходу від стану Staked до Inactive не миттєвий і займає кілька епох. Детально цей механізм розглянуто в окремому матеріалі про епохи в Solana.
  • Мінімальна сума стейку. Хоча технічно делегувати можна будь-яку суму, на практиці є економічний мінімум: якщо сума стейку занадто мала, накопичені винагороди можуть не покривати навіть комісію за транзакцію при виведенні. Цей поріг змінюється залежно від поточного рівня комісій мережі — актуальне значення варто перевірити самостійно перед створенням рахунку.

Закриття stake account можливе лише коли він перебуває в стані Inactive (або Uninitialized). Транзакція закриття повертає всі SOL на рахунок, вказаний як withdraw authority, включно із зарезервованою рентою. Закрити активний або такий, що деактивується, рахунок не можна — спочатку потрібно дочекатися завершення деактивації.

Розуміння того, як влаштований stake account, допомагає усвідомлено підходити до кількості рахунків, вибору суми делегації та планування змін валідатора. Якщо ви готові перейти до практичних кроків, наступний матеріал розкриває як делегувати SOL валідатору.