226 / 691XNONCE

Extranonce

Додаткові змінні дані для майнінгу

Extranonce розширює простір пошуку через зміну coinbase та її зобов’язання в заголовку. Це не окреме додаткове поле заголовка, і пул не дозволяє кожному майнеру довільно змінювати всі його байти.

Extranonce — змінні дані, які зазвичай вставляють у вхід транзакції coinbase. Їхня зміна дає нові дані для кореня Merkle й хешування заголовка без розширення його 32-бітового поля nonce.

Поле nonce має 32 біти й пропонує 2^32 значень для в усьому іншому однакового заголовка. Extranonce не подовжує це поле. Він змінює інші дані, щоб майнер міг скласти новий заголовок і знову перебирати nonce. [Bitcoin Developer Guide — Mining and nonce space]

Зміна extranonce у coinbase змінює її серіалізацію та TXID; перераховуються відповідна гілка дерева Merkle і корінь Merkle у заголовку. Інші транзакції змінювати не потрібно. Старий корінь не можна просто залишити без перерахунку. [Bitcoin Developer Guide — Mining and nonce space]

Два повністю вільні байти дають 2^16 варіантів. У моделі з 32-бітовим nonce та іншими фіксованими даними це 2^48 комбінацій входів. Це простір різних спроб, а не кількість знайдених блоків чи гарантія успіху після його перебору. [Bitcoin Developer Guide — Mining and nonce space]

BIP 34 вимагає правильно закодовану висоту блока на початку scriptSig coinbase. Межа 100 байтів стосується всього цього scriptSig, не лише extranonce. Вільна область не має перезаписувати висоту чи порушувати формат транзакції. [BIP 34 — Height in coinbase] [Bitcoin Developer Reference — Coinbase input]

Stratum V2 ділить extended extranonce на фіксований upstream-префікс, локально зарезервовану частину та downstream-простір. Це запобігає марному перекриванню пошуку. Призначений extranonce_prefix не є автоматично областю, яку кінцевий майнер може вільно змінювати. [Stratum V2 — Extended extranonce and jobs]

У SubmitSharesExtended coinbase складається в порядку coinbase_tx_prefix, extranonce_prefix, extranonce та coinbase_tx_suffix. Подані байти extranonce мають узгоджену довжину. Те саме число, записане меншою кількістю байтів, не обов’язково утворює ту саму транзакцію. [Stratum V2 — Extended extranonce and jobs]

Standard Job у Stratum V2 має фіксований корінь Merkle; змінюються лише дозволені частини version, nonce та nTime. Стандартний пристрій не подає extranonce сам, як extended-канал. Вищий вузол може змінювати coinbase під час підготовки нового завдання. [Stratum V2 — Extended extranonce and jobs]

SetExtranoncePrefix у Stratum V2 застосовується до завдань, надісланих після цього повідомлення в зазначеному каналі. Результат має залишатися пов’язаним із правильним job_id та виділеним простором. Останній префікс не замінює запису про завдання, що породило старий результат. [Stratum V2 — Extended extranonce and jobs]

Для повної картини прочитайте також Nonce, Дерево Merkle, Mining Share, Block Template. На цю статтю також посилаються ASIC Miner, Block Template, getblocktemplate.

DOC · 001Bitcoin Developer Guide — Mining and nonce spaceДокументація ↗DOC · 002Stratum V2 — Extended extranonce and jobsСпецифікація ↗DOC · 003BIP 34 — Height in coinbaseСпецифікація ↗DOC · 004Bitcoin Developer Reference — Coinbase inputДокументація ↗
Спочатку джерела · Не інвестиційна порада