Pular para o conteúdo
buybitcoinsmart

Glossário / Mineração e consenso

Cabeçalho de bloco

Outros nomes: Cabeçalho.

O que é um cabeçalho de bloco?
Um cabeçalho de bloco é o resumo de 80 bytes de um bloco: versão, hash do cabeçalho anterior, raiz de Merkle, carimbo de data e hora, nBits e nonce, e é a parte cujo hash os mineradores realmente calculam.

Os mineradores nunca calculam o hash dos pagamentos diretamente. Eles calculam o hash deste registro de tamanho fixo, que se compromete com a lista de transações por meio da raiz de merkle e com cada bloco anterior por meio do hash do cabeçalho anterior. Oitenta bytes por bloco é pequeno o bastante para que a cadeia de cabeçalhos completa desde janeiro de 2009 caiba com folga em um celular, e esse fato é o que torna a verificação leve possível.

Como funciona

Um cabeçalho de bloco é formado por seis campos em uma ordem fixa, e seus deslocamentos em bytes nunca mudam.

A versão ocupa os bytes 0 a 3. O hash do cabeçalho do bloco anterior ocupa os bytes 4 a 35. A raiz de merkle ocupa os bytes 36 a 67. O timestamp, em segundos desde a época Unix, fica nos bytes 68 a 71. O nBits, o alvo de dificuldade codificado, fica nos bytes 72 a 75. O nonce preenche os bytes 76 a 79. Todos os campos são armazenados em little endian, e é por isso que o hexadecimal que você vê em um explorador parece invertido byte a byte em comparação com o hexadecimal de um despejo bruto do bloco.

O hash do bloco não é um desses campos. Ele é calculado aplicando SHA-256 duas vezes sobre os 80 bytes, e os nós o derivam em vez de confiar nele, e é exatamente por isso que um bloco não pode mentir sobre sua própria identidade. A prova de trabalho é a mesma operação com uma comparação anexada: o número resultante precisa ser igual ou inferior ao alvo que o nBits codifica.

Dois dos campos carregam regras que surpreendem as pessoas. O timestamp não precisa ser exato. Ele só precisa superar a mediana dos timestamps dos onze blocos anteriores e ficar dentro de duas horas do relógio do próprio nó receptor, então cabeçalhos com horários um pouco fora de ordem são comuns e válidos. O campo de versão também não é mais um simples contador. A sinalização de soft fork conforme o BIP9 e o version rolling conforme o BIP320 tomam bits emprestados dele, então um número de versão em um cabeçalho moderno é um campo de bits, e não um número de lançamento de software.

Onde você o vê

Os cabeçalhos de bloco são a primeira coisa que um nó novo baixa e a única coisa que muitas carteiras guardam.

O Bitcoin Core sincroniza cabeçalhos primeiro desde a versão 0.10, lançada em fevereiro de 2015. O nó busca e valida a cadeia de cabeçalhos, confirma que ela carrega prova de trabalho real e só então solicita os corpos dos blocos, o que pode fazer a partir de vários pares em paralelo porque já sabe o que está procurando. Os clientes leves param nessa primeira etapa: uma carteira SPV ou Neutrino guarda cabeçalhos e verifica se o ramo de merkle de uma transação se conecta a um deles. Com 80 bytes cada um, uma cadeia de 900.000 cabeçalhos ocupa 72 MB, e é por isso que isso funciona com dados móveis.

O cabeçalho do bloco gênese é o exemplo canônico para inspecionar. Sua versão é 1, seu hash de cabeçalho anterior é só zeros, sua raiz de merkle é 4a5e1e4b e assim por diante, seu timestamp é 1231006505, que é 3 de janeiro de 2009, seu valor nBits é 0x1d00ffff, e seu nonce é 2083236893. Você mesmo pode calcular o hash desses 80 bytes e obter o conhecido hash de bloco que começa com dez zeros. Se você quiser ver qualquer outro cabeçalho, a chamada RPC getblockheader do Bitcoin Core retorna exatamente esses campos e nada mais.

Não confundir com

Perguntas frequentes

O hash do bloco é armazenado no cabeçalho do bloco?

Não. O hash do bloco é calculado aplicando SHA-256 duas vezes ao cabeçalho de 80 bytes, então cada nó o deriva de forma independente. Nada dentro de um bloco declara seu próprio hash.

Qual é o tamanho da cadeia completa de cabeçalhos de bloco?

Cerca de 72 MB a uma altura de 900.000 blocos, já que cada cabeçalho tem exatamente 80 bytes. É por isso que uma carteira de celular consegue verificar a estrutura da cadeia sem baixar centenas de gigabytes de dados de transações.

Leia a seguir

Termos relacionados

Mais em Mineração e consenso

Ler esta página em inglês