O que significa Prova de Trabalho?
A prova de trabalho descreve um sistema que exige uma quantidade de esforço não insignificante, mas viável, para impedir o uso frívolo ou mal-intencionado do poder da computação, como enviar emails de spam ou iniciar ataques de negação de serviço. O conceito foi adaptado ao dinheiro por Hal Finney em 2004 através da idéia de "prova reutilizável do trabalho". Após sua introdução em 2009, o bitcoin se tornou a primeira aplicação amplamente adotada da ideia de Finney (Finney também foi o destinatário da primeira transação de bitcoin). A prova de trabalho também forma a base de muitas outras criptomoedas.
Prova de trabalho explicada
Esta explicação se concentrará na prova do trabalho, pois ela funciona na rede bitcoin. Bitcoin é uma moeda digital sustentada por um tipo de livro distribuído conhecido como "blockchain". Esse livro contém um registro de todas as transações de bitcoin, organizadas em "blocos" seqüenciais, para que nenhum usuário possa gastar duas de suas participações. Para evitar violações, o razão é público ou "distribuído"; uma versão alterada seria rapidamente rejeitada por outros usuários.
A maneira como os usuários detectam adulterações na prática é através de hashes, longas seqüências de números que servem como prova de trabalho. Coloque um determinado conjunto de dados por meio de uma função de hash (o bitcoin usa SHA-256) e ele apenas gerará um hash. Devido ao "efeito avalanche", no entanto, mesmo uma pequena alteração em qualquer parte dos dados originais resultará em um hash totalmente irreconhecível. Qualquer que seja o tamanho do conjunto de dados original, o hash gerado por uma determinada função terá o mesmo comprimento. O hash é uma função unidirecional: não pode ser usado para obter os dados originais, apenas para verificar se os dados que geraram o hash correspondem aos dados originais.
Gerar qualquer hash para um conjunto de transações de bitcoin seria trivial para um computador moderno; portanto, para transformar o processo em "trabalho", a rede de bitcoin define um certo nível de "dificuldade". Essa configuração é ajustada para que um novo bloco seja "extraído" - adicionado à blockchain gerando um hash válido - aproximadamente a cada 10 minutos. A dificuldade de configuração é obtida estabelecendo um "alvo" para o hash: quanto menor o alvo, menor o conjunto de hashes válidos e mais difícil é gerar um. Na prática, isso significa um hash que começa com uma longa cadeia de zeros: o hash do bloco # 429818, por exemplo, é 000000000000000000004dd3426129639082239efd583b5273b1bd75e8d78ff2e8d. Esse bloco contém 2.012 transações envolvendo pouco mais de 1.000 bitcoin, bem como o cabeçalho do bloco anterior. Se um usuário alterasse o valor de uma transação por 0, 0001 bitcoin, o hash resultante seria irreconhecível e a rede rejeitaria a fraude.
Como um determinado conjunto de dados pode gerar apenas um hash, como os mineradores garantem que eles gerem um hash abaixo da meta? Eles alteram a entrada adicionando um número inteiro, chamado nonce ("número usado uma vez"). Quando um hash válido é encontrado, ele é transmitido para a rede e o bloco é adicionado à blockchain.
A mineração é um processo competitivo, mas é mais uma loteria do que uma corrida. Em média, alguém gera provas aceitáveis de trabalho a cada dez minutos, mas quem será o palpite de qualquer um. Os mineradores se reúnem para aumentar suas chances de blocos de mineração, o que gera taxas de transação e, por tempo limitado, uma recompensa de bitcoins recém-criados.
A prova de trabalho torna extremamente difícil alterar qualquer aspecto da blockchain, pois essa alteração exigiria a re-mineração de todos os blocos subsequentes. Também torna difícil para um usuário ou pool de usuários monopolizar o poder de computação da rede, pois as máquinas e o poder necessários para concluir as funções de hash são caros.
