В этой статье:

• Как проверить реальный статус транзакции?

• Что делать, если транзакция уже подтверждена

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

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

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

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

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

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

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

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

Почему транзакция зависает

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

  • в биткоине, например, учитывают ставку в sat/vB — количество сатоши за виртуальный байт. Поэтому при одинаковой комиссии небольшой перевод может иметь более высокий приоритет, чем крупный;
  • в Ethereum важны базовая плата и надбавка валидатору за «газ». Если установленный максимум ниже базовой ставки, транзакция будет ждать изменения условий.

Но низкая комиссия — не единственная причина задержки. Например, в Ethereum для каждой транзакции одного аккаунта предусмотрен nonce, или порядковый номер.

Пока перевод с nonce 15 не исполнен, операции с номерами 16 и 17 будут ждать. Поэтому, если в кошельке зависло сразу несколько платежей, сначала нужно проверить самый ранний.

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

В таком случае иногда помогает CPFP — механизм, позволяющий повысить общую комиссию за обе операции.

Иногда проблема вообще не в параметрах платежа. Узлы хранят собственные наборы ожидающих транзакций, поэтому один может перестать видеть перевод, хотя другие продолжают его передавать. Кошелек тоже способен показывать устаревший статус, например из-за сбоя RPC-подключения.

Как проверить реальный статус транзакции?

Для поиска понадобится TxID — уникальный идентификатор транзакции. Обычно он указан в истории кошелька. Если перевод отправляли с биржи, хеш появится после того, как площадка отправит транзакцию в сеть.

Скопируйте TxID и найдите его в обозревателе нужной сети:

В карточке операции проверьте адрес получателя, сумму, комиссию и число подтверждений. В Ethereum также понадобится nonce, если платеж придется заменять. Для биткоина полезно сопоставить ставку в sat/vB с актуальной оценкой комиссии на Mempool.space.

Что означают статусы транзакции

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

Confirmed означает, что операция включена в блок. В EVM-сетях дополнительно встречается Success — статус успешного исполнения. Отменить такой перевод заменой уже нельзя.

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

Кроме того, транзакция может попасть в блок, но завершиться ошибкой. Тогда обозреватель покажет Failed. Так бывает, например, когда смарт-контракт отклоняет вызов. Даже при неудачном исполнении израсходованный газ в Ethereum обычно не возвращается.

Dropped означает, что транзакции больше нет в мемпуле узлов, на данные которых опирается обозреватель. Однако такая транзакция может сохраняться у других узлов. При статусе Dropped & Replaced стоит открыть заменяющую операцию с тем же nonce и проверить результат.

Бывает, что обозреватель вообще не находит TxID. В таком случае проверьте выбранную сеть и попробуйте поискать перевод по адресу отправителя. Если речь о выводе с биржи, она могла еще не передать платеж в блокчейн. Пока его статус не выяснен, повторять отправку не стоит.

Отмена транзакции в MetaMask

В MetaMask для работы с неподтвержденными переводами предусмотрены функции Speed Up и Cancel. Они доступны не для каждой операции и не во всех EVM-совместимых сетях. В обоих случаях кошелек отправляет новую транзакцию, которая должна вытеснить старую.

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

Интерфейс MetaMask с кнопками Speed Up и Cancel. Данные: MetaMask Support.
  • если адрес и сумма правильные, а платеж застрял из-за низкой комиссии, выберите Speed Up. Кошелек предложит повысить плату за gas и повторно отправить перевод;
  • если деньги отправлены по ошибке, можно воспользоваться Cancel, когда эта кнопка доступна.

MetaMask обычно формирует нулевой перевод на собственный адрес с тем же nonce и повышенной комиссией. Если такая транзакция подтвердится первой, средства останутся у отправителя. Однако за ее обработку все равно придется заплатить комиссию.

После нажатия Cancel обязательно проверьте результат в обозревателе. Новая транзакция лишь конкурирует с исходной, пока обе ожидают подтверждения. Если в блок первой попадет первоначальная операция, отменить ее уже не получится.

Если кнопки Cancel нет, некоторые версии MetaMask позволяют указать nonce вручную. Пользователь находит номер зависшей операции в обозревателе, а затем создает нулевой перевод на свой адрес с тем же значением и более высокой комиссией.

Ручная настройка номера nonce в MetaMask. Данные: MetaMask Community.

Здесь нужна внимательность, поскольку неправильный nonce может затронуть другую транзакцию. Кроме того, функция доступна не во всех режимах кошелька. При нескольких зависших платежах начинать следует с самого раннего — следующие операции не смогут его обойти.

Отмена транзакции в сети Ethereum

Функции MetaMask опираются на механизм Ethereum. Каждая транзакция обычного аккаунта имеет nonce — номер, который определяет порядок исполнения. В блокчейне не могут исполниться два перевода одного отправителя с одинаковым nonce, поэтому ожидающую операцию можно попытаться заменить новой с тем же номером.

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

В Ethereum используется модель комиссий EIP-1559. Параметр maxFeePerGas задает максимальную цену единицы газа, а maxPriorityFeePerGas — размер приоритетной надбавки валидатору. Отдельно сеть рассчитывает базовую комиссию, которая меняется в зависимости от загрузки и сжигается.

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

Интерфейс Gas Tracker с оценкой комиссий Ethereum. Данные: Etherscan Gas Tracker.

Если комиссия недостаточна, узел может отклонить замену с ошибкой replacement transaction underpriced. Отправлять после этого еще один платеж со следующим nonce бесполезно — он тоже встанет в очередь.

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

С мультисиг-кошельками ситуация похожая. Пока операция не получила необходимые подписи и не отправлена в сеть, ее иногда можно отклонить в интерфейсе. Но после подтверждения она ничем не отличается от обычного перевода.

Отмена транзакции в сети биткоина

В биткоине замена устроена иначе, поскольку здесь нет nonce. Сеть использует модель UTXO, в которой транзакции расходуют непотраченные выходы предыдущих операций. Если два перевода используют одни и те же монеты, подтвердиться может только один. На этом основан Replace-By-Fee (RBF).

Замена неподтвержденной транзакции с повышенной комиссией (RBF). Данные: Learn Me A Bitcoin.

RBF позволяет отправить новую транзакцию с теми же входами, но более высокой комиссией:

  • если платеж нужно ускорить, получатель остается прежним;
  • если требуется отмена, средства направляют обратно на подконтрольный адрес за вычетом комиссии.

Новая операция должна покрывать комиссии вытесняемых транзакций и дополнительные расходы на ретрансляцию. Значение имеют и общая сумма, и ставка в sat/vB.

Возможность такого изменения зависит от кошелька, и использовать ее можно только до подтверждения исходного перевода. RBF поддерживают, в частности, Bitcoin Core и Electrum, хотя набор доступных действий отличается.

Перед попыткой замены проверьте TxID и количество подтверждений. Если их еще нет, RBF может сработать, но как только перевод попал в блок, повышать комиссию для его отмены уже поздно.

Когда нужно ускорить платеж, вместо RBF иногда используют механизм Child Pays For Parent (CPFP). Для этого создают дочернюю транзакцию, которая тратит выход неподтвержденной родительской и предлагает более высокую комиссию. Майнер оценивает плату за обе операции, поэтому ему может быть выгодно подтвердить их вместе.

Ускорение неподтвержденной транзакции через CPFP. Данные: Learn Me A Bitcoin.

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

Отмена транзакции в других сетях

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

В Solana, например, транзакция содержит недавний blockhash с ограниченным сроком действия. Если она не успела исполниться, для повторной отправки потребуется новый blockhash, но заменить перевод как в Ethereum нельзя.

В Tron и Avalanche подтверждение и финализация происходят быстро, поэтому времени на отмену практически нет. При этом EVM-совместимые сети, в том числе BNB Chain и Avalanche C-Chain, используют ту же модель nonce, и в них могут работать похожие способы замены. Поддержка зависит от конкретной сети и кошелька.

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

Например, в Canton Network, которая ориентирована в том числе на финансовые организации, условия операций задают смарт-контракты на Daml, а узлы участников проверяют, соблюдены ли необходимые требования и полномочия. Если обязательное подтверждение не получено, транзакция отклоняется до записи в реестр.

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

Что делать, если транзакция уже подтверждена

Подтвержденный перевод нельзя изменить, даже повысив комиссию. Вернуть деньги удастся только при участии того, кто контролирует адрес назначения.

Если вы знаете получателя, можно связаться с ним и попросить отправить средства обратно. В таком случае возврат зависит от его согласия.

Ошибочный перевод на биржу или в другую сеть

Если деньги поступили на адрес криптобиржи, обратитесь в ее официальную поддержку. Это особенно важно, когда пользователь ошибся сетью, не указал memo/tag или отправил неподдерживаемый токен. Для обращения понадобятся TxID, сеть, название актива, сумма и время платежа.

Иногда платформа может найти активы и помочь с зачислением либо возвратом. Однако такая процедура доступна не всегда.

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

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

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

Если деньги ушли мошенникам

Если перевод был связан с мошенничеством, сохраните переписку, TxID, адреса, ссылки и другие подтверждения. Эти материалы пригодятся при обращении в правоохранительные органы. По движению средств иногда удается установить, что они поступили на централизованную биржу.

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

После потери криптовалюты можно столкнуться с мошенниками, которые обещают вернуть ее за предоплату, дополнительную «комиссию за разблокировку» или передачу seed-фразы. Таким предложениям доверять не стоит, поскольку раскрытие seed-фразы позволит злоумышленникам получить доступ к кошельку.

Как избежать ошибочных транзакций

Предотвратить ошибку проще, чем исправлять ее после отправки. Перед переводом проверьте адрес получателя, актив и сеть. Например, биржа может принимать токен, доступный в нескольких блокчейнах, но не поддерживать определенную сеть для депозита. Иногда также необходимо указать memo или tag.

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

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

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

Стоит заранее проверить и комиссию. Слишком низкая ставка в sat/vB для биткоина или недостаточная плата за газ в Ethereum могут надолго задержать перевод. Лучше оценить загрузку сети перед отправкой, чем потом платить за ускорение.

Выводы

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

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

Будет интересно

Часто задаваемые вопросы

Можно ли отменить криптотранзакцию после подтверждения?
Нет. Если транзакция уже включена в блок, отменить ее через кошелек или обозреватель нельзя. Средства может вернуть только получатель или сервис, который контролирует адрес назначения.
Как отменить зависшую транзакцию в Ethereum?
Пока операция не подтверждена, можно попробовать отправить нулевой перевод самому себе с тем же nonce и более высокой комиссией. В MetaMask для этого иногда доступна функция Cancel.
Что означает статус Pending?
Pending означает, что транзакция еще не попала в блок. Она может задерживаться из-за низкой комиссии, загрузки сети или предыдущего перевода с меньшим nonce. В некоторых кошельках ожидающую операцию можно ускорить или заменить.
Как отменить неподтвержденную транзакцию в биткоине?
Пока транзакция не подтверждена, можно попробовать RBF — создать новую операцию с теми же входами и более высокой комиссией, направив средства на собственный адрес.

Сообщение Как отменить криптовалютную транзакцию — что возможно до и после подтверждения появились сначала на INCRYPTED.