Blockchain/Nível II · Mecânica/2.3 Blocos e a cadeia/Lição 1
O cabeçalho do bloco
Oitenta bytes de metadados que ancoram toda a cadeia
MateriaisUm explorador de blocos com capacidade de exibição em hexadecimal brutoUm editor hexadecimal ou uma calculadora online de hash SHA-256
Curiosidade
- Como uma estrutura de apenas 80 bytes consegue comprometer criptograficamente dados de transações no valor de milhões de dólares?
- Quais regras específicas impedem que um minerador manipule o campo de data/hora para obter vantagem?
- Por que um smartphone pode verificar a segurança da rede Bitcoin sem baixar todo o seu histórico?
Explorar
- Cada bloco de Bitcoin começa com um cabeçalho de 80 bytes, seguido por uma lista de transações de comprimento variável. Embora a lista de transações possa chegar a aproximadamente quatro milhões de bytes por bloco, apenas o cabeçalho é utilizado para o hashing do proof-of-work e para a identificação da cadeia. Essa disparidade extrema de tamanho faz com que o cabeçalho atue como uma impressão digital compacta de todo o conteúdo, permitindo que os nós processem os metadados antes de baixar os dados em massa.
- O primeiro campo é “version”, que ocupa quatro bytes. Originalmente destinado a rastrear iterações de software, ele agora contém bits de sinalização para soft forks sob o BIP9. Os mineradores definem números de versão específicos para indicar suporte a novas regras de consenso antes da ativação. Este campo também inclui restrições; por exemplo, o BIP34 exigia que os blocos da versão 2 incorporassem a altura do bloco no script da transação coinbase, demonstrando como o cabeçalho impõe mudanças estruturais em toda a rede.
- O “hash do bloco anterior” (32 bytes) conecta cada bloco ao seu pai, contendo o hash duplo SHA-256 do cabeçalho anterior. Alterar qualquer byte em um bloco antigo modifica seu hash, o que interrompe a conexão com todos os blocos subsequentes. Essa cadeia de hashes garante que os dados históricos não possam ser alterados sem refazer o trabalho computacional para todos os blocos seguintes.
- A “raiz Merkle” (32 bytes) serve como uma impressão digital criptográfica para todas as transações dentro do bloco. Ela é obtida por meio do hashing recursivo de pares de IDs de transação até que reste um único valor. Essa estrutura permite a verificação simplificada de pagamentos, na qual um cliente leve pode comprovar a inclusão de uma transação específica usando apenas essa raiz e um pequeno conjunto de hashes relacionados, em vez de baixar o bloco inteiro.
- O ‘timestamp’ (4 bytes) registra o horário de criação em segundos da era Unix. As regras de consenso restringem esse campo para evitar manipulações: ele deve exceder a mediana do tempo dos 11 blocos anteriores e é rejeitado por um nó se estiver mais de duas horas à frente do relógio desse mesmo nó (a partir do Bitcoin Core 27, utiliza-se o horário do sistema do nó; versões anteriores usavam um tempo ajustado pelos pares). Essas restrições garantem que os tempos dos blocos permaneçam razoavelmente precisos para os cálculos de dificuldade, ao mesmo tempo em que permitem alguma variação devido a atrasos na propagação pela rede.
- Os campos restantes são ‘nBits’ (4 bytes), uma codificação compacta do alvo de prova de trabalho, e ‘nonce’ (4 bytes), um número arbitrário que os mineradores alteram para encontrar um hash válido. Como os cabeçalhos são pequenos, armazenar todos os cabeçalhos desde 2009 requer menos de 100 MB de espaço em disco. Um cliente leve pode conter toda essa história, verificar independentemente todas as restrições de prova de trabalho e assumir, sem verificar as transações, que a cadeia com o maior esforço acumulado é válida.
Fatos-chave
- O cabeçalho do bloco do Bitcoin consiste em exatamente seis campos, totalizando 80 bytes.
- O campo ‘version’ contém bits de sinalização de soft-fork, conforme definido no BIP9.
- O carimbo de data/hora de um bloco deve exceder a mediana dos 11 blocos anteriores e não estar mais do que duas horas à frente do relógio do nó validador.
- Um bloco completo pode ser quase 50.000 vezes maior que seu cabeçalho devido aos dados das transações.
- Armazenar todos os cabeçalhos do Bitcoin desde a gênese requer menos de 100 MB de espaço em armazenamento.
- O campo ‘nBits’ armazena o alvo de dificuldade em um formato compacto uint32.
Exercício nove, seis, três, um
9ReunirListe 9 coisas que podem ser lidas em um bloco em um explorador: seus seis campos de cabeçalho, além do hash do bloco, da altura e da dificuldade derivadas deles.
6AgruparAgrupe os 9 em 6: conexão da cadeia, compromisso com as transações, tempo, alvo de mineração, busca de mineração e valores derivados.
3DestilarReduza de 6 para 3 os trabalhos que o cabeçalho realiza para a rede.
1CristalizarEscreva uma afirmação que defina a relação entre o cabeçalho de 80 bytes e a lista de transações de vários megabytes em termos de compromisso criptográfico.
Verificação de fatos
Datas, números e afirmações verificados com as fontes publicadas listadas abaixo.