Что делать, если транзакция зависла
Перевод висит в мемпуле часами? Разбираю, как ускорить или отменить зависшую транзакцию в Ethereum, BSC и Bitcoin — с газом, nonce и цифрами.
Перевод висит в мемпуле часами? Разбираю, как ускорить или отменить зависшую транзакцию в Ethereum, BSC и Bitcoin — с газом, nonce и цифрами.
Я отправила 40 USDT в сети Ethereum вечером и спокойно легла спать. Утром открываю кошелёк — перевод всё ещё pending, а баланс уже пустой: монеты списаны, но никуда не пришли. Я выставила 9 gwei, когда сеть в тот момент просила около 30, и получила 14 часов ожидания. Неприятнее всего было то, что следующая транзакция встала в очередь вместе с первой: обе шли через один и тот же nonce. Разберу по шагам, что я делаю в такой ситуации.
Сначала посмотри на факты, а не в кошелёк. Возьми хеш транзакции (TXID) в истории кошелька или в истории выводов на бирже и вставь его в любой обозреватель блоков: etherscan.io для Ethereum, bscscan.com для BSC, mempool.space для Bitcoin. Там видно три вещи, которые дальше определяют всё: возраст транзакции, статус (pending, success, dropped) и предложенную цену газа против текущего уровня сети. Пока я не научилась смотреть на эти три цифры, я каждый раз гадала и дёргала кошелёк вслепую.
«Зависла» — это почти всегда не блокчейн, а мемпул: очередь транзакций, которые уже подписаны и разосланы по узлам, но ещё не попали в блок. Монеты в этот момент нельзя тратить дважды и нельзя вернуть: они списаны, но не зачислены. Пока запись висит в мемпуле, все следующие твои переводы из этого кошелька ждут её, потому что сеть обрабатывает их строго по номеру nonce — по порядку. Первая не подтвердилась, следующая не имеет права пройти вперёд.
С 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» в кошельке.
Узел примет новую транзакцию вместо старой только при двух условиях: тот же nonce и цена газа минимум на 10% выше. В MetaMask для этого есть кнопка Speed up в деталях зависшей транзакции, в Rabby и TronLink — отдельный пункт Replace или Speed up. Кошелёк сам подставит тот же nonce и предложит несколько уровней газа; я обычно беру Market, а не Low. Если делаешь вручную, выставляй газ в 1,2–1,3 раза выше зависшей цены — с запасом, потому что сеть может ещё подорожать, пока замена расходится по узлам. Подписанная замена вытесняет старую: подтвердится только одна из двух.
Отмена в блокчейне — это не кнопка «отменить», а такая же замена. Ты подписываешь перевод на 0 ETH своему же адресу с тем же nonce и газом выше зависшего минимум на 10%. Если эта пустышка попадёт в блок первой, старая транзакция исчезнет из очереди, а монеты останутся на месте. Чаевые за неё всё равно спишут — это цена разблокировки кошелька. В MetaMask нужный пункт так и называется — Cancel. Важно: отправлять нулевой перевод надо с того же адреса и на свой адрес, иначе это будет обычная транзакция на чужой кошелёк.
Бывает, что сеть забита и твою замену узлы не принимают, хотя газ выше. Тогда остаётся ждать: пока в мемпуле толпа, дешёвая транзакция может висеть часами. Иногда её вообще выбрасывают из памяти узлов — в обозревателе по TXID появляется not found. Тогда строка nonce освобождается, и следующий перевод пройдёт без ожидания. Только не отправляй второй перевод на ту же сумму «чтобы дошло быстрее»: та копия, что осталась у другого узла, может подтвердиться позже, и уйдёт двойная сумма.
В Bitcoin блок выходит в среднем раз в 10 минут, комиссию считают в sat/vB, и просто «доплатить» нельзя. Поднять комиссию можно только если транзакция изначально помечена флагом RBF (BIP125) — тогда её заменяют по тем же правилам, что в Ethereum. Если флага нет, есть второй путь: CPFP, когда ты тратишь неподтверждённый выход новой транзакцией с большой комиссией, и майнеру становится выгодно взять обе разом. Держать в голове оба варианта полезно: у биткоина очереди случаются на каждом халвинге и на резких движениях цены.