Blockchain/Nível II · Mecânica/2.3 Blocos e a cadeia/Lição 4
Prova de trabalho e o alvo
O bilhete de loteria que custa energia para comprar e um hash para verificar
MateriaisUma interface de explorador de blocosUma calculadora hexadecimal ou ambiente de programação capaz de SHA-256A documentação Bitcoin Developer Reference
Curiosidade
- Por que um alvo numérico mais baixo torna mais difícil encontrar um hash válido?
- Como um valor de quatro bytes pode codificar um número grande o suficiente para restringir 2^256 possibilidades?
- O que acontece com o tempo de bloco esperado quando o poder de hash dobra, mas o alvo permanece inalterado?
Explorar
- Um bloco é aceito somente se resolver um quebra-cabeça computacional. O minerador precisa encontrar um cabeçalho de 80 bytes cujo hash SHA-256 duplo seja numericamente menor ou igual a um limite específico, conhecido como alvo. Essa restrição transforma o processo de criação do bloco em uma busca por um número raro dentro de um espaço enorme de 2^256 hashes possíveis. A validade de qualquer bloco candidato depende inteiramente dessa única desigualdade matemática.
- O próprio alvo não é armazenado em sua forma completa de 32 bytes, pois isso consumiria espaço excessivo no cabeçalho. Em vez disso, ele é compactado em quatro bytes chamados “nBits”, utilizando um esquema de codificação mantissa-expoente. O formato tem perda de precisão, mantendo apenas uma mantissa de três bytes; portanto, o alvo é ligeiramente arredondado, o que na prática não tem nenhum custo. A decodificação desses quatro bytes reconstitui o número enorme de 256 bits que define o limite superior para valores de hash aceitáveis.
- Para encontrar um hash válido, os mineradores percorrem variações dos campos do cabeçalho. A variável principal é o nonce de 32 bits, que oferece aproximadamente 4,3 bilhões de valores distintos por ciclo de tentativas. Quando a velocidade do hardware esgota essas combinações instantaneamente, os mineradores modificam o extra-nonce na transação coinbase ou ajustam o timestamp para gerar novas raízes de Merkle e configurações de cabeçalho. Cada alteração produz uma saída de hash completamente diferente, criando, na prática, um novo bilhete de loteria.
- O trabalho esperado aumenta em proporção direta à dificuldade, enquanto o alvo se move na direção oposta: quando a rede reajusta o alvo após o aumento do poder de hash, o alvo diminui, exigindo mais zeros iniciais na representação binária para uma solução válida. O número esperado de hashes necessários para encontrar um bloco é aproximadamente a dificuldade multiplicada por 2^32. Esse escalonamento garante que, independentemente de a mineração ser feita em laptops ou em fazendas industriais, o intervalo médio entre os blocos permaneça estável, em aproximadamente dez minutos.
- A verificação é assimétrica em relação à criação. Enquanto encontrar um hash válido pode exigir bilhões de tentativas, verificá-lo requer apenas um SHA-256 duplo do cabeçalho e uma comparação com o alvo. Portanto, a verificação da prova de trabalho é instantânea, embora a validação completa de um bloco ainda signifique verificar todas as transações nele contidas. O modelo de segurança se baseia nessa disparidade: criar trabalho é caro, mas confiar nesse trabalho é barato.
- O bloco gênese foi minerado com dificuldade 1, a mais baixa que as regras permitem; mesmo assim, um hash válido exigia cerca de 32 bits zero iniciais, ou seja, aproximadamente um sucesso a cada 4,3 bilhões de tentativas. Os blocos recentes exigem muito mais zeros iniciais, pois o poder de hash global cresceu várias ordens de grandeza. Comparar a representação hexadecimal do hash do bloco 1 com a de um bloco atual revela essa mudança drástica de um campo aberto para um espaço de busca fortemente restrito.
Fatos-chave
- O hash do cabeçalho de um bloco válido do Bitcoin deve ser numericamente menor ou igual ao seu alvo de dificuldade.
- O alvo é armazenado de forma compacta em quatro bytes como “nBits”, usando codificação mantissa-expoente.
- Os mineradores variam o nonce de 32 bits, o extra-nonce da coinbase e o timestamp para gerar novos candidatos a hash.
- A dificuldade é definida como o alvo máximo possível dividido pelo alvo atual.
- Verificar a prova de trabalho de um bloco requer um SHA-256 duplo do cabeçalho e uma comparação.
- O bloco gênese foi minerado com dificuldade 1.
Exercício nove, seis, três, um
9ReunirListe 9 componentes ou variáveis distintos envolvidos no cálculo da prova de trabalho para o cabeçalho de um bloco do Bitcoin.
6AgruparAgrupe esses 9 itens em 6 categorias com base no fato de serem fixos, variáveis por tentativa, variáveis por ciclo, codificados de forma compacta, derivados de transações ou usados para verificação.
3DestilarReduza os 6 grupos a 3 princípios fundamentais que regem como a dificuldade varia com o poder de hash da rede.
1CristalizarEscreva 1 frase explicando por que a prova de trabalho é difícil de produzir, mas fácil de verificar.
Verificação de fatos
Datas, números e afirmações verificados com as fontes publicadas listadas abaixo.