Как отменить зависшую транзакцию эфира
FixedFloat Blog
Наши новости, руководства и инструкции
Замена и отмена транзакции Ethereum
Для чего нужен Replace by fee?
Возникает ситуация, когда требуется отменить или заменить транзакцию. Это может быть вызвано тем, что транзакции долгое время не попадают в блок. Все операции, которые после запуска не добавились в блок, считаются неподтверждёнными. Неподтвержденные транзакции чаще всего случаются именно из-за низких комиссий. У таких транзакций всё же есть возможность стать обработанными.
В блокчейнах Bitcoin, Ethereum и других существует механизм, который позволяет заменить еще неподтвержденную транзакцию другой транзакцией с большей комиссией (transaction fee). Этот механизм называется Replace by Fee.
Ускорение транзакции за счёт повышения комиссии
Отличие Ethereum от Bitcoin в том, что каждая транзакция имеет порядковый номер (nonce). Поэтому для того, чтобы использовать функцию Replace by fee, у заменяемой и заменяющей транзакции должен быть один номер.
Nonce указывает майнерам и нодам о порядке транзакций и, соответственно, о том, как изменять «состояние аккаунта». Первой примется та транзакция, у которой параметр nonce меньше. Если будет две транзакции с одинаковым nonce, то примется та, у которой комиссия выше.
Отмена транзакции
Для того, чтобы предотвратить «прохождение» предыдущей транзакции, её добычу и включение в блокчейн, требуется создать транзакцию на сумму 0 ETH на ваш собственный адрес.
Ускорение транзакции с помощью Child Pays for Parent
В ETH опция Child Pays for Parent невозможна. Желая ускорить транзакцию повышением комиссии, пользователь ETH может только отправить ту же транзакцию с тем же 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
Буквально вчера столкнулась с такой ситуацией: при отправке Ethereum из кошелька MEW транзакция зависла. Отправляла я в проект, конечно же на их кошелек. И вот я вижу что транзакция висит, но никуда не двигается уже целых 2 часа. Что делать? Как отменить транзакцию? Вот такие вопросы крутились в голове. Если вдруг вы попали в такую же ситуацию, то эта статья как раз вам поможет.
Как отправить транзакцию Ethereum с MyEtherWallet
Для того, чтобы переслать куда то эфиры, вам необходим адрес, собственно куда вы их будете отправлять.
На скрине видно, что на текущий момент если вам нужно отправить транзакцию быстро, то Gwei нужно проставить 10, если вы не сильно торопитесь, то можно поставить 3, а если вообще не торопитесь то 1. Это будут ну прям совсем копейки за отправку.
Теперь переходим в открытый кошелек эфира, там сразу открывается окно на создание транзакции.
В строке с суммой, проставляем сумму которую нам нужно отправить. На адрес – вписываем адрес, куда мы будем отправлять. Далее мы видим наш Gwei, он остается фиксированный с предыдущей транзакции. Поэтому прежде чем нажимать на кнопку отправить транзакцию, нам нужно исправить это значение. Для этого нажимаем на кнопку Edit. Нам открывается окно.
Выставляем необходимое значение, либо из предлагаемых, либо свой вариант и нажимаем сохранить.
Далее у нас еще есть раздел: расширенные возможности. Там ничего менять не надо, если только вы не отправляете монеты на какой либо контракт, где условие прописать что то дополнительно.
Как отменить транзакцию Ethereum
Причина для отмены может быть только одна. Это зависание транзакции. Происходит это из-за резкой загруженности блокчейна. Либо если Gwei, который вы проставили очень мал. В моем случае отправка Эфира была в хайп проект. Понятное дело, что я не могла ждать вечно, когда оно придет. Транзакция провисела 2 часа. И я решила ее отменить.
Для того чтобы отменить транзакцию. Переходим в наше стандартное окно для отправки.
В строке сумма оставляем 0 (ноль). На адрес – прописываем собственный адрес, с которого была отправлена транзакция, Gwei ставим либо нормальный, либо для быстрой транзакции, опять же смотрим на сайте лимиты. И нажимаем отправить транзакцию, далее подтверждаем. При нормальном уровне газа, транзакция подтвердится мгновенно и замет транзакцию на вывод. Выглядеть будет вот так:
Получается как бы из моего кошеля в мой.
Подведя итог, скажу что главным критерием успешной транзакции является правильно проставленный Gwei, тогда вам не придется танцевать с бубном.
Как отменить или заменить транзакцию, зависшую в сети 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):
Впоследствии она даже не будет отображаться в обозревателе блоков.
Описанный алгоритм отмены/замены транзакций можно выполнять только для зависших операций. Если транзакция уже включена в блокчейн, то с ней ничего сделать невозможно.
Застряла 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 и ожидаем скорого поступления средств.
Напомним, не так давно мы простыми словами рассказали что такое обозреватель блоков.
























