Как отменить или заменить транзакцию, зависшую в сети 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):
Впоследствии она даже не будет отображаться в обозревателе блоков.
Описанный алгоритм отмены/замены транзакций можно выполнять только для зависших операций. Если транзакция уже включена в блокчейн, то с ней ничего сделать невозможно.
Вам также может понравиться
Radeon RX 5600 XT и Ryzen Threadripper 3990X — новые короли майнинга?
2 января, 2020
Как отключить или удалить графическое окружение в ubuntu?
8 января, 2020
Что делать с неподтвержденной транзакцией биткоин
Количество человек, желающих заработать на криптовалюте, ежедневно растет. Соответственно, увеличивается и число транзакций с популярными цифровыми валютами, в первую очередь – биткоином. Это означает, что блоки, где хранятся монеты, заполняются быстрее. Из-за этого возникает проблема неподтвержденных транзакций, ведь размер блока по-прежнему остается 1 Мб.
Время перевода монет может затянуться на неопределенное количество часов, а иногда и дней, что вызывает большие неудобства. В этой статье мы детально поговорим о проблеме, разберемся в причинах ее возникновения и главное – выясним, как действовать в ситуации, когда зависла транзакция.
Записали видео-инструкцию для тех, у кого зависла биткоин-транзакция и он не знает, что делать. Показываем 3 рабочих способа, один из которых точно вам подойдет. Все зависит от биткоин-кошелька, которым вы пользуетесь. Работает только для неподтвержденных транзакций биткоина:
Почему не подтверждается транзакция
Время совершения операций с криптовалютой зависит от многих факторов:
- загруженность сети в момент осуществления перевода;
- объем сделки;
- приоритет платежа.
За проведение операций в сети блокчейн участники сделок платят комиссии. Когда биткоин еще не был так популярен, комиссионные отчисления устанавливались и начислялись автоматически, а операции в блоки попадали мгновенно. С ростом спроса на биткоин, выросла и конкуренция за место в блоке. Фиксированная плата перестала отвечать потребностям рынка криптовалюты, и трейдеры начали самостоятельно определять размер комиссии.
Разумеется, в первую очередь майнеры выбирают операции, в которых размер оплаты за транзакцию больше. Потому, чем больше размер комиссии устанавливает пользователь, тем выше шанс, что его транзакция будет подтверждена в ближайшее время. Другими словами, в блоки попадают те сделки, стороны которых готовы заплатить больше.
Операции с низким вознаграждением также имеют шанс быть обработанными, но пользователям придется подождать. Именно с такими сделками, как правило, и возникает проблема попадания в очередь транзакций.
Есть специальные сайты, которые помогают трейдерам отслеживать загруженность сети и предлагают вариант оптимального размера комиссии. Например, сайт btc.com. В разделе «unconfirmed transactions» можно посмотреть среднюю стоимость байта на текущий момент, и примерное время подтверждения операций при том или ином размере комиссии.
Сколько ждать подтверждения транзакции биткоин
В блокчейн блоки генерируются каждые 10 минут, но из-за большой конкуренции, в среднем перевод биткоинов занимает не менее 60-90 минут.
Если в сети появляются много активных пользователей с экспресс-транзакциями (повышенной комиссией), то те, кто желают сэкономить на комиссионных отчислениях, могут бороться за осуществление сделки неделями.
Операция, которая попала в очередь транзакций, может быть либо одобрена в течение 72 часов либо быть отменена. Тогда сумма перевода вернется на кошелек отправителя, и сделку придется осуществить заново.
Как ускорить транзакцию
Статус неподтвержденной сделки не означает, что она не состоялась или произошел какой-то сбой. Это только означает, что придется подождать какое-то время либо совершить операцию заново.
Существуют различные варианты ускорить или «протолкнуть» подтверждение транзакции.
Двойная трата — «Double Spend»
Основной и самый простой метод решения проблемы с очередью транзакций – двойная трата. Его суть заключается в том, что проведенная операция совершается повторно, но уже с адекватной комиссий, и перекрывает первичную.
Важно: Не стоит переживать, что обе операции пройдут, то есть двойная трата совершится буквально. По правилам криптовалютной системы при совершении подобных сделок совершается только та, которая имеет более выгодные условия для майнеров. Менее выгодные аналоги операций подлежат уничтожению.
Применение данного способа зависит от вида кошелька, используемого для хранения и операций с монетами. Для примера возьмем бумажник Bitcoin-Core.
- Убедитесь, что транзакция действительно не подтверждена. Для этого есть специальные сервисы, о которых вы узнаете далее.
- Из каталога, где хранятся установочные файлы Bitcoin Core, уберите файл «mempool.dat». Например, переместите его в другую папку.
- Закройте программу бумажника и запустите ее заново. Во время запуска в командной строке введите «zapwalletettxes».
- Проведите сделку заново, указав более высокий размер комиссии. Важно настроить максимально схожие параметры транзакции в сравнении с той операций, которая не увенчалась успехом.
- Ожидайте завершение операции. Теперь перевод биткоинов должен состояться быстрее.
Для других криптокошельков подход является аналогичным. Основные различия могут быть лишь в наименовании команд. Отличная функция есть в бумажнике Electrum. Кнопка «replace-by-fee» позволяет повторно отправить биткоины с увеличенным комиссионным вознаграждением.
Child Pays for Parent
Child Pays for Parent (CPFP), дословно «дети платят за родителей» – один из самых популярных методов «проталкивания» платежа. Его суть заключается в том, что отправитель биткоинов создает еще одну операцию, используя «сдачу» с неподтвержденного платежа.
Сдача – средства, которые должны остаться на счету после совершения проблемной операции. Важно, чтобы суммы хватило и для старой, и для новой сделки.
Сторона сделки создает новую операцию со сдачей, которая «условно» была получена с другой, еще не подтвержденной транзакции. Ставит повышенную комиссию, которая распределится на две операции. Майнер заметит высокие комиссионные и подтвердит сделку.
Отправка монет совершается по любому адресу. Часто используют свой. Рассмотрим применение CPFP на примере кошелька Bitcoin Core.
- Зайдите в раздел с настройками и параметрами (Settings – Options).
- Перейдите в категорию «Wallet» (Кошелек) и поставьте отметку в поле «Enable coin control features» (Управление входами). Здесь же включите разрешение на трату неподтвержденной сдачи – «Spend unconfirmed change».
- Нажмите на «Отправить».
- Зайдите в раздел «Inputs» (Входы) и поставьте галочку напротив интересующей вас суммы.
- Укажите в строке «Адрес получателя» адрес своего хранилища.
- Нажмите «Ок».
- Впишите сумму перевода и нажмите на галочку рядом с «Subtract fee from amount» (Вычесть комиссию из суммы).
- Отметьте выборочную комиссию за килобайт – «custom, per kilobyte». Не забудьте отметить, что комиссия высчитывается на две сделки.
- Завершите операцию по отправке биткоинов.
Важно: Метод требует дополнительных затрат – комиссия за вторую операцию, и поддерживается небольшим количеством пулов майнеров.
Использование ускорителей
Еще один способ ускорить подтверждение сделки с биткоином – обратиться за помощью к майнинговым пулам. Самый популярный «поставщик» такой услуги – пул ViaBTC.
- Перейдите на сайт ускорителя.
- Вставьте в строку ID транзакции. Комиссия ускоряемой сделки дожна быть не ниже 0.0001 BTC/KB.
- Нажмите на «Ускорить Бесплатно».
Также есть функция платного ускорения. Для этого надо зарегистрироваться на сайте. Комиссия сервиса уплачивается в Bitcoin Cash.
Пул ViaBTC обладает 7% мощностей, благодаря чему обращение к нему за помощью может быть оправдано. После оставления заявки, пул устанавливает транзакции более высокий приоритет. Однако сервис рассчитан не более чем на 100 сделок в час и часто бывает сильно перегружен.
Иные подобные сервисы: сайт пула AntPool, бот по ускорению в «Телеграм» – @FastTXbot.
Segregated Witness
Если все вышеописанные способы были связаны с манипуляцией над комиссиями транзакций, то Segregated Witness или SegWit работает с масштабируемостью блокчейн.
SegWit представляет собой софт форк от разработчиков кошелька Bitcoin Core, который путем оптимизации размера транзакций решает проблему переполненности блоков, а, следовательно, и скорости подтверждения транзакций.
Софт форк (Soft Fork) – то, что предполагает изменение в коде операции, не затрагивая ядро ПО. Он изменяет правила проверки подлинности блока.
Segregated Witness исключает из структуры транзакции подписи, которые занимают около 47% операции, в результате чего транзакция становится легче, а, следовательно, почти вдвое больше сделок помещается в блок, ограниченный 1 Мб. Подписи же выделяются в отдельную структуру, именуемую «отдельным свидетелем».
Решение SegWit было включено в клиент Bitcoin Core 0.13.1 2016 года. В 2017 году Segregated Witn был активирован в сети Litecoin, а также в среде менее популярных токенов: Groestlcoin, Syscoin, DigiByte, Monacoin, Vertcoin.
Как отменить неподтвержденную транзакцию биткоина
Если сделка получила хотя бы 1 подтверждение, отменить ее и вернуть монеты невозможно.
Как отменить перевод биткоинов в кошельке Bitcoin Core:
- Убедитесь, что ваша транзакция действительно не подтверждена через специальный сервис.
- Запустите кошелек. Сделайте ряд переходов: «Помощь» — «Окно отладки» — «Консоль».
- Введите команду «walletpassphrase ПАРОЛЬ».
- Введите команду «dumpprivkey АДРЕС» (адрес, который использовался для операции). Вы получите приватный ключ. Сохраните его в отдельный файл и ни в коем случае не передавайте посторонним лицам.
- Найдите в папке с компонентами бумажника файл «wallet.dat», переименуйте его и переместите в другое место.
- Выйдите из кабинета и удалите кошелек.
- Перезапустите программу, она не найдет вашего бумажника и создаст новый пустой кошелек.
- Вернитесь в меню «Консоль». Пропишите команду «importprivkey ПРИВАТНЫЙ КЛЮЧ». Начнется сканирование, которое займет около 60 минут.
- Проверьте ваш счет. Неподтвержденные сделки должны удалиться, блокированные деньги будут снова доступны.
Метод не сработает: (1) если пользователь применяет облачное хранилище для сохранения информации о переводах; (2) если майнеры успели обработать неподтвержденную операцию.
Количество неподтвержденных транзакций
Ранее мы отмечали, что существуют специальные сервисы, на которых можно проверить статус перевода биткоинов, примерное время совершения транзакций, рассчитать уровень удачной комиссии. Например, это сайты:
Самый популярный сервис – это blockchain.info. Для того, чтобы им воспользоваться, достаточно написать ID вашей сделки в поисковик на главной странице. После проверки вы увидите – «Confirmations» в Blockchain (Транзакция прошла) или надпись «Unconfirmed Transaction» (операция не подтверждена).
Заключение
C увеличением спроса на биткоины число сделок с ним в разы увеличилось. При этом размер блоков остался прежним – 1 Мб. Это порождает конкуренцию среди транзакций по включению их в блоки и проблему создания очереди из них. Операции, которые не были добавлены в блок, получили название неподтвержденных транзакций.
Основная причина «игнорирования» майнерами конкретного перевода кроется в размере комиссии. Участники сети заинтересованы в сделках с большим размером награды, потому операции с маленькими комиссиями вынуждены ждать своего подтверждения часами, а то и днями.
https://www.cryptoprofi.info/?p=6727
https://maff.io/nepotdverzhdonnyye-tranzaktsii-bitkoin/