Когда транзакция токена на Solana завершается ошибкой во время выпуска, отмены прав или создания пула ликвидности, сбой вызван конкретной ошибкой исполнения в сети. Транзакции на Solana исполняются атомарно: если хотя бы одна инструкция содержит ошибку, вся транзакция отменяется, изменения состояния не применяются, а с кошелька списывается только комиссия сети.
Диагностика сбоев требует проверки баланса SOL на кошельке, статуса узлов RPC, условий инициализации счетов и логов программы в обозревателе блокчейна.
Как устроен жизненный цикл транзакции в Solana
Чтобы понять причину отклонения транзакции, проследим путь инструкций в сети:
- Создание: Инструмент формирует транзакцию с инструкциями (например,
InitializeMint или CreateAccount) и прикрепляет свежий хэш блока (blockhash).
- Подписание: Ваш кошелек подписывает транзакцию приватным ключом нужного адреса с правами.
- Отправка: Подписанная транзакция отправляется на узел RPC (Remote Procedure Call) Solana.
- Валидация: Валидатор-лидер проверяет инструкции на соответствие текущему состоянию сети.
- Исполнение или отмена: Если все верно, изменения записываются в блок. Если есть ошибка, транзакция отменяется с записью кода ошибки.
Официальная документация Solana Transaction Documentation подробно описывает лимиты транзакций, время жизни блокхэша и обработку инструкций.
Ошибка 1: Недостаточно SOL для освобождения от аренды счета
Самая частая причина сбоя при создании токена — слишком низкий баланс SOL на кошельке, которого не хватает на оплату аренды счета.
В Solana каждый новый счет (счет эмиссии, счет метаданных или связанный токен-счет) должен удерживать минимальный баланс нативного SOL для бессрочного хранения в памяти валидаторов. Это требование называется освобождением от аренды (rent exemption).
Следует различать две разные комиссии:
- Комиссия сети за транзакцию: Минимальная комиссия (обычно 0.000005 SOL), выплачиваемая валидаторам за обработку.
- Депозит за аренду счета: Однократный залог, необходимый для открытия нового счета (обычно от 0.002 до 0.005 SOL за каждый счет).
Если на вашем кошельке ровно 0.001 SOL, этого хватит на комиссию сети, но транзакция отклонится из-за нехватки SOL на оплату аренды новых счетов. Всегда держите на кошельке не менее 0.02–0.05 нативного SOL перед созданием токенов или пулов.
Ошибка 2: Перегрузка узлов RPC и истечение срока blockhash
Каждая транзакция в Solana содержит свежий хэш блока (blockhash) для защиты от повторных атак. Хэш блока остается действительным в течение 150 слотов сети (примерно 60–90 секунд).
Если сеть Solana перегружена или узел RPC задерживает отправку:
- Транзакция может зависнуть в очереди RPC до истечения срока действия хэша.
- По истечении 150 слотов валидаторы отклоняют её с ошибкой
BlockhashNotFound или TransactionExpired.
- Интерфейс кошелька может показать сообщение “Таймаут транзакции”.
Для решения проблем с RPC:
- Обновите страницу, чтобы получить свежий хэш блока.
- Проверьте статус сети на предмет высокой нагрузки.
- Используйте надежные сервисы с резервными узлами RPC.
- Немного увеличьте приоритетную комиссию при высокой загрузке сети.
Ошибка 3: Неинициализированный связанный токен-счет (ATA)
При выпуске или переводе токенов получателю адрес назначения должен иметь открытый связанный токен-счет (ATA) для данного токена.
Если транзакция пытается перевести токены на обычный адрес без предварительного выполнения инструкции CreateAssociatedTokenAccount, перевод отклоняется с ошибкой AccountDoesNotExist.
Современные конструкторы автоматически добавляют инструкцию создания счета ATA в одну транзакцию с выпуском токенов.
Ошибка 4: Несоответствие прав и отклонение подписи
Транзакция будет отменена, если подпись выполнена кошельком, который не обладает необходимыми полномочиями:
- Ошибка эмиссии: Попытка выпустить токены с кошелька, который не является текущим Mint Authority (или после отмены прав на эмиссию).
- Ошибка заморозки: Попытка заморозить счет с кошелька без прав Freeze Authority.
- Ошибка метаданных: Попытка изменить метаданные с кошелька, не являющегося Update Authority.
Если вы подключили другой кошелек или ранее передали права на другой адрес, сеть отклонит транзакцию из-за отсутствия нужной подписи.
Как диагностировать сбой транзакции через Solscan
При возникновении ошибки используйте Solscan для анализа логов программы:
- Откройте историю транзакций кошелька и скопируйте подпись (хэш) сбойной транзакции.
- Вставьте подпись на Solscan.
- Проверьте статус в верхней части страницы (статус Failed или Instruction Error).
- Прокрутите вниз до раздела Program Logs.
- Найдите точный код ошибки:
custom program error: 0x1 (Недостаточно средств SOL на аренду или перевод).
BlockhashNotFound (Транзакция отправлялась слишком долго).
ConstraintRaw или InvalidAccountData (Неверный ключ прав или неоткрытый счет).
Быстрый чек-лист по решению проблем
Используйте эту таблицу при сбое транзакции:
| Симптом / Ошибка |
Основная причина |
Решение |
| Transaction Failed: Custom Error 0x1 |
На кошельке не хватает нативного SOL на аренду. |
Пополните кошелек минимум на 0.02 SOL и повторите. |
| Blockhash Not Found / Timed Out |
Перегрузка RPC или задержка отправки. |
Обновите страницу для получения нового хэша и отправьте снова. |
| Account Does Not Exist |
Токен-счет ATA получателя еще не создан. |
Убедитесь, что транзакция включает инструкцию создания ATA. |
| Signature Verification Failed |
Подключенный кошелек не обладает нужными правами. |
Переключитесь на адрес кошелька с нужным ключом прав. |
| Окно кошелька закрывается само |
Конфликт расширений или блокировка браузера. |
Разблокируйте кошелек вручную, отключите лишние расширения и повторите. |
Понимание механики транзакций, наличие достаточного баланса SOL на аренду счетов и проверка логов в Solscan позволяют проводить операции с токенами на Solana быстро и без ошибок.