crypto-folio

Понятно, практично, по делу

Вопросы и ответы·05 октября 2026 г.·8 мин

Зависание транзакции в Ethereum: причины и способы решения

Вы отправили ETH или токен из MetaMask, статус в кошелке показывает «Pending», проходит десять минут, полчаса, час — а воз и ныне там. Знакомо, правда?

Зависание транзакции в Ethereum: причины и способы решения

Что происходит, когда транзакция в Ethereum «висит» часами

Не переживайте: это одна из самых частых ситуаций, с которой сталкиваются пользователи сети Ethereum, и у неё есть вполне конкретные технические причины. Давайте разберёмся вместе, почему так происходит и что с этим можно сделать — без паники и без выдуманных обещаний.

Почему транзакция застревает: механика мемпула

Каждая транзакция в Ethereum сначала попадает не в блокчейн, а в так называемый мемпул — общую очередь неподтверждённых операций, которую держат у себя узлы сети. Из мемпула валидаторы забирают транзакции в новые блоки, и вот ключевой принцип: они отдают предпочтение тем операциям, где указана более высокая комиссия за газ.

Это похоже на очередь в кафе в час пик: если вы зашли с обычным билетом, а перед вами ещё толпа людей с пометкой «VIP-обслуживание» — придётся подождать. Сеть Ethereum после внедрения обновления EIP-1559 делит комиссию на две части: обязательный base fee, который сжигается, и priority fee — по-простому, чаевые валидатору. Именно priority fee решает, насколько быстро ваша транзакция «понравится» тому, кто формирует блок. Третий параметр, который вы видите в кошельке — max fee (максимальная комиссия), это потолок, выше которого вы платить не готовы. Внутри этого потолка base fee и priority fee распределяются автоматически.

Главные причины зависания:

  • Слишком низкая priority fee в момент отправки. Когда сеть загружена, даже нормальная вчерашняя комиссия сегодня оказывается слишком скромной.
  • Высокая загруженность сети — спрос на включение в блок превышает то, что блок может вместить. Пропускная способность Ethereum L1 — около 15 транзакций в секунду, и в моменты аирдропов, запуска популярных NFT или резких движений рынка этого хватает не всегда.
  • Конфликт или пропуск в nonce — отдельная история, разберём её в следующем разделе.
  • Слишком маленький gas limit — лимит газа, заданный вручную, может оказаться ниже, чем реально требуется контракту, и транзакция упадёт с ошибкой out of gas ещё до включения в блок.

Ваша транзакция при этом никуда не пропадает — она просто терпеливо ждёт в мемпуле, пока либо не появится окно, либо вы сами не предпримете шаги.

Транзакция в статусе Pending — это не потерянная транзакция. Это операция, которая ждёт своей очереди и которую ещё можно скорректировать.

Nonce: невидимый номер, который блокирует всё

У каждого адреса в Ethereum есть собственный счётчик отправленных транзакций — он называется nonce. Первая транзакция с адреса получает nonce 0, вторая — 1, третья — 2, и так далее. Это не опциональный параметр, а жёсткое правило сети: транзакции одного кошелька обрабатываются строго по порядку их nonce. Никак иначе.

Что это значит на практике? Если вы отправили транзакцию с nonce 5 и она зависла, а потом тут же отправили следующую с nonce 6 — та тоже не пройдёт. Сеть просто не пропустит шестую, пока не будет обработана пятая. Это как очередь в поликлинике: без талона № 5 никто не вызовет пациента с талоном № 6, даже если тот пришёл раньше.

Это объясняет одну очень неприятную ситуацию, в которую попадают многие: отправили обмен с заниженным газом, потом сразу попытались перевести ETH с того же кошелька — и вторая транзакция тоже зависла. Обе висят, кошелёк показывает два «Pending», и непонятно, почему не двигается ни одна. Причина именно в очереди по nonce: стоит сначала разобраться с первой операцией — и обе оживут, потому что для каждого последующего nonce просто откроется «окно».

Отсюда же вытекает типичная ловушка для тех, кто работает с ботами или скриптами: если ваш скрипт отправляет несколько транзакций подряд, но одна из них зависла, все остальные будут выстраиваться за ней и тоже зависнут. Поэтому в профессиональных решениях nonce считают заранее, а скорость отправки регулируют так, чтобы каждая операция успевала «проскочить».

Как ускорить зависшую транзакцию: функция Speed Up

Хорошая новость: пока транзакция не получила ни одного подтверждения и лежит в мемпуле, её можно «перебить» новой операцией с теми же параметрами, но с более высокой комиссией. В большинстве современных кошельков — MetaMask, Rabby, Trust Wallet и других — для этого предусмотрена кнопка Speed Up.

Что происходит технически: кошелёк формирует новую транзакцию с тем же nonce, что и зависшая, но с увеличенной priority fee. Когда валидаторы увидят в мемпуле две транзакции с одинаковым nonce, они возьмут ту, у которой комиссия выше, а вторую проигнорируют. Старая транзакция тихо «отвалится», и в итоге в блок попадёт только одна — та, что с лучшей ценой.

Пошагово это выглядит так:

1. Откройте зависшую транзакцию в истории кошелька.

2. Нажмите Speed Up (или «Ускорить»).

3. Кошелёк предложит увеличить priority fee — обычно можно согласиться с предложенной суммой или поднять ещё выше. Смотрите на gas tracker типа Etherscan, чтобы понимать, какой priority fee сейчас даёт включение в следующие 1–3 блока.

4. Подтвердите отправку и оплатите новую комиссию за газ.

5. Дождитесь включения в блок — обычно это занимает от нескольких секунд до пары минут.

Важный нюанс: комиссия за новую транзакцию оплачивается отдельно. Это не возврат старой комиссии, а новая операция, у которой своя стоимость. Зато шансы на включение в ближайший блок заметно вырастут, хотя стопроцентной гарантии это всё равно не даёт — в моменты пиковой нагрузки даже высокая комиссия может «простоять» несколько блоков, особенно если одновременно с вами кто-то предлагает ещё больше.

ДействиеЧто меняетсяСтоимость
Speed UpТот же nonce, повышенный priority feeНовая комиссия за газ
CancelТот же nonce, перевод 0 ETH себеНовая комиссия за газ
ЖдатьНичегоБесплатно, но непредсказуемо по времени

Как отменить зависшую транзакцию

Иногда ускорять операцию не нужно — её хочется вообще отменить. Например, отправили не тому адресату или просто передумали. Технически «отмена» — это та же подмена транзакции по тому же nonce, только вместо полезной операции вы отправляете перевод 0 ETH на собственный адрес. Смысл: заместить старую запись в мемпуле новой, которая с точки зрения сети ничего не делает, но закрывает слот с этим порядковым номером.

Шаги почти такие же:

1. В истории кошелька найдите зависшую транзакцию.

2. Нажмите Cancel (или «Отменить»).

3. Кошелёк сформирует перевод 0 ETH на ваш же адрес с тем же nonce и повышенной комиссией.

4. Подтвердите и оплатите газ.

В сети это выглядит как обычный перевод самому себе — просто с нулевой суммой и более высокой комиссией. После подтверждения ваш баланс фактически не изменится (0 ETH же), а старая транзакция будет считаться отменённой, потому что её nonce уже занят новой операцией.

Здесь есть тонкость, о которой часто забывают: заменить транзакцию можно только до того момента, пока она не попала в блок. Как только ваша операция получила хотя бы одно подтверждение — всё, она в блокчейне навсегда. Дальше менять что-то поздно, и кошелёк кнопок Speed Up или Cancel уже не покажет.

Отдельно стоит упомянуть расхожий миф: некоторые думают, что «отменённая» транзакция возвращает газ. Это не так — за транзакцию-замену вы платите полную комиссию, как за любую другую операцию. Экономия тут только в том, что вы не переводите токены по ошибке.

Когда уже ничего нельзя сделать

Давайте честно обозначим границы: есть случаи, в которых ни Speed Up, ни Cancel не помогут.

  • Транзакция уже в блоке. Если в обозревателе блоков (например, Etherscan) у вашей операции стоит статус Success и видны подтверждения — она выполнена. В блокчейне Ethereum нет механизма отмены или возврата уже подтверждённой транзакции. Это не вопрос техподдержки кошелька, а особенность работы сети. Единственный путь вернуть средства — договариваться с получателем, если он известен и готов пойти навстречу.
  • Слишком мало газа на саму операцию (out of gas). Если при отправке вы указали лимит газа ниже, чем требуется для выполнения контракта, сеть отклонит транзакцию. Часть комиссии за неудачную попытку при этом списывается — это плата за работу, которую сеть всё-таки выполнила, дойдя до точки отказа. Здесь ускорение не поможет — нужно отправлять транзакцию заново с правильным лимитом газа, который обычно кошелёк подбирает автоматически, но при ручных настройках пользователи ошибаются часто.
  • Транзакция висит слишком долго. Каждый узел сети хранит мемпул по своим правилам — у одних транзакции выпадают через несколько часов, у других живут до суток и дольше. Точное время автоматического выпадения заранее неизвестно, потому что настройки мемпула у разных валидаторов различаются. На практике это значит, что «вечно висящая» транзакция — это почти всегда либо вопрос приоритета комиссии, либо заминка на nonce, и то и другое лечится.
Если транзакция уже попала в блок — ни ускорить, ни отменить её нельзя. Это правило сети, а не ограничение кошелька.

Полная «окончательность» транзакции в Ethereum наступает после 12 подтверждений — это общепринятый ориентир, выработанный практикой, а не протокольное правило. После такого числа блоков поверх вашей операции вероятность реорганизации цепочки считается исчезающе малой, но формально она никогда не равна нулю: сеть гарантирует только то, что для отката потребуется огромная работа. Поэтому в разговорах про «необратимость» правильнее говорить «практически необратима», а не «необратима окончательно».

Что запомнить и что делать прямо сейчас

Давайте соберём всё в короткий набор правил, чтобы в следующий раз действовать увереннее:

  • Прежде чем отправлять транзакцию в загруженной сети, загляните на Etherscan или любой трекер газа и посмотрите текущую рекомендуемую priority fee. Кошелёк часто предлагает три режима — медленный, обычный и быстрый; в час пик не скупитесь, выбирайте «быстрый».
  • Если транзакция зависла и вам не принципиальна скорость — можно просто подождать. Иногда в мемпуле становится свободнее через час-два, и операция проходит сама.
  • Если ждать не хочется — используйте Speed Up с увеличенной комиссией. Это самый быстрый и понятный путь.
  • Если хотите отменить — используйте Cancel, то есть перевод 0 ETH себе с тем же nonce.
  • Если транзакция уже в блоке — смиритесь: средства у адресата, и изменить это может только он сам.
  • Не редактируйте лимит газа вручную, если не понимаете, зачем это нужно. Стандартного значения, которое подставляет кошелёк, в подавляющем большинстве случаев хватает.

И последнее. Когда ваша зависшая операция наконец разрулится и средства дойдут до кошелька, вы наверняка захотите перевести их в привычный формат. Здесь полезно заранее изучить рабочие способы вывода крипты на карту — чтобы не терять процент на двойных конвертациях и не нарваться на серые обменники.

Не бойтесь экспериментировать с маленькими суммами, пока учитесь. Я сам в своё время потратил несколько долларов на «комиссионные уроки», прежде чем разобрался с nonce и приоритетами газа — зато теперь подобные ситуации уже не вызывают паники, а превращаются в понятную задачу с понятным решением. Если у вас остались вопросы по конкретной ситуации с вашей транзакцией — пишите в комментариях, давайте разберёмся вместе.

Частые вопросы

Почему моя транзакция в Ethereum висит в статусе Pending?
Транзакция ожидает своей очереди в мемпуле, так как установленная комиссия за газ оказалась недостаточно высокой для текущей загруженности сети.
Что такое nonce и как он влияет на транзакции?
Это порядковый номер транзакции вашего кошелька. Сеть обрабатывает операции строго по порядку, поэтому если транзакция с меньшим nonce зависла, все последующие операции также не пройдут.
Как работает функция Speed Up в кошельке?
Она создает новую транзакцию с тем же nonce, но с повышенной комиссией, что делает её более привлекательной для валидаторов и позволяет заменить зависшую операцию.
Можно ли отменить уже отправленную транзакцию?
Да, пока транзакция находится в мемпуле, её можно заменить, отправив перевод 0 ETH на собственный адрес с тем же nonce и более высокой комиссией.
Вернут ли мне комиссию, если я отменю транзакцию?
Нет, за транзакцию-замену вы платите полную комиссию, как за любую другую операцию в сети.
Текст: Олег Сафонов, Проводник в мир Web3 для новичков