- Как отменить или заменить транзакцию, зависшую в сети Ethereum
- Что такое Nonce?
- Transaction Dropped & Replaced?
- Dropped Transaction
- Dropped & Replaced Transaction
- Транзакции Ethereum: как работают и как проверить
- Что такое транзакции Ethereum
- Содержимое транзакций Эфириума
- Понятие газа и его функция в сети Ethereum
- Значение лимита газа в транзакциях эфира
- Стоимость газа и ее влияние на скорость проведения транзакций
- Нюансы проведения транзакций в сети Эфириум
- Как проверить транзакцию Эфириум
- Способ отмены транзакции Ethereum
Как отменить или заменить транзакцию, зависшую в сети 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):
Впоследствии она даже не будет отображаться в обозревателе блоков.
Описанный алгоритм отмены/замены транзакций можно выполнять только для зависших операций. Если транзакция уже включена в блокчейн, то с ней ничего сделать невозможно.
Источник
Transaction Dropped & Replaced?
Dropped Transaction
A transaction that is previously broadcasted on the network (but yet to be included in a block) can get dropped from the connected nodes. Dropped transaction happens more frequently during times when the network is busy.
There are several reasons for this:
- The Ethereum nodes (i.e., Geth/Parity) that we are connected to has dropped the Pending transaction from the transaction pool (most likely due to a lower gas price compared to other pending transactions or hitting other limits).
- There is a maximum amount of Pending transactions an Ethereum node can hold before certain transactions are dropped from its pending pool (this depends on the various settings/limits of the individual clients connected to the network).
- If a dropped transaction is not re-broadcasted, it will not be included in a block. If this happens, it would be as if the transaction had not taken place in the first place at all.
- If a dropped transaction is successfully re-broadcasted either directly or indirectly (by a different node), then it will re-appear as a Pending transaction.
- The transaction fee (gwei) provided for the transaction was too low. Consider replacing the transaction with a higher gas price
- For further assistance on dropped transactions, please contact the sender/creator of the transaction (i.e., your exchange, wallet provider, etc.)
Dropped & Replaced Transaction
A transaction can get dropped and replaced when a newly created transaction with the same FROM account nonce is accepted and confirmed by the network. And because it has the same account nonce as the previous transaction, it replaces the previous txhash.
Common reasons a replacement transaction is broadcasted :
- The earlier transaction had a low gas price which would take a very long time to confirm, so a second transaction with a higher gas price was created to replace it
- The Ethereum Node that the wallet/service connected to was not fully synced, and an incorrect nonce was used
- User-initiated to replace or cancel a pending transaction
A transaction can be
Источник
Транзакции Ethereum: как работают и как проверить
Далеко не каждый знает, что, в отличие от биткоина, изначальной функцией Ethereum (ETH) была не передача монетарной ценности, а только лишь обеспечение работы смарт-контрактов. Однако вскоре было замечено, что эфир вполне может использоваться как средство накопления, и разработчики внедрили возможность передачи стоимости путем проведения транзакции Ethereum.
Получилось всё, конечно же, не так просто и понятно, как у криптовалют, изначально предназначенных для пересылки средств. Но, изучив особенности транзакций в сети эфира, избежать ошибок при переводе средств с кошелька на кошелек сможет каждый.
Что такое транзакции Ethereum
Транзакции Ethereum — это операция по отправке подписанного пакета с данными, инициированная участником сети (аккаунтом). Под операцией имеется в виду пересылка какого-то количества ETH, запуск записанного в контракте кода (программы) или же создание нового контракта.
У любой транзакции Ethereum, за исключением создающих новые контракты, имеется адресат, то есть получатель. Им может быть внешний управляемый аккаунт (контролируется приватным ключем и может отправлять транзакции) или аккаунт-контракт (содержит код, который активируется транзакцией).
Как правило, говоря о транзакции Ethereum, большинство участников криптосообщества, не обладающих глубокими знаниями о блокчейне, имеют в виду пересылку средств от одного аккаунта к другому.
Содержимое транзакций Эфириума
Каждая операция по переводу Ethereum содержит стандартный набор данных:
- transaction hash (хеш транзакции) — уникальный номер, состоящий из цифр и букв латинского алфавита, использующийся для идентификации;
- номер блока, в котором записаны данные о транзакции;
- адрес кошелька (аккаунта), который является получателем;
- цифровая подпись, подтверждающая намерение отправителя провести транзакцию;
- value — количество эфира, которое пересылается (может равняться 0);
- gas limit — предельное количество газа, разрешенное для расходования на выполнение транзакции;
- gas price — установленная пользователем цена за единицу газа;
- gas Used — фактически использованное на обработку транзакции количество газа;
- transaction fee — плата за проведение операции;
- data — необязательное для заполнения поле, в котором можно указать сообщение для получателя.
Понятие газа и его функция в сети Ethereum
За проведение транзакции Ethereum отправитель должен оплатить комиссию майнерам, которые ее подтверждают и записывают в блокчейн. Эта оплата производится в единицах, которые называются «gas».
Gas (газ) — динамический показатель, выражающий объем вычислительных операций в блокчейне, выполняемых во время проведения транзакции. По сути это внутренняя валюта сети Эфириума, расходуемая на выполнение операций. Также можно провести аналогию с топливом, обеспечивающим движение пакетов данных внутри блокчейна эфира.
Значение лимита газа в транзакциях эфира
При отправке транзакции Эфириум пользователь указывает максимально возможное количество газа (gas limit), которое он готов потратить на ее проведение. Таким образом, он страхуется от чрезмерных комиссионных расходов в случае сбоев в сети.
Минимально необходимое значение газа для проведения транзакции эфира — 21000. Однако рекомендуется выставлять большее значение gas limit, с запасом, который даст уверенность в том, что транзакция завершится успешно.
Неизрасходованное количество газа всегда возвращается на баланс отправителя. Но если указанного лимита не хватит на успешное выполнение транзакции, она будет возвращена отправителю со статусом «failed» (неудачная). При этом он все равно заплатит комиссию майнерам, так как они расходуют определенные вычислительные ресурсы на обработку операции, независимо от ее результата.
Стоимость газа и ее влияние на скорость проведения транзакций
Цена газа (gas price) исчисляется в wei — самой маленькой неделимой частице Ethereum. Однако большинство веб-сервисов, кошельков и бирж отображают этот показатель в gwei (1 млрд wei) или непосредственно в ETH.
Комиссия, которая в итоге оплачивается за проведение транзакции рассчитывается путем умножения стоимости газа на его фактически использованное количество.
Цена газа не имеет фиксированных значений и устанавливается на усмотрение пользователя. При этом от указанного значения gas price будет зависеть скорость подтверждения транзакций: майнеры обрабатывают их в порядке очереди, которая формируется по принципу ценовой приоритетности — сначала самые выгодные, потом более дешевые.
Узнать актуальную стоимость газа и примерное время подтверждения Эфириум-транзакций при выборе разных вариантов можно на сайте ethgasstation.info.
Нюансы проведения транзакций в сети Эфириум
Для того чтобы Эфириум-транзакция прошла проверку со стороны сети и была исполнена, она должна соответствовать ряду требований:
- Транзакция проводится в формате RPL и содержит цифровую подпись отправителя;
- Статистика по числу исходящих операций, указанная в транзакции, совпадает с аналогичными данными в аккаунте;
- Количество газа, требующегося для проведения операции по пересылке средств, меньше или равно установленному пользователем лимиту;
- На балансе отправителя, кроме отправляемого количества ETH, имеется достаточно средств для оплаты авансовых комиссионных сборов (лимит газа умноженный на указанную пользователем стоимость).
Если все эти условия соблюдены, транзакция признается валидной (корректной) и принимается в обработку, которая состоит из следующих этапов:
- С баланса отправителя снимается аванс, а количество исходящих транзакций увеличивается на 1.
- Подсчитывается остаток эфира на счету аккаунта.
- Начинается непосредственная операция по переводу средств.
- Происходит обработка (подтверждение) транзакции майнерами.
- Транзакция завершается и ей присваивается статус «Success» (успешно).
- Отправитель получает обратно неиспользованный газ, а баланс аккаунта получателя пополняется пересылаемыми в рамках обработанного перевода средствами.
Также советуем вам посмотреть наше интересное видео о том, что планируют разработчики Ethereum:
Будущее масштабное обновление ЭфириумаКак проверить транзакцию Эфириум
Что проверить транзакцию Эфириум нужно:
- Знать хеш транзакции;
- Зайти на сайт обозреватель блоков;
- Ввести хеш транзакции.
Информация о каждой успешно подтвержденной транзакции Ethereum записывается в журналы (логи), хранящиеся в заголовках добытых блоков. Эти данные общедоступны и могут быть просмотрены кем-угодно.
Чтобы проверить транзакцию Эфириума, нужно воспользоваться специальным обозревателем блоков (эксплорером), такими как:
Детали любого перевода отобразятся в выбранном для этой цели эксплорере сразу же после ввода хеша (tx hash).
Если же идентификатора транзакции у вас нет, поскольку речь идет не о лично отправленных средствах, а о выводе с биржи, его всегда можно найти в разделе с историей депозитов/выводов.
Если в эксплорере указать хеш зависшей ETH-транзакции, которая долго не достигает адресата, в строке ее статуса будет отображаться «Pending» (обрабатывается). Там же можно будет увидеть предположительное время до ее завершения.
Также подобные сервисы предоставляют возможность просмотра баланса и истории транзакций аккаунта, начиная с самого момента его создания. Для этого нужно просто ввести адрес кошелька. При этом для всех транзакций будет отображено:
- Хеш;
- Номер блока, в который она включена;
- Возраст транзакции;
- Адрес аккаунта отправителя и получателя;
- Вид транзакции (исходящая/входящая);
- Количество переведенных средств;
- Комиссия.
Способ отмены транзакции Ethereum
Особенностью блокчейна эфира является возможность отмены транзакции, которая по какой-либо причине зависла и длительное время находится в статусе «Pending». Например, из-за указания слишком низкой цены газа или перегрузки сети.
Для этого нужно получить доступ к кошельку, из которого были отправлены средства, с помощью веб-сервиса MyEtherWallet (MEW), зайти в меню «Отправить», выбрать «Отправить офлайн» и сформировать транзакцию, которая отменит зависший Ethereum-перевод.
При этом указывается сумма отправки, равная 0 ETH, а в поле «Цена газа» вводится более высокое, чем в зависшем переводе, значение, рекомендуемое сервисом ethgasstation.info.
Ключевым моментом является правильное заполнение строки «Nonce» — сюда нужно вставить соответствующее значение из аналогичной строки в данных зависшего перевода. Этот параметр отображает порядковый номер ETH-транзакции, которую необходимо отменить. Если до этого в аккаунте было, например, 37 успешно завершенных переводов средств, Nonce зависшего будет равняться 38 (37+1).
Адрес получателя можно указывать любой, необязательно тот же, который был в отменяемой транзакции. После этого нужно нажать кнопку «Сгенерировать транзакцию» и подтвердить отправку.
Как только эта операция будет обработана, из истории аккаунта пропадет ранее зависший Ethereum-перевод, а пересылаемые в нем средства вернутся на баланс. При необходимости эти средства можно будет отправить повторно, не забыв указать цену за газ, которая обеспечит быструю обработку.
На первый взгляд, может показаться, что отправлять транзакции Ethereum довольно сложно. Некоторым пользователям, которые до этого работали с биткоином и другими криптовалютами с упрощенным представлением комиссионных сборов, понятие газа и влияние его цены на скорость обработки переводов дается трудно. Но, опробовав вышеописанную теорию на практике, а также приняв во внимание скорость и дешевизну транзакций, большинство приходит к выводу, что эти небольшие сложности Эфириуму вполне можно простить.
Источник