По состоянию на октябрь 2026 года большинство ошибок кошелька делятся на две группы. Ошибки, возникающие до включения транзакции в блок, например «nonce too low», «replacement transaction underpriced», «insufficient funds for gas * price + value» или «Transaction simulation failed: Blockhash not found» в Solana, означают, что в блокчейн ничего не записано и комиссия сети не списана. Сбои после включения, такие как транзакция EVM, завершившаяся откатом или нехваткой газа, транзакция Solana, попавшая в блок с ошибкой, или сбой на этапе вычислений в TON, всё равно расходуют комиссию за выполненную работу. Найдите свою строку в таблицах ниже, чтобы узнать, что она значит и как это исправить.
Списалась ли комиссия за неудавшуюся транзакцию? Главное правило, которое нужно проверить первым
Комиссия сети за неудавшуюся транзакцию списывается, только если она была включена в блок до сбоя.
Транзакция может потерпеть неудачу в два момента:
- До включения: её отклоняют симуляция кошелька, узел RPC или мемпул. В блок ничего не попадает, поэтому комиссия сети не списывается.
- После включения: транзакция попадает в блок, её код выполняется и завершается сбоем. Комиссия за выполненную работу списывается. Etherscan сообщает, что газ по неудавшимся транзакциям всё равно списывается из-за затраченных вычислений, а в документации Solana по комиссиям сказано, что при сбое транзакции комиссия всё равно взимается.
Чтобы понять, какой у вас случай, найдите хеш или подпись транзакции в блокчейн-эксплорере. Если через несколько минут записи нет, обычно это значит, что транзакция так и не попала в блок и ничего не стоила; статус Pending означает, что её ещё не включили. Запись со статусом Failed или Reverted либо с ненулевым кодом выхода означает, что транзакция попала в блок и комиссия списана.
Какие ошибки EVM означают «nonce too low», «underpriced» или «out of gas»?
Это точные строки из исходного кода клиента go-ethereum, и большинство из них означает, что транзакцию отклонили до попадания в блок.
| Точный текст ошибки | Что это значит | Списана ли комиссия сети? | Что делать |
|---|---|---|---|
| «nonce too low» | Транзакция с таким номером уже подтверждена; состояние кошелька устарело | Нет | Синхронизируйте кошелёк заново и проверьте эксплорер; отправляйте повторно, только если нужное действие ещё не выполнено |
| «replacement transaction underpriced» | При ускорении или отмене надбавка к комиссии оказалась слишком маленькой | Нет | Увеличьте надбавку; по умолчанию Geth требует 10% |
| «max fee per gas less than block base fee» | Ваша максимальная комиссия ниже текущей базовой | Нет | Повысьте максимальную комиссию |
| «insufficient funds for gas * price + value» | Нативной монеты не хватает на сумму плюс максимальный газ | Нет | Пополните нативную монету; см. токены есть, а токена для газа нет |
| «already known» | Та же транзакция уже находится в мемпуле | Нет | Подождите; это безвредно |
| «out of gas» | Выполнение превысило лимит газа; изменения отменены | Да | Повторите с более высоким лимитом газа |
Что значит «execution reverted»?
«Execution reverted» означает, что смарт-контракт отказался выполнять действие и отменил все сделанные им изменения. Ошибка появляется в двух моментах, и от этого зависит комиссия.
Если она появилась в предварительной оценке кошелька перед отправкой, ничего не было отправлено и комиссия не списана. Если транзакция попала в блок, Etherscan показывает её как Fail или Reverted, и, по данным Alchemy, отправитель всё равно платит за использованный газ. Настоящая причина указана в тексте после двоеточия. Частые варианты:
- «UniswapV2Router: INSUFFICIENT_OUTPUT_AMOUNT»: цена вышла за ваш предел проскальзывания между подписью и включением в блок.
- «ERC20: insufficient allowance»: разрешение на токен меньше тратимой суммы. Родственная ошибка «ERC20: transfer amount exceeds balance» означает, что у вас меньше этого токена, чем вы пытались переместить.
Эти две строки ERC-20 происходят из контрактов OpenZeppelin v4; в новых версиях используются пользовательские ошибки с другими названиями.
Что значат коды AA в ERC-4337 и ошибки EIP-7702?
Аккаунты на смарт-контрактах отправляют UserOperation через bundler вместо обычной транзакции, а спецификация EIP-4337 указывает, что сообщения об ошибках EntryPoint начинаются с кода вида AA##.
| Код | Что это значит | Списана ли комиссия сети? |
|---|---|---|
| AA21 didn't pay prefund | Пеймастер не использовался, а депозита аккаунта в EntryPoint не хватает на максимальный газ | Нет |
| AA23 reverted | Код валидации аккаунта отклонил операцию | Нет |
| AA33 reverted | Валидация пеймастера отклонила операцию | Нет |
| AA95 out of gas | Лимит газа пакета был слишком низким для операции или вложенного вызова | Обычно нет; handleOps откатывается |
Спецификация EIP-4337 требует, чтобы bundler отбрасывал операцию, симуляция которой завершается откатом, поэтому сбои валидации (AA2x и AA3x) обычно ничего не оставляют в блокчейне. Если операция включена и её основной вызов откатывается, газ всё равно оплачивается ончейн аккаунтом или пеймастером, который её спонсировал. Alchemy отмечает, что AA95 обычно означает слишком низкие лимиты газа; handleOps откатывается, поэтому повторите с более высокими лимитами газа (это параметр bundler или SDK).
EIP-7702 добавляет одну ошибку, которую можно увидеть от узла: «in-flight transaction limit reached for delegated accounts» (пул Geth принимает для такого аккаунта только одну ожидающую исполнимую транзакцию, так что подождите её). Авторизация с неверным идентификатором цепи или nonce молча пропускается, поэтому транзакция может пройти, а делегирование не будет применено. Если вы не делегировали аккаунт осознанно, проверьте и отзовите делегирование: неожиданное делегирование — признак дрейнера.
Что значат «Blockhash not found» и «block height exceeded» в Solana?
«Block height exceeded» означает, что blockhash истёк, а «Blockhash not found» — что узел не распознал blockhash (обычно он истёк, иногда узел отстаёт). В обоих случаях транзакция, как правило, не была обработана. Согласно руководству Solana по подтверждению, blockhash остаётся действительным примерно 151 блок, то есть около 60–90 секунд, а истёкшую транзакцию обработать уже нельзя.
| Точный текст ошибки | Что это значит | Списана ли комиссия сети? | Что делать |
|---|---|---|---|
| «Transaction simulation failed: Blockhash not found» | Blockhash слишком старый, или симулирующий узел ещё его не видел | Нет | Повторите, чтобы получить свежий blockhash |
| «block height exceeded» (TransactionExpiredBlockheightExceededError) | Транзакция не попала в блок до истечения blockhash | Нет, если только она не попала в блок незадолго до истечения; проверьте подпись | Проверьте подпись в эксплорере, затем повторите |
| «Transaction simulation failed: Error processing Instruction N: custom program error: 0x...» | Программа предсказала сбой, например из-за проскальзывания при свопе | Нет, если ошибка поймана в симуляции до отправки; если кошелёк или приложение пропускает симуляцию, транзакция может попасть в блок как Failed, и комиссия будет списана | Прочитайте причину; измените проскальзывание или сумму |
| «Attempt to debit an account but found no record of a prior credit.» | На платящем аккаунте нет SOL вообще | Нет | Пополните его SOL |
| «Transaction results in an account (0) with insufficient funds for rent» | После отправки на аккаунте останется меньше минимума, освобождающего от ренты | Нет, если поймано в симуляции; при пропущенной симуляции транзакция может попасть в блок как Failed, и комиссия будет списана | Отправьте чуть меньше; см. рента Solana |
| Эксплорер показывает «Failed» | Транзакция попала в блок, и программа вернула ошибку | Да | Прочитайте журнал в эксплорере, исправьте и отправьте снова |
Комиссии Solana всегда оплачиваются в SOL, поэтому «Insufficient funds for fee» и «insufficient funds for rent» означают, что вам нужны SOL. Простое «insufficient funds» или «custom program error: 0x1» при переводе токена означает, что у вас меньше этого токена, чем вы пытались отправить.
Нужно ли повышать приоритетную комиссию (priority fee) в Solana?
Повышайте приоритетную комиссию, только если транзакция постоянно истекает во время перегрузки сети, а не когда появляется ошибка симуляции.
Согласно документации solana.com по комиссиям, комиссия Solana состоит из базовой комиссии 5 000 лампортов за подпись (50% сжигается, 50% достаётся валидатору) и необязательной приоритетной комиссии: цены вычислительной единицы (в микролампортах), умноженной на лимит вычислительных единиц, делённой на 1 000 000 и округлённой вверх до целых лампортов; вся она уходит валидатору. Более высокая приоритетная комиссия повышает шансы, что загруженный лидер запланирует вашу транзакцию. Она не исправляет ошибки проскальзывания, ренты или нехватки SOL, и она всё равно списывается, если транзакция попала в блок и завершилась сбоем. Если появилась ошибка симуляции, устраните причину.
Что значат коды выхода TON и возвращённые (bounced) сообщения?
Транзакция TON выполняется по фазам (хранение, зачисление, вычисления, действия, возврат), и, согласно docs.ton.org, коды выхода 0 и 1 означают успех, а любой другой — сбой. Если вычисления завершаются сбоем, фаза действий пропускается, а для входящего сообщения с возможностью возврата формируется bounce-сообщение; комиссии списываются пофазно, поэтому уже списанные ранее остаются потраченными. Комиссии оплачиваются в GRAM (ранее Toncoin; см. что изменилось при переименовании).
| Сигнал | Что это значит | Списана ли комиссия сети? | Что делать |
|---|---|---|---|
| Код выхода 13 или -14 | Нехватка газа на фазе вычислений | Да, за использованный газ | Приложите больше GRAM |
| Код выхода 9 | Cell underflow: контракт попытался прочитать больше данных, чем содержит ячейка, часто потому, что данные не соответствуют ожиданиям контракта | Да | Проверьте, подходят ли данные или комментарий для этого контракта |
| Код выхода 37 | Фаза действий: «Not enough GRAMs» для отправки исходящего сообщения | Да | Приложите больше GRAM |
| Фаза вычислений пропущена | В сообщении было слишком мало GRAM для оплаты выполнения | Газ не списан; фаза хранения всё равно выполняется | Отправьте с большим количеством GRAM |
| Возвращённое сообщение (bounced) | Получатель не смог обработать сообщение или не существует | Да, комиссии списаны | Стоимость возвращается за вычетом комиссий за сообщение и газ |
Как WATS Wallet соотносится с этими ошибками
WATS Wallet от Alltoscan LLC — некастодиальный кошелёк (расширение для Chrome и приложение для iOS/Android) для сетей EVM, Solana и TON, где ключи и seed-фраза хранятся у вас. Сообщения в этом руководстве — ошибки уровня сети, определяемые самими блокчейнами, а не коды, специфичные для WATS.
В Solana комиссии сети оплачиваются в SOL, поэтому строка про «insufficient funds» для Solana применима напрямую: небольшой остаток SOL позволяет её избежать. Строки про TON описывают ошибки на уровне протокола; в WATS Wallet комиссии в TON оплачиваются в ATS. В сетях EVM WATS Wallet взимает комиссии сети в ATS через пеймастер ERC-4337 с единого баланса ATS в BNB Chain; о том, как работает комиссия ATS, рассказано отдельно.
Часто задаваемые вопросы
Теряю ли я деньги, если криптотранзакция не прошла?
Это зависит от того, когда произошёл сбой. Если транзакцию отклонили до включения в блок (ошибки симуляции, узла или мемпула, такие как «nonce too low», «replacement transaction underpriced» или «Blockhash not found»), она не попала в блок и комиссия сети не списана. Если она попала в блок и завершилась сбоем (откат или нехватка газа в EVM, «Failed» в эксплорере Solana, ненулевой код выхода в TON), комиссия за выполненную работу списана, но сумма, которую вы пытались отправить, остаётся на вашем аккаунте, а при возврате (bounce) в TON стоимость возвращается за вычетом комиссий. Проверьте хеш или подпись в эксплорере, чтобы понять, какой у вас случай.
Почему кошелёк пишет «nonce too low», хотя ожидающих транзакций у меня нет?
Nonce — это счётчик транзакций аккаунта, а «nonce too low» означает, что транзакция с таким номером уже подтверждена. Частые причины: использование того же аккаунта из другого приложения-кошелька или с другого устройства, «зависшая» транзакция, которая на самом деле подтвердилась, либо устаревшее кэшированное состояние кошелька. Проверьте в эксплорере, прошёл ли нужный вам платёж или действие; если прошёл, не отправляйте повторно; если нет, синхронизируйте кошелёк заново и отправьте снова. Сама отклонённая попытка комиссию не стоила. Если транзакция действительно ожидает подтверждения, посмотрите, <a href="/blog/speed-up-or-cancel-stuck-transaction">как ускорить или отменить ожидающую транзакцию</a>.
Безопасно ли повторять отправку после «block height exceeded» или «Blockhash not found» в Solana?
Как правило, да. «Block height exceeded» означает, что blockhash истёк (примерно 151 блок, около 60–90 секунд), а «Blockhash not found» — что узел его не распознал, обычно потому, что он истёк. Истёкшую транзакцию обработать уже нельзя, поэтому она не может позже попасть в блок и продублировать новую; всё же сначала найдите подпись в эксплорере Solana, а затем повторите со свежим blockhash. За истёкшую попытку комиссия не списывалась, если только она не попала в блок до истечения, что покажет поиск в эксплорере, а умеренно более высокая приоритетная комиссия может помочь, если транзакция продолжает истекать во время перегрузки.

