Prova de Trabalho do inglês (Proof of Work) muitas vezes abreviada como “PoW” é um mecanismo para evitar gastos duplos. As principais moedas criptográficas usam PoW como um algoritmo de consenso, que é um método para proteger as Criptomoedas de um ledger distribuído.
Prova de trabalho foi o primeiro algoritmo de consenso criado e até hoje continua sendo o principal. Ele foi introduzido por Satoshi Nakamoto no white paper do Bitcoin em 2008, mas a própria tecnologia foi concebida muito antes disso.
O HashCash de Adam Back é um exemplo precoce de um algoritmo de Prova de Trabalho que antecede as Criptomoedas. Ao exigir que os remetentes façam uma pequena verificação computacional antes de enviar um e-mail, os destinatários poderiam reduzir o spam.
Esta verificação era rápida e simples para o usuário que estava enviando o e-mail, mas seria um problema para alguém que estava enviando e-mails em massa, como é o caso dos e-mails de spam.
O que é Gasto Duplo (Double-Spend)
Um gasto duplo ocorre quando os mesmos fundos são gastos mais de uma vez. O termo é usado quase exclusivamente no contexto do dinheiro digital — afinal de contas, seria difícil gastar o mesmo dinheiro duas vezes quando é físico.
Quando você compra um lanche, você entrega o dinheiro ao caixa que provavelmente faz o bloqueamento de alguma forma. Você não poderá passar para o outro lado da rua e pagar por outro lanche com a mesma nota.
Em esquemas de dinheiro digital, esta possibilidade existe. Você já deve ter duplicado um arquivo de computador antes — basta copiar e colar. Você pode enviar o mesmo arquivo de e-mail para dez, vinte, cinquenta pessoas.
Como o dinheiro digital é simplesmente um conjunto de dados, você tem que evitar que as pessoas copiem e gastem as mesmas unidades em lugares diferentes. Caso contrário, o sistema da respectiva criptomoeda entrará em colapso.
Por que a Prova de Trabalho é Necessário?
Se você já leu sobre cadeias de blocos (Blockchain), você já sabe que os usuários transmitem as transações para a rede. No entanto, estas transações não são consideradas válidas imediatamente. Isto só acontece quando elas são adicionadas à cadeia de blocos.
A cadeia de blocos é uma grande base de dados que todos os usuários podem ver, e é possível verificar se os fundos foram gastos anteriormente. Pense o seguinte: você e três amigos têm um bloco de notas. Sempre que um de vocês faz uma transferência de qualquer unidade, você a registra no caderno — Maria pagou cinco unidades ao João, João pagou duas unidades à Angela, e assim por diante.
Há mais um detalhe — sempre que você faz uma transação, você faz uma referência à transação da qual os fundos vieram. Portanto, se João pagasse à Carol com duas unidades, a entrada seria a seguinte: João paga à Carol duas unidades daquela transação anterior com a Alice.
Agora teremos uma maneira de rastrear as unidades. Se João tentar fazer outra transação usando as mesmas unidades que acabou de enviar à Carol, todos saberão imediatamente. O grupo não vai permitir que a transação seja inserida ao bloco de notas.
Isto pode funcionar bem em um grupo pequeno. Como todos se conhecem, eles provavelmente chegarão a um acordo sobre quais amigos podem adicionar transações ao caderno. Mas se quisermos um grupo de 10.000 participantes? A ideia do bloco de notas não seria adequada, pois, ninguém quer confiar em um estranho para administrar os registros das transações.
É aqui que entra a Prova de Trabalho. Ela garante que os usuários não gastem dinheiro que não têm o direito de gastar. Usando uma combinação de teoria de jogo e criptografia, um algoritmo PoW permite que qualquer pessoa atualize a cadeia de blocos de acordo com as regras do sistema.
Como Funciona a PoW?
Nosso caderno no exemplo acima é o bloco de notas. Mas não adicionamos as transações uma a uma — em vez disso, agrupamo-las em blocos. As transações são anunciadas à rede, portanto, ao criar um bloco, os usuários incluirão transações em um bloco candidato.
As transações serão consideradas válidas somente quando o bloco candidato se tornar um bloco confirmado, o que significa que ele foi realmente adicionado à cadeia de Blocos (Blockcahain).
Entretanto, anexar um bloco não é um processo barato. A Prova de Trabalho exige que um mineiro (o usuário que cria o bloco) use seus próprios recursos para ter este privilégio. Esse recurso é um poder computacional, usado para hash os dados do bloco até que seja encontrada uma solução para o quebra-cabeça.
Para gerar um hash de bloco, o processo de hash submete os dados do bloco a uma função de hash. O hash de bloco funciona como uma “impressão digital” — é uma identidade dos dados de entrada e é único para cada bloco.
É praticamente impossível reverter um hash de bloco para obter os dados de entrada. Conhecendo uma entrada, porém, é fácil confirmar que o hash está correto. Basta submeter a entrada à função e verificar se a saída é a mesma.
Na Prova de Trabalho, você deve fornecer dados cujo hash concorde com certas condições. Mas você não sabe como chegar lá. Sua única opção é submeter seus dados a uma função de hash e verificar se ela respeita as condições.
Caso contrário, você terá que alterar um pouco seus dados para obter um hash diferente. Mudar um único caractere em seus dados resultará em uma saída totalmente diferente, portanto não há como prever a saída.
Portanto, se você quiser criar um bloco, você está jogando um jogo de adivinhação. Normalmente você obtém informações sobre todas as transações que deseja adicionar e alguns outros dados importantes, e então você agrupa tudo em um hash.
Entretanto, como seu conjunto de dados é fixo, você precisará adicionar informações variáveis. Caso contrário, você obteria sempre o mesmo hash que uma saída. Estes dados variáveis são o que chamamos de nonce. É um número que você muda para obter um hash diferente cada vez que você tenta. Este é o processo que chamamos de mineração.
Em resumo, mineração é o processo de coleta de dados da cadeia de blocos e hashing, usando um nonce, até você encontrar um hash específico como uma saída. Se você encontrar um hash que atenda às condições estabelecidas pelo protocolo, você tem o direito de transmitir o novo bloco para a rede. Uma vez feito isso, os outros participantes da rede atualizarão suas cadeias de blocos para incluir o bloco recém-criado.
Para as principais moedas cripto de hoje, as condições são incrivelmente difíceis de serem satisfeitas. Quanto mais alta a taxa de hash na rede, mais difícil é encontrar um hash válido. A taxa de hashes é ajustada para garantir que blocos válidos não sejam encontrados muito rapidamente.
Como você pode imaginar, tentar adivinhar abundantemente o hashes usando um computador pode ser um processo muito caro. Você estaria desperdiçando ciclos computacionais e eletricidade. Mas se você encontrar um hash válido, o protocolo irá recompensá-lo com Criptomoedas.
Vamos recapitular o que vimos até agora:
- A mineração é um processo muito caro.
- Você é premiado por produzir um bloco válido.
- Conhecendo uma entrada, um usuário pode facilmente verificar seu hash — usuários não mineiros podem verificar se um bloco é válido sem a necessidade de muito poder de computação.
Até agora, tudo bem. Mas se alguém tentar trapacear? O que impede um usuário de inserir transações fraudulentas no bloco e produzir um hash válido?
É aqui que entra a criptografia de chave pública. Não entraremos em mais detalhes aqui, mas veja o artigo criptografia de chave pública. Para uma visão mais abrangente deste assunto. Em resumo, usamos alguns truques criptográficos que permitem a qualquer usuário verificar se alguém tem o direito de movimentar os fundos que está tentando gastar.
Quando você cria uma transação, você a assina. Qualquer usuário na rede pode fazer uma comparação de sua assinatura com sua chave pública e verificar se ela corresponde.
Eles também verificarão que você pode realmente gastar os fundos, e que a soma de suas entradas é maior que a soma de suas saídas — ou seja, que você não está gastando mais do que realmente gastou.
Qualquer bloco que inclua uma transação que não seja válida será automaticamente rejeitado pela rede. Tentar trapacear é caro. Você irá desperdiçar seus recursos sem receber nenhuma recompensa.
Essa é a magia da Prova de Trabalho: é caro trapacear, mas é lucrativo agir honestamente. Qualquer mineiro racional busca retorno sobre o investimento, ROI. Ou seja, a expectativa é que eles se comportem de forma a garantir seus lucros.
Proof of Work vs. Proof of Stake
Há muitos algoritmos de consenso, mas o Proof of Stake – PoS é aquela que tem gerado mais expectativa. É uma concepção de 2011 e já foi implementado em vários protocolos menores. Entretanto, ainda não foi adotado em nenhuma das principais correntes de blocos.
Em sistemas Proof of Stake, os mineiros são substituídos por validadores. Não há mineração envolvida, nem há competição para adivinhar hashes. Ao invés disso, os usuários são selecionados aleatoriamente — se forem selecionados, devem propor (ou “forjar”) um bloco. Se o bloco for válido, eles receberão uma recompensa que consiste nas taxas de transação do bloco.
Não apenas qualquer usuário pode ser selecionado — o protocolo os escolhe considerando diversos fatores. Para ser elegível, os participantes devem manter bloqueado, um valor de participação, que é uma quantia pré-determinada da moeda nativa da cadeia de blocos.
A participação atua como uma garantia: assim como os réus devem gastar uma grande quantia de dinheiro para desencorajá-los de faltar ao julgamento, os validadores mantêm um valor de participação para desencorajar a trapaça. Se eles agirem desonestamente, o valor stake (ou parte dela) será perdida.
Proof of Stake algumas vantagens sobre a Prova de Trabalho (Proof of Work). O destaque é o menor consumo de energia — já que no PoS, não há necessidade de fazendas de mineração que consomem tanta energia. A eletricidade consumida é apenas uma fração do que é usado em PoW.
A PoS não chega nem perto do histórico de uso da PoW. Embora isto possa ser considerado um desperdício, a mineração é o único algoritmo de consenso que se mostrou eficaz em larga escala. Em pouco mais de uma década, ele garantiu a transferência de trilhões de dólares em transações.
Para ter certeza de que o PoS pode competir com a segurança do PoW, o Staking deve ser devidamente testado em larga escala.
Conclusão
A Prova de Trabalho (Proof of Work) foi a solução original para o problema do gasto duplo (double-spend) e provou ser um método confiável e seguro. O Bitcoin provou que não precisamos de entidades centralizadas para evitar que os mesmos fundos sejam gastos duas vezes.
Com o uso inteligente da criptografia, funções de hash e teoria dos jogos, os participantes em um ambiente descentralizado podem chegar a um consenso sobre o estado de um banco de dados financeiro.
Aviso de Risco: Investir em forex, Opções Binárias, criptomoedas e mercado de ações envolve alto risco, incluindo a possível perda total do capital investido. Esses mercados são voláteis e podem ser influenciados por manipulação, falta de regulação e eventos imprevisíveis. Não invista dinheiro que você não pode perder.