Что делать, если транзакция зависла | IceAI

Что делать, если транзакция зависла

Перевод висит в мемпуле часами? Разбираю, как ускорить или отменить зависшую транзакцию в Ethereum, BSC и Bitcoin — с газом, nonce и цифрами.

Я отправила 40 USDT в сети Ethereum вечером и спокойно легла спать. Утром открываю кошелёк — перевод всё ещё pending, а баланс уже пустой: монеты списаны, но никуда не пришли. Я выставила 9 gwei, когда сеть в тот момент просила около 30, и получила 14 часов ожидания. Неприятнее всего было то, что следующая транзакция встала в очередь вместе с первой: обе шли через один и тот же nonce. Разберу по шагам, что я делаю в такой ситуации.

Что делать, если транзакция зависла Перевод 9 gwei Мемпул 14 ч Ускорить перевод тот же nonce, газ на 10% выше Отменить перевод 0 себе с тем же nonce Одна зависшая транзакция держит за собой всю очередь.

С чего начать

Сначала посмотри на факты, а не в кошелёк. Возьми хеш транзакции (TXID) в истории кошелька или в истории выводов на бирже и вставь его в любой обозреватель блоков: etherscan.io для Ethereum, bscscan.com для BSC, mempool.space для Bitcoin. Там видно три вещи, которые дальше определяют всё: возраст транзакции, статус (pending, success, dropped) и предложенную цену газа против текущего уровня сети. Пока я не научилась смотреть на эти три цифры, я каждый раз гадала и дёргала кошелёк вслепую.

Шаг 1. Понять, где именно застряло

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

Шаг 2. Сравнить свой газ с ценой сети

С 2021 года в Ethereum и её форках плата считается по формуле: базовая комиссия (base fee) плюс чаевые валидатору (priority fee). Base fee меняется каждые 12 секунд и сгорает, он не достаётся никому. Если твоя цена газа ниже текущего base fee, транзакция не попадёт в блок, сколько ни жди. Дальше арифметика простая: перевод ERC-20 токена съедает примерно 46 000–65 000 газа. При цене 20 gwei это 60 000 × 20 = 1 200 000 gwei, то есть 0,0012 ETH. При 40 gwei та же операция стоит уже 0,0024 ETH — вдвое дороже. Текущий base fee смотри в трекере газа у обозревателя, а не в надписи «Low» в кошельке.

Шаг 3. Ускорить: заменить свою же транзакцию

Узел примет новую транзакцию вместо старой только при двух условиях: тот же nonce и цена газа минимум на 10% выше. В MetaMask для этого есть кнопка Speed up в деталях зависшей транзакции, в Rabby и TronLink — отдельный пункт Replace или Speed up. Кошелёк сам подставит тот же nonce и предложит несколько уровней газа; я обычно беру Market, а не Low. Если делаешь вручную, выставляй газ в 1,2–1,3 раза выше зависшей цены — с запасом, потому что сеть может ещё подорожать, пока замена расходится по узлам. Подписанная замена вытесняет старую: подтвердится только одна из двух.

Шаг 4. Отменить: перевод нуля самому себе

Отмена в блокчейне — это не кнопка «отменить», а такая же замена. Ты подписываешь перевод на 0 ETH своему же адресу с тем же nonce и газом выше зависшего минимум на 10%. Если эта пустышка попадёт в блок первой, старая транзакция исчезнет из очереди, а монеты останутся на месте. Чаевые за неё всё равно спишут — это цена разблокировки кошелька. В MetaMask нужный пункт так и называется — Cancel. Важно: отправлять нулевой перевод надо с того же адреса и на свой адрес, иначе это будет обычная транзакция на чужой кошелёк.

Шаг 5. Что делать, если замена не проходит

Бывает, что сеть забита и твою замену узлы не принимают, хотя газ выше. Тогда остаётся ждать: пока в мемпуле толпа, дешёвая транзакция может висеть часами. Иногда её вообще выбрасывают из памяти узлов — в обозревателе по TXID появляется not found. Тогда строка nonce освобождается, и следующий перевод пройдёт без ожидания. Только не отправляй второй перевод на ту же сумму «чтобы дошло быстрее»: та копия, что осталась у другого узла, может подтвердиться позже, и уйдёт двойная сумма.

Шаг 6. Bitcoin: там свои правила

В Bitcoin блок выходит в среднем раз в 10 минут, комиссию считают в sat/vB, и просто «доплатить» нельзя. Поднять комиссию можно только если транзакция изначально помечена флагом RBF (BIP125) — тогда её заменяют по тем же правилам, что в Ethereum. Если флага нет, есть второй путь: CPFP, когда ты тратишь неподтверждённый выход новой транзакцией с большой комиссией, и майнеру становится выгодно взять обе разом. Держать в голове оба варианта полезно: у биткоина очереди случаются на каждом халвинге и на резких движениях цены.

Шаг 7. Как в это не попадать

  • Ставь Market, а не Low, если переводишь деньги на биржу: зачисление ждёт подтверждений, и зависший вывод блокирует твою сделку.
  • Для мелких сумм бери дешёвые сети: TRC20, BEP20, Solana. Зависания там редкость, а комиссия — центы.
  • Не запускай вторую транзакцию из того же кошелька, пока первая висит: она встанет за ней в ту же очередь.
  • Держи под рукой пару долларов в нативной монете сети — без газа для ускорения не обойтись.

Частые ошибки

  • Выставить 1–5 gwei «чтобы дешевле» и удивляться, почему перевод идёт сутки.
  • Заменять транзакцию с другим nonce: получается не замена, а второй параллельный перевод.
  • Поднимать газ меньше чем на 10%: узел просто отклонит замену как слишком дешёвую.
  • Отменять перевод, отправив монеты на чужой адрес: это уже не отмена, а потеря денег.
  • Дублировать перевод с новой суммой: если старая копия живёт у какого-то узла, уйдут обе.
  • Думать, что неудачная транзакция бесплатна. В Ethereum газ списывается и при ошибке: если контракт откатит операцию, комиссия всё равно уйдёт валидатору.
  • Искать зависшую транзакцию в TRON или Solana. Там транзакции либо проходят за секунды, либо отклоняются сразу — «висеть» нечему.

Коротко

  • Нашла TXID — открыла в обозревателе, посмотрела возраст, статус и цену газа.
  • Сравнила свой газ с base fee сети: ниже базы — ждать бесполезно.
  • Ускорить: тот же nonce, газ минимум на 10% выше.
  • Отменить: перевод 0 на свой адрес с тем же nonce, газ тоже выше.
  • Замена не прошла — не дублируй перевод, жди или проверь, не выбросили ли транзакцию из мемпула.
  • Bitcoin: RBF при флаге, иначе CPFP.
  • На будущее: Market вместо Low, дешёвые сети для мелочи, запас нативной монеты на газ.