O que é Proof of Work (PoW)?
HomeArticles

O que é Proof of Work (PoW)?

Intermediário
4mo ago
8m

Conteúdo


Introdução

Proof of Work (normalmente abreviado como PoW) é um mecanismo para prevenção de double-spends (gastos duplos). As principais criptomoedas usam o PoW como algoritmo de consenso, que é um método de proteção das criptomoedas de um ledger distribuído.

O Proof of Work foi o primeiro algoritmo de consenso criado e, até hoje, continua sendo o principal. Foi introduzido por Satoshi Nakamoto no white paper do Bitcoin em 2008, mas a tecnologia em si foi concebida muito antes disso

O HashCash de Adam Back é um exemplo inicial de algoritmo Proof of Work anterior às criptomoedas. Ao exigir que os remetentes fizessem uma pequena verificação computacional antes de enviar um email, os receptores podiam reduzir o spam. Essa verificação era rápida e simples para o usuário que estava enviando o email, porém seria um problema para alguém que estivesse mandando emails em massa, como acontece com emails de spam.


O que é double-spend?

Um double-spend (gastos duplos) ocorre quando os mesmos fundos são gastos mais de uma vez. O termo é usado quase que exclusivamente no contexto do dinheiro digital – afinal, seria difícil gastar o mesmo dinheiro duas vezes quando ele é físico. Quando você compra um café, você entrega o dinheiro ao caixa que provavelmente o bloqueia de alguma forma. Você não poderá atravessar para o outro lado da rua e pagar por outro café com a mesma nota.

Nos esquemas de dinheiro digital, existe essa possibilidade. Você certamente já duplicou um arquivo de computador antes – basta copiar e colar. Você pode enviar o mesmo arquivo de email para dez, vinte, cinquenta pessoas. 

Como o dinheiro digital é simplesmente um conjunto de dados, é preciso impedir que as pessoas copiem e gastem as mesmas unidades em lugares diferentes. Caso contrário, o sistema da respectiva moeda entrará em colapso. 

Para mais detalhes sobre double-spending, confira o artigo Guia Sobre Double-Spending.


Por que o Proof of Work é necessário?

Se você leu o nosso guia sobre tecnologia blockchain, já sabe que os usuários transmitem transações para a rede. No entanto, essas transações não são consideradas válidas imediatamente. Isso só acontece quando elas são adicionadas à blockchain. 

A blockchain é um grande banco de dados que todos os usuários podem ver, sendo possível verificar se os fundos foram gastos anteriormente. Imagine o seguinte: você e três amigos têm um bloco de notas. Sempre que um de vocês fizer uma transferência de qualquer unidade, vocês registram no bloco – Alice pagou cinco unidades a Bob, Bob pagou duas unidades a Carol, etc.

Existe mais um detalhe – sempre que você faz uma transação, você faz uma referência à transação de onde os fundos vieram. Portanto, se Bob estava pagando Carol com duas unidades, a entrada seria a seguinte: Bob paga a Carol duas unidades dessa transação anterior com Alice.

Agora, temos uma maneira de rastrear as unidades. Se Bob tentar fazer outra transação usando as mesmas unidades que acabou de enviar para Carol, todos saberão imediatamente. O grupo não permitirá que a transação seja adicionada ao bloco de notas.

Isso pode funcionar bem em um grupo pequeno. Como todos se conhecem, provavelmente chegarão a um acordo sobre quais amigos podem adicionar transações ao bloco de notas. Mas e 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 gerenciar os registros das transações.

É aqui que entra o Proof of Work. Ele garante que os usuários não gastem um dinheiro que não têm o direito de gastar. Usando uma combinação de teoria dos jogos e criptografia, um algoritmo PoW permite que qualquer pessoa atualize a blockchain de acordo com as regras do sistema.


Como funciona o PoW?

O nosso bloco de notas do exemplo acima é a blockchain. Mas não adicionamos transações uma por uma – em vez disso, as agrupamos em blocos. As transações são anunciadas para a rede, então ao criar um bloco, os usuários incluirão as transações em um bloco candidato. As transações serão consideradas válidas apenas quando o bloco candidato se tornar um bloco confirmado, o que significa que ele foi efetivamente adicionado à blockchain.

No entanto, anexar um bloco não é um processo barato. O Proof of Work exige que um minerador (o usuário que cria o bloco) use seus próprios recursos para ter esse privilégio. Esse recurso é o poder computacional, usado para fazer hash dos dados do bloco, até que seja encontrada uma solução para o quebra-cabeça.

Para gerar um hash de bloco, o processo de Hashing submete os dados do bloco a uma função de hashing. O hash de bloco funciona como uma “impressão digital” – é uma identidade dos dados de entrada (input) e é exclusiva para cada bloco.

É praticamente impossível reverter um hash de bloco para obter os dados de input (entrada). Conhecendo um input, no entanto, é fácil confirmar que o hash está correto. Você só precisa submeter o input à função e verificar se o output (saída) é o mesmo.

No Proof of Work, você deve fornecer dados cujo hash esteja de acordo com determinadas condições. Mas você não sabe como chegar lá. Sua única opção é submeter seus dados através de uma função hash e verificar se eles respeitam as condições. Caso contrário, você deverá alterar um pouco seus dados para obter um hash diferente. A alteração de um simples caractere em seus dados resultará em um output totalmente diferente, portanto, não há uma forma de prever o output.

Sendo assim, se você deseja criar um bloco, 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, em seguida, agrupa tudo em um hash. Porém, como o seu conjunto de dados é fixo, você precisará adicionar uma informação variável. Caso contrário, você sempre obteria o mesmo hash como output. Esses dados variáveis são o que chamamos de nonce. É um número que você altera para obter um hash diferente a cada tentativa. Esse é o processo que chamamos de mineração.

Resumindo, a mineração é o processo de coletar dados da blockchain e fazer hashing, usando um nonce, até encontrar um hash específico como resultado. Se você encontrar um hash que atenda às condições estabelecidas pelo protocolo, terá o direito de transmitir o novo bloco à rede. Feito isso, os outros participantes da rede irão atualizar suas blockchains para incluir o novo bloco criado.

Para as principais criptomoedas atuais, as condições são incrivelmente difíceis de satisfazer. Quanto maior a taxa de hash na rede, mais difícil de encontrar um hash válido. A taxa de hash é ajustada para garantir que os blocos válidos não sejam encontrados muito rapidamente.

Como você pode imaginar, tentar adivinhar grandes quantidades de hashes usando um computador, pode ser um processo muito caro. Você estaria desperdiçando ciclos computacionais e eletricidade. Mas caso você encontre um hash válido, o protocolo irá lhe recompensar com criptomoedas.

Vamos recapitular o que vimos até agora:

  • Minerar é um processo muito caro.
  • Você é recompensado por produzir um bloco válido.
  • Sabendo um input (entrada), um usuário pode facilmente verificar seu hash – usuários que não são mineradores podem verificar se um bloco é válido, sem a necessidade de grande poder computacional.

Até aqui, tudo bem. Mas e se alguém tentar trapacear? O que impede um usuário de inserir transações fraudulentas no bloco e produzir um hash válido?

É aí que entra a criptografia de chave pública. Não iremos nos aprofundar aqui, mas confira o artigo O que é Criptografia de Chave Pública? para uma visão mais abrangente sobre esse assunto. Resumidamente, usamos alguns truques criptográficos que permitem a qualquer usuário verificar se alguém tem o direito de mover os fundos que está tentando gastar.

Ao criar uma transação, você a assina. Qualquer pessoa na rede pode comparar sua assinatura com sua chave pública e verificar se ela corresponde. Eles também verificarão se você pode realmente gastar os fundos e se a soma de seus inputs (entradas) é maior que a soma de seus outputs (saídas) - ou seja, se você não está gastando mais do que realmente possui.

Qualquer bloco que inclua uma transação inválida será automaticamente rejeitado pela rede. Tentar trapacear é caro. Você desperdiçará seus recursos sem obter qualquer recompensa.

É aí que está a mágica do Proof of Work: é caro trapacear, mas é lucrativo agir honestamente. Qualquer minerador racional busca retorno sobre o investimento, ROI. Ou seja, a expectativa é que eles se comportem de uma maneira que garanta seus lucros.



Pensando em investir em criptomoedas? Compre Bitcoin na Binance!



Proof of Work vs. Proof of Stake

Existem muitos algoritmos de consenso, mas o Proof of Stake (PoS) é um dos que gerou maior expectativa. É um conceito de 2011 e já foi implementado em alguns protocolos menores. Entretanto, ainda não foi adotado em nenhuma das grandes blockchains.

Nos sistemas de Proof of Stake, os mineradores são substituídos por validadores. Não há mineração envolvida nem existe uma competição para adivinhar hashes. Em vez disso, usuários são selecionados aleatoriamente – caso sejam selecionados, devem propor (ou “forjar”) um bloco. Se o bloco for válido, eles receberão uma recompensa composta pelas taxas de transações do bloco.

Não é qualquer usuário que pode ser selecionado – o protocolo os escolhe considerando diversos fatores. Para serem elegíveis, os participantes devem manter bloqueado, um valor de stake, que é uma quantia predeterminada da moeda nativa da blockchain. O stake funciona como uma garantia: assim como réus devem gastar uma grande quantia em dinheiro para desencorajá-los de pular seu julgamento, os validadores mantêm um valor de stake para desencorajar a trapaça. Se eles agirem de maneira desonesta, o valor de stake (ou parte dele) será perdido.

O Proof of Stake apresenta algumas vantagens em relação ao Proof of Work. A mais notável é 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 da utilizada no PoW. 

O PoS não chega nem perto do histórico de uso do PoW. Embora isso possa considerado um desperdício, a mineração é o único algoritmo de consenso que se provou eficaz em larga escala. Em pouco mais de uma década, assegurou a transferência de trilhões de dólares em transações. Para termos certeza de que o PoS pode competir com a segurança do PoW, o Staking deve ser devidamente testado em larga escala. 


Considerações finais

O Proof of Work foi a solução original para o problema de double-spend e provou ser um método confiável e seguro. O Bitcoin provou que não precisamos de entidades centralizadas para impedir que os mesmos fundos sejam gastos duas vezes. Com o uso inteligente de criptografia, funções de hash e teoria dos jogos, os participantes de um ambiente descentralizado podem chegar a um consenso em relação ao estado de um banco de dados financeiro.