Introdução
Prova de Trabalho (PoW) é um mecanismo para evitar gastos duplos. A maioria das criptomoedas o utiliza como um algoritmo de consenso, que serve como uma forma de proteger o livro-razão.
Prova de Trabalho é o primeiro e mais popular algoritmo de consenso. Foi apresentado por Satoshi Nakamoto em um whitepaper Bitcoin publicado em 2008, mas a tecnologia em si foi proposta muito antes disso.
HashCash de Adam Back é um dos primeiros exemplos do algoritmo Proof of Work antes do advento das criptomoedas. Ter que realizar alguns cálculos antes de enviar um e-mail reduziria significativamente a quantidade de spam. Esses cálculos não custam praticamente nada para o remetente médio, mas complicam significativamente o processo de envio em massa.
O que é gasto duplo?
O gasto duplo ocorre quando os mesmos fundos são gastos mais de uma vez. Este termo é quase sempre utilizado em relação à moeda digital, pois na vida real é difícil imaginar uma situação em que se possa gastar o mesmo dinheiro duas vezes. Por exemplo, quando você compra um café, você entrega o dinheiro ao caixa, que o coloca na caixa registradora. Você não poderá ir a um café do outro lado da rua e pagar por um segundo café com a mesma conta.
No campo do dinheiro digital, isso é possível. Isso pode ser comparado a duplicar um arquivo em um computador. Tudo o que precisamos fazer é copiar e colar. Você também pode enviar o mesmo arquivo para dez, vinte ou mais pessoas.
Como o dinheiro digital é apenas dados, é necessário evitar que as pessoas copiem e enviem/gastem as mesmas unidades em locais diferentes. Caso contrário, tal moeda entrará em colapso no menor tempo possível.
Para saber mais sobre gastos duplos, confira o artigo O que é gasto duplo.
Por que a Prova de Trabalho é necessária?
Se você já conhece nosso guia sobre tecnologia blockchain, sabe que os usuários transmitem transações para a rede. Mas as transações não se tornam válidas imediatamente, mas somente após verificação e adição ao blockchain.
Blockchain é um grande banco de dados aberto no qual qualquer usuário pode verificar se os fundos foram gastos anteriormente. Vamos imaginar o seguinte cenário: você e três amigos seus têm um bloco de notas. Cada vez que alguém quiser fazer uma transferência, você anota: Alice enviou cinco unidades para Bob, Bob transferiu duas unidades para Carol e assim por diante.
Mas há uma peculiaridade: toda vez que você faz uma transferência, você se refere à transação anterior da qual recebeu os fundos. Assim, se Bob envia duas unidades para Carol, o lançamento é o seguinte: Bob transfere para Carol as duas unidades que recebeu anteriormente de Alice.
Agora temos a capacidade de rastrear todas as transferências. Se Bob tentar fazer outra transação usando as mesmas unidades que acabou de enviar para Carol, todos saberão imediatamente e a equipe não permitirá que ele registre essa transação no caderno.
Tal sistema pode funcionar bem num pequeno grupo de pessoas onde todos os participantes se conhecem bem, porque será mais fácil para eles concordarem sobre qual deles será responsável por adicionar transações à lista geral. Mas e se quisermos reunir um grupo de 10.000 membros? A ideia de usar um bloco de notas não se adapta bem porque ninguém confiaria em um estranho para gerenciar tal livro financeiro.
É exatamente assim que funciona a Prova de Trabalho. Ele garante que os usuários não gastem dinheiro que não possam gastar. Usando uma combinação de teoria dos jogos e criptografia, o algoritmo permite que qualquer usuário atualize o blockchain de acordo com as regras do sistema.
Como funciona?
Um bloco de notas é uma espécie de blockchain. No entanto, as transações não são adicionadas ao sistema uma por uma, mas são combinadas em blocos, após os quais os usuários que criam o bloco as incluem em um bloco candidato. As transações só serão consideradas válidas quando o bloco candidato for confirmado e adicionado ao blockchain.
Adicionar um bloco ao blockchain é um processo caro. A Prova de Trabalho exige que o minerador (o usuário que cria o bloco) utilize seus próprios recursos, recompensando-o por isso com certos privilégios. Este recurso é o poder computacional usado para fazer hash dos dados do bloco até que uma solução para o problema seja encontrada.
Hashing de um bloco envolve o processo de passá-lo por funções hash para gerar um hash. O hash do bloco atua como uma “impressão digital” e serve como um identificador para os dados de entrada que são exclusivos para cada bloco.
Execute o processo na direção oposta, ou seja, obter dados de entrada baseados em hash é quase impossível. No entanto, depois de conhecer os dados de entrada, você pode facilmente confirmar se o hash está correto executando os dados por meio de uma função hash e verificando se a saída corresponde.
Na Prova de Trabalho, você deve fornecer dados cujo hash siga determinadas regras estabelecidas no protocolo, desde que não saiba como recuperá-los diretamente. A única opção é executar os dados por meio de uma função hash e verificar se atendem às condições. Se não houver correspondência, você terá que alterar os dados para obter um hash diferente. Alterar até mesmo um caractere em seus dados levará a um resultado completamente diferente; por esse motivo, é impossível simplesmente prever qual poderá ser a saída.
Assim, para criar um bloco, você precisa adivinhar o hash. Para fazer isso, o usuário utiliza informações sobre todas as transações que precisam ser adicionadas aos blocos, e alguns outros dados, que são então misturados com hash. Mas como o conjunto de dados não muda, precisamos adicionar uma informação que se tornará uma variável. Caso contrário, a saída será sempre o mesmo hash. Esses dados variáveis que são inseridos para obter um novo hash são chamados de nonce, e o processo em si é chamado de mineração.
Portanto, mineração é o processo de coletar dados de blockchain e fazer hash deles junto com um código único até encontrar um hash adequado. Se você encontrar um hash que atenda às condições estabelecidas pelo protocolo, você terá o direito de transmitir um novo bloco para a rede. Neste ponto, outros participantes da rede precisam atualizar suas blockchains para incluir o novo bloco.
As condições estabelecidas pelas principais criptomoedas são incrivelmente difíceis de cumprir. Quanto maior o hashrate da rede, mais difícil será encontrar um hash válido. Isso é feito para evitar que os blocos sejam gerados muito rapidamente.
Tentativas regulares de adivinhar um grande número de hashes são caras porque desperdiçam uma enorme quantidade de recursos computacionais e energia elétrica. No entanto, se os mineiros conseguirem encontrar um hash válido, o protocolo os recompensa pelo seu trabalho.
Vamos revisar o que cobrimos:
O processo de mineração é muito caro devido ao grande número de recursos necessários.
Após concluir o trabalho e produzir um bloco válido/confirmado, você recebe uma recompensa.
Conhecendo os dados de entrada, o usuário pode verificar facilmente a exatidão do hash produzido - qualquer participante pode verificar se o bloco é válido sem utilizar uma grande quantidade de recursos computacionais.
Mas e se você tentar enganar o sistema? O que impede você de colocar um monte de transações fraudulentas em um bloco e criar um hash válido?
A criptografia de chave pública foi desenvolvida para esse fim. Para saber mais sobre esse assunto, confira nosso artigo O que é criptografia de chave pública. Em suma, o algoritmo utiliza certas técnicas criptográficas que permitem a qualquer utilizador verificar o direito de um participante individual da rede de transferir fundos para outro endereço.
Ao criar uma transação, você a assina. Qualquer participante da rede pode então comparar a assinatura com a sua chave pública para ver se ela corresponde. Isso permite que você saiba se pode gastar seus fundos e se suas despesas não excedem o valor permitido.
Qualquer bloco contendo uma transação inválida será automaticamente rejeitado. Tentar enganar a rede vai custar muito caro porque você acabará desperdiçando seus recursos computacionais sem receber nenhuma recompensa por isso.
Essa é a ideia da Prova de Trabalho: é mais lucrativo para os usuários agirem honestamente do que tentar enganar o sistema. O protocolo incentiva os mineiros a tentarem recuperar o seu investimento, para que a maioria cumpra as regras para receber um rendimento garantido.
Você está se perguntando como começar com criptomoedas? Compre Bitcoin na Binance!
Prova de Trabalho e Prova de Participação
Existem muitos outros algoritmos de consenso, mas um dos mais esperados é o Proof of Stake (PoS). Seu conceito teve origem em 2011 e só foi implementado em alguns pequenos protocolos. Ainda não foi implementado em blockchains maiores.
Em redes com consenso Proof of Stake, o papel dos mineradores é desempenhado pelos validadores, uma vez que o protocolo não está associado ao processo de mineração e adivinhação de hashes. Em vez disso, os usuários são selecionados aleatoriamente e o participante selecionado deve propor um novo bloco. Se um bloco for considerado válido, o validador receberá uma recompensa que consiste em taxas de transação para esse bloco.
O protocolo seleciona um novo validador com base em vários fatores. Para ter a chance de ser selecionado, você precisa bloquear alguns dos tokens adicionando-os ao piqueteamento. Esse valor funciona como uma espécie de garantia: os validadores bloqueiam um determinado número de moedas no sistema, que serão perdidas caso o validador tente enganar o sistema. O staking de moedas será perdido se um validador tentar validar um bloco inválido.
A Prova de Participação tem algumas vantagens sobre a Prova de Trabalho. Um deles é uma pegada de carbono menor. Isto se deve ao fato de que o Proof of Stake não requer a manutenção de poderosas fazendas de mineração e, portanto, consome muito menos eletricidade do que o Proof of Work.
No entanto, isso não tem nada a ver com o histórico do PoW. Embora esta abordagem possa ser considerada um desperdício, a mineração é atualmente a única forma de chegar a um consenso que tenha sido comprovado à escala global. Em apenas uma década, este mecanismo processou mais de biliões de dólares em transações. Para ter certeza de que o PoS será capaz de resistir a tal competição com segurança adequada para os usuários, ainda precisamos testá-lo em um ambiente mais selvagem.
Resumo
A Prova de Trabalho é uma solução confiável e segura para o problema de gastos duplos. O Bitcoin provou que não requer organizações centralizadas. Com o uso adequado de criptografia, funções hash e teoria dos jogos, os participantes de um ambiente descentralizado podem monitorar eles próprios o correto funcionamento de todo o banco de dados financeiro.