226 / 691XNONCE

Extranonce

Dados variáveis adicionais para mineração

Extranonce amplia o espaço de procura alterando coinbase e o seu compromisso no cabeçalho. Não é mais um campo independente do cabeçalho, e o pool não permite a cada minerador alterar todos os seus bytes.

Extranonce são dados variáveis normalmente inseridos na entrada da transação coinbase. Alterá-los fornece novos dados para a raiz de Merkle e o hash do cabeçalho sem ampliar o campo nonce de 32 bits.

O campo nonce tem 32 bits e oferece 2^32 valores para um cabeçalho de resto idêntico. Extranonce não alarga esse campo. Altera outros dados para construir outro cabeçalho e voltar a testar os valores nonce. [Bitcoin Developer Guide — Mining and nonce space]

Alterar extranonce na coinbase muda a serialização e o TXID; recalculam-se o ramo correspondente da árvore de Merkle e a raiz de Merkle do cabeçalho. As outras transações não precisam de mudar. A raiz antiga não pode simplesmente permanecer sem recálculo. [Bitcoin Developer Guide — Mining and nonce space]

Dois bytes totalmente livres permitem 2^16 variantes. Com um nonce de 32 bits e os restantes dados fixos, o modelo oferece 2^48 combinações de entrada. É um espaço de tentativas diferentes, não um número de blocos encontrados nem uma garantia após esgotar a procura. [Bitcoin Developer Guide — Mining and nonce space]

BIP 34 exige a altura do bloco corretamente codificada no início do scriptSig da coinbase. O limite de 100 bytes aplica-se a todo esse scriptSig, não apenas a extranonce. A área livre não pode sobrescrever a altura nem violar o formato da transação. [BIP 34 — Height in coinbase] [Bitcoin Developer Reference — Coinbase input]

Stratum V2 divide extended extranonce num prefixo upstream fixo, numa parte reservada localmente e em espaço downstream. A divisão evita pesquisas sobrepostas inúteis. Um extranonce_prefix atribuído não é automaticamente uma área que o minerador final possa alterar livremente. [Stratum V2 — Extended extranonce and jobs]

Em SubmitSharesExtended, coinbase é montada na ordem coinbase_tx_prefix, extranonce_prefix, extranonce e coinbase_tx_suffix. Os bytes extranonce enviados devem ter o comprimento negociado. O mesmo número codificado com menos bytes não produz necessariamente a mesma transação. [Stratum V2 — Extended extranonce and jobs]

Um Standard Job de Stratum V2 usa uma raiz de Merkle fixa; só variam as partes permitidas de version, nonce e nTime. O equipamento padrão não envia ele próprio extranonce como um canal extended. Um nó superior pode alterar coinbase ao preparar uma tarefa nova. [Stratum V2 — Extended extranonce and jobs]

SetExtranoncePrefix de Stratum V2 aplica-se às tarefas enviadas depois da mensagem nesse canal. O resultado deve continuar associado ao job_id e espaço atribuídos corretos. O prefixo mais recente não substitui o registo da tarefa que produziu um resultado antigo. [Stratum V2 — Extended extranonce and jobs]

Para ter uma visão mais completa, leia este verbete junto com Nonce, Árvore de Merkle, Mining Share, Block Template. Também há referências a este verbete em ASIC Miner, Block Template, getblocktemplate.

DOC · 001Bitcoin Developer Guide — Mining and nonce spaceDocumentação ↗DOC · 002Stratum V2 — Extended extranonce and jobsEspecificação ↗DOC · 003BIP 34 — Height in coinbaseEspecificação ↗DOC · 004Bitcoin Developer Reference — Coinbase inputDocumentação ↗
Fontes em primeiro lugar · Não é recomendação de investimento