A prova de trabalho, ou proof of work como também é conhecida, ou até mesmo POW, é um fator essencial na mineração de criptomoedas. Em outros artigos, já vimos como funciona a mineração tanto de Bitcoin quanto de Ether (ETH). Embora o processo seja diferente, ambas as criptomoedas possuem uma grande semelhança: seu mecanismo de consenso. Tanto o Bitcoin quanto o Ethereum utilizam o tipo de mineração conhecido como Proof of Work (Prova de Trabalho, ou POW na sigla em inglês).
Mas o que é esse consenso na mineração? Como funciona a mineração via Prova de Trabalho? E o que faz ela ser um dos mecanismos mais seguros para minerar criptomoedas? Essas são quatro perguntas que pretendemos responder neste texto, além de explicar os seguintes fatores:
- Qual o papel da Prova de Trabalho na segurança do Bitcoin?
- Quais são os principais pontos desse mecanismo de consenso;
- Como são feitas e verificadas as transações na blockchain;
- De que forma a Prova de Trabalho funciona.
Prova de Trabalho e a segurança das criptomoedas
O mecanismo de Prova de Trabalho como conhecemos hoje foi desenvolvido por Satoshi Nakamoto junto com o Bitcoin. Ele teve por inspiração outro mecanismo semelhante desenvolvido em 1997 pelo criptógrafo britânico Adam Back. O uso inicial desse primeiro exemplo de POW era combater o envio massificado de e-mails, o famoso spam.
No sistema de Back, cada vez que um e-mail era enviado, o remetente deveria fazer uma pequena verificação computacional antes do envio. Essa verificação era rápida e simples para quem enviava apenas uma mensagem. Todavia, quanto mais mensagens fossem enviadas, maior seria a dificuldade da verificação. Assim, o programa (que Back chamou de Hashcash) tornava mais difícil o envio de mensagens em massa.
O tipo de POW utilizado no Bitcoin existe para cumprir basicamente duas funções. A primeira delas é permitir o consenso na rede do Bitcoin, enquanto a segunda é garantir a sua segurança. O consenso é utilizado na aprovação das transações, enquanto a segurança dada pela POW evita o problema do gasto-duplo.
Transações na blockchain e o mecanismo de consenso
A blockchain do Bitcoin hoje é uma das redes mais utilizadas no mundo. Atualmente, são mais de 250 mil transações processadas por dia. Contudo, essas operações não ocorrem de forma instantânea: para ser efetivada, uma transação precisa ser aprovada na blockchain, em um processo que leva em média 10 minutos.
E é aqui que começa o que poderia ser um grande problema. Primeiro, para que sejam confirmadas, essas transações precisam ser aprovadas pelos membros da rede. Os nós completos (full nodes) são alguns desses membros. Eles cuidam da validação de cada uma dessas 250 mil transações diárias.
No entanto, existem cerca de 10,5 mil nós espalhados por todo o planeta. E, como a rede do Bitcoin é descentralizada, não há nenhuma pessoa ou empresa que coordene o trabalho desses nós. Ao invés disso, esse consenso é obtido através do mecanismo de POW, o qual consegue obter sucesso mesmo com um grupo tão diverso.
Cada um desses nós possui uma cópia exata da blockchain do Bitcoin. Essas cópias ficam armazenadas nos computadores e são atualizadas em tempo real. Como a blockchain é pública, qualquer pessoa pode verificar as transações que foram realizadas. E no caso dos nós, pode também fazer a validação das transações.
Mempool e Hash das criptomoedas
Sempre que uma transação é realizada, os nós iniciam uma comunicação. Por meio dela são transferidas as informações sobre a transação realizada. Os demais nós fazem a verificação e, com isso, confirmam se aquela transação realmente ocorreu.
Caso a transação seja aprovada, ela é direcionada para a mempool, uma espécie de fila de espera de transações. Quando chegar a sua vez, a transação será aprovada e inserida em um bloco. Cada transação possui um identificador composto de números e letras, que confirma a autenticidade daquela operação. Este identificador é chamado de hash.
Os blocos também possuem o seu hash, que identifica o conjunto de transações colocadas dentro dele. Todo novo bloco inserido na blockchain carrega dois hashes: o seu próprio e o do bloco anterior a ele. Através desses hashes, os nós e mineradores conseguem identificar que aquelas transações pertencem à sequência original da rede.
Como funciona o POW na segurança da rede
É possível que alguém tente realizar fraudes na rede. Uma das mais comuns é a fraude do gasto-duplo, onde o mesmo usuário tenta gastar duas vezes o mesmo Bitcoin. Esse, aliás, era um problema em moedas digitais que foi resolvido por Satoshi Nakamoto. E isso acontece por meio da dificuldade de mineração.
Na mineração via POW, o usuário precisa provar que gastou uma determinada quantidade de energia para criar um bloco. Essa energia vem em forma de poder computacional, o qual requer uma grande quantidade de eletricidade. É por isso que as máquinas que mineram Bitcoin consomem grandes quantidades de energia e precisam ficar ligadas 24 horas.
De certa forma, a mineração POW é uma mistura de caça ao tesouro com jogo de loteria. Cada mineradora utiliza seu poder de processamento (hash rate) para encontrar o hash do bloco antes das demais. Quando isso acontece, a máquina sinaliza para o resto da rede que o código foi encontrado.
Após a sinalização, as demais máquinas começam a verificar o bloco que foi apresentado. Elas utilizam justamente o hash do bloco anterior como uma das provas de que aquele bloco faz parte da rede. O hash do bloco encontrado é justamente a prova de que o minerador dedicou trabalho (daí o nome do algoritmo) e poder computacional para descobrir aquele bloco
Caso o hash apresentado não bata com o bloco anterior, o bloco minerado é descartado, transformando-se em um bloco-órfão. Esse bloco torna-se isolado da rede, pois é rejeitado como um bloco falso. E o minerador que tentou “descobri-lo” terá gastado energia e poder computacional em vão.
Nonce
O nonce é um número aleatório gerado no processo de mineração. Este número é adicionado no final de cada bloco minerado, junto com o hash do bloco. A função do minerador é procurar o valor desse nonce, o qual será adicionado ao bloco junto com as demais informações. Assim, um bloco é formado pelos seguintes componentes:
- Número de nonce;
- Hash do bloco;
- Conjunto de transações aprovadas pelos nós da rede.
Tanto o processo de criação do hash quanto da descoberta do nonce funcionam como uma “busca ao tesouro”. De fato, as máquinas de mineração utilizam de tentativa e erro para fazer essa descoberta. Quanto mais cálculos uma máquina consegue fazer, maior é a probabilidade dela encontrar as informações e minerar o bloco.
Validação e recompensa
Após encontrar a solução do POW, o minerador na prática criou um novo bloco. Feito isso, ele envia o bloco para os nós da rede, os quais verificarão sua validade com base nas informações já citadas. Cada bloco faz essa verificação individualmente, observando o nonce, hash, transações, etc.
Apesar da verificação ser individual, os nós trabalham em conjunto através da sua conexão com a blockchain. Caso algum deles encontre um indício de fraude, um aviso é repassado para a rede. Se a fraude for confirmada, o minerador perde direito à sua recompensa, assim como perde o poder computacional gasto. Em seguida, os nós procuram outro bloco.
Caso os nós confirmem a autenticidade do bloco minerado, este será adicionado na sequência da blockchain. Feito isso, a primeira transação do bloco criará os Bitcoins que serão enviados ao minerador como recompensa pelo trabalho desempenhado. Essa transação recebe o nome de coinbase. A recompensa dada aos mineradores varia ao longo do tempo devido ao processo de halving do Bitcoin.
POW e a segurança do Bitcoin
Vimos que a POW proporciona segurança ao evitar o gasto-duplo no Bitcoin. E essa segurança tende a aumentar conforme o tamanho da rede cresce. Quanto maior a rede, maior é a segurança proporcionada para os investidores.
O tamanho da blockchain do Bitcoin cresce a cada bloco adicionado. Cada bloco adiciona cerca de 1MB de espaço à blockchain, sendo que um bloco é minerado a cada 10 minutos. Atualmente, são necessários cerca de 330 gigabytes (330 mil MB) de espaço para armazenar toda a blockchain.
Com essa dimensão, o risco de fraudes é raro. Afinal, um minerador que quisesse fraudar o sistema teria que fraudar não apenas o bloco atual, mas todos os blocos anteriores a ele. E teria que fazer isso antes dos nós verificarem, via POW, que o bloco enviado por ele é, na verdade, falso.
Além disso, o Bitcoin tem outra particularidade: a rede de maior tamanho sempre será a rede considerada válida. Neste momento, a blockchain do Bitcoin possui mais de 670 mil blocos minerados, todos eles seguindo uma sequência clara e ativa 24 horas por dia, 7 dias por semana.
A título de comparação, cometer uma fraude no Bitcoin seria como tentar fraudar um supercomputador. Porém, ao contrário dos supercomputadores tradicionais, o poder de processamento do Bitcoin não está em uma única máquina. Tampouco existe uma forma de desligar esse supercomputador.
Ele está espalhado ao redor do mundo, com milhares de “fiscais” que seguem atentos a cada detalhe escuso e a cada tentativa de fraude. Um fraudador isolado deveria reunir pelo menos a metade mais um de todo o poder da rede. Contudo, o Bitcoin possui um poder gigantesco e descentralizado, tornando este ataque praticamente inviável tanto do ponto de vista técnico quanto financeiro.
Por isso, quanto mais blocos a blockchain tiver, maior deve ser o esforço – e o poder computacional – que o minerador precisará ter para conseguir fraudar o sistema. Dessa forma, enquanto os mineradores honestos formarem a maior parte da rede, e os nós mantiverem a vigilância nas transações, eles sempre conseguirão evitar que um ataque ao Bitcoin seja bem-sucedido. E eles têm obtido sucesso nos últimos 12 anos.