Ethereum

Что такое разрыв nonce в Ethereum и почему зависают следующие транзакции

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

Что такое разрыв nonce в Ethereum и почему зависают следующие транзакции

Короткий ответ: nonce – порядковый номер транзакции, отправленной обычным адресом в Ethereum или другой EVM-сети. Сеть исполняет операции одного адреса последовательно. Если транзакция с номером 18 отсутствует или слишком долго ждёт, операции 19 и 20 не могут обойти её, даже если у них высокая комиссия.

Как появляется разрыв в очереди

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

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

Один и тот же адрес в разных EVM-сетях имеет независимый счётчик. Nonce 18 в Ethereum ничего не говорит о nonce 18 в Arbitrum, Base или BNB Smart Chain. Поэтому проверка в обозревателе другой сети создаёт ложное впечатление пропуска. Начинайте диагностику с chain ID и нативной монеты комиссии.

Подтверждённый nonce нельзя «пропустить». Если сеть ожидает 18, операция 19 останется будущей. Это отличается от обычной перегрузки, когда первая транзакция видна всем и просто конкурирует за место в блоке.

Как найти проблемный номер

  1. Выберите правильную сеть и откройте публичный адрес отправителя в двух обозревателях.
  2. Найдите последнюю подтверждённую исходящую транзакцию и её nonce.
  3. Просмотрите ожидающие операции по возрастанию номера и найдите первую отсутствующую либо застрявшую.
  4. Сравните TxID, получателя, сумму и комиссию в кошельке и обозревателе.
  5. Проверьте, нет ли другой транзакции с тем же nonce: она могла заменить исходную.

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

Как освободить очередь безопасно

Если нижняя операция нужна, её повторно отправляют или заменяют транзакцией с тем же nonce и достаточной комиссией. Получатель и сумма при ускорении остаются прежними. Кошелёк может назвать эту функцию Speed Up. Сеть в итоге подтвердит только одну конкурирующую операцию с данным nonce.

Если исходное действие больше не нужно, кошелёк может создать «отмену» – обычно перевод нулевой суммы на собственный адрес с тем же nonce и более конкурентной комиссией. Это не отзыв уже подтверждённой операции, а гонка двух кандидатов. Пошаговые ограничения разобраны в материале о том, как заменить или отменить EVM-транзакцию.

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

Чего не стоит делать

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

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

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

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

Когда причина не в nonce

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

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

Что подготовить для поддержки

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

Итог

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