Blockchain - Prova de Trabalho
Como todas as transações têm carimbo de data / hora, precisamos implementar um servidor de carimbo de data / hora distribuído em uma rede ponto a ponto. Isso requer alguma implementação adicional e essa é a Prova de Trabalho que descreverei agora. Para cada bloco, agora adicionamos mais um item chamadoNonce como mostrado na figura abaixo -
Nonce é um número tal que o hash do bloco atende a um determinado critério. Esse critério pode ser que o hash gerado deve ter seus quatro dígitos iniciais para ser zero.
Portanto, o hash gerado seria semelhante a 000010101010xxx. Geralmente, o minerador começa com um valor Nonce de 0 e continua incrementando-o até que o hash gerado atenda ao critério especificado.
Observe que a geração de hash funciona aleatoriamente e está além do seu controle - ou seja, você não pode forçar a função de hash a gerar um determinado hash. Portanto, pode levar várias iterações até que o hash desejado com quatro zeros à esquerda seja gerado. O tempo esperado para a geração de um bloco no sistema bitcoin é de 10 minutos. Assim que o minerador extrair o bloco com sucesso, ele o libera no sistema, tornando-o agora o último bloco da cadeia.
Observe que há vários mineiros competindo para gerar o bloco legítimo. O sistema Bitcoin premia o primeiro mineiro bem-sucedido dando-lhe certos bitcoins. Em geral, o minerador com mais poder de computação pode ser um dos primeiros vencedores. Isso pode causar ataques a todo o sistema por aqueles que possuem um grande poder de processamento. Descreverei os ataques e como eles são mitigados no final deste tutorial.