Можно ли отменить транзакцию?

Можно ли отменить транзакцию после ее трансляции, но до ее майнинга?

Это может быть полезно при отправке ошибочной транзакции, содержащей недопустимые данные.

Обратите внимание, что у вас есть в среднем менее 30 секунд до того, как транзакция будет добыта, так что лучше поймать ошибку как можно быстрее.
Как я могу изменить одноразовый номер для новой транзакции?
Если у вас есть новый вопрос, пожалуйста, задайте его, нажав кнопку Задать вопрос . Включите ссылку на этот вопрос, если это помогает обеспечить контекст. - Из обзора

Ответы (4)

Его нельзя отменить, но можно «загазовать». Вы можете получить одноразовый номер (можно найти в ожидающей передаче на etherscan) и отправить другую транзакцию с более высокой ценой на газ с тем же одноразовым номером . Если вы используете другой одноразовый номер, то они оба могут быть добыты, но если вы используете один и тот же одноразовый номер, может быть добыт только один. Если майнеры видят и то, и другое, они должны быть достаточно умны, чтобы выбрать транзакцию с более высокой ценой на газ.

Как ты делаешь это? не могли бы вы привести примеры кода?
Как найти существующую транзакцию и обновить одноразовый номер?
Хорошо, но тогда как мне отменить транзакцию с более низкой ценой на газ? Кажется, он застрял в мемпуле.

Хотя невозможно явно отменить транзакцию, вы можете аннулировать транзакцию до ее майнинга. Это работает путем трансляции той же транзакции с использованием того же одноразового номера , но с более высокой комиссией за газ. Майнеры заинтересованы в обработке транзакций с более высокими комиссиями. Если они обрабатывают более новую транзакцию, то старая транзакция становится недействительной и поэтому отклоняется.

Также возможно установить слишком низкую плату за газ в исходной транзакции, и они отклонят транзакцию через некоторое время, но это маловероятно.

Связанный

Концептуально в чем разница между отменой и признанием недействительным?
Я рассматриваю отмену как явный запрос к сети на сброс транзакции и аннулирование как обходной путь для этого ограничения.
Отмена (атомарность) и компенсация (рабочий процесс). В бухгалтерском учете отмена будет компенсацией.

Отложенная транзакция может быть отменена с помощью кошелька, который ее поддерживает.

Например, вот инструкция от кошелька MetaMask со схемами.

https://metamask.zendesk.com/hc/en-us/articles/360015489251-How-to-Speed-Up-or-Cancel-a-Pending-Transaction

Нажмите кнопку Отмена. Другие ответы объясняют больше о том, что происходит за кулисами.

введите описание изображения здесь

Команда Blocknative написала отличный пост с подробным описанием отмененных транзакций, который отвечает на ваш вопрос: https://blog.blocknative.com/blog/canceled-transactions .

Вот что они говорят об отмененной передаче:

Что такое отмененные транзакции?
В Ethereum транзакция Cancel — это попытка перезаписать ожидающую в данный момент транзакцию новой транзакцией. Важно отметить, что Отмененные транзакции — это соглашение, а не стандарт. Как правило, транзакция отмены будет иметь:

  1. Идентичный одноразовый номер,
  2. С того же адреса кошелька,
  3. Отправлено на внешний счет (не смарт-контракт), с
  4. Как минимум на 10% выше плата за газ,
  5. но нулевое значение, и
  6. Подписывается и успешно отправляется до подтверждения исходной транзакции.

Суть идеи заключается в том, что, поскольку майнеры заинтересованы в том, чтобы отдавать приоритет транзакциям с большим количеством газа, транзакция отмены должна быть подтверждена до исходной транзакции, даже если она попала в мемпул позже. Другими словами, транзакции отмены похожи на вероятностные пересчёты.

Так что да, вы можете отправить в сеть Отмену TX, чтобы попытаться аннулировать ожидающую TX. Но ничего не гарантировано. После того, как вы отправите Отмену, вы должны надеяться, что она будет добыта до вашей первоначальной транзакции.