
Nonce — число, используемое один раз. В крипте у слова два обиходных значения. В Ethereum и других сетях с аккаунтами nonce — счётчик, привязанный к адресу: первая транзакция имеет nonce 0, следующая 1 и так далее, и сеть принимает их только по порядку. В майнинге Bitcoin nonce — 32-битное поле заголовка блока, которое майнеры меняют миллиарды раз в секунду, пока хеш блока не окажется ниже цели. Обычных пользователей касается первое значение — как правило, когда транзакция зависла.
Два значения рядом
| Nonce аккаунта (Ethereum, BSC, Polygon…) | Nonce майнинга (Bitcoin) | |
|---|---|---|
| Что это | число транзакций, отправленных с адреса | поле в заголовке блока |
| Кто задаёт | кошелёк, автоматически | оборудование майнера |
| Диапазон | 0, 1, 2… по одной на транзакцию | от 0 до ~4,29 млрд |
| Зачем | порядок и защита от повтора | менять хеш блока |
| Что видит пользователь | зависшие или заменённые транзакции | ничего напрямую |
Nonce аккаунта: почему важен порядок
Каждая транзакция Ethereum содержит nonce отправителя. Узлы обрабатывают транзакции адреса строго по порядку nonce. Если транзакция с nonce 14 висит из-за низкой комиссии, транзакции 15, 16 и 17 ждут за ней, даже если платят много. Это самая частая причина, по которой кошелёк показывает сразу несколько ожидающих транзакций.
Nonce же защищает от повтора. Подписанная транзакция с nonce 14 может попасть в блок только один раз; после этого сеть знает, что nonce 14 для адреса использован. Поэтому случайно отправить один и тот же подписанный платёж дважды, повторно его транслировав, не получится.
Как исправить зависшую транзакцию
- Найдите наименьший ожидающий nonce вашего адреса. Обозреватель блоков показывает nonce каждой транзакции; смотрите, как читать транзакцию в Etherscan.
- Отправьте замену с тем же nonce и более высокой комиссией. Большинство узлов требуют, чтобы новая комиссия была заметно выше старой, обычно хотя бы на 10% и по максимальной комиссии, и по чаевым.
- Чтобы отменить, отправьте 0 ETH на свой же адрес с этим nonce и более высокой комиссией. Первая транзакция уже не сможет попасть в блок.
- Когда низкий nonce подтвердится, стоящие за ним транзакции пройдут по порядку.
В кошельках вроде MetaMask это кнопки «ускорить» и «отменить». Калькулятор max fee EIP-1559 поможет выбрать комиссию замены, которая переживёт несколько блоков роста базовой комиссии.
Частые ошибки с nonce
- nonce too low — вы пытаетесь использовать уже подтверждённый nonce. Обычно у кошелька устарело локальное состояние; помогает сброс активности аккаунта в кошельке.
- replacement transaction underpriced — с этим nonce уже есть ожидающая транзакция, и новой комиссии не хватает для замены.
- пропуск nonce — вы отправили nonce 20, а 19 так и не был транслирован. Ничего после 19 не подтвердится, пока не будет отправлена транзакция с nonce 19.
Если вы оплачиваете заказ KOT.CASH из EVM-кошелька и платёж не появляется, вероятная причина — зависший более ранний nonce. Разбор именно этого случая — в статье про пропущенный nonce перед обменом.
Nonce майнинга: метод проб и ошибок
Заголовок блока Bitcoin занимает 80 байт: версия, хеш предыдущего блока, корень Меркла транзакций, метка времени, цель сложности и 4-байтовый nonce. Майнеры дважды хешируют заголовок SHA-256 и проверяют, меньше ли результат цели. Если нет — меняют nonce и пробуют снова. У nonce около 4,29 млрд значений, современный ASIC перебирает их за доли секунды, поэтому майнеры меняют ещё extra nonce в coinbase-транзакции и метку времени, чтобы получить новые заголовки.
Найденный nonce и есть доказательство работы. Его нельзя вычислить напрямую, только найти перебором, а сеть каждые 2016 блоков подстраивает цель так, чтобы в среднем блок находился раз в десять минут. Проверить найденный блок может любой одним хешированием.
Сети без nonce аккаунта
Bitcoin, Litecoin и другие UTXO-сети не нумеруют транзакции по адресу: каждая транзакция тратит конкретные выходы, и сеть не даёт потратить один выход дважды (смотрите, что такое UTXO). Solana вместо счётчика использует недавний blockhash: транзакция действительна только короткое время после блока, на который ссылается, поэтому старые транзакции Solana падают с ошибкой blockhash, а не висят вечно. Транзакции TRON тоже ссылаются на недавний блок и истекают.
Где ещё встречается слово
Nonce есть и в криптографии: в схемах шифрования и подписи это случайное или уникальное значение, которое нельзя повторять с тем же ключом. Повтор nonce подписи в реальных случаях приводил к утечке приватных ключей, поэтому современные кошельки генерируют его детерминированно. Пользователь этого не видит; на практике встречаются nonce аккаунта и nonce блока.
Частые вопросы
Что такое nonce в Ethereum?
Число транзакций, отправленных адресом. Каждая новая транзакция использует следующий nonce, и сеть обрабатывает их строго по порядку.
Почему мои транзакции застряли за одной ожидающей?
Потому что более низкий nonce ещё не подтверждён. Следующие не подтвердятся, пока он не пройдёт или не будет заменён.
Как отменить ожидающую транзакцию Ethereum?
Отправить 0 ETH себе с тем же nonce и большей комиссией — обычно через кнопку отмены в кошельке.
Что такое nonce в майнинге Bitcoin?
32-битное поле заголовка блока, которое майнеры меняют в поиске хеша ниже цели сложности.
Есть ли у Bitcoin nonce аккаунта?
Нет. Bitcoin работает на UTXO, порядок задаётся тем, какие выходы тратит транзакция, а не счётчиком адреса.