Visão Geral
O nonce ("número usado uma vez") é um campo de 32 bits no cabeçalho do bloco Bitcoin que os mineradores manipulam ao buscar uma prova de trabalho válida. Ao alterar o nonce e recalcular o hash do cabeçalho do bloco, os mineradores produzem diferentes saídas de hash, procurando uma que fique abaixo do alvo de dificuldade atual.
O Nonce no Cabeçalho do Bloco
Cabeçalho de Bloco (80 bytes):
┌──────────────┬──────────────────┬──────────────┐
│ Versão (4B) │ Hash Bloco Prev │ Raiz Merkle │
│ │ (32B) │ (32B) │
├──────────────┼──────────────────┼──────────────┤
│ Timestamp │ Bits Dificuldade │ Nonce │
│ (4B) │ (4B) │ (4B) │
└──────────────┴──────────────────┴──────────────┘
↑
Mineradores variam isso
O Problema do Espaço de Nonce
O nonce é apenas de 32 bits, o que significa que fornece 2^32 (cerca de 4,3 bilhões) valores possíveis. Os modernos mineradores ASIC podem esgotar todo o espaço de nonce em menos de um segundo. Quando isso acontece, os mineradores devem alterar outros campos para obter um novo conjunto de hashes para tentar:
- Timestamp: Pode ser ajustado dentro de um intervalo válido
- Transação coinbase: Alterar os dados coinbase muda a raiz Merkle, produzindo um espaço de nonce completamente novo
- Extra nonce: Um campo dentro da transação coinbase usado especificamente para este propósito
Loop de Mineração
while true:
for nonce in 0 to 2^32 - 1:
hash = SHA256(SHA256(cabecalho_com_nonce))
if hash < alvo:
return bloco // Bloco válido encontrado!
// Espaço de nonce esgotado
modificar_extra_nonce_coinbase()
recalcular_raiz_merkle()
Conceitos Errôneos Comuns
O nonce não é um valor secreto ou criptográfico — é simplesmente um contador que os mineradores iteram. Não há nada de especial no nonce vencedor; qualquer valor que produza um hash abaixo do alvo é igualmente válido. O processo é pura força bruta sem atalho matemático.