Як майнери використовують nonce?
Майнер формує заголовок блока, задає nonce 0 і хешує його. Якщо хеш більший за цільове значення, він задає nonce 1 і пробує знову, потім 2 і так далі. Назва nonce скорочує вислів «число, використане один раз».
Жоден nonce не кращий за інший. Хеш неможливо передбачити, тому кожна спроба має однаковий мізерний шанс на успіх. Саме це робить майнінг чесним: більше спроб за секунду означає більше шансів, і ніщо інше не допомагає.
Що відбувається, коли значення nonce вичерпуються?
Чотири байти вміщують 4 294 967 296 значень. Сучасна машина перебирає їх усі значно швидше, ніж за одну тисячну секунди. Тому майнери змінюють щось іще в блоці й починають перебір nonce спочатку.
Цикл майнера
- 01
Перебрати всі значення nonce
0, 1, 2 і так далі до 4 294 967 295. Це всі значення, які можуть вмістити 4 байти.
- 02
Швидко вичерпуються
Один пристрій на 100 TH/s перебирає всі варіанти приблизно за 43 мільйонних часток секунди.
- 03
Змінити додатковий nonce
Майнер змінює вільне поле у власній транзакції винагороди (coinbase).
- 04
Новий корінь Меркла
Транзакція змінилася, тому змінився корінь Меркла, і кожен nonce знову дає нові хеші.
Зазвичай використовують додатковий nonce, резервне поле в транзакції coinbase. Його зміна змінює корінь Merkle, і з’являється цілком новий набір заголовків для перевірки. Майнери також можуть трохи змінити мітку часу, а на багатьох сучасних машинах ще й кілька бітів поля версії.
Джерела
- Нонс · Bitcoin Wiki
- Алгоритм хешування блока · Bitcoin Wiki
- Посилання про блокчейн: заголовки, дерева Меркла, ціль · Документація розробника Bitcoin
Актуальні дані на цій сторінці надходять з API CloudMineCrypto та публічних даних блокчейну, регулярно оновлюються й позначені там, де відображаються. Лише для ознайомлення, не фінансова порада.