Dentro de um bloco: cabeçalho, altura, tamanho e subsídio
Um bloco é um cabeçalho pequeno e fixo mais um corpo de transações. Os seis campos do cabeçalho, o que a mineração faz hash e o que são altura e tamanho.
Do que é feito um bloco?
Um bloco tem duas partes: um cabeçalho e um corpo. A mineração faz hash só do cabeçalho.
- O corpo guarda as transações. Ele pode ter algumas centenas de bytes ou vários megabytes, conforme o movimento da rede.
- O cabeçalho é um resumo fixo do bloco. Na maioria das redes, ele tem exatamente 80 bytes.
- A mineração faz hash do cabeçalho e de mais nada.
Esse último ponto é o fato mais útil deste artigo. Um minerador testa bilhões de variações por segundo. Ele não conseguiria fazer isso se cada tentativa exigisse refazer o hash de um bloco cheio de transações. Ele refaz o hash de apenas 80 bytes.
Quais são os seis campos do cabeçalho?
O cabeçalho tem seis campos. Cada um está lá por um motivo, e dois deles fazem a maior parte do trabalho.
- A versão.
- O hash do bloco anterior.
- A raiz de Merkle, um único hash que resume todas as transações.
- Um carimbo de tempo.
- Os bits de dificuldade.
- O nonce, um contador que o minerador pode mudar.
O hash do bloco anterior é o que forma a cadeia. Cada cabeçalho aponta o bloco que veio antes dele. Reescrever um bloco antigo mudaria o hash dele. Isso quebraria o cabeçalho seguinte, e o seguinte, até a ponta da cadeia. Esse único campo é todo o argumento de segurança da prova de trabalho.
A raiz de Merkle resume todas as transações do corpo. Mude uma transação em um único byte, e a raiz de Merkle muda. Aí o cabeçalho muda, e todos os hashes testados até ali perdem o valor. É assim que 80 bytes podem representar com honestidade um bloco de qualquer tamanho.
Os bits de dificuldade são o alvo que o hash precisa ficar abaixo, em forma compacta. O carimbo de tempo indica mais ou menos quando o bloco foi feito, e pode ser aproximado. O nonce é o campo que o minerador pode mudar livremente. Essa liberdade é o que torna a busca possível.
O que acontece quando o nonce acaba?
O nonce é um contador pequeno. Um minerador moderno usa todos os valores dele quase na hora. Isso não é um beco sem saída. O nonce é só a coisa mais fácil de mudar, nunca a única.
Quando ele acaba, o minerador muda outra coisa que alimenta o cabeçalho.
- O carimbo de tempo pode mudar.
- A transação coinbase (a primeira transação do bloco, explicada abaixo) pode ser alterada um pouco. Isso muda a raiz de Merkle, o que dá um cabeçalho totalmente novo para buscar.
Em um pool, é para isso que serve o extra nonce. O pool dá a cada minerador um ponto de partida diferente. Assim, dois mineradores nunca testam os mesmos números.
O que é a altura do bloco?
A altura do bloco é quantos blocos vieram antes de um bloco. O bloco gênese, o primeiro de todos, tem altura zero. O seguinte tem altura um, e assim por diante. É o número ao lado de cada entrada na página de blocos do pool e em qualquer explorador.
A altura não fica de fato guardada no cabeçalho. Ela vem da posição do bloco na cadeia.
Na maioria das redes modernas, a altura também é escrita na transação coinbase. Essa regra veio depois, para que dois blocos em alturas diferentes nunca sejam idênticos byte a byte. Mesmo assim, a resposta oficial para a altura de um bloco é a posição dele.
A altura também é o jeito natural de contar confirmações. Uma transação com seis blocos por cima está em um bloco seis abaixo da ponta. Cada novo bloco deixa mais caro reescrevê-la.
O que o tamanho do bloco mede?
O tamanho do bloco é, na prática, o tamanho do corpo. Perto dele, o cabeçalho é um erro de arredondamento. Um limite de tamanho de bloco trata de quantas transações cabem, não do cabeçalho.
Um bloco cheio e um bloco vazio exigem exatamente o mesmo trabalho de mineração. A dificuldade decide o quanto é difícil encontrar um bloco. O tamanho decide o quanto o bloco carrega. As duas coisas não têm relação, e confundi-las leva a muitas ideias erradas sobre taxas.
O tamanho afeta, sim, o mercado de taxas. Quando há mais transações querendo entrar do que espaço, as que oferecem taxas maiores entram primeiro. O total de taxas do bloco sobe, e isso vai direto para o que o bloco paga.
O que é a transação coinbase?
A primeira transação de cada bloco é especial. Ela não tem remetente. Ela cria moedas do nada e as paga a quem fez o bloco.
Ela se chama transação coinbase. Não tem nada a ver com a corretora de mesmo nome.
Ela paga a recompensa do bloco, que tem duas partes.
- O subsídio, as moedas recém-emitidas. O cronograma de emissão da rede define esse valor, e na maioria das moedas ele diminui com o tempo.
- As taxas de todas as outras transações do bloco. Os usuários as incluem para que suas transações entrem.
Em um pool, a coinbase paga o pool. O pool então divide a recompensa entre todos que enviaram shares naquela rodada. Isso não é um desvio. É assim que um pool paga muitas pessoas com uma recompensa que chega como um único pagamento indivisível.
Por que isso importa enquanto você minera?
Quando a forma de um bloco fica clara, três coisas ficam óbvias. As três aparecem o tempo todo.
- Um bloco novo faz o seu trabalho perder o valor na hora. O hash do bloco anterior mudou, então o cabeçalho que você buscava não existe mais. Tudo o que você enviar para ele depois disso é um share stale, e nenhuma velocidade resolve isso.
- O pool envia trabalho novo com frequência. Cada nova transação que o pool quer incluir muda a raiz de Merkle. Um trabalho mais novo traz mais taxas, o que significa mais recompensa pelo mesmo esforço.
- O tamanho do bloco nunca aparece em uma estimativa de ganhos. O que você ganha depende da dificuldade, do subsídio e das taxas. Não depende dos bytes do corpo.
A página de blocos do pool mostra a altura de cada bloco, a recompensa dele e quando ele foi encontrado. Essa linha é a parte útil de tudo isso. O explorador mostra o resto, incluindo a transação coinbase que pagou o bloco.