WATS Wallet logoWATS Wallet
Руководство8 мин чтения

Транзакция зависла в pending? Как её ускорить или отменить

Зависшая транзакция расчищается заменой на том же nonce с более высокой комиссией: ускорение отправляет её заново, отмена гасит её нулевым переводом на ваш же адрес. WATS полностью некастодиален, поэтому замену подписываете вы сами, а её комиссия платится в ATS, а не в нативной газовой монете сети.

Зависшая в pending транзакция расчищается заменой: разошлите её заново с тем же nonce и более высокой комиссией — либо как ускорение (та же самая транзакция, но лучше оплаченная), либо как отмену (перевод нулевой суммы на ваш собственный адрес, чтобы nonce был израсходован чем-то безобидным). Транзакция зависает по одной из двух причин: ваша max fee ниже текущей базовой комиссии сети, либо более ранняя транзакция того же аккаунта стоит на меньшем nonce и замораживает всё, что идёт за ней. Ни один из этих ходов не гарантирован — отмена стоит газа, а более дешёвый оригинал всё равно может пройти первым, — поэтому следите за обозревателем блоков, пока одна из версий не подтвердится на этом nonce, а другая не отобразится как отброшенная или заменённая. Зависание в pending — во многом феномен EVM: в Solana транзакция просто истекает, если её не обработали примерно за минуту, а сообщения TON несут собственный срок действия, так что отменять там нечего. Любая замена — это транзакция, которую подписываете вы сами, потому что WATS полностью некастодиален и никогда не держит ключ, а сетевую комиссию WATS берёт одним токеном, ATS, вместо нативной газовой монеты каждой сети — это меняет то, каким токеном вы платите, а не то, сколько берёт сеть, так что запас в max fee по-прежнему остаётся настоящей профилактикой.

Транзакция, которая отказывается подтверждаться

Транзакция висит в pending, когда ни один валидатор не включает её в блок — обычно потому, что её max fee ниже текущей базовой комиссии сети, либо потому, что впереди застряла более ранняя транзакция того же аккаунта. Лекарство — замена: заново разослать тот же nonce с более высокой комиссией, либо как ускорение (та же транзакция, лучше оплаченная), либо как отмену (перевод нулевой суммы самому себе).

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

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

Почти за каждой зависшей транзакцией в EVM-сети стоит одна из двух причин.

Ваша max fee ниже текущей базовой комиссии. По EIP-1559 каждый блок устанавливает базовую комиссию, которую ваша транзакция должна как минимум перекрыть, чтобы попасть в блок. Если после вашей подписи спрос резко вырос — или оценка кошелька была впритык, а рынок сдвинулся, — транзакция ждёт в мемпуле, пока базовая комиссия не опустится обратно ниже вашего потолка, а это может занять минуты или не случиться вовсе.

Разрыв в nonce. Каждый EVM-аккаунт нумерует свои транзакции строго последовательным nonce — 0, 1, 2 и так далее, — и валидаторы обрабатывают их по порядку. Если зависла транзакция 41, то 42-я и 43-я не подтвердятся, как бы щедро вы за них ни заплатили. Именно поэтому одна дешёвая забытая транзакция способна заморозить весь кошелёк: всё, что идёт следом, выстраивается в очередь и выглядит загадочно сломанным. Как устроена ценовая сторона от и до, разобрано в материале как на самом деле работают комиссии за газ.

Что на самом деле делает кнопка «ускорить»?

Ускорение — не какая-то особая функция сети, а заменяющая транзакция: та же самая транзакция — тот же nonce, тот же получатель, та же сумма, — разосланная заново с более высокой комиссией. Поскольку nonce можно израсходовать лишь однажды, валидаторы оставляют ту версию, которая платит больше, и отбрасывают другую. Большинство нод требует, чтобы замена подняла и max fee, и чаевые за приоритет на заметную величину — обычно порядка 10%, — иначе они игнорируют её как спам. Кнопка «ускорить» в вашем кошельке делает ровно это: подставляет исходную транзакцию, переиспользует её nonce и поднимает за вас комиссию.

Как работает отмена зависшей транзакции?

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

Ускорить или отменить — что выбрать?

 УскоритьОтменить
Что отправляетсяТа же транзакция, тот же nonce, комиссия вышеПеревод нулевой суммы самому себе, тот же nonce, комиссия выше
Когда применятьВы по-прежнему хотите, чтобы действие состоялосьВы передумали — не та сумма, не тот адрес, ошибочно выданное разрешение
СтоимостьОбычный газ транзакции по новой ставкеМинимальный газ перевода по новой ставке
Может ли не сработать?Да — более дешёвый оригинал всё равно может пройти первымДа — оригинал может выиграть гонку и всё-таки исполниться

К обеим применимо одно правило: никогда не считайте замену гарантированной. Пока одна из версий не подтвердилась ончейн, существуют обе, и какая из них пройдёт, решаете не вы, а сеть. Если оригинал был опасен, следите за обозревателем, пока не увидите, какая версия подтвердилась на этом nonce (проигравшая отображается как отброшенная или заменённая), и только потом действуйте исходя из того, что его остановили.

Бывает ли такое в Solana или TON?

Зависание в pending — во многом феномен EVM, рождённый сочетанием долгоживущего публичного мемпула и строгого порядка nonce внутри аккаунта. Solana устроена иначе: каждая транзакция ссылается на недавний blockhash и просто истекает, если её не обработали в коротком окне — примерно за минуту, — так что отменять нечего: вы переподписываете и отправляете заново. TON отличается ещё сильнее: её сообщения несут собственный срок действия, а общего пула ожидающих транзакций в EVM-смысле там нет, поэтому танца «ускорить/отменить» тоже не существует. Если вы пришли в EVM из любой из этих сетей, эта статья — недостающая инструкция. Мультичейн-кошелёк вроде WATS охватывает оба мира — Ethereum, Arbitrum, Optimism, Base, Polygon и BNB Chain со стороны EVM, Solana и TON с другой, — поэтому стоит понимать, какой набор правил действует, прежде чем искать кнопку отмены, которой там и не могло быть.

Как не допускать зависших транзакций?

  • Оставляйте запас в max fee. Max fee — это потолок, а не счёт: вы всё равно платите только базовую комиссию плюс свои чаевые, поэтому щедрый потолок не стоит ничего лишнего и страхует от внезапного скачка базовой комиссии.
  • Не забрасывайте сеть повторами на новых nonce. Новые попытки позади зависшей транзакции лишь выстраивают очередь, которая целиком ждёт одну и ту же пробку, — и умножают уборку, когда вы наконец её расчистите.
  • Чините сначала самый низкий nonce. Если в pending висит несколько транзакций, значение имеет только самая старая; замените её — и остальные обычно расходятся сами.
  • Держите комиссионный токен пополненным. Замена сама по себе транзакция, поэтому для её отправки нужен запас того токена, которым платятся комиссии в этой сети. Остаться без нативной газовой монеты сети — классический способ обнаружить, что чинить собственную зависшую транзакцию нечем; в WATS комиссионный токен — ATS во всех поддерживаемых сетях, так что следить нужно за одним балансом, а не за восемью.
  • Взгляните на состояние сети перед подписью. В загруженный день оценка комиссии, которая час назад выглядела нормальной, уже может быть ниже текущей ставки.

Где здесь WATS

Ничто в этой статье не привязано к конкретному кошельку так, как обычно думают. Nonce принадлежит вашему аккаунту в сети, а не приложению, которым вы подписываете, поэтому правила замены выше работают из любого кошелька. Что действительно отличается от кошелька к кошельку — это чем нужно располагать, чтобы оплатить починку. WATS берёт сетевые комиссии одним токеном, ATS, вместо нативной газовой монеты каждой сети, используя абстракцию аккаунта ERC-4337 в EVM-сетях и OFT LayerZero для омничейн-перемещения между Ethereum, Arbitrum, Optimism, Base, Polygon, BNB Chain, Solana и TON. Это не скидка — сеть берёт столько, сколько берёт, и ускорение всё так же обязано перебить ставку оригинала, — но это значит, что один пополняемый баланс покрывает комиссии везде, вместо того чтобы оставить вас без хода именно в той сети, чья газовая монета случайно закончилась. Собранный ATS сжигается, уводя предложение со 100M к полу в 30M; механика описана на странице комиссии ATS. WATS — первый и единственный кошелёк, сочетающий ERC-4337 и OFT LayerZero в едином комиссионном токене, который списывается вместо нативного газа, с этим сжиганием.

Вторая специфика WATS, которую стоит проговорить прямо, — это хранение ключей, потому что именно оно решает, кто вообще может что-то сделать с зависшей транзакцией. WATS полностью некастодиален во всех четырёх продуктах — Chrome Extension, мобильном приложении, Hot Wallet и NFC Metal Card. Ключи держите вы, а WATS не держит ни одного. Прямое следствие здесь такое: никто в WATS не может залезть в вашу ожидающую транзакцию и отредактировать её, и никто не может откатить уже подтверждённую. Каждое ускорение и каждая отмена — это новая транзакция, которую подписываете вы, и именно поэтому чек-лист из этой статьи стоит усвоить самому, а не делегировать.

Итог

Зависшая транзакция — это не потерянные деньги, а неоплаченная или заблокированная инструкция, стоящая на некотором nonce, и единственный ваш рычаг — заменить её на том же nonce лучше оплаченной. Ускоряйте, если действие вам всё ещё нужно; отменяйте нулевым переводом самому себе, если нет; чините сначала самый низкий зависший nonce; и прежде чем что-либо предполагать, убедитесь по обозревателю, какая версия действительно прошла. Если вас раз за разом подводит именно газ — не тот токен, не в той сети, не в тот момент, — установите WATS со страницы загрузки и держите один баланс ATS для комиссий во всех восьми поддерживаемых сетях, оставаясь при этом единственным владельцем своих ключей.

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

Как долго транзакция может висеть в pending?

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

Стоит ли отмена транзакции газа?

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

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

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

Нужен ли мне ETH, чтобы ускорить зависшую транзакцию в WATS?

WATS берёт сетевые комиссии в ATS вместо нативной газовой монеты каждой сети, поэтому замена оплачивается в ATS, а не в ETH в Ethereum или в нативной монете Polygon, BNB Chain, Solana или TON — в EVM-сетях это проходит через абстракцию аккаунта ERC-4337. Меняется то, каким токеном вы платите, а не то, сколько берёт сеть: ускорение всё так же должно перебить ставку оригинала на заметную величину, а отмена остаётся настоящей транзакцией с настоящей комиссией. Практическая выгода в том, что один пополненный баланс покрывает комиссии во всех поддерживаемых WATS сетях, так что застрять из-за закончившейся конкретной газовой монеты куда менее вероятно.

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

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