Что такое nonce: заветное желание майнеров
Nonce — это специальный номер, который присваивается блоку блокчейна в процессе майнинга. Хотя некоторые считают, что nonce означает number used once, слово, скорее всего, происходит из среднеанглийского языка, в котором nonse обозначает единичный случай или инцидент.
Nonce обеспечивает создание уникального хеша — криптографического “отпечатка пальца”, который идентифицирует блок и лежит в основе работы блокчейна. Несмотря на то, что nonce обычно используется в алгоритме консенсуса Proof-of-Work (PoW), ему также можно найти применение и в таких направлениях, как e-mail или передача данных.
Наряду с алгоритмом корректировки сложности и хеш-функцией SHA-256, nonce лежит в основе алгоритма консенсуса PoW. Чтобы лучше определить роль nonce в этом процессе, вспомним принцип алгоритма консенсуса Proof-of-Work
Например, блокчейн Bitcoin состоит из последовательной цепочки блоков, которые хранят данные о транзакциях, включая сумму, адрес кошельков и дату операций. Затем, с помощью хеш-функции SHA-256, валидаторы конвертируют эти данные в единый формат: 64-значное шестнадцатеричное число, которое называется хешем. Этот процесс подтверждает валидность данных, после чего создается новый блок.
Для того, чтобы создать блок, майнеру необходимо найти значение хеша, которое бы соответствовало определенным критериям. Такой подход необходим для удержания времени генерации блоков на одинаковом уровне, чтобы сеть при любых условиях успевала прийти к консенсусу. В этом процессе именно nonce препятствует созданию большего количества блоков.
Например, nonce может принимать участие в борьбе с атакой повторного входа в традиционных системах безопасности. Это возможно за счет генерации индивидуального значения для каждого пользовательского сеанса или операции внутри протокола.
Nonce также может быть использован для идентификации пользователей. Некоторые из таких функций, как SSO (единый вход), 2FA (двухфакторная аутентификация) и восстановление учетной записи могут использовать nonce.
Первые nonce генерировались на дискретных видеокартах и обычных компьютерных процессорах. Однако с учетом развития сети, количество переборов увеличилось до триллионов, стимулируя создание новых устройств для майнинга криптовалют — ASICs.
Любой желающий может попробовать себя в майнинге и поиске заветного nonce. Если это про вас — почитайте нашу недавнюю статью о лучших криптовалютах для майнинга!
Наряду с алгоритмом корректировки сложности и хеш-функцией SHA-256, nonce лежит в основе алгоритма консенсуса PoW. Чтобы лучше определить роль nonce в этом процессе, вспомним принцип алгоритма консенсуса Proof-of-Work
Принцип работы PoW
Proof-of-Work предотвращает такую уязвимость, как двойная трата. Это феномен, который образуется при повторном использовании одного и того же актива для двух разных платежей. В традиционной финансовой системе эту проблему решает доверительный орган, например банк или государство. Однако блокчейн — это децентрализованная база данных, поэтому для борьбы с двойной тратой необходим альтернативный подход. Именно его и обеспечивает Proof-of-Work.
Проблема двойной траты. Источник: geeksforgeeks.org
PoW стимулирует валидаторов выполнять работу для того, чтобы подтвердить данные в блокчейне. Они затрачивают временные и энергетические ресурсы, делая мошенничество в сети экономически невыгодным. По сути nonce необходим для поиска нужного хеша, который присваивается каждому блоку в блокчейне.
Например, блокчейн Bitcoin состоит из последовательной цепочки блоков, которые хранят данные о транзакциях, включая сумму, адрес кошельков и дату операций. Затем, с помощью хеш-функции SHA-256, валидаторы конвертируют эти данные в единый формат: 64-значное шестнадцатеричное число, которое называется хешем. Этот процесс подтверждает валидность данных, после чего создается новый блок.
Архитектура блокчейна Bitcoin. Источник: geeksforgeeks.org
Каждый блок в Bitcoin включает в себя хеш предыдущего. Это делает систему устойчивой ко взломам, поскольку для изменения информации в одном блоке, потребуется провести подобные манипуляции во всех предыдущих, что практически невозможно.
Роль nonce в консенсусе Proof-of-Work
Майнинг в Proof-of-Work блокчейнах осуществляется с помощью сетевых узлов, которые решают математические задачи для генерации новых блоков. В свою очередь, каждый блок состоит из следующих элементов:
- хеши транзакций, которые были взяты из мемпула (список ожидания);
- хеш предыдущего блока;
- время создания блока;
- алгоритм корректировки сложности майнинга (механизм, который удерживает периодичность создания блоков в оптимальном диапазоне 10 минут);
- nonce.
Для того, чтобы создать блок, майнеру необходимо найти значение хеша, которое бы соответствовало определенным критериям. Такой подход необходим для удержания времени генерации блоков на одинаковом уровне, чтобы сеть при любых условиях успевала прийти к консенсусу. В этом процессе именно nonce препятствует созданию большего количества блоков.
Таким образом, майнинг биткоина — это не просто процесс поиска хеша. На самом деле, майнеры ищут nonce, добавление которого даст нужный хеш. Если полученный хеш не соответствует значению сложности сети, валидатор использует другой nonce и пересчитывает хеш.
Этот процесс требует от валидаторов высокого уровня вычислительной мощности, поскольку для поиска нужного nonce может понадобиться множество попыток. По состоянию на январь 2024 года сложность сети Bitcoin составляет 70,34 трлн (такое количество хешей в секунду должно быть вычислено для создания нового блока).
После того как правильный nonce был сгенерирован, блок передается в сеть. Другие майнеры проверяют его и, в случае отсутствия каких-либо разногласий, он добавляется в блокчейн, а майнер, который его нашел, получает вознаграждение.
Другие способы применения nonce
Несмотря на то, что nonce преимущественно используется в блокчейне, он также существует и в других технических решениях.
Например, nonce может принимать участие в борьбе с атакой повторного входа в традиционных системах безопасности. Это возможно за счет генерации индивидуального значения для каждого пользовательского сеанса или операции внутри протокола.
Nonce также может быть использован для идентификации пользователей. Некоторые из таких функций, как SSO (единый вход), 2FA (двухфакторная аутентификация) и восстановление учетной записи могут использовать nonce.
Заключение
Nonce — это неотъемлемый элемент алгоритма консенсуса Proof-of-Work, который используется для создания уникальных идентификаторов блока. Фактически это одна из немногих частей блокчейна, которую майнеры могут перебирать при создании новых блоков.
Первые nonce генерировались на дискретных видеокартах и обычных компьютерных процессорах. Однако с учетом развития сети, количество переборов увеличилось до триллионов, стимулируя создание новых устройств для майнинга криптовалют — ASICs.
Любой желающий может попробовать себя в майнинге и поиске заветного nonce. Если это про вас — почитайте нашу недавнюю статью о лучших криптовалютах для майнинга!