Как отменить pending транзакцию ethereum
Как отменить зависшую транзакцию в Ethereum
Видео-версия
Мы подготовили видео-инструкцию для тех, кому удобнее смотреть.
Как отменить транзакцию в Ethereum
1. Проверяем транзакцию на сайте блокчейн-эксплорера. В графе «Status» написано «Pending». Это означает, что транзакция зависла. Для отмены транзакции нам понадобится число Nonce. Для того, чтобы его посмотреть, нажмите на «Click to see More» внизу окна.
2. В графе «Nonce» написано число 0. Запоминаем его, оно нам понадобится в дальнейшем.
3. Переходим в раздел с информацией о средней цене за газ на сайте блокчейн-эксплорера. Мы видим, что на момент написания материала минимальная комиссия за транзакцию составляет 42 Gwei. При такой комиссии транзакция займет около 16-ти минут.
4. Переходим в кошелек MEW. В разделе «Отправить» в левой части экрана нажимаем на «Отправить оффлайн». Это необходимо, потому что при оффлайн отправке мы можем вручную задать число Nonce.
5. В кошельке на странице «Отправить оффлайн» создаем новую транзакцию:
6. После того, как мы заполнили все строки, нажимаем на кнопку «Сгенерировать транзакцию».
7. Кошелек сгенерирует код транзакции. Нажимаем на кнопку «Копировать и продолжить».
8. Листаем страницу кошелька MEW вниз. В столбце «Инструменты» нажимаем на «Помощник для оффлайн транзакций».
9. Нажимаем на строку «3. Подписанная транзакция».
10. Вставляем в строку «3. Подписанная транзакция» код нашей транзакции и нажимаем «Продолжить».
11. В строке «4. Детали Транзакции» нажимаем «Отправить».
12. В строке «5. Статус Транзакции» нажимаем на код под надписью «Хеш транзакции»
13. Вы автоматически попадете на страницу транзакции на сайте блокчейн-эксплорера. Когда транзакция пройдет, вы увидите в строке «Status» зеленую надпись «Success». Это означает, что ваша транзакция успешно прошла. Нажмите на «Click to see More», чтобы проверить число Nonce.
14. В строке «Nonce» должно быть такое же число, как и на зависшей транзакции. В данном примере это число — 0.
15. Переходим на вкладку с первой транзакцией и обновляем страницу. В строке «Status» теперь находится желтая надпись «Dropped & Replaced». Это означает, что вы успешно отменили старую зависшую транзакцию и заменили ее новой.
inaword
Блог о разработке и современных технологиях
Что делать если транзакция в pending?
DRAFT — ЧЕРНОВИК (Статья находится в процессе доработки)
В последнее время нагрузка на сеть эфира выросла. К тому же часто проводятся ICO которые могут поднять нагрузку на сеть почти в три раза.
Увеличение нагрузки на сеть может привести к ситуации когда ваша транзакция находится в состоянии pending очень долго.
Дело в том что майнеры в первую очередь стараются взять в обработку самые дорогие транзакции. Поэтому у транзакций с большей стоимостью газа шанс обработаться выше. Когда нагрузка на сеть возрастает транзакции с маленькой стоимостью газа могут ожидать своей очереди по несколько дней и даже недель.
На момент написания статьи при нормальной нагрузке на сеть количество транзакций в состоянии pending от 2000 до 4000 тысяч. Когда кто-от начинает ICO количество транзакций в pending может возрасти до 8-11 тысяч. На изображении как раз показан такой резкий скачек.
Когда транзакция очень долго находится в pending пользователь пытается отправить такую же транзакцию но с большим газом, потом еще и еще. В надежде что хоть одна из них пройдет. И все эти транзакции остаются в pending.
Дело в том что транзакции с адреса как-правило обрабатываются в порядке очереди. Поэтому пока не обработана самая первая — запирающая транзакция, остальные будут ждать.
Почему транзакция pending от появляется то исчезает и время ожидания обнуляется?
Когда транзакция попадает в состояние pending, это значит что нода взяла вашу транзакцию к себе в обработку. И сейчас ищет блок. Однако, блок может найти быстрее другая нода, которая не содержит в себе вашу транзакцию. В этом случае нода которая взяла вашу транзакцию «выплевывает» ее и теперь вашу трназакцию в обработку может взять другая нода. В этом случае время обнуляется.
Как протолкнуть или удалить запирающую транзакцию
Стоит отметить, что ожидание транзакции 2-3 часа хоть и не является нормальным, но все же допустимо.
Транзакции в блоке имеют свои уникальные номера — nonce. Если отправить в сеть две транзакции с одинаковым nonce, то только одна из них обработается. А другая будет считаться некорректной. Поэтому нам достаточно повторить транзакцию с тем же nonce но увеличить стоимость газа. В этом случае нода возьмет транзакцию с наибольшей стоимостью в обработку, а запирающую отклонит как некорректную. И мы решим нашу проблему.
Как это сделать?
Застряла Ethereum-транзакция в MetaMask? Способ решения проблемы
На сегодняшний день MetaMask является одним из самых популярных кошельков для хранения Ethereum и DeFi-токенов. Однако некоторые держатели активов жалуются на то, что их транзакции “застряли” в сети и не обрабатываются по несколько дней. Безусловно, это неприятный случай. Но к счастью есть решение, которое позволит снять с транзакции статус “Pending”.
Как отменить или заменить застрявшую Ethereum-транзакцию?
Во-первых, нужно понимать, что заменить транзакцию можно только в том случае, если она имеет статус “Pending”. Если это не так, то транзакцию нельзя отменить.
Итак, перейдите в Metamask и нажмите на «Settings». Далее «Advanced» и проскролив вниз находим пункт «Customize transaction nonce».
Далее заходим в обозреватель блоков Etherscan, вбиваем Ethereum-адрес и нажимаем на зависшую транзакцию. Прокрутив вниз можно увидеть пункт «Nonce»:
Запомните номер и возвращайтесь в кошелек Metamask.
Вам нужно отправить самому себе 0 ETH, а на экране подтверждения введите значение nonce из Etherscan (в нашем случае это 37). Также рекомендуем убедится, что на этот раз вы выставили правильный размер газа, (можно использовать сервис ethgasstation.info).
Подтверждаете транзакцию, которая должна заменить застрявшую транзакцию. Проходим в Etherscan и ожидаем скорого поступления средств.
Напомним, не так давно мы простыми словами рассказали что такое обозреватель блоков.
Как отменить или заменить неподтвержденную транзакцию
Осторожно! Много текста.
Если вы уже работали в сети Ethereum, то замечали, что иногда подтверждение транзакций занимает больше времени, чем обычно. Дело в том, что майнеры в первую очередь обрабатывают транзакции с более высокими комиссиями.
Если ваша транзакция «застряла» в статусе ожидания из-за низкой платы за газ, вам придется дождаться, когда комиссии в сети опустятся и майнеры обработают ваш перевод. Однако вы можете ускорить процесс обработки, если замените эту транзакцию другой, с более высокой комиссией. Звучит запутанно? На самом деле, все проще, чем вы думаете. Этот способ также применим к эфиру (ETH) и всем токенам ERC20.
Введение
Прежде всего, нужно иметь в виду, что отменить или заменить подтвержденные транзакции невозможно. Однако во время высокой нагрузки сети некоторые транзакции могут долгое время находиться в статусе ожидания. В такие периоды подтверждение транзакции занимает несколько часов или даже дней.
Иногда блокировка устраняется сама по себе – либо из-за сбоев в системе, либо из-за понизившихся комиссий. И хотя отменить транзакцию Ethereum нельзя, есть несколько способов ускорить процесс. Фактически все они заключаются в замене ожидающей транзакции на транзакцию с более высокой комиссией.
Условия
Почему моя транзакция Ethereum не подтверждается?
Ethereum работает по системе ставок. Комиссия за транзакцию будет зависеть от ее сложности (т. е. от того, сколько вычислительной мощности на нее потребуется). Здесь необходимо упомянуть три важных термина: стоимость газа, цена газа и лимит газа.
Если стоимость газа определяется сложностью транзакции, то цену газа и лимит газа вы можете устанавливать самостоятельно. Общая комиссия будет служить стимулом для майнеров подтвердить транзакцию как можно скорее. Однако если цена газа слишком низкая, вашу транзакцию могут отодвинуть в очереди другие пользователи с более высокими комиссиями и она застрянет в ожидании. Если это случилось, Ethereum не станет подтверждать новые операции с того же адреса кошелька, поэтому в любом случае придется дождаться подтверждения от майнеров.
Как ускорить транзакцию с помощью MetaMask
2. Найдите вашу неподтвержденную транзакцию на вкладке [Activity] (Активность) и нажмите [Speed Up] (Ускорить).
3. Этот процесс позволит вам снова оповестить майнеров о вашей операции. Обязательно установите более высокую цену газа, нажав [Fast] (Быстро) и затем [Save] (Сохранить).
Как заменить транзакцию с помощью MetaMask
2. Найдите вашу транзакцию в обработке на вкладке [Activity] (Активность). Нажмите на нее, чтобы проверить детали и записать значение [Nonce].
Примечание: если у вас несколько неподтвержденных транзакций, вам нужно будет начать с самой ранней (с наименьшим значением nonce).
3. Затем перейдите в [Settings] (Настройки) и нажмите [Advanced] (Продвинутые).
4. Прокрутите страницу вниз и включите функцию [Customize transaction nonce] (Изменить значение nonce).
5. Вернитесь назад и скопируйте адрес вашего кошелька.
6. Нажмите [Send] (Отправить), чтобы создать новую транзакцию, и вставьте адрес своего кошелька в поле [Add Recipient] (Добавить получателя).
7. Вы должны отправить 0 ETH на свой кошелек, используя nonce неподтвержденной транзакции (упоминалось в шаге 2). Когда будете готовы, нажмите [Confirm] (Подтвердить).
Примечание: если цена газа слишком низкая, эта транзакция также может застрять в ожидании, поэтому удостоверьтесь в том, что вы установили разумную цену.
8. Дождитесь подтверждения новой транзакции и замены транзакции в обработке.
Примечание: чтобы обезопасить себя, удостоверьтесь в том, что вы выключили функцию [Customize transaction nonce].
Как отменить операцию с помощью Trust Wallet
1. Нажмите на неподтвержденную транзакцию в приложении Trust Wallet и найдите поле [Nonce]. Запишите это число.
2. Создайте новую транзакцию и добавьте адрес вашего кошелька в поле [Recipient Address] (Адрес получатель). Удостоверьтесь в том, что адрес тот же, что и у неподтвержденной транзакции. Установите [Amount ETH] (Сумма ETH) на 0 и нажмите [Next] (Далее).
3. Откройте настройки в правом верхнем углу.
Как отменить или заменить транзакцию, зависшую в сети Ethereum
Иногда, после отправки транзакции в сети Ethereum, значительно увеличивается ее загруженность (возрастает количество необработанных операций), что приводит к увеличению стоимости газа, необходимого для ее быстрого включения в блок. Неотправленные транзакции получают статус Pending и могут находится в этом состоянии очень долго, даже недели.
Если пользователь пытается сделать еще одну транзакцию с этого адреса, даже с большей комиссией, она все равно не отправляется, а просто становится в очередь за зависшей.
Безусловно, это вряд ли может удовлетворить, как говорит классик, «Не только лишь всех».
Чтобы выйти из этого положения, можно создать новую транзакцию с тем же nonce и отправить ее в сеть с приемлемой комиссией. Благодаря этому многократно увеличивается вероятность включения в блокчейн именно этой транзакции (с большим fee).
Что такое Nonce?
Nonce — это один из параметров транзакции, соответствующий их общему количеству для этого адреса Ethereum на момент отправки. Фактически это ее порядковый номер. Поэтому первой можно отменить транзакцию с наименьшим номером.
Когда транзакция с высокой комиссией будет обработана майнерами и включена в блокчейн, неудачная, зависшая транзакция с таким же nonce получит статус Dropped и не будет обрабатываться. Комиссия за ее отправку также не будет взиматься.
Рассмотрим подробнее, как происходит этот процесс на примере кошелька MEW.
Прежде всего, нужно зайти на обозреватель сети, например, etherscan, где нужно ввести в строку поиска адрес, с которого отправлялась транзакция.
Затем нужно перейти по ссылке хеша транзакции, которая зависла (находится в статусе Pending):
В открывшемся окне можно изучить детали неудачной транзакции, в том числе предположительное время, необходимое для ее обработки (оно не всегда соответствует действительности):
При нажатии на кнопку в виде часов можно изучить рекомендованную величину газа, которая гарантирует быструю обработку транзакции:
Для замены подвисшей транзакции нужно узнать значение ее nonce, которое можно увидеть, раскрыв окно дополнительной информации о транзакции путем нажатия на интерактивную надпись Click to see More:
В строке Nonce находится информация о значении nonce для текущей транзакции, его нужно запомнить (в данном случае это 71):
Теперь в кошельке Ethereum, например в MEW нужно создать транзакцию с таким же nonce. Для отмены создается транзакция с нулевым значением в строке Value. Для повторной отправки нужной суммы (замены зависшей транзакции) можно создать новую транзакцию с тем же Nonce, но большей комиссией. Нужно понимать, что до ее обработки существует вероятность включения в блокчейн майнерами исходной, зависшей транзакции.
После отправки в сеть транзакции с дублирующим значением Nonse, зависшая операция с таким же Нанс будет отменена.
Для работы с активами в сети Ethereum и дргуих блокчейнах с хешированием на Ethash удобно использовать кошелек MyEtherWallet. Максимальный уровень безопасности обеспечивается при использовании MEW в холодном режиме.
Далее приводятся пояснительные скриншоты по работе с MEW при замене зависшей транзакции.
Создание транзакции с одинаковым nonce на кошельке MEW, подключенном в сеть:
После этого производится перенос файла json на защищенный (оффлайн) компьютер, где указывается адрес получателя, сумма перевода, подписывается транзакция и сохраняется ее подписанный файл:
Затем в онлайн кошельке открывается подписанный файл signedTransactionObject*.json и транзакция отправляется в сеть:
При недостаточном объеме средств, оставшемся на балансе кошелька отправителя, транзакция создана не будет, появится сообщение об ошибке Error: Returned error: insufficient funds for gas * price + value:
При отправке правильно подписанной транзакции, а также наличии достаточных для оплаты комиссии сети средств, нужно дождаться включения майнерами информации о transaction в блок:
При достаточном газе транзакция попадает в статус выполненных за несколько десятков секунд
Зависшая в сети транзакция с тем же nonce получает статус отброшенной и замененной (Dropped & Replaced):
Впоследствии она даже не будет отображаться в обозревателе блоков.
Описанный алгоритм отмены/замены транзакций можно выполнять только для зависших операций. Если транзакция уже включена в блокчейн, то с ней ничего сделать невозможно.




























