O que é um Hash de destino?
Na mineração de criptomoedas, um hash de destino é um valor numérico que um cabeçalho de bloco em hash deve ser menor ou igual para que um novo bloco seja concedido a um minerador. O hash de destino é usado para determinar a dificuldade da entrada e pode ser ajustado para garantir que os blocos sejam processados com eficiência.
Como exemplo, hashes de destino são usados em criptomoedas de prova de trabalho (PoW) como bitcoin para definir a dificuldade de mineração atual. Outros sistemas de prova podem não exigir um hash de destino.
Principais vantagens
- O hash alvo é um número de 256 bits com o qual os mineradores de criptomoedas competem para “ganhar” aleatoriamente a recompensa em bloco por seu trabalho de mineração.
- O hash de um cabeçalho de bloco de criptomoeda deve ser igual ou inferior ao destino da rede para aceitar a prova de validade da prova de trabalho.
- A rede bitcoin ajusta a dificuldade de mineração aumentando ou diminuindo o hash de destino para preservar um intervalo médio de 10 minutos entre os novos blocos.
Como funciona um hash de destino
As criptomoedas contam com o uso de blockchains que contêm o histórico de todas as transações. Essas transações são “hash” ou criptograficamente codificadas em uma série de caracteres alfanuméricos. O hash envolve pegar uma string de dados de qualquer comprimento e executá-la por meio de um algoritmo para produzir uma saída com comprimento fixo. A saída sempre terá o mesmo comprimento, independentemente de quão grande ou pequena seja a entrada, embora o número de permutações de um hash seja astronomicamente grande. Cada bloco conterá o hash do cabeçalho do bloco anterior.
Validar e codificar o blockchain é conhecido como mineração. A mineração envolve o uso de computadores para executar algoritmos de hash para processar o bloco mais recente, com as informações necessárias na mineração encontradas no cabeçalho do bloco. A rede criptomoeda define um valor de destino para este hash – o hash de destino – e os mineiros tentam determinar qual é esse valor testando todos os valores possíveis.
O cabeçalho do bloco contém o número da versão do bloco, um timestamp, o hash usado no bloco anterior, o hash da Raiz Merkle, o nonce e o hash de destino. O bloco é gerado pegando o hash do conteúdo do bloco, adicionando uma string aleatória de números (o nonce) e fazendo o hash do bloco novamente.
Se o hash atender aos requisitos do destino, o bloco será adicionado ao blockchain. Percorrer as soluções para adivinhar o nonce é conhecido como prova de trabalho (PoW), e o minerador que conseguir encontrar o valor recebe o bloco e é pago em criptomoeda.
Considerações Especiais
O hash de destino para bitcoin é um número de 256 bits e pode ser encontrado no cabeçalho do bloco. A mineração de um bloco exige que o minerador produza um valor (um nonce) que, depois de fazer o hash, é menor ou igual ao usado no bloco mais recente aceito pela rede bitcoin. Esse número está entre 0- (a menor opção) e 256 bits (a maior opção), mas é improvável que seja o número máximo.
Como o hash de destino pode ser um número enorme, o minerador pode ter que testar um grande número de valores antes de ter sucesso. Um mineiro malsucedido precisa esperar pelo próximo bloco, e é por isso que os mineiros que encontram uma solução de hash são comparados a vencedores de uma corrida ou na loteria.
O hash de destino é ajustado periodicamente. As funções hash usadas para gerar o novo destino têm propriedades específicas projetadas para tornar o blockchain (e sua criptomoeda) seguro. Este processo é determinístico, o que significa que produzirá o mesmo resultado cada vez que a mesma entrada for usada. É rápido o suficiente para não demorar muito para retornar um hash para a entrada. Também torna muito difícil determinar a entrada, especialmente para grandes números, e faz pequenas alterações no resultado da entrada em uma saída hash muito diferente.