Nonce (нонс) — что это простыми словами | IceAI

Nonce (нонс)

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

Обновлено: 2026-09-17

Я отправила 200 USDT на биржу, поставив газ 18 gwei — в тот вечер сеть была забита. Перевод ушёл в мемпул и завис. Через двадцать минут я отправила ещё 50 USDT, уже с газом 40 gwei, и вторая транзакция тоже не прошла: она встала в очередь за первой. Причина — nonce. У каждого перевода с одного кошелька есть свой порядковый номер, и перескочить его не получится.

Nonce (нонс) 0 подтверждена за 12 сек 1 висит в мемпуле, газ 20 gwei 2 ждёт своей очереди пока nonce 1 не пройдёт, nonce 2 не отправится

Что такое nonce

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

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

Почему зависшая транзакция держит остальные

Ethereum исполняет транзакции одного адреса строго по порядку. Если nonce 1 висит в мемпуле, то nonce 2 в блок не попадёт — сеть ждёт, пока освободится место в очереди. В MetaMask это выглядит так: одна строка со статусом Pending, за ней ещё несколько. Поднимать газ у второй бесполезно — она никуда не поедет, пока не пройдёт первая.

Как вытащить застрявшую транзакцию

Отменить подписанную транзакцию нельзя, но её можно заменить другой с тем же nonce. Механика: отправляю перевод самому себе на 0 ETH с тем же номером и газом выше — MetaMask показывает кнопку Speed up или Cancel. Порог замены у большинства узлов — на 10% выше текущего: при 20 gwei это 22 gwei и больше. Замена прошла — очередь сдвинулась, и следующие переводы уходят сами.

Второй путь — сброс аккаунта: Settings → Advanced → Reset Account в MetaMask. Кошелёк заново спрашивает сеть о числе подтверждённых транзакций и обнуляет зависшие. Балансы и приватные ключи при этом не трогаются — сбрасывается только счётчик.

Nonce в майнинге — это другое

В proof-of-work слово nonce означает не номер, а поле в заголовке блока, которое майнер перебирает: 32 бита, около 4,29 млрд вариантов на один проход. Меняешь nonce — меняется хеш блока, и если он ниже цели сложности, блок считается найденным.

В Биткоине модели аккаунтов нет вообще: монеты хранятся как UTXO, порядкового счётчика транзакций не существует. Поэтому зависший перевод в BTC разгоняют через RBF или CPFP, а не через номер: механика застрявшей транзакции там совсем другая.

Коротко

  • Nonce — порядковый номер транзакции конкретного адреса, отсчёт с нуля.
  • Следующая транзакция не пройдёт, пока предыдущий номер не подтверждён.
  • Зависший перевод заменяют транзакцией с тем же nonce и газом на 10%+ выше.
  • Reset Account в MetaMask обнуляет счётчик pending, ключи и балансы остаются на месте.
  • В майнинге nonce — перебираемое поле заголовка блока; в Биткоине счётчика аккаунта нет.

Остались вопросы? Спросите ИИ-ассистента — объяснит другими словами.

Спросить