O que é e como funciona o Proof of Work?

Na indústria de blockchain, é comum escutarmos sobre mecanismos de consenso, que, conforme reportado pelo CriptoFácil, 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.

Para alcançar um consenso em sua rede, o Bitcoin usa o Proof of Work (PoW, ou prova de trabalho em tradução livre). Neste artigo, é possível conferir uma visão geral deste algoritmo de consenso.

Publicidade

O PoW foi introduzido em 1993

A ideia toda surgiu em 1993, quando Cynthia Dwork e Moni Naor publicaram um artigo científico sobre funções vinculadas à memória para combater o spam. Em seu artigo, eles estavam tentando introduzir um novo método de combate aos emails de spam, que são enviados usando a energia do computador para cada email (ou transação).

“Se eu não te conheço e você deseja me enviar uma mensagem, deve provar que gastou, digamos, dez segundos de tempo de CPU, apenas para mim e apenas para esta mensagem”, disseram Dwork e Naor.

O Proof of Work é uma função difícil de calcular, mas fácil de verificar. A função possui uma mensagem, um endereço de destinatário e alguns outros parâmetros. Neste trabalho, Dwork e Naor chamavam de função de precificação. Os computadores de hoje podem enviar milhões de mensagens de spam todos os dias, o que cria um grande problema. No entanto, se os computadores precisarem gastar 10 segundos em cada mensagem, eles poderão enviar apenas 8 mil spams por dia.

Em 1999, no artigo “Proofs of work and bread pudding protocols” (Provas de trabalho e protocolos de pudim de pão) publicado por Markus Jakobsson e Ari Juels, o termo “Proof of work” foi introduzido e a notação é criada. Seu objetivo era caracterizar a notação de uma prova de trabalho (PoW), um protocolo no qual um provador demonstra a um verificador que ele gastou um certo nível de esforço computacional em um intervalo de tempo específico.

Buscando a próxima moeda 100x?
Confira nossas sugestões de Pre-Sales para investir agora

O protocolo não era tão popular até Satoshi Nakamoto lançar o whitepaper do Bitcoin, uma vez que o Proof of Work era a ideia mais significativa por trás dele. Com esse protocolo, ele introduziu a ideia de como ele pode ser usado para permitir um consenso distribuído e confiável.

Então, o que exatamente é o Proof of Work?

O Proof of Work é um algoritmo de consenso no qual é caro e demorado produzir uma parte dos dados, mas é fácil para outras pessoas verificarem se os dados estão corretos. O Bitcoin, principal criptomoeda do mercado, utiliza o sistema de Proof of Work Hashcash. Embora a ideia inicial do Hashcash fosse combater os spammers de e-mail, Satoshi aplicou essa ideia às transações de Bitcoin.

Para que um bloco seja aceito pela rede, os mineradores precisam concluir uma prova de trabalho para verificar todas as transações no bloco. A dificuldade deste trabalho nem sempre é a mesma, ela continua se ajustando para que novos blocos possam ser gerados a cada 10 minutos. Há uma probabilidade muito baixa de geração bem-sucedida, portanto, é imprevisível qual funcionário da rede produzirá o próximo bloco.

Publicidade

Em uma rede, os usuários trocam moedas e o livro-razão reúne transações em blocos, mas alguém deve cuidar de todas as transações e validá-las. Em cada blockchain, alguns nós estão validando. No exemplo do Bitcoin, os mineradores concordam. A maneira como esses acenos autorizam transações depende do algoritmo de consenso, não precisa ser prova de trabalho, mas no exemplo do Bitcoin é. Resumindo, o Proof of Work é um sistema que garante segurança e consenso em toda a rede blockchain. É evidente que o participante que valida o bloco investiu um poder computacional significativo para isso.

Como funciona?

Os mineradores tentarão adivinhar um número aleatório que deve fornecer o hash certo para esse bloco de transações. Nesse processo, há duas coisas que precisamos definir: função nonce e hash.

Nonce – é um número aleatório usado apenas uma vez. No caso do Bitcoin, esse número é um número inteiro; portanto, pode haver qualquer número entre 0 e 4 294 967 296.

Publicidade

Hash – é um algoritmo ou fórmula muito complicada que converte qualquer sequência de caracteres em uma sequência de 64 caracteres ou números.

Como você já sabe, todos os blocos da blockchain têm seu hash (id). Essa é uma string que alguém recebeu quando verificou esse bloco. Portanto, quando você deseja verificar o próximo bloco, você pega esse hash e adiciona o atual bloco de transações. Você terá um grande bloco de texto. O próximo passo seria pegar o nonce – um número aleatório e adicioná-lo ao final desse bloco de texto. Agora você tem um grande bloco de texto que contém um hash do bloco anterior, novas transações e um número aleatório. Quando você tem tudo isso, está pronto para iniciar os cálculos. Para cálculos, você usa a função hash e altera o número aleatório até obter uma sequência que tenha um certo número de zeros à sua frente.

Parece fácil, mas lembre-se de que seu computador precisa executar cerca de 10n21 para encontrar o número certo. Esse número não é pequeno e leva cerca de 10 minutos para encontrar o número certo que fornecerá a sequência necessária. Para uma função de hash, o Bitcoin está usando o algoritmo de hash SHA-256.

Publicidade

Digamos que você tenha tudo o que precisa para começar a computar. O hash do bloco blockchain anterior é 00000000000000000028c91a95cd6a5b6cbd913c203510eab269208df6c64091, você tem um monte de 100 transações e escolhe um número aleatório 1. Tudo está pronto e você envia tudo para a função de hash.

Você pode ver na ilustração acima que não conseguiu a string certa. A sequência resultante começa com apenas três zeros e você precisa obter uma sequência com 18 zeros. Então, você escolherá outro número aleatório e iniciará outro cálculo. Desta vez, escolheremos o número 2.

Desta vez, você escolheu o número certo e, como resultado, obteve uma sequência que começa com 18 zeros. Você verificou esse bloco e se você fosse o primeiro a conseguir, a recompensa por esse bloco seria sua.

Publicidade

Uma máquina ou computador deve continuar incrementando o nonce até encontrar o caminho certo. Isso significa que um computador precisa fazer força bruta nesse número e gerar milhões de hashes por segundo para gerar aquele que terá o mesmo número de zeros iniciais, conforme definido. É caro e demorado executar PoW para um bloco, mas é fácil para alguém verificar se algum bloco está correto.

Digamos que alguém queira verificar se o nó A fez o trabalho necessário. Ele simplesmente usará a sequência de blocos que o nó A obteve após a validação e obterá seu número diferente. Neles, ele aplicará a função hash e, se o resultado tiver o número correto de zeros à esquerda, está tudo bem.

O Proof of Work garante que os blocos não possam ser adicionados à blockchain sem executar o trabalho necessário. Dessa forma, um nó malicioso não pode validar facilmente blocos e adicionar o que ele quiser na blockchain. Se ele tentar, outros participantes da rede descartariam seu bloco e todos saberiam que o bloco não é válido.