Транзакція swap на Solana зазвичай займає кілька секунд, але коли інтерфейс DEX видає помилку, користувач залишається з незрозумілим текстом і підписаною, але невиконаною операцією. Нижче розібрано чотири найпоширеніші причини відхилення swap-транзакцій на Solana та конкретні кроки для кожної з них.

Найпоширеніші помилки swap на Solana

Більшість невдалих обмінів у DeFi-застосунках на Solana зводяться до обмеженого набору причин. Усі вони належать до одного з чотирьох типів:

  • Insufficient funds — на балансі не вистачає токенів для обміну.
  • Insufficient lamports — на балансі гаманця не вистачає SOL для оплати комісій мережі та створення акаунтів.
  • Slippage tolerance exceeded — реальний курс під час виконання відхилився від очікуваного більше, ніж дозволено.
  • Token account not found — у гаманця немає асоційованого токен-акаунту (ATA) для токена, який ви отримуєте.

Кожна з цих помилок має чітку механіку й відповідний спосіб усунення.

Insufficient funds та insufficient lamports

Ці дві помилки схожі за текстом, але мають різну природу. Їхнє спільне джерело — неповне розуміння того, що на Solana існують два окремих види балансу, які беруть участь у swap.

Insufficient funds означає, що кількості токена, який ви віддаєте, недостатньо для заданого обсягу обміну. Це може статися, якщо після формування заявки частину токенів було списано іншою транзакцією, або якщо ви вказали суму з урахуванням ще не зарахованих коштів.

Insufficient lamports стосується виключно SOL — базової одиниці мережі. Lamports потрібні для трьох речей:

  • Оплата комісії за транзакцію (transaction fee).
  • Оплата комісії за обчислення (compute unit price), якщо DEX використовує пріоритезацію транзакцій.
  • Створення або оренда токен-акаунтів, якщо вони ще не існують.

Типовий сценарій: користувач обмінює весь свій SOL на USDC, залишаючи на балансі 0.000005 SOL. Наступна спроба swap-транзакції (наприклад, USDC на інший токен) завершується помилкою insufficient lamports, бо залишку не вистачає навіть на базову комісію.

Рекомендований мінімальний залишок SOL на гаманці варто перевіряти в актуальному джерелі, оскільки вартість створення токен-акаунту та комісії змінюються залежно від завантаженості мережі. На момент написання матеріалу для стандартного swap зазвичай достатньо 0.01–0.02 SOL, але під час періодів високого навантаження ця сума може бути більшою.

Slippage tolerance exceeded

Slippage — це допустиме відхилення ціни між моментом формування транзакції та моментом її виконання у блокчейні. На Solana, де блоки формуються приблизно кожні 400 мілісекунд, ціна в пулі ліквідності може змінитися між підписанням транзакції та її включенням у слот.

Помилка Slippage tolerance exceeded означає, що фактична ціна виконання вийшла за встановлені вами межі, і DEX-контракт відхилив обмін, щоб захистити вас від несприятливого курсу.

Найчастіше це відбувається в таких ситуаціях:

  • Малий пул ліквідності. Навіть невеликий обмін відносно до обсягу пулу суттєво зсуває ціну. Детальніше про те, як ліквідність впливає на обмін, розглянуто в окремому матеріалі.
  • Високе завантаження мережі. Транзакція затримується в черзі, і за цей час курс встигає змінитися.
  • MEV-активність. Інші учасники мережі можуть втручатися в порядок транзакцій, витягуючи вигоду з різниці цін (арбітраж, sandwich-атаки).
  • Занижений slippage. Типове значення за замовчуванням у багатьох DEX — 0.5% або 1%. Для стабільних пар (наприклад, USDC–USDT) цього зазвичай достатньо. Для волатильних токенів або малих пулів може знадобитися 2–5%.

Збільшення slippage tolerance вирішує проблему виконання, але водночас збільшує ризик отримати гірший курс. Це компроміс між надійністю та ціною виконання.

Token account not found

На Solana кожен токен зберігається не безпосередньо в гаманці, а в окремому програмному акаунті — асоційованому токен-акаунті (Associated Token Account, ATA). Гаманець є власником цього акаунта, але сам акаунт існує окремо.

Помилка Token account not found виникає, коли ви намагаєтеся отримати токен, для якого у вашого гаманця ще не створено ATA. Це типово для першої взаємодії з новим токеном: наприклад, ви раніше тримали лише SOL і USDC, а тепер обмінюєте USDC на JTO — токен-акаунт JTO ще не існує, і транзакція не може куди його зарахувати.

Створення ATA вимагає додаткових lamports на оренду простору в памʼяті мережі (rent-exempt reserve). Якщо на балансі гаманця немає достатньої кількості SOL для цього, транзакція також завершиться помилкою — зазвичай insufficient lamports.

Як вирішити кожну помилку

Перевірка балансу та асоційованих токен-акаунтів

Перед будь-яким swap виконайте дві перевірки:

  1. Баланс токена, який віддаєте. Переконайтеся, що сума на балансі дорівнює або перевищує суму обміну. Якщо ви вказуєте максимальну суму, врахуйте, що деякі DEX автоматично залишають невеликий залишок для покриття можливих коливань комісій.
  2. Залишок SOL. Перевірте, що на гаманці є достатньо SOL для комісії транзакції та, за потреби, для створення ATA. Точну суму оренди ATA для конкретного токена можна перевірити в блокчейн-експлорері.

Для перевірки наявності ATA відкрийте блокчейн-експлорер (наприклад, Solscan або SolanaFM), введіть адресу свого гаманця та перегляньте список токен-акаунтів. Якщо токен, який ви очікуєте отримати, відсутній у списку — ATA ще не створено.

Створення асоційованого токен-акаунту (ATA)

Більшість сучасних DEX на Solana здатні автоматично створювати ATA під час транзакції, якщо на балансі гаманця достатньо SOL. У такому разі вам не потрібно робити це вручну — просто переконайтеся в наявності залишку SOL.

Якщо DEX не підтримує автоматичне створення ATA або ви хочете зробити це окремо для контролю над комісіями:

  1. Відкрийте гаманець (Phantom, Solflare або інший, який ви використовуєте).
  2. Знайдіть опцію додавання токена за його адресою (mint address).
  3. Введіть коректну адресу токена. Критично важливо: перевіряйте адресу за кількома незалежними джерелами (офіційний сайт проєкту, блокчейн-експлорер). Введення неправильної адреси створить ATA для підробленого токена і безповоротно витратить SOL на оренду.
  4. Підтвердіть транзакцію створення ATA. Після цього токен-акаунт зʼявиться у вашому гаманці з нульовим балансом, і наступний swap пройде без помилки Token account not found.

Щодо slippage tolerance: якщо транзакція постійно відхиляється з цією помилкою, збільште значення slippage у налаштуваннях DEX на 0.5–1% і спробуйте знову. Якщо помилка зберігається навіть при високому slippage (5% і більше), найімовірніше пул ліквідності занадто малий для вашого обсягу обміну. У такому разі варто розділити обмін на кілька менших транзакцій або обрати інший пул.

Блок ризиків. Збільшення slippage tolerance розширює коридор прийнятної ціни, що може бути використано іншими учасниками мережі (MEV-боти) для отримання вигоди за ваш рахунок. Створення ATA за неправильною адресою токена призводить до безповоротної втрати SOL на оренду акаунта. Усі дії з гаманцем вимагають попередньої перевірки адрес та залишків. Цей матеріал містить загальну технічну інформацію й не є індивідуальною фінансовою порадою.

Джерела