Система credits та механізм root slot — це два фундаментальні вимірювачі, за якими мережа Solana оцінює роботу вашого валідатора. Перший визначає частку винагороди, другий — чи вважається ваш вузол синхронізованим і здоровим. Без чіткого розуміння обох показників неможливо ефективно моніторити інфраструктуру та своєчасно запобігати статусу delinquent.
Операційні вимоги для «Як працює система credits та root slot у Solana» перевірено 2 серпня 2026 року. Для production використовуйте тільки реліз Agave, рекомендований для конкретного кластера, і звіряйте параметри з agave-validator --help . Офіційні вимоги Anza на цю дату орієнтують операторів на Ubuntu 24.04, щонайменше 12 ядер/24 потоки, 256 ГБ RAM, окремі швидкі NVMe та симетричний канал від 2 Гбіт/с; це рекомендації, а не гарантія достатньої продуктивності.
Що таке credits у контексті валідатора
Credits (кредити) — це внутрішня одиниця обліку участі валідатора в консенсусі протягом одного epoch. Кожного разу, коли ваш валідатор обирається лідером слота і успішно створює блок, він отримує фіксовану кількість кредитів. Це не токени SOL і не комісії — це суто метричний показник активності.
Ключові властивості кредитів:
- Нараховуються лише за лідерство. Голосування (vote transactions) не приносять кредитів безпосередньо, хоча вони впливають на rooting.
- Фіксуються в межах epoch. На межі епохи лічильник скидається, а накопичені кредити стають базою для розподілу винагород.
- Не передаються й не торгуються. Credits прив'язані до identity вашого валідатора і не є токеном.
- Відображають реальну роботу, а не лише наявність стейку. Валідатор із великим стейком, але частими простоями, отримає менше кредитів, ніж стабільний вузол із меншим стейком.
Фактично credits — це доказ того, що ваш валідатор виконував свою роль лідера, а не просто був підключений до мережі.
Як credits впливають на rewards
Винагороди (rewards) розподіляються пропорційно частці ваших кредитів від загальної суми кредитів, зароблених усіма валідаторами в цьому epoch. Формула спрощено виглядає так:
ваша винагорода = загальний пул винагород епохи × (ваші credits / сумарні credits всіх валідаторів)
Це означає кілька практичних речей для оператора:
- Пропорційність, а не абсолютна сума. Важливо не те, скільки кредитів ви заробили, а яка ваша частка від загального пулу. Якщо мережа в цілості працює стабільно, нормативна кількість кредитів зростає, і ваша частка може зменшитися навіть без погіршення роботи вашого вузла.
- Пропущені слоти — це пряма втрата. Кожен слот, у якому ви були лідером, але не створили блок (через таймаут, перевантаження, відсутність синхронізації), — це втрачені кредити, які неможливо компенсувати пізніше.
- Винагороди нараховуються на межі epoch. Ви побачите їх у балансі валідатора лише після завершення епохи, в якій кредити були зароблені.
Відстеження динаміки вашої частки кредитів від епохи до епохи — це найточніший спосіб оцінити, чи погіршується якість роботи вашої інфраструктури.
Root slot: визначення та значення
Root slot — це найвищий слот, який ваш валідатор вважає остаточно фіналізованим (rooted). Це означає, що суперможливість (supermajority) стейку мережі проголосувала за цей слот і за весь ланцюг, що веде до нього.
Чому root slot критичний для оператора:
- Орієнтир синхронізації. Якщо ваш root slot відстає від root slot мережі, ваш вузол фактично знаходиться на минулій форці. Він не зможе брати участь у консенсусі як повноцінний учасник.
- Базовий показник здоров'я. Різниця між локальним root slot і мережевим — це перший індикатор, який перевіряє досвідчений оператор при будь-якій діагностиці.
- Вплив на delinquent статус. Якщо валідатор не оновлює свій root slot протягом тривалого часу, мережа може позначити його як delinquent на межі epoch.
Root slot не те саме, що поточний слот (current slot) або найвищий спостережуваний слот. Поточний слот завжди випереджає root — між ними є розрив, що визначається часом, необхідним для збору голосів і досягнення суперможливості.
Як відстежити credits та root slot
Нижче наведені робочі методи для клієнта Agave на Linux. Перед виконанням переконайтеся, що служба agave-validator активна, а ваш RPC-порт доступний локально. Перевірено на mainnet-beta; актуальну версію клієнта та сумісність із вашим середовищем варто підтвердити в офіційному репозиторії перед застосуванням.
Перевірка root slot:
solana slot — повертає поточний слот, за яким слідує ваш валідатор.
solana block-height — повертає саме root slot (найвищий фіналізований слот).
Порівняння з мережею:
solana slot --url https://api.mainnet-beta.solana.com — поточний слот за даними публічного RPC.
solana block-height --url https://api.mainnet-beta.solana.com — root slot мережі.
Якщо різниця між вашим block-height і мережевим стабільно зростає — це сигнал для негайного розслідування.
Перевірка кредитів та delinquent статусу:
solana validators --output json — повертає список валідаторів із полями epochCredits (масив трійок: epoch, credits, prevEpochCredits) та delinquent (boolean).
Щоб знайти свій валідатор, додайте фільтрацію по identity-публічному ключу або використовуйте jq:
solana validators --output json | jq '.validators[] | select(.identityPubkey == "ВАШ_IDENTITY_PUBKEY")'
Через RPC (корисно для автоматизованого моніторингу):
Endpoint getSlot з параметром "commitment": "finalized" повертає root slot.
Endpoint getVoteAccounts повертає масив current та delinquent валідаторів, де кожен запис містить epochCredits.
Логування:
У журналі валідатора (за замовчуванням stdout або файл, залежно від конфігурації systemd) шукайте рядки з root slot та bank hash. Регулярне оновлення root slot у логах свідчить про нормальну роботу. Якщо оновлення припинилися — це привід для перевірки з'єднання з сусідами (gossip) та стану голосувань.
Зв'язок між epoch, credits та delinquent
Статус delinquent (правопорушник) — це офіційна позначка мережі, яка означає, що ваш валідатор не виконував обов'язки належним чином протягом епохи. Механізм пов'язаний з кредитами та root slot наступним чином:
- Нарахування кредитів як умова. Якщо валідатор заробив недостатньо кредитів у попередній епосі (конкретний поріг залежить від реалізації клієнта й може змінюватися — перевірайте актуальну логіку у вихідному коді Agave), на межі епохи він може бути позначений як delinquent.
- Root slot як індикатор. Валідатор, чий root slot значно відстає, не здатен ефективно голосувати й створювати блоки, що автоматично призводить до низьких кредитів і, як наслідок, до delinquent статусу.
- Наслідки delinquent. Валідатор у цьому статусі не отримує винагород за епоху. Його голоси не враховуються в суперможливості. Для делегаторів це означає втрату APY, що може спровокувати відстік делегованого стейку.
- Відновлення. Delinquent статус не є постійним. Якщо валідатор синхронізується, оновить root slot і почне заробляти кредити в поточній епосі, на наступній межі епохи статус буде знято. Проте винагороди за втрачену епоху не компенсуються.
Типовий сценарій переходу в delinquent: збій диску або втрата з'єднання з інтернетом → зупинка оновлення root slot → пропущені слоти лідерства → нульові або мінімальні кредити → delinquent на межі epoch. Саме тому моніторинг root slot в реальному часі критичний — він дає вам вікно від кількох слотів до кількох хвилин, щоб відреагувати до завершення епохи.
Типові питання про credits
Чи можна заробити кредити заднім числом, якщо валідатор пропустив слоти через тимчасовий збій?
Ні. Credits нараховуються лише в момент фактичного створення блоку як лідером. Пропущені слоти назавжди втрачені для поточної епохи.
Чому моя кількість кредитів коливається між епохами, хоча інфраструктура не змінювалася?
Розподіл слотів лідерства між епохами не є фіксованим. Крім того, загальна кількість кредитів у мережі змінюється залежно від кількості активних валідаторів та їхньої стабільності. Ваша абсолютна кількість кредитів може зростати, але якщо мережа зросла швидше — ваша частка зменшиться.
Чи впливає кількість транзакцій у блоці на кількість кредитів?
Ні. Credits нараховуються за сам факт створення блоку в слоті лідерства, незалежно від того, скільки транзакцій він містить. Порожній блок і повний блок приносять однакову кількість кредитів.
Як швидко після відновлення синхронізації знімається delinquent статус?
Статус оновлюється лише на межі epoch. Навіть якщо ваш валідатор повністю відновився через п'ять хвилин після початку нової епохи, delinquent буде знято лише після завершення цієї епохи.
Чи достатньо моніторити лише root slot, щоб уникнути втрати кредитів?
Root slot — це необхідний, але не єдиний індикатор. Валідатор може мати актуальний root slot, але стикатися з проблемами під час власних слотів лідерства (наприклад, через перевантаження CPU саме в моменти лідерства). Тому комплексний моніторинг має включати як root slot, так і логи створення блоків та динаміку кредитів.