Как отменить неподтверждённую транзакцию: вытеснить её из пула ожидания собственной операцией с тем же порядковым номером — пустым переводом на свой же адрес и с большей платой. Команды «отменить» в протоколе нет, есть только гонка за номер. И главное: подтверждённую операцию отменить нельзя. Ни кошельком, ни поддержкой, ни обращением к сети — запись в блоке необратима, а вернуть средства можно лишь договорившись с получателем.

Отмена неподтверждённой транзакции — это пустая операция на собственный адрес с тем же порядковым номером отправителя и повышенной платой, которая занимает место прежней и обнуляет её действие.

Почему отмены как операции не существует

Отмена — не функция сети. Это подмена. Сеть исполняет операции аккаунта строго по счётчику, и документация Ethereum описывает nonce как «sequentially incrementing counter which indicates the transaction number from the account». Номер исполняется один раз. Значит, если на номер 42 вместо перевода постороннему адресу встанет перевод на самого себя с нулевой суммой, перевод постороннему не состоится никогда: его номер уже израсходован.

Окно для подмены узкое. Оно открыто, пока операция лежит в пуле ожидания, и закрывается в момент включения в блок. Внутри этого окна работает правило платы: в модели спецификации EIP-1559 у операции есть max_fee_per_gas и max_priority_fee_per_gas, а итоговая цена считается как priority_fee_per_gas + block.base_fee_per_gas, причём базовая часть, по тексту документа, «всегда сжигается». Пустая операция выиграет гонку только с большей платой, и порог надбавки задаёт не протокол, а узел: в документации go-ethereum на 17 октября 2026 года параметр —txpool.pricebump имеет значение по умолчанию 10, то есть плата должна вырасти не меньше чем на десятую часть.

Отсюда вывод, который редакция повторяет в обращениях читателей постоянно. Отмена — это не возврат. Средства не «отзываются» со стороны получателя: они не уходят вовсе, потому что подменённая операция не состоялась.

Как понять, что отмена ещё возможна

Проверка делается в обозревателе блоков по хешу операции, и занимает она меньше минуты.

  1. Статус. «Pending» или «В обработке» — операция в пуле, окно открыто. «Success» или номер блока — окно закрыто, отменять нечего.
  2. Номер. Сравните его со счётчиком адреса: отменять надо тот номер, который указан в самой операции, а не ближайший свободный.
  3. Очередь. Если перед вашей операцией застряла другая с меньшим номером, пустая операция на ваш номер тоже будет ждать — разблокируйте сначала первую.
  4. Модель сети. В Bitcoin отмены по номеру нет; возможность подмены зависит от того, был ли заранее выставлен признак заменяемости во входах операции.
Схема из пяти шагов: проверить статус операции в обозревателе, узнать её порядковый номер, собрать пустой перевод на свой адрес с тем же номером, поднять плату выше порога узла, убедиться по обозревателю, что исполнилась пустая операция
Схема из пяти шагов: проверить статус операции в обозревателе, узнать её порядковый номер, собрать пустой перевод на свой адрес с тем же номером, поднять плату выше порога узла, убедиться по обозревателю, что исполнилась пустая операция

Что можно отменить, а что уже нет

Разница между «ещё можно» и «уже нет» измеряется не минутами, а состоянием операции. Таблица ниже разводит случаи, которые читатели путают чаще всего.

Состояние операции Отмена Что остаётся делать
Операция в пуле ожидания, статус «Pending», блока нет Возможна: пустой перевод на свой адрес с тем же номером и повышенной платой Собрать подмену и отправить, пока окно открыто; порог надбавки у go-ethereum по умолчанию равен 10 процентам
Операция включена в блок, статус «Success» Невозможна в принципе: запись в блоке необратима Обращаться к получателю; если это сервис — к его поддержке с хешем операции
Операция включена в блок, но завершилась ошибкой Отменять нечего: действие не состоялось, хотя плата за исполнение списана Разбирать причину отказа по данным обозревателя и повторять вызов с исправленными параметрами
Bitcoin и другие сети на непотраченных выходах Зависит от признака заменяемости, выставленного при отправке Проверять по BIP-125: признак — nSequence меньше чем 0xffffffff — 1, и заменяющая операция платит абсолютную плату не ниже суммы заменяемых
Solana: порядкового номера у обычной операции нет Отмены нет, но есть срок годности: подпись привязана к недавнему blockhash и живёт 150 слотов Ничего не отправлять и дождаться истечения срока — неподтверждённая операция отбрасывается сетью сама
Сервисов «отмены транзакции» не существует. Любое предложение отменить перевод за плату или по сид-фразе — попытка получить доступ к вашим средствам: в протоколе нет механизма, которым третья сторона могла бы отозвать подписанную вами операцию. И не делайте вывод, что средства «сгорели», без проверки по обозревателю.

Пошаговое решение

  1. Откройте операцию в обозревателе и выпишите её порядковый номер. Это главная цифра.
  2. Проверьте остаток на адресе. Плата за пустую операцию списывается в монете сети, и без остатка подмена не уйдёт.
  3. В кошельке выберите действие отмены, если оно есть: кошелёк соберёт перевод нулевой суммы на ваш же адрес с тем же номером.
  4. Если действия нет — включите ручной режим номера и соберите операцию сами: получатель — ваш адрес, сумма — ноль, номер — тот же.
  5. Поднимите плату с запасом к порогу узла, иначе узел отклонит подмену как недостаточную. Запас лучше взять двойной.
  6. Отправьте и следите за обозревателем: в блок должна попасть пустая операция. Если вместо неё подтвердился исходный перевод, гонка проиграна и отменять больше нечего.

Сколько это стоит

Плата берётся за ту операцию, что попала в блок, — за одну. Пустой перевод на свой адрес по документации Ethereum расходует базовые 21 000 единиц газа: это дешевле любого вызова контракта, но не бесплатно. Условный пример: исходная операция заявляла потолок 100 условных единиц за газ, значит подмена при пороге в 10 процентов заявляет не меньше 110; числа приведены для счёта, а не как рыночные. В сетях на непотраченных выходах счёт другой: по BIP-125 заменяющая операция платит абсолютную плату не ниже суммы заменяемых, то есть прежняя плата входит в новую.

Нагрузка сети прямо определяет, успеете ли вы с подменой: в пустые часы шансы выше, в пик — ниже. Как выбирать окно отправки, разобрано в материале о том, как оценить нагрузку сети по историческим данным. А если задача обратная — не отменить, а ускорить, — механика та же, но подмена несёт прежние получателя и сумму: подробности в разборе о том, как ускорить зависшую транзакцию в Ethereum через повышение комиссии.

Как не повторить

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

Итог

Отмена неподтверждённой операции — это не отзыв, а подмена по номеру. Пустой перевод на себя занимает номер, и прежняя операция теряет силу. Окно закрывается в момент включения в блок, и после этого отменять нечего: запись необратима, остаётся переписка с получателем. В Bitcoin роль отмены играет заявленная заранее заменяемость, в Solana — истечение срока подписи. Проверять состояние нужно по обозревателю.

Материалы по теме:

Частые вопросы

Можно ли отменить операцию, которая уже подтверждена?

Нет, и это не вопрос настроек кошелька. Включённая в блок операция зафиксирована, протокол не содержит действия, которое её откатит. Остаётся два пути: договориться с получателем о возврате либо, если получатель — сервис, обратиться в его поддержку с хешем операции. Гарантий ни один из путей не даёт.

Что будет, если я отправлю подмену, а исходная операция уже попала в блок?

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

Отменяет ли что-нибудь очистка истории в кошельке?

Нет. Кнопка «удалить» или «очистить» в интерфейсе убирает запись из локального списка, а подписанная операция остаётся в пулах узлов и может подтвердиться позже. Отменяет только подмена по номеру. Локальная история — это журнал приложения, а не состояние сети.

Как отменить перевод токена?

Тем же способом. Перевод токена — это вызов контракта, но операция подписана вашим адресом и занимает порядковый номер, поэтому пустая операция на свой адрес с тем же номером отменит её целиком. Плата при этом списывается в монете сети, не в токене.

Нужно ли отменять операцию в Solana?

Там отмена не требуется. Подпись привязана к недавнему blockhash, срок годности которого по документации сети составляет 150 слотов, и неподтверждённая операция после этого отбрасывается. Достаточно не отправлять её повторно и дождаться истечения срока.

Вердикт

Редакционная практика показывает: читатели ищут кнопку отмены там, где её нет, и теряют на поисках те минуты, за которые подмена ещё была возможна. Правило короткое. Пока операция в пуле — отменяйте подменой по номеру, как только она в блоке — переходите к переписке с получателем и не тратьте время на сервисы, обещающие откат. Правила заменяемости в сетях на непотраченных выходах устроены иначе, и читать их стоит по тексту спецификации BIP-125. Разборы механики переводов выходят в нашем Telegram-канале.