Hashcash: como Adam Back projetou o motor do Bitcoin

Siga o CriptoFacil no

Nota do redator: o texto abaixo faz parte da série Genesis Files, a qual procura mostrar os primórdios das criptomoedas antes mesmo do surgimento de Satoshi Nakamoto. Os primeiros texto da série, sobre David Chaum e Wei Dai, podem ser conferidos aqui e aqui.

“[ANÚNCIO] post de implementação do Hashcash”

A data é 28 de março de 1997. Naquela sexta-feira, 2 mil assinantes da lista de discussão Cypherpunks receberam, em suas caixas de entrada, um e-mail com o cabeçalho acima. O remetente é um britânico de 26 anos com pós-doutorado na Universidade de Exeter, um jovem criptógrafo e colaborador prolífico da lista de discussão. Seu nome: Dr. Adam Back.

Publicidade

O e-mail incluía uma descrição e implementação inicial do que ele descreve como um “esquema de postagem baseado em colisão parcial de hash” – uma espécie de selo equivalente para e-mails, baseado em um brilhante truque criptográfico.

“A ideia de usar hashes parciais é que eles podem ser arbitrariamente caros para serem computados”, escreveu Back, explicando a vantagem de seu sistema, “e ainda assim podem ser verificados instantaneamente”.

Essa proposta do criptógrafo – que viria a se tornar o atual CEO da Blockstream – não atraiu imediatamente muita atenção da lista de e-mail: apenas um leitor respondeu, com uma pesquisa técnica sobre o algoritmo hash de escolha. No entanto, a tecnologia subjacente ao Hashcash – uma certa Prova de Trabalho – moldaria a pesquisa sobre dinheiro digital durante mais de uma década.

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

Preços via processamento ou combate ao lixo eletrônico

O Hashcash de Back não era a primeira solução do gênero.

No início dos anos 90, as promessas da internet e as vantagens de um sistema de correspondências eletrônicas particulares tornaram-se óbvias para aqueles que estavam atentos às novidades. Ainda assim, os pioneiros da internet da época perceberam que o e-mail, como esse sistema de correspondência eletrônica passou a ser chamado, apresentava seus próprios desafios.

“Em particular, o custo fácil e baixo do envio de e-mail e, em especial, a simplicidade de enviar a mesma mensagem a muitas partes, todas elas são um convite aos abusos”, explicaram os pesquisadores da IBM Cynthia Dwork e Moni Naor por meio de um artigo, lançado em 1992, com o nome “Preços via processamento ou combate ao lixo eletrônico“.

Publicidade

De fato, como o e-mail aumentou em popularidade, o fenômeno das mensagens de spam também aumentou. Todos os usuários concordaram que uma solução para tais abusos era necessária. E foi justamente uma solução que o trabalho de Dwork e Naor ofereceu.

A dupla propôs um sistema em que os remetentes teriam que anexar alguns dados a qualquer email que enviassem. Esses dados seriam a solução para um problema matemático exclusivo do e-mail em questão. Especificamente, Dwork e Naor propuseram três enigmas que poderiam ser usados ​​para o propósito, todos baseados em esquemas de criptografia e assinatura de chave pública.

Adicionar uma solução a um e-mail não seria muito difícil, exigindo apenas alguns segundos de processamento de um computador comum, enquanto sua validade poderia ser facilmente verificada pelo destinatário. Mas, e esse é o truque, até mesmo uma quantidade trivial de poder de processamento por e-mail se soma a anunciantes, golpistas e hackers que tentam enviar milhares ou até milhões de mensagens de uma só vez. Em teoria, o spam poderia se tornar uma atividade muito cara e, portanto, não lucrativa.

Publicidade

“A ideia principal é exigir que um usuário calcule uma função de dificuldade moderada, mas que não seja indecifrável, para obter acesso ao recurso, evitando assim o uso banal do e-mail”, explicaram Dwork e Naor.

O tipo de solução que a dupla introduziu se tornaria conhecido como um sistema de “prova de trabalho”, embora Dwork e Naor não tivessem inventado o termo. Nessa solução, os usuários teriam que mostrar literalmente que seu computador executava o trabalho, para provar que eles gastavam recursos do mundo real.

Uma solução muito engenhosa, mas que também estava muito à frente de seu tempo. Na época de seu lançamento, a proposta nunca vingou para muito além de um círculo relativamente pequeno de cientistas da computação.

Adam Back e os Cypherpunks

Na mesma época em que Dwork e Naor publicaram seu artigo, um grupo de ativistas da privacidade com uma inclinação libertária também reconheceu o enorme potencial da internet. Essa multidão ideologicamente motivada começou a se organizar por meio de uma lista de discussão centrada em tecnologias que melhoram a privacidade. Como Dwork e Naor, esses “Cypherpunks” – como eles viriam a ser conhecidos – utilizaram a nova ciência da criptografia para trabalhar em direção a concretizar os seus objetivos.

Publicidade

Ao longo dos anos, Adam Back – que concluiu seu Ph.D. em 1996 – estabeleceu-se como um dos participantes mais ativos nessa lista, às vezes contribuindo com dezenas de e-mails em um único mês. Como a maioria dos Cypherpunks, o criptógrafo era apaixonado por tópicos como privacidade, liberdade de expressão e libertarianismo, e também estava envolvido em discussões técnicas relativas a correspondências anônimas, sistemas de arquivos criptografados e dinheiro eletrônico, conforme apresentado por David Chaum, criador do eCash.

Mas, durante algum tempo, Back ficou mais conhecido por imprimir e vender as chamadas “camisetas de munição”: camisetas com um protocolo de criptografia impresso, destinadas a ajudar a indicar a decisão absurda do governo dos EUA de regulamentar o PGP de Phil Zimmermann, um programa de privacidade para criptografia de dados. O PGP estava previsto para ser regulamentado como munição de armas de fogo, dentro da definição dos regulamentos de exportação dos EUA. Levando o “protesto” ao pé da letra, usar a camiseta de Back enquanto atravessava a fronteira para sair dos Estados Unidos tecnicamente fazia do usuário um criminoso “exportador de munições”.

Como muitos, Back não estava ciente da proposta de prova de trabalho de Dwork e Naor. Mas em meados da década de 1990, ele estava pensando em idéias semelhantes para combater os spams, e às vezes “pensava em voz alta” na lista de discussão Cypherpunks.

Publicidade

“Um benefício colateral do uso do PGP é que a criptografia PGP deve adicionar alguma sobrecarga ao spammer – ele provavelmente poderá criptografar menos mensagens por segundo do que ele pode fazer spam em um link T3”, comentou Back, no contexto de adicionar mais privacidade para quem faz repostagem; essa é uma ideia um pouco semelhante a Dwork e Naor.

A lista de discussão do Cypherpunks cresceu significativamente em cerca de meia década. O que começou como uma plataforma de discussão on-line para um grupo de pessoas que inicialmente se reuniram em uma de suas startups na Bay Area (como é conhecida a região metropolitana da cidade de San Francisco) se tornou um pequeno fenômeno da internet, com milhares de assinantes – e muitas vezes mais e-mails em um único dia do que qualquer um poderia acompanhar.

Foi nessa época – em 1997, perto do pico de popularidade da lista – que Back enviou sua proposta de criação do Hashcash.

Hashcash

O Hashcah é semelhante à proposta anti-spam de Dwork e Naor e tem o mesmo propósito, embora Back tenha proposto alguns casos de uso adicionais, como o combate ao abuso anônimo de repostagem. Mas, como o nome sugere, o Hashcash não se baseava em enigmas criptográficos como os de Dwork e Naor; ele foi baseado em hashing.

Hashing é um truque criptográfico que pega todos os dados – seja uma única letra ou um livro inteiro – e os transforma em um número aparentemente aleatório de tamanho predeterminado.

Por exemplo, um hash SHA-256 da sentença esta é uma sentença produz o número hexadecimal abaixo:

O qual pode ser “traduzido” no seguinte número decimal:

Ou em dígitos binários:

Enquanto isso, um hash SHA-256 da sentença esta sentença produz este número hexadecimal:

Como pode ser visto, simplesmente inserir uma vírgula na frase muda completamente o hash. E o mais importante, o hash de qualquer das frases seria completamente imprevisível; mesmo depois que a primeira sentença foi dividida, não havia como calcular o segundo hash dela. A única maneira de descobrir era realmente dividir as duas frases.

O Hashcash aplica este truque matemático de maneira inteligente.

Com o Hashcash, os metadados de um email (o endereço “de”, o endereço “para”, a hora, etc.) são formalizados como um protocolo. Além disso, o remetente de um email deve adicionar um número aleatório a esses metadados: um “nonce”. Todos esses metadados, incluindo o nonce, são então “hasheados.” Portanto, o hash resultante é parecido com um dos números aleatórios acima.

Aqui está o truque: nem todo hash é considerado “válido”. Em vez disso, a versão binária do hash deve começar com um número predeterminado de zeros (por exemplo: 20 zeros). O remetente pode gerar um hash que começa com 20 zeros, incluindo um nonce que é adicionado aleatoriamente corretamente, mas o remetente não sabe com antecedência como esse nonce será.

Para gerar um hash válido, portanto, o remetente tem apenas uma opção: tentativa e erro (“força bruta”). Ele deve continuar tentando diferentes nonces até encontrar uma combinação válida; caso contrário, seu e-mail será rejeitado pelo cliente de e-mail do destinatário pretendido. Assim como a solução da Dwork e da Naor, isso requer o uso de recursos computacionais – um sistema de prova de trabalho.

“Se não tiver um hash de 20 bits […], você tem um programa que o avisa explicando a postagem necessária e de onde obter o software”, explicou Back na lista de discussão da Cypherpunks. “Isso colocaria os spammers fora do negócio durante a noite, pois um ataque de força bruta levaria 1.000.000 x 20 anos, o que certamente significa mais computacional do que eles têm.”

Notavelmente, o sistema de prova de trabalho de Back é mais aleatório do que o de Dwork e Naor. A solução da dupla exigia a solução de um quebra-cabeça, o que significa que um computador mais rápido resolveria isso mais rapidamente do que um computador mais lento. Mas, estatisticamente, o Hashcash ainda permitiria que o computador mais lento encontrasse uma solução correta mais rapidamente em algum momento (por analogia, se uma pessoa corre mais rápido do que outra, a primeira ganha um sprint entre eles o tempo todo. Mas se uma pessoa compra mais bilhetes de loteria do que outra pessoa, esta última ainda ganhará estatisticamente algum tempo – e também ganhará frequentemente).

Escassez digital

Assim como a proposta de Dwork e Naor, o Hashcash – que Back elaboraria em um paper escrito em 2002 – nunca alcançou um sucesso relativamente grande. Ele foi implementado na SpamAssassin, plataforma de código-fonte aberto do Apache, e a Microsoft lançou uma ideia de prova de trabalho no formato incompatível de “email postmark”. E Back, assim como outros acadêmicos, apresentaram várias aplicações alternativas para a solução ao longo dos anos, mas a maioria nunca obteve muita escala de uso. Para a maioria das possíveis aplicações, a falta de qualquer efeito de rede provavelmente era grande demais para ser superada.

No entanto, Dwork e Naor, assim como Back (de forma independente) introduziram algo novo. Onde uma das características mais poderosas dos produtos digitais é a facilidade com que podem ser copiados, a prova de trabalho era essencialmente o primeiro conceito semelhante à escassez virtual que não dependia de uma parte central: ela ligava os dados digitais ao mundo real e aos recursos limitados de poder de computação.

E a escassez, claro, é um pré-requisito para o dinheiro. De fato, Back, em particular, colocou explicitamente o Hashcash na categoria de dinheiro em todas as contribuições da lista de discussão Cypherpunks e em seu white paper, tendo como inspiração o único dinheiro digital que o mundo tinha visto naquele momento: o eCash de David Chaum.

“O Hashcash pode fornecer uma medida intermediária até o Digicash se tornar mais amplamente usado”, argumentou Back na lista de discussão. “Ele é gratuito, tudo o que você precisa fazer é gravar alguns ciclos no seu PC. Está de acordo com a cultura do discurso livre, onde quem dispõe de poucos recursos financeiros pode competir com milionários, funcionários públicos aposentados, etc. em igualdade de condições. [E] Hashcash pode nos fornecer um método de retorno para o controle de [sic] spam caso o Digicash venha a desaparecer (for banido ou exigir identidade dos usuários).”

Apesar do nome, no entanto, Hashcash não poderia funcionar adequadamente como um verdadeiro dinheiro em si (nem a proposta de Dwork e Naor). Talvez mais importante, qualquer prova de trabalho “recebida” é inútil para o destinatário. Ao contrário do dinheiro, ele não poderia ser gasto em outro lugar. Além disso, à medida que os computadores aumentavam de velocidade a cada ano, eles podiam produzir mais e mais provas ao longo do tempo a um custo menor: a Hashcash estaria sujeita a inflação, ou mesmo a hiperinflação.

O que a prova de trabalho oferecia, mais do que qualquer outra coisa, era uma nova base para pesquisa no mundo do dinheiro digital. Várias das propostas de dinheiro digital mais notáveis ​​que se seguiram foram baseadas no Hashcash, normalmente permitindo que as provas de trabalho sejam reutilizadas (com Prova de Trabalho Reutilizável de Hal Finney – RPOW – como o exemplo mais óbvio).

Bitcoin

Por fim, é claro, a prova de trabalho tornou-se a pedra angular para o Bitcoin, tanto que o Hashcash é uma das poucas citações de Satoshi Nakamoto no whitepaper da criptomoeda mais usada atualmente.

No entanto, no Bitcoin, o Hashcash (ou melhor, uma versão dele) é utilizado de forma muito diferente do que muitos imaginavam. Ao contrário do Hashcash e de outras propostas baseadas nele, a escassez que ela oferece não é usada como dinheiro. Em vez disso, o Hashcash permite uma corrida. Qualquer minerador que for o primeiro a produzir uma prova válida de trabalho – um hash de um bloco Bitcoin – decide quais transações vão passar. Pelo menos em teoria, qualquer um pode competir da mesma maneira: muito parecido com uma loteria, até mesmo pequenos mineradores poderiam ser estatisticamente os primeiros a produzir uma prova válida de trabalho de forma ocasional.

Além disso, quando um novo bloco é extraído, confirmando um conjunto de transações, é praticamente impossível que essas transações sejam revertidas. Alguém que ataque a rede com esse objetivo teria que provar pelo menos tanto trabalho quanto necessário para encontrar o bloco, adicionando mais trabalho para cada bloco encontrado, algo que circunstâncias normais se torna exponencialmente mais difícil ao longo do tempo. Os recursos do mundo real que devem ser gastos para burlar a rede superam o lucro potencial que pode ser obtido com a tentativa, dando aos destinatários das transações de Bitcoin a confiança de que essas transações são definitivas.

Foi assim que, no Bitcoin, o Hashcash matou dois coelhos com uma cajadada só. Resolveu o problema do gasto duplo de forma descentralizada, ao mesmo tempo em que forneceu um truque para colocar novas moedas em circulação sem a necessidade de emissores centralizados.

O Hashcash não tornou-se o primeiro sistema de dinheiro eletrônico – esse título coube ao eCash – e a prova de trabalho não pode funcionar como dinheiro. Mas um sistema de caixa eletrônico descentralizado se torna impossível sem esse sistema de prova. E o mérito de sua criação, isso sim, devemos a Adam Back e sua visão para o Hashcash.

Siga o CriptoFacil no