WATS Wallet logoWATS Wallet
Технически8 мин чтения

Ошибки криптокошелька: что значат execution reverted, nonce too low и Blockhash not found (EVM, Solana, TON)

Найдите свою ошибку: «execution reverted», «nonce too low», «Blockhash not found», AA21 и код выхода TON 37. Что означает каждая ошибка в EVM, Solana и TON, списалась ли комиссия сети за попытку и как это исправить.

Автор: Alltoscan LLC, компания, создавшая WATS Wallet Редакционная политика

Опубликовано Обновлено

По состоянию на октябрь 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
Код выхода 9Cell 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. За истёкшую попытку комиссия не списывалась, если только она не попала в блок до истечения, что покажет поиск в эксплорере, а умеренно более высокая приоритетная комиссия может помочь, если транзакция продолжает истекать во время перегрузки.