225 / 691TARGET

Mining Target

Limite numérico da prova de trabalho

Mining Target é o limite para comparar o hash do cabeçalho. Distingue o número, a codificação compacta nBits e o alvo realmente exigido pelas regras para esse bloco.

Mining Target é um limite numérico não negativo para o hash do cabeçalho na verificação da prova de trabalho. Um alvo válido da rede deve ser positivo e permitido; o hash não pode excedê-lo. Um alvo menor torna a procura mais difícil.

Bitcoin Core v29.0 rejeita, na verificação de trabalho, um hash maior que o alvo derivado. A condição é hash ≤ target, não apenas estritamente menor. Compara-se o hash numérico de todo o cabeçalho, não só o nonce. [Bitcoin Core v29.0 — Proof-of-work checks]

Hashes numericamente diferentes podem ter o mesmo número de zeros iniciais. Os restantes dígitos e o seu valor em relação ao alvo também contam. Os zeros ilustram a raridade, mas não substituem a comparação completa hash ≤ target. [Bitcoin Core v29.0 — Proof-of-work checks]

O campo nBits tem 32 bits, enquanto o alvo é interpretado num espaço de 256 bits. A codificação contém expoente e coeficiente com bit de sinal. Por exemplo, 0x04123456 descodifica-se como 0x12345600; ilustra o formato, não o alvo atualmente exigido pela rede. [Bitcoin Core v29.0 — Compact arithmetic]

No cabeçalho de 80 bytes, nBits é serializado em quatro bytes little-endian. O número 0x1d00ffff corresponde assim a ff ff 00 1d. Não confundas a ordem dos bytes ao ler dados com a ordem dos algarismos do número apresentado. [Bitcoin Developer Reference — Block headers and nBits]

DeriveTarget em Bitcoin Core v29.0 rejeita alvos negativos, zero, transbordamentos e valores acima do powLimit da rede. Aumentar arbitrariamente nBits não basta. Descompactar a representação com êxito não prova que o alvo seja válido. [Bitcoin Core v29.0 — Proof-of-work checks]

A validação contextual compara nBits com GetNextWorkRequired para o bloco anterior e as regras da rede. Uma divergência produz bad-diffbits. Nem um hash abaixo de um alvo mais fácil escolhido pelo minerador justifica um nBits incorreto no cabeçalho. [Bitcoin Core v29.0 — Contextual and block validation]

Num modelo de hash uniforme de 256 bits e alvo permitido T, a probabilidade por tentativa é p = (T + 1) / 2^256: aceitam-se os valores de zero a T inclusive. É uma dedução da comparação; o alvo sozinho não define o hashrate nem o instante exato do próximo bloco. [Bitcoin Core v29.0 — Proof-of-work checks]

Além do cabeçalho, Bitcoin Core verifica a raiz das transações, coinbase, limites do bloco e validade das transações. Cumprir o alvo correto é necessário, mas não substitui estas verificações. Um hash baixo não corrige conteúdo inválido. [Bitcoin Core v29.0 — Contextual and block validation]

Para ter uma visão mais completa, leia este verbete junto com Share Difficulty, Proof of Work, Nonce, Cabeçalho de bloco. Também há referências a este verbete em ASIC Miner, Nonce, Mining Share, Share Difficulty.

DOC · 001Bitcoin Core v29.0 — Proof-of-work checksFonte primária ↗DOC · 002Bitcoin Developer Reference — Block headers and nBitsDocumentação ↗DOC · 003Bitcoin Core v29.0 — Compact arithmeticFonte primária ↗DOC · 004Bitcoin Core v29.0 — Contextual and block validationFonte primária ↗
Fontes em primeiro lugar · Não é recomendação de investimento