
Что такое Nonce, зачем нужен этот параметр в майнинге и как найти его значение


Nonce — число, отвечающее определенным требованиям, и используемое майнерами в процессе создания блоков в сетях, которые работают на алгоритме консенсуса PoW.
Nonce — это аббревиатура от number that can only be used once. То есть число, которое можно использовать только один раз.
Значение nonce для майнинга криптовалют
Майнинг в блокчейнах с алгоритмом консенсуса Proof-of-Work — это процесс добычи новых блоков в цепи, основанный на решении узлами сети математических задач.
Если мы «заглянем» в блок и посмотрим, что в нем находится, то увидим, что он состоит из заголовка и перечня транзакций. Заголовок блока содержит:
- хеш предыдущего блока;
- хеш корня Меркла (захешированные транзакции);
- временную метку;
- сложность майнинга (целевое число, которое периодически корректируется, значение хеша заголовка блока должно быть равно или меньше этого числа);
- nonce.
Чтобы добавить блок, майнеру нужно не просто вычислить его хеш, а сделать это определенным образом — результат должен соответствовать критерию сложности, который определяется сетью. Без этого блоки добавлялись бы слишком быстро (расчет хеша — довольно простая операция) и сеть не успевала бы достигать консенсуса.
Чтобы избежать такой «сверхскорости», и нужен nonce. Получая блок, майнер добавляет его к хешу и вычисляет хеш получившегося «набора». Если результат не соответствует значению критерия сложности, майнер меняет значение nonce и рассчитывает хеш заново.
Такой подход предполагает довольно высокие требования к вычислительной мощности узлов сети, так как майнеру нужно перебрать буквально миллиарды nonce, чтобы найти верное решение.
Как только значение nonce найдено, нужная хеш-сумма получена, — блок считается созданным. Он транслируется в сеть, проверяется другими майнерами и при отсутствии ошибок записывается в блокчейн. А майнер, создавший новый блок, получает вознаграждение.