Bloco candidato
Em poucas palavras, um bloco candidato é um bloco que um
node de mineração (minerador) tenta minerar para receber as recompensas do bloco. Portanto, um bloco candidato pode ser descrito como um bloco temporário que será validado ou descartado pela rede. Os mineradores competem entre si para validar o próximo bloco e adicioná-lo à blockchain, mas primeiro precisam criar um bloco candidato para participar da competição de
mineração.
Os blocos candidatos são criados por mineradores coletando e organizando múltiplas transações não confirmadas da mempool (pool de memória). As transações são então submetidas a uma função de hash para formar uma estrutura de
Merkle tree (árvore de Merkle), que eventualmente produzirá uma Merkle root, também chamada de root hash (raiz de Merkle ou hash raiz). A Merkle root é um hash único que representa todos os hashes anteriores daquela árvore e, portanto, todas as transações que foram incluídas naquele bloco específico.
O root hash – junto com o hash do bloco anterior e um número aleatório chamado
nonce – é então inserido no cabeçalho do bloco. O cabeçalho do bloco é então submetido à função de hash pelo minerador, gerando um saída (output) baseada nesses componentes (root hash, hash do bloco anterior e nonce) além de alguns outros elementos. O output resultante é o hash do bloco e servirá como um identificador exclusivo do bloco recém-gerado (bloco candidato).
Para ser considerado válido, o output (hash do bloco) deve começar com um certo número de zeros (e deve ser menor que um valor-alvo definido pelo protocolo). Isso significa que o processo de mineração é baseado em múltiplas tentativas (tentativa e erro), pois os nodes de mineração precisam executar uma infinidade de funções de hash com diferentes valores de nonce até eventualmente produzir um hash de bloco válido. O hash do bloco produzido é o que prova que o minerador fez o seu trabalho corretamente (
Proof of Work).
Depois que um minerador encontra um hash de bloco válido, seu bloco candidato será transmitido para o restante dos nodes da rede, que verificarão a autenticidade do hash. Se tudo estiver correto, o bloco candidato será registrado na
blockchain. Nesse momento, cada node de validação atualiza sua cópia dos dados da blockchain para refletir o novo bloco minerado e o respectivo minerador recebe a recompensa do bloco.