top of page

Protocolo “Proof of work” (PoW)

Atualizado: 3 de abr. de 2023

Na indústria de blockchain, é comum escutarmos sobre mecanismos de consenso, trata-se de um procedimento através do qual todos os pares da rede blockchain chegam a um acordo comum sobre o estado atual do livro contábil distribuído.



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.


História


A ideia apareceu pela primeira vez em 1993 em um artigo publicado por Cynthia Dwork e Moni Naor como um mecanismo para combater junk mails. No artigo em si não utilizou da palavra prova de trabalho, mas já continha o conceito de forçar o usuário à provar que realizou alguma tarefa para conseguir utilizar do serviço, com o intuito de desmotivar uso inútil. O termo em si só foi a ser utilizado em 1999, em um artigo publicado por Markus Jakobsson e Ari Juels, que formalizou a ideia do protocolo Prova de Trabalho. Desde então, foram desenvolvidos vários métodos de prova usando tal sistema, incluindo o Hashcash proposto por Adam Back em 1997.


Esse artigo também deu uma base para o que mais tarde seria a ideia de provas de trabalhos reusáveis, proposta por Hal Finney. Essa ideia foi mais tarde utilizada por Satoshi Nakamoto na criação do Bitcoin, a primeira criptomoeda descentralizada.


Conceito


A ideia principal do protocolo POW é reduzir spam e outros ataques cibernéticos, e para isso se utiliza de um sistema onde o usuário deve provar que gastou um certo tempo para encontrar alguma resposta que satisfaça algum requisito que o verificador pedir. A tarefa de encontrar tal resposta deve ser difícil e trabalhosa para o protocolo funcionar, mas não impossível. A verificação dessa prova por outro lado deve ser muito mais rápida e fácil de ser realizada.


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.


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.

7 visualizações0 comentário

PUBLICIDADE

bottom of page