Операційні вимоги для «Як запустити валідатор на mainnet-beta» перевірено 2 серпня 2026 року. Для production використовуйте тільки реліз Agave, рекомендований для конкретного кластера, і звіряйте параметри з agave-validator --help . Офіційні вимоги Anza на цю дату орієнтують операторів на Ubuntu 24.04, щонайменше 12 ядер/24 потоки, 256 ГБ RAM, окремі швидкі NVMe та симетричний канал від 2 Гбіт/с; це рекомендації, а не гарантія достатньої продуктивності.
Цей матеріал — покроковий операційний посібник для запуску вузла Solana на основній мережі. Він охоплює повний цикл: від розуміння специфіки кластера до перших годин моніторингу після синхронізації. Інструкція орієнтована на інженерів, які вже знайомі з архітектурою Solana та мають підготовлений сервер.
Середовище перевірки: клієнт Agave (стабільний реліз, рекомендований для відповідного кластера), Ubuntu 24.04 LTS, кластер mainnet-beta, червень 2025 року. Перед виконанням перевірте актуальну версію Agave в офіційному репозиторії проєкту.
Різниця між mainnet-beta, testnet та devnet
Solana підтримує три публічні кластери, і вибір неправильного призводить до втрати часу на синхронізацію або, у гіршому разі, до ризиків із реальними коштами.
| Параметр | mainnet-beta | testnet | devnet |
|---|---|---|---|
| Призначення | Продакшн-мережа з реальними токенами SOL | Нагрузкове тестування протоколу та клієнта | Розробка й відладка смарт-контрактів |
| Токени | Реальні, мають грошову вартість | Безцінні тестові | Безцінні, доступні через кран |
| Стабільність | Найвища, але позначка «beta» означає, що протокол може оновлюватися без зворотної сумісності | Може перезапускатися або скидатися командою Solana Labs | Може перезапускатися часто, слоти не гарантовані |
| Вимоги до заліза | Максимальні (128 ГБ RAM, 12+ ядер, NVMe від 2 ТБ) | Схожі на mainnet-beta, але навантаження нижче | Помірні, підходять для розробників |
| Ризик запуску валідатора | Високий: slashing не впроваджено, але помилки призводять до втрати делегувань і репутації | Низький | Нульовий |
Ключове: якщо ваша мета — продакшн-валідатор із реальними делегуваннями, вам потрібен саме mainnet-beta. Усі команди та конфігурація нижче розраховані на цей кластер.
Підготовка snapshot для mainnet-beta
Solana не синхронізується з генезис-блоку — це зайняло б тижні. Замість цього використовуються snapshot-архіви, які містять стиснутий стан леджера на певний слот.
Передумови: на диску має бути щонайменше 500 ГБ вільного місця для завантаження та розпакування snapshot (розпакований стан значно більший за архів).
Крок 1. Визначте актуальний snapshot. Використайте публічну endpoint-точку для отримання списку:
curl -s https://api.mainnet-beta.solana.com -X POST -H "Content-Type: application/json" -d '{"jsonrpc":"2.0","id":1,"method":"getLatestSnapshotHashes"}' | python3 -m json.tool
Зверніть увагу на поле hash — це ідентифікатор snapshot, який вам потрібен.
Крок 2. Завантажте snapshot. Snapshot-архіви розміщуються на CDN або на спеціалізованих snapshot-джерелах. Типова команда:
solana snapshot download <hash> --url https://api.mainnet-beta.solana.com
Крок 3. Перевірте цілісність. Після завантаження клієнт автоматично верифікує хеш. Якщо хеш не збігається — архів пошкоджено, повторіть завантаження. Не намагайтеся розпакувати пошкоджений snapshot вручну.
Ризик: завантаження великого файлу через нестабільне з'єднання може призвести до неповного архіву. Використовуйте wget -c або аналоги з підтримкою докачування, якщо завантажуєте поза клієнтом.
Конфігурація для mainnet-beta
Конфігураційний файл validator.yml (або аргументи командного рядка) визначає, як саме ваш вузол взаємодіє з кластером. Тут розглядаються лише параметри, критичні для першого запуску на mainnet-beta. Детальний розбір усіх ключових параметрів наведено в окремому матеріалі про конфігураційний файл валідатора.
Мінімальний набір для mainnet-beta:
- Розташування леджера:
--ledger /mnt/ledger— обов'язково на швидкому NVMe-диску, не на системному SSD. - Кластер:
--entrypoint entrypoint.mainnet-beta.solana.com:8001— вказує клієнту, де знайти перших пірів. - Identity:
--identity /mnt/keys/validator-keypair.json— шлях до вашого ключа валідатора. - Snapshot:
--snapshot /mnt/snapshot— каталог, куди завантажено snapshot. - Обмеження RAM:
--limit-ledger-size— дозволяє контролювати, скільки місця на диску займає леджер. На mainnet-beta без цього параметра леджер зростатиме без обмежень. - Вимкнення RTP:
--no-rpc-port— якщо ви не плануєте розкривати RPC, вимкніть порт для зменшення поверхні атаки.
Попередження: ніколи не запускайте mainnet-beta з конфігурацією, скопійованою з devnet без змін. Різниця в навантаженні та швидкості генерації слотів зробить такий вузол неконсистентним.
Перший запуск та синхронізація
Очікуваний результат: валідатор завантажує snapshot, підключається до пірів кластера та починає відтворювати слоти від точки snapshot до поточного слота mainnet-beta.
Команда запуску:
agave-validator --ledger /mnt/ledger --identity /mnt/keys/validator-keypair.json --snapshot /mnt/snapshot --entrypoint entrypoint.mainnet-beta.solana.com:8001 --limit-ledger-size 500000000 --no-rpc-port --log /var/log/solana/validator.log
Що відбувається після запуску:
- Клієнт читає snapshot з каталогу та відновлює стан акаунтів.
- Встановлює TCP-з'єднання з entrypoint-вузлами mainnet-beta.
- Отримує список активних пірів через Gossip.
- Починає завантажувати пропущені слоти (banks) від точки snapshot до поточного.
- Після досягнення поточного слота переходить у режим валідації нових блоків.
Часова оцінка: на сучасному залізі з швидким інтернет-з'єднанням синхронізація з snapshot займає від 2 до 8 годин. Це залежить від віку snapshot, пропускної здатності диска та мережі. Не переривайте процес.
Ризик: переривання синхронізації (kill процесу, перезавантаження сервера) не руйнує леджер, але при повторному запуску клієнт перевірить цілісність та може витратити додатковий час на верифікацію.
Перевірка: чи валідатор синхронізовано
Не покладайтеся на візуальну оцінку логів. Використовуйте CLI-команди для точної перевірки.
Крок 1. Перевірте відстань до поточного слота:
solana slot --url http://127.0.0.1:8899
Ця команда поверне локальний слот вашого вузла. Потім порівняйте його з поточним слотом кластера:
solana slot --url https://api.mainnet-beta.solana.com
Критерій синхронізації: різниця між локальним слотом і слотом кластера менше ніж 150 слотів (приблизно 1–2 секунди). Якщо різниця стабільно зменшується — синхронізація триває. Якщо різниця стабільна і мала — ви синхронізовані.
Крок 2. Перевірте статус делегування (якщо вже делеговано):
solana validators --url https://api.mainnet-beta.solana.com | grep <ваш-identity-pubkey>
Якщо валідатор активний, ви побачите його у списку з ненульовим значенням активного стейку.
Крок 3. Перевірте стан здоров'я вузла:
solana health --url http://127.0.0.1:8899
Очікуваний результат: ok. Будь-яке інше значення означає проблему, яку треба діагностувати за логами.
Моніторинг перших годин роботи
Після синхронізації перші 12–24 години є критичними. Саме в цей період виявляються приховані проблеми: нестача ресурсів, мережеві обмеження, нестабільність диска.
Ключові метрики для спостереження:
- Затримка слотів (slot skip rate). В ідеалі — 0%. Окремі пропуски допустимі, але систематичні пропуски означають, що ваш вузол не встигає обробляти блоки. Перевірте: завантаження CPU, швидкість диска (iostat -x 1), мережеву затримку до пірів.
- Кількість пірів у Gossip.
solana gossip --url http://127.0.0.1:8899— має показувати десятки активних пірів. Менше ніж 10 — ознака проблем із мережею або фаєрволом. - Використання RAM. Agave кешує акаунти в пам'яті. Якщо RAM близький до 100% — система почне використовувати swap, що різко сповільнить валідатор. Це критична ситуація, яка потребує збільшення RAM або налаштування
--accounts-db-skip-shrink. - Використання диску. Моніторьте зростання каталогу леджера. На mainnet-beta без обмежень леджер може зростати на 50–100 ГБ на добу.
- Журнали.
tail -f /var/log/solana/validator.log | grep -i "warn\|error\|fatal"— фільтруйте лише попередження та помилки. Інформаційні повідомлення створюють шум.
Типові попередження в логах перших годин, які не є проблемою:
- Повідомлення про відключення окремих пірів — це нормальна поведінка Gossip-протоколу.
- Окремі помилки fetch-запитів слотів — мережа періодично скидає з'єднання, клієнт автоматично перепідключається.
Попередження, які потребують реакції:
Out of memory— негайно збільшуйте RAM або зменшуйте навантаження.Failed to open ledger database— пошкодження леджера, потрібна діагностика диска.No valid snapshot found— клієнт не знайшов snapshot, перевірте шлях та цілісність файлів.
Що робити, якщо синхронізація зупинилася
Синхронізація може зупинитися — слот перестає рости, а різниця з кластером збільшується. Це поширена ситуація, і алгоритм дій залежить від причини.
Діагностика крок за кроком:
1. Перевірте, чи процес ще живий:
ps aux | grep agave-validator
Якщо процес відсутній — він впав. Дивіться останні рядки логу: tail -100 /var/log/solana/validator.log. Найчастіші причини падіння: OOM killer (перевірте dmesg | grep -i oom), помилка диска, сегфолт у клієнті.
2. Перевірте мережу:
solana gossip --url http://127.0.0.1:8899
Якщо список пірів порожній або містить лише 1–2 записи — проблема в мережі. Перевірте: відкриті порти 8000–8010 UDP/TCP, правила фаєрвола, доступність entrypoint-вузлів (nc -zv entrypoint.mainnet-beta.solana.com 8001).
3. Перевірте диск:
iostat -x 1 5
Якщо використання диска близьке до 100% або є велика черга очікування (await) — диск не встигає. На mainnet-beta це критично. Можливі рішення: переведіть леджер на окремий NVMe, вимкніть непотрібні сервіси на сервері, перевірте стан диска через SMART (smartctl -a /dev/nvme0n1).
4. Перевірте логи на предмет специфічних помилок:
grep -i "stalled\|frozen\|behind" /var/log/solana/validator.log | tail -20
Якщо ви бачите повідомлення про те, що вузол «завис» або «відстав», але процес живий — найчастіше це дискова або мережева вузькість.
5. Радикальне рішення — перезавантаження з нового snapshot.
Попередження: ця дія скидає поточний стан леджера та починає синхронізацію заново. Ви втратите поточний прогрес синхронізації. Використовуйте лише якщо інші методи не допомогли.
Кроки для безпечного відкату:
- Зупиніть валідатор:
systemctl stop agave-validator(або kill процесу). - Зробіть резервну копію поточного леджера (якщо місце дозволяє):
mv /mnt/ledger /mnt/ledger.bak - Завантажте свіжий snapshot (див. розділ «Підготовка snapshot для mainnet-beta»).
- Запустіть валідатор з тією самою конфігурацією.
- Після успішної синхронізації та стабільної роботи протягом кількох годин видаліть резервну копію:
rm -rf /mnt/ledger.bak
Якщо проблема повторюється після перезавантаження з нового snapshot — причина не в леджері. Шукайте в апаратному забезпеченні: перевірте ECC-помилки в пам'яті, температуру NVMe, стабільність живлення сервера.
Наступний крок: після стабільного запуску та синхронізації варто налаштувати автоматичне оновлення клієнта та розгорнути систему моніторингу. Детальніше про джерела snapshot та їхню конфігурацію — в матеріалі про налаштування snapshot-джерела та генератора.