Extranonce jsou dodatečné proměnlivé údaje, které těžební software běžně umísťuje do coinbase, zvláštní první transakce bloku připisující těžební odměnu. Změna těchto údajů se promítne do souhrnného otisku transakcí v hlavičce bloku. Tím vznikne další podklad pro hledání. Samostatné pole nonce v hlavičce se přitom nezvětšuje.
Hlavička je stručný datový souhrn bloku. Bit zaznamenává nulu nebo jedničku; osm bitů tvoří bajt. Hlavička obsahuje mimo jiné nonce, pole o délce 32 bitů, které při nezměněném zbytku nabízí 2^32 hodnot. Zkoušet stejnou hlavičku se stejným nonce znovu by dalo stejný hash, tedy stejný výsledek. Extranonce toto pole neprodlužuje: mění jiné údaje, z nichž se připraví nová hlavička. Alena si tak může představit nové zadání, pro které lze počítadlo projít znovu. V praxi se při hledání mohou podle pravidel měnit i další části hlavičky. [1] [5]
Coinbase zde není burza, ale první transakce každého bloku. Když software změní její extranonce, změní se její datový zápis a TXID, identifikátor vypočtený z transakce. Z něj vede přes strom postupně spojovaných otisků cesta k Merkle root, společnému otisku transakcí uloženému v hlavičce. Software musí přepočítat dotčenou větev stromu. Ostatní transakce mohou zůstat stejné, ale starý kořen nelze bez přepočtu ponechat. Právě tato návaznost dává nové hlavičce jiné vstupní údaje pro těžbu. [1]
Pro jednoduchý model ponechme vše ostatní pevné a dovolme dva zcela volné bajty extranonce. Nabízejí 2^16 variant; společně s 32bitovým nonce vzniká 2^48 kombinací vstupů. Jde o počet možných pokusů, nikoli počet nalezených bloků. Alena tím nezískává snazší podmínku ani jistotu, že v této sadě uspěje. Přínos je praktický: má kde dál hledat. Samotné přidání volného prostoru také nezrychlí stroj, který tyto pokusy musí skutečně vypočítat. [1]
Prostor pro extranonce není prázdný formulář bez pravidel. BIP 34, konkrétní pravidlo Bitcoinu, vyžaduje na začátku vstupního datového pole coinbase zvaného scriptSig správně zakódovanou výšku bloku, tedy jeho pořadí v řetězci. Limit 100 bajtů se vztahuje na celý coinbase scriptSig, nikoli jen na extranonce. Software proto musí vyhradit místo pro povinné údaje a zachovat platný formát. Kdyby je Alena přepsala, další výpočty by hledaly řešení pro chybný blok. [3] [4]
Při společné těžbě v poolu je užitečné, aby různé stroje hledaly v různých variantách. Stratum V2, protokol pro předávání těžebních úloh, k tomu používá i rozdělení extranonce. Nadřazený server, označovaný upstream, přidělí pevný extranonce_prefix, tedy počáteční část těchto dat. Místní prostředník může rezervovat další část pro své klienty a zbytek poslat dále směrem downstream. Tyto směry jsou relativní k danému spojení. Přidělený prefix není automaticky oblast, kterou smí koncový těžař měnit; stálá hodnota prefixu pomáhá oddělit práci účastníků. [2]
U rozšířeného kanálu Stratum V2 odevzdává zpráva SubmitSharesExtended spolu s výsledkem také měněné bajty. Coinbase se skládá v pořadí coinbase_tx_prefix, extranonce_prefix, extranonce a coinbase_tx_suffix. Jsou to názvy částí dat, které si těžební programy předávají. Pole extranonce musí mít dohodnutou délku. I kdyby kratší zápis vypadal jako stejné číslo, jiná posloupnost bajtů může znamenat jinou transakci. Počítače porovnávají přesná data, nikoli jejich přibližný lidský význam. [2]
Standard Job ve Stratum V2 je úloha s pevným Merkle root. Koncový přístroj v ní může měnit jen povolené části polí version, nonce a nTime: verzi, počítadlo a čas hlavičky. Neodevzdává tedy vlastní extranonce způsobem rozšířeného kanálu. Novou coinbase a z ní nový kořen může připravit nadřazený software a dodat další úlohu. Alena proto nemusí najít ovládání extranonce přímo na svém zařízení, přestože se tento mechanismus v celé sestavě používá. [2]
Představme si, že dorazí nový prefix, zatímco se zpracovává výsledek starší práce. Zpráva SetExtranoncePrefix ve Stratum V2 platí pro úlohy poslané po ní na daném kanálu, tedy v příslušné těžební relaci. Výsledek musí zůstat spojený se správným job_id, identifikátorem úlohy, a jejím přiděleným prostorem. Dosadit všude nejnovější prefix by mohlo změnit data starého výsledku. Smyslem extranonce je vytvářet odlišné pokusy a udržet o nich přehled, nikoli zpětně přepisovat jejich zadání. [2]
Pro nejúplnější obraz čtěte toto heslo společně s Nonce, Merkle Tree, Mining Share, Block Template, Bitcoin. Opačným směrem na něj odkazují také ASIC Miner, Stratum V1, Stratum V2, Block Template.