Intermediário Aula 4 4 min de leitura

O bloco por dentro: cabeçalho, raiz de merkle e nonce

Oitenta bytes de cabeçalho resumem milhares de transações e respondem à pergunta que o minerador está tentando responder.

Um bloco de bitcoin carrega alguns milhares de transações e chega perto de dois megabytes. O que o minerador realmente tenta resolver tem oitenta bytes e caberia escrito à mão numa linha de papel. Tudo o mais entra nessa linha por representação.

Esses oitenta bytes são o cabeçalho, e ele tem seis campos. Quatro bytes de versão, dizendo quais regras o bloco segue. Trinta e dois bytes com o hash do cabeçalho anterior, que é o que faz a corrente ser corrente. Trinta e dois bytes com a raiz de merkle, que resume as transações. Quatro bytes de data e hora. Quatro bytes com o alvo de dificuldade daquele momento. E quatro bytes de nonce, o número que o minerador varia.

A raiz de merkle merece atenção, porque é ela que faz milhares de transações caberem em trinta e dois bytes. O método é de Ralph Merkle, patenteado em 1979, e funciona por casamento: calcula-se o hash de cada transação, juntam-se os hashes dois a dois e calcula-se o hash de cada par, e repete-se até sobrar um só. Esse último é a raiz. Trocar um único satoshi em qualquer transação muda o hash dela, muda o hash do par, e sobe mudando tudo até a raiz.

Mil fios trançados dois a dois terminam num cabo só, e puxar o cabo testa todos.

Dessa estrutura sai um bônus enorme. Para provar que uma transação está dentro de um bloco, não é preciso ter o bloco: bastam o caminho de hashes que sobe daquela folha até a raiz. Num bloco com quatro mil transações, são doze hashes. É por isso que uma carteira de celular consegue confirmar um pagamento sem baixar a blockchain inteira.

Agora, o que o minerador faz. Ele monta o bloco, calcula a raiz, preenche o cabeçalho e calcula o hash dos oitenta bytes. Se o resultado for menor que o alvo, ganhou. Se não, muda o nonce e tenta de novo. Cada tentativa é uma aposta independente, e não existe atalho — é a mesma unidirecionalidade da função de hash, agora usada como sorteio.

Só que quatro bytes de nonce dão pouco mais de quatro bilhões de possibilidades, e uma máquina moderna esgota isso em uma fração de segundo. Quando acaba, o minerador precisa mudar alguma outra coisa do cabeçalho para ter um sorteio novo. Ele ajusta a data em alguns segundos, e sobretudo mexe na primeira transação do bloco, a que paga a recompensa a ele mesmo: qualquer alteração ali muda o hash dela, muda a raiz de merkle e devolve quatro bilhões de tentativas novas.

Esgotadas as tentativas, ele reescreve a primeira linha e recomeça a busca inteira.

Essa primeira transação é especial de outras formas. Ela não tem entradas, porque cria moedas do nada segundo a regra da emissão, e recolhe também todas as taxas do bloco. E ela tem um campo livre, onde o minerador escreve o que quiser — foi ali que Satoshi deixou a manchete de jornal no bloco gênese, e é ali que grandes mineradores assinam os blocos que produzem até hoje.

O que o minerador não pode mexer é o hash do bloco anterior. Ele é dado, veio pronto, e prende o bloco novo à ponta exata da corrente. Alterar uma transação de um bloco antigo mudaria a raiz daquele bloco, mudaria o hash do cabeçalho dele, e o bloco seguinte passaria a apontar para um lugar que não existe — junto com todos os que vieram depois.

O elo novo se forja na ponta do que já está lá. O que já está lá não se toca.

Repare no equilíbrio: encontrar o nonce custa uma quantidade absurda de energia, e conferir o resultado custa um único cálculo. Qualquer nó, num computador comum, refaz o hash daqueles oitenta bytes em microssegundos e sabe se o trabalho foi feito. É essa assimetria — cara de produzir, barata de verificar — que sustenta a rede inteira.

Falta explicar o alvo, aquele campo de quatro bytes que decide quão pequeno o hash precisa ser. Ele muda sozinho, a cada 2.016 blocos, e é o que mantém o relógio da rede batendo a cada dez minutos independentemente de quantas máquinas estejam ligadas. Na próxima aula, a dificuldade.