Blocos

O que é um bloco no Bitcoin?

Um bloco é um conjunto de transações que foram adicionadas à blockchain.

Como os blocos são formados?

Os blocos são construídos durante o processo de mineração.

Noções básicas de mineração

Quando você faz uma transação de bitcoin, ela não é adicionada à blockchain imediatamente. Em vez disso, ela é mantida em um conjunto temporário de transações.

Diagrama mostrando o memory pool dentro de um nó na rede bitcoin.

Eu o chamei de "conjunto de transações" aqui, mas o termo oficial é memory pool.

Se você é um minerador, sua função é reunir transações do conjunto de transações em um "bloco candidato" e tentar adicionar esse bloco candidato à blockchain.

Diagrama mostrando transações do memory pool sendo reunidas em um bloco candidato.

Cabeçalho do bloco

Cada bloco candidato recebe um cabeçalho de bloco, que é basicamente um conjunto de metadados contendo informações sobre o conteúdo do bloco.

Diagrama mostrando um cabeçalho de bloco sendo construído para um bloco candidato.

Os mineradores usam esse cabeçalho de bloco como ponto de partida ao tentar adicionar um bloco à blockchain.

Metadados – dados que descrevem outros dados, servindo como um rótulo informativo.

Como os blocos são adicionados à blockchain?

Para adicionar um bloco candidato à blockchain, você faz o hash dos dados do cabeçalho do bloco e torce para que o resultado fique abaixo de um certo valor alvo.

Diagrama mostrando o hash de um bloco candidato sendo comparado com o alvo atual.

O alvo é calculado a partir da dificuldade, que é um valor definido pela rede bitcoin para regular o quão difícil é adicionar um bloco de transações à blockchain.

Não se preocupe, eu sei que essa história de dificuldade e alvo é um pouco confusa no início, mas vai fazer mais sentido com o tempo.

Dificuldade
Um valor usado para regular a rapidez com que os blocos são resolvidos. Todos os nós concordam com o mesmo cálculo da dificuldade para a altura atual da blockchain. Ela se ajusta a cada 2.016 blocos (aproximadamente a cada 2 semanas) para ajudar a manter uma média de 10 minutos entre os blocos.

Pense no alvo como a barra do limbo para os blocos candidatos — quanto maior a dificuldade, mais baixo o alvo e mais difícil é encontrar um hash de bloco que fique abaixo desse valor.

Um número extra

Eu menti. Na verdade você não faz o hash do cabeçalho do bloco sozinho. Você o faz junto com um número extra.

Diagrama mostrando um nonce sendo usado para mudar o hash resultante de um cabeçalho de bloco.

Esse número extra é chamado de nonce, e é basicamente um campo coringa que os mineradores usam para ajudar a obter um hash de bloco abaixo do valor alvo.

Nonce – um número arbitrário usado apenas uma vez em uma comunicação criptográfica.

Se o primeiro nonce não funcionar (começando em 0), continue incrementando-o e fazendo o hash do cabeçalho do bloco. Com sorte, você encontrará um nonce que retorne um hash de bloco abaixo do valor alvo atual.

Diagrama mostrando um nonce bem-sucedido produzindo um hash de bloco abaixo do alvo atual.

Eu sei que esses valores de hash contêm letras, mas você ainda pode pensar neles como números, como quaisquer outros. Eles são simplesmente valores hexadecimais, e os computadores adoram trabalhar com eles.

Resolvendo o bloco

Assim que você encontra um nonce que produz um hash de bloco baixo o suficiente, o bloco é "resolvido" e todas as transações desse bloco são adicionadas à blockchain.

Diagrama mostrando um bloco minerado com sucesso sendo adicionado à blockchain.

Todos os mineradores agora voltam ao conjunto de transações e começam a trabalhar no próximo bloco candidato. Eles usarão o seu hash de bloco bem-sucedido no próximo cabeçalho de bloco deles (para que possam construir sobre o bloco que você acabou de minerar), e a corrida para adicionar um novo bloco de transações à blockchain começa de novo.

Bom trabalho.