226 / 691XNONCE

Extranonce

Dodatečné proměnlivé údaje pro těžbu

Extranonce rozšiřuje prostor těžebních pokusů změnou coinbase a jejího závazku v hlavičce. Není dalším samostatným polem hlavičky a pool neurčuje všem těžařům volnost měnit všechny jeho bajty.

Extranonce jsou proměnlivé údaje běžně vkládané do vstupu coinbase transakce. Jejich změna vytváří nový podklad pro Merkle root a hashování hlavičky, aniž by se zvětšilo její 32bitové pole nonce.

Pole nonce má 32 bitů a pro jinak stejnou hlavičku nabízí 2^32 hodnot. Extranonce toto pole neprodlužuje. Mění data mimo něj, aby těžař mohl sestavit další hlavičku a znovu zkoušet hodnoty nonce. [Bitcoin Developer Guide — Mining and nonce space]

Změna extranonce v coinbase mění její serializaci a TXID; z něj se přepočítá příslušná větev Merkle stromu a Merkle root v hlavičce. Ostatní transakce kvůli tomu není nutné změnit. Starý Merkle root ale nelze bez přepočtu ponechat. [Bitcoin Developer Guide — Mining and nonce space]

Dva zcela volné bajty dovolují 2^16 variant. V modelu s 32bitovým nonce a jinak pevnými údaji to dává 2^48 kombinací vstupů. Jde o prostor různých pokusů, nikoli počet nalezených bloků ani záruku úspěchu po jeho prohledání. [Bitcoin Developer Guide — Mining and nonce space]

BIP 34 vyžaduje na začátku scriptSig coinbase správně zakódovanou výšku bloku. Limit 100 bajtů se vztahuje na celý coinbase scriptSig, nikoli jen extranonce. Volná oblast nesmí přepsat výšku ani porušit celkový formát transakce. [BIP 34 — Height in coinbase] [Bitcoin Developer Reference — Coinbase input]

Stratum V2 rozděluje extended extranonce na pevný upstream prefix, místně rezervovanou část a prostor pro downstream. Rozdělení brání zbytečnému překrývání hledání. Přidělený extranonce_prefix není automaticky oblast, kterou smí koncový těžař libovolně měnit. [Stratum V2 — Extended extranonce and jobs]

U SubmitSharesExtended se coinbase sestavuje v pořadí coinbase_tx_prefix, extranonce_prefix, extranonce a coinbase_tx_suffix. Odevzdané bajty extranonce musí mít dohodnutou délku. Stejná číselná hodnota zapsaná kratší posloupností bajtů nemusí vytvořit tutéž transakci. [Stratum V2 — Extended extranonce and jobs]

Standard Job ve Stratum V2 pracuje s pevným Merkle root; mění se pouze povolené části version, nonce a nTime. Standardní zařízení proto samo neposílá extranonce jako u extended kanálu. Změny coinbase může obstarat nadřazený uzel při přípravě nové úlohy. [Stratum V2 — Extended extranonce and jobs]

Zpráva SetExtranoncePrefix ve Stratum V2 se vztahuje na úlohy poslané po ní na daném kanálu. Výsledek musí zůstat spojený se správným job_id a přiděleným prostorem. Nejnovější prefix proto není náhradou za evidenci, ze které úlohy starší výsledek vznikl. [Stratum V2 — Extended extranonce and jobs]

Pro nejúplnější obraz čtěte toto heslo společně s Nonce, Merkleův strom, Mining Share, Block Template. Opačným směrem na něj odkazují také Block Template, getblocktemplate.

DOC · 001Bitcoin Developer Guide — Mining and nonce spaceDokumentaceDOC · 002Stratum V2 — Extended extranonce and jobsSpecifikaceDOC · 003BIP 34 — Height in coinbaseSpecifikaceDOC · 004Bitcoin Developer Reference — Coinbase inputDokumentace
Primární zdroje · Nejde o investiční doporučení