
Nonce — це унікальне число або лічильник, що використовується лише один раз для забезпечення одноразового виконання дії у правильній послідовності. Воно функціонує як номер у черзі або одноразовий код підтвердження, який стає недійсним після використання або завершення терміну дії.
У блокчейні nonce застосовується у трьох основних формах: послідовна нумерація на рівні акаунта (визначає порядок транзакцій з однієї адреси), змінна величина у процесі майнінгу (для пошуку хеша блоку з потрібною складністю), а також код-перевірка у підписах для входу (захищає від повторного використання старих повідомлень). В усіх випадках ключові цілі — унікальність і захист від повторного виконання.
Без nonce старі транзакції або підписи можна повторно надсилати, що створює ризик "replay attack" (атаки повторного відтворення). Replay attack — це коли зловмисник копіює та повторно надсилає раніше дійсне повідомлення, змушуючи систему виконувати операції, які не мають повторюватися.
Nonce контролює порядок транзакцій для однієї адреси. Без цього механізму пізніші перекази могли б виконуватися раніше за попередні, що порушує логіку смартконтрактів і може заблокувати кошти або спричинити стратегічні помилки. Тому основні блокчейни впроваджують nonce на рівні протоколу для підтримки послідовності і безпеки. Станом на 2025 року цей механізм є фундаментом для екосистем на основі EVM, стандартів входу у блокчейн та мереж PoW.
У Ethereum та сумісних мережах кожна адреса має лічильник транзакцій, який стартує з 0 — це nonce акаунта. Кожна наступна транзакція повинна використовувати актуальний лічильник; після включення у блок nonce акаунта збільшується на одиницю.
Якщо встановити nonce менше поточного значення, вузли повернуть помилку "nonce too low", оскільки це число вже використано. Якщо nonce надто велике, мережа чекатиме відсутні проміжні транзакції, що призведе до затримки. Гаманці, як правило, автоматично керують цим лічильником і запобігають ручним помилкам.
Приклад: якщо ваш nonce дорівнює 10, використовуйте 10 для наступної транзакції. Якщо транзакція №10 зависла і не була підтверджена, можна повторно відправити аналогічну транзакцію з тим самим nonce, але з вищою комісією, щоб замінити непідтверджену і прискорити обробку майнерами чи валідаторами.
У Proof of Work Bitcoin майнери постійно змінюють поле nonce у заголовку блоку, щоб знайти хеш, який відповідає складності мережі. Proof of Work — це "відгадування пароля замка": перший майнер, який знаходить правильне рішення, пропонує блок і отримує винагороду.
Nonce у заголовку блоку Bitcoin має 32 біти. Після перебору всіх можливих значень майнери змінюють інші параметри, такі як час або порядок транзакцій (що впливає на корінь Merkle), щоб розширити простір пошуку нових хешів. Процес — це "спроба різних чисел до успіху".
Під час входу до гаманця або веб-підпису сервер генерує випадковий nonce і додає його до повідомлення для підпису. Після підпису цей nonce позначається як використаний; для кожного наступного входу потрібен новий nonce, тому навіть скопійоване старе повідомлення не буде знову дійсним.
У стандартах входу на основі Ethereum у повідомлення додаються поля "nonce", "domain" та "expiration time", що створює одноразову перевірку. Багато DeFi-авторизацій і підписів ордерів також використовують nonce для позначення одноразових інструкцій або версій, що дозволяє відкликати старі команди або запобігати дублюванню виконання.
Зазвичай гаманці автоматично керують nonce, але знання, як перевірити його вручну, корисне у складних ситуаціях.
Крок 1. Введіть адресу у блокчейн-експлорер, щоб переглянути індекс останньої підтвердженої транзакції та наявність транзакцій у черзі. Більшість експлорерів показують nonce кожної транзакції, що дозволяє визначити наступне значення.
Крок 2. У розширених налаштуваннях гаманця перевірте актуальний nonce акаунта. Деякі гаманці тимчасово дозволяють "custom nonce"; використовуйте цю функцію обережно, щоб уникнути конфліктів із транзакціями у черзі. У Web3-гаманці Gate або суміжних сервісах nonce керується автоматично та відображається у налаштуваннях чи деталях транзакції.
Крок 3. Якщо потрібно вручну встановити nonce (наприклад, для заміни завислої транзакції), завжди перевіряйте статус черги, щоб не пропустити необхідні проміжні операції. Неправильний nonce може заблокувати подальші транзакції на тривалий час.
Поширені помилки — "nonce too low", "nonce too high", "stuck transactions". Дії для їх усунення:
Крок 1. "Nonce too low" означає, що це число вже використано або є непідтверджена транзакція з таким nonce. Перевірте список очікуваних транзакцій у гаманці та експлорері; не надсилайте різний вміст із вже використаним nonce.
Крок 2. "Nonce too high" означає, що відсутні проміжні числа. Можна чекати підтвердження попередніх транзакцій або відправити порожні транзакції у порядку (просунутий метод, враховуйте комісії та ризики).
Крок 3. Якщо транзакція зависла, повторно відправте ідентичну функціональну транзакцію з тим самим nonce, але з вищою комісією, щоб замінити стару і прискорити включення. Після підтвердження nonce акаунта збільшиться.
Попередження: неправильний nonce може заблокувати всі наступні транзакції або порушити управління активами. Завжди перевіряйте чергу транзакцій і налаштування комісій перед ручною зміною, щоб уникнути фінансових ризиків.
Транзакції з однієї адреси виконуються у порядку nonce, але пріоритет включення залежить від розміру комісії. Вища комісія підвищує ймовірність швидкої обробки; нова транзакція з тим самим nonce може замінити стару ("speed up").
На практиці діють дві складові: внутрішній порядок акаунта визначає nonce, конкуренція між акаунтами — комісіями транзакцій. Якщо комісія низька, транзакції з певними nonce можуть залишатися у статусі очікування тривалий час, блокуючи всю подальшу активність.
Nonce забезпечує правильну послідовність транзакцій, майнінг-операції та безпеку підписів — гарантує унікальність і порядок. Збільшення nonce захищає від повторного використання та порушення порядку в акаунтах; змінні nonce у майнінгу Bitcoin дозволяють знаходити хеші потрібної складності; випадкові nonce у підписах для входу захищають від повторного використання повідомлень. На практиці дозвольте гаманцям автоматично керувати nonce; при ручному втручанні завжди перевіряйте чергу і налаштування комісій, особливо при використанні Web3-гаманця Gate або сумісних інструментів, щоб мінімізувати завислі транзакції і ризики для активів.
Скидання nonce анулює раніше відправлені, але непідтверджені транзакції. Рекомендується дочекатися підтвердження або відхилення всіх очікуваних транзакцій майнерами перед скиданням. Якщо транзакція зависла, її можна замінити, підвищивши комісію і повторно відправивши з тим самим nonce — це перезапише оригінальну транзакцію.
Помилки nonce виникають через кілька підтверджених транзакцій і несинхронізований локальний лічильник або неправильний порядок надсилання. Для вирішення перевірте кількість підтверджених транзакцій акаунта на Gate або у блокчейн-експлорері; nonce наступної транзакції має дорівнювати цьому числу. Якщо гаманець локально показує помилки, спробуйте очистити кеш або повторно імпортувати акаунт.
Для одночасних транзакцій використовуйте послідовні nonce. Наприклад, якщо поточний nonce — 5: використовуйте 5 для першої транзакції, 6 для другої, 7 для третьої тощо. Всі виконуються у порядку nonce, навіть якщо відправлені одночасно. Майнери сортують транзакції за nonce, тому порядок виконання не порушується.
Для офлайн-підпису nonce необхідно вказувати вручну — автоматичне отримання неможливе. Кроки: перевірте актуальний nonce акаунта на онлайн-пристрої → введіть це значення у програму cold wallet для підпису → транслюйте підписану транзакцію з онлайн-пристрою. Неправильний nonce призведе до відхилення мережею; перевіряйте коректність перед офлайн-операціями.
Так, кожен блокчейн має власний незалежний лічильник nonce. Надсилання 10 транзакцій (nonce 0–9) у Ethereum mainnet не впливає на лічильник у Polygon, який стартує з 0. Кожна мережа керує власним станом акаунта. При використанні Gate для міжмережевих операцій враховуйте, що зміна мережі скидає обчислення nonce — перевіряйте після кожної зміни, щоб уникнути плутанини.


