Транзакція в мережі Solana не пройшла — це не помилка гаманця і не ознака злому. У переважній більшості випадків причина криється у трьох речах: замала комісія, невідповідний slippage для обміну або технічне блокування на рівні програми. Кожну з них можна діагностувати за кілька хвилин і виправити без втрати коштів.
Основні причини невдачі: недостатня комісія, slippage, блокування
Недостатня комісія
Solana розраховує вартість транзакції з двох складових: базова комісія за обчислення (compute units) та пріоритетна комісія (priority fee). Якщо ви вказали замалий ліміт обчислювальних одиниць, мережа не встигне виконати всі інструкції — транзакція впаде з помилкою Computational Budget Exceeded. Якщо пріоритетна комісія занадто низька під час завантаження мережі, валідатор може просто не включити вашу транзакцію в блок — тоді вона зависне в статусі pending і з часом відхилиться через закінчення терміну дії блокхеша.
Невідповідний slippage
Slippage — це допустиме відхилення ціни під час обміну токенів. Якщо ви встановили slippage 0,5%, а ціна токена в пулі змінилася на 1% між моментом підписання та моментом виконання, транзакція відхилиться. Це захист від ситуації, коли ви очікуєте отримати 100 USDT, а через різкий рух ринку отримуєте 95. Помилка виглядає як InstructionError: Custom(0x1) або Slippage Tolerance Exceeded.
Блокування на рівні програми або акаунта
Деякі токени мають механізм заморозки (freeze authority), і їхній емітент може обмежити перекази. Також програма, через яку ви здійснюєте дію, може повернути помилку через внутрішні обмеження: недостатню ліквідність у пулі, зупинений контракт або перевірку, яку акаунт не проходить. Типові помилки — AccountFrozen, InsufficientFunds (навіть якщо на балансі є токени — мова може йти про ліквідність пулу), ProgramFailedToComplete.
Інші поширені причини
- Закінчення терміну дії блокхеша (BlockhashNotFound) — транзакція не потрапила в блок протягом приблизно 60 секунд. Зазвичай пов'язано з низькою пріоритетною комісією.
- Недостатній баланс SOL — для оренди простору на рахунку (rent-exempt) або для самої комісії потрібно трохи SOL навіть якщо ви переказуєте інший токен.
- Невірна послідовність інструкцій — зустрічається при складних транзакціях із кількома кроками, коли одна інструкція залежить від результату попередньої.
Як діагностувати причину
Єдиний надійний спосіб — знайти підпис транзакції (transaction signature) і перевірити її статус у експлорері.
- Знайдіть підпис. У більшості гаманців (Phantom, Solflare, Backpack) натисніть на невдалу транзакцію в історії та скопіюйте її підпис — це рядок з літер і цифр довжиною 88 символів, що починається з цифр.
- Відкрийте експлорер. Вставте підпис у рядок пошуку на Solscan або аналогічному сервісі.
- Перевірте статус. Якщо статус Failed — дивіться розділ Logs. Там буде вказана конкретна помилка. Якщо статус Dropped або транзакція взагалі не знайдена — проблема в комісії або блокхеші.
- Прочитайте логи. Знайдіть останній рядок із помилкою. Саме він вказує на причину: назва помилки, номер інструкції, що впала, і код.
Приклад: якщо в логах останнім рядком йде Error: Computational Budget Exceeded на кроці 3 із 5 — ви знаєте, що проблема саме в ліміті обчислень, а не в slippage чи замороженому акаунті.
Як виправити для кожної причини
Недостатня комісія
Збільште ліміт обчислювальних одиниць. У налаштуваннях гаманця або на сайті застосунку знайдіть поле Compute Unit Limit. Стандартне значення зазвичай 200 000. Для складних транзакцій (обмін через маршрутизатор, взаємодія з кількома програмами) встановіть 300 000–400 000. Перевірка: після відправки подивіться в логах значення consumed units — воно має бути меншим за встановлений ліміт.
Збільште пріоритетну комісію. Якщо транзакція зависає або відхиляється з BlockhashNotFound, підвищте priority fee. Почніть із 0,0001 SOL, якщо не допоможе — збільште вдвічі. Перевірка: транзакція потрапила в блок протягом кількох секунд.
Резервний шлях. Якщо збільшення комісії не допомагає, а мережа справді перевантажена — зачекайте кілька хвилин і спробуйте знову з актуальними параметрами.
Невідповідний slippage
Підвищте допустиме відхилення. Для стандартних пар (SOL/USDT) зазвичай достатньо 0,5–1%. Для токенів з низькою ліквідністю або під час волатильності встановіть 2–3%. Перевірка: після успішної транзакції порівняйте очікувану та фактичну суму отримання — різниця має бути в межах встановленого slippage.
Ризик: високий slippage (5% і більше) під час обміну на малоліквідних парах може призвести до значних втрат. Зловмисні сайти іноді встановлюють slippage на 50% або 100% — у такому разі ви можете втратити майже все. Завжди перевіряйте це поле перед підписанням.
Резервний шлях. Якщо slippage доводиться ставити понад 5% — швидше за все, ліквідності пулу недостатньо для вашого обсягу. Зменште суму обміну або виберіть інший пул.
Блокування акаунта або програми
Перевірте статус токена. Відкрийте сторінку токена в експлорері та подивіться, чи активне поле Freeze Authority. Якщо воно встановлене і належить емітенту — переказ може бути заблокований рішенням емітента. У такому разі виправити це з вашого боку неможливо.
Перевірте статус програми. Якщо помилка ProgramFailedToComplete — можливо, програма тимчасово зупинена або має внутрішню помилку. Перевірте канали проєкту на предмет оголошень про технічні роботи.
Резервний шлях. Якщо токен заморожено емітентом — єдиний варіант дочекатися розблокування або звернутися до емітента (якщо це відомий проєкт із підтримкою). Засобів примусового зняття заморозки не існує.
Закінчення блокхеша
Повторіть транзакцію. Гаманець автоматично генерує новий блокхеш при кожній спробі. Головне — переконатися, що пріоритетна комісія достатня для поточного завантаження мережі. Перевірка: нова транзакція отримує статус Success або Failed (але не Dropped).
Недостатній баланс SOL
Поповніть рахунок. Навіть якщо ви переказуєте токени, комісія завжди сплачується в SOL. Переконайтеся, що після вирахування комісії на рахунку залишається щонайменше 0,001 SOL для можливості подальших дій. Перевірка: в гаманці відображається баланс SOL, більший за очікувану комісію.
Коли звертатися по допомогу
- Транзакція має статус Success, але токени не надійшли. Це означає, що транзакція виконалася, але не так, як ви очікували. Перевірте логи: можливо, кошти пішли на інший акаунт або інструкція виконала іншу дію. У такому разі допоможе лише розбір логів із кимось, хто розуміє інструкції Solana.
- Помилка InstructionError із незрозумілим кодом. Деякі програми використовують власні коди помилок. Якщо код не розшифровується в експлорері — зверніться до підтримки застосунку, через який робили транзакцію.
- Підозра на компрометацію. Якщо ви бачите невідомі транзакції, які ви не ініціювали, негайно перевірте дозволи застосунків і за потреби перенесіть кошти на новий гаманець. Це виходить за межі поточної теми, але є пріоритетом над діагностикою окремої помилки.
У всіх інших випадках — недостатня комісія, slippage, закінчення блокхеша — проблема вирішується самостійно за наведеними вище кроками.
Наступний крок
Після того як ви зрозуміли причину невдачі та успішно виконали транзакцію, варто навчитися контролювати витрати на комісії до відправки. Це допоможе уникнути ситуацій, коли транзакція впадає через завищений або занижений ліміт обчислень. Детальніше про це — у матеріалі Як перевірити комісію за транзакцію Solana.