Explicando o White Paper do Bitcoin

Hoje, eu irei esmiuçar e explicar de maneira clara e fácil o artigo técnico original que pela primeira vez tratou sobre o conceito do Bitcoin. Espero que depois de ler este post você irá entender exatamente o que é Bitcoin e não mais ficará intrigado sobre como ele funciona.

Este post não irá cobrir todos os aspectos do Bitcoin. Ao invés disso, focarei no White Paper original do Bitcoin e espero provê-los com uma explicação fundamental sobre o Bitcoin. O artigo que discutirei a seguir é o artigo original escrito pelo personagem anônimo e criador do Bitcoin, “Satoshi Nakamoto”, que foi publicado em outubro de 2008 em uma lista de e-mails de criptógrafos.

Então, vamos começar!

O artigo de Satoshi Nakamoto, intitulado “Bitcoin: um sistema de dinheiro eletrônico de pessoa para pessoa” é dividido em quatro seções principais. São elas:

1) Abstract (irei pular essa parte, pois trata-se apenas de uma visão geral do artigo)
2) Introdução
3) Metodologia
4) Conclusão

Introdução

Satoshi argumenta que para comprar e vender coisas por meio da Internet dependemos de instituições financeiras que atuam como intermediários para processar as transações entre as partes envolvidas no negócio. Este processo consiste, portanto, em uma das partes confiando a uma terceira parte (intermediário) o processamento da transação (pense na Visa, Mastercard ou Paypal, por exemplo). Além da necessidade de se confiar em uma terceira parte, sempre vem acompanhada a possibilidade de se reverter tal transação, caso o comprador solicite à sua bandeira de cartão de crédito, por exemplo. Atualmente, não existe nenhuma maneira de se fazer um pagamento online que não seja irreversível, é sempre possível solicitar ao intermediário a reversão do negócio.

Como as instituições financeiras atuam como uma contra-parte confiável para facilitar a transação, elas gastam muito tempo resolvendo disputas e lidando com transações fraudulentas. Isso, obviamente, aumenta o custo de se performar uma transação por meio da Internet e torna as transações relativamente caras.

Para resolver este problema, Satoshi introduziu ao mundo um sistema eletrônico de pagamento baseado em criptografia, que permite que duas partes interajam entre si, sem a necessidade de uma terceira parte no meio do caminho que atue como intermediário. Como essas transações criptográficas serão computacionalmente impossíveis de serem revertidas, os usuários estão protegidos contra qualquer tipo de fraude nas transações.

Por isso, foi criado um sistema eletrônico de dinheiro pessoa para pessoa (peer-to-peer — P2P), baseado em computadores interconectados que trabalham conjuntamente em rede. Este sistema de dinheiro peer-to-peer resolve um problema antigo que é o gasto duplo, ou seja, quando se performa duas transações online simultaneamente com um mesma moeda. Para resolver isso, ele utiliza o hashing e a prova de trabalho (explicarei mais abaixo).

Metodologia

A seção “metodologia” do artigo é dividida nas seguintes seções que definem o conceito do Bitcoin: (1) transações, (2) servidor de carimbo de tempo, (3) prova de trabalho, (4) rede, (5) incentivos, (6) reivindicando espaço em disco, (7) verificação simplificada de pagamento, (8) combinando e dividindo valores, (9) privacidade e (10) cálculos.

Estes termos podem soar para você como algo completamente de outro mundo no momento, mas eu irei explicar cada uma dessas seções para tornar seu conteúdo claro e compreensível.

(1) Transações

A definição de Bitcoin disposta no artigo é: uma cadeia de assinaturas digitais que podem ser passadas de uma pessoa para outra utilizando uma assinatura eletrônica (hash). Durante este processo, o remetente do Bitcoin assina eletronicamente as transações passadas e também a chave pública do receptor para quem está enviando aquele Bitcoin.

Analogamente, seria como assinar o recebimento de uma encomenda e, então, escrever um endereço para onde a encomenda deverá ser enviada. Enviar um Bitcoin para alguém é como jogar “passa a anel”, exceto que cada vez que o anel é passado, fica registrada o histórico que contém por quais mãos o anel passou fica. Este registro histórico cria a Blockchain do Bitcoin, que é essencialmente um livro contábil de todas as transações de Bitcoin que ocorreram até então.

Ainda seguindo a analogia do jogo “passa anel”, se fosse possível jogar “passa anel” online, poderíamos passar o anel para mais de um receptor ao mesmo tempo (seria como enviar um mesmo e-mail para várias pessoas). No mundo do Bitcoin, isso é problemático porque poderia fazer as pessoas gastarem duas vezes a mesma moeda digital.

O Bitcoin resolve este problema ao realizar registros de tempo em cada transação que são utilizados para garantir que qualquer vez que um Bitcoin seja enviado, seja impossível de produzir uma cópia duplicada daquele bitcoin, ou seja, seja impossível realizar uma fraude. Assim, cada transação é carimbada e processada pelo sistema do Bitcoin de acordo com a ordem de cada carimbo de tempo. Assim, se um mesmo Bitcoin for enviado a dois receptores, eles terão carimbos de tempo diferentes e, por isso, o segundo Bitcoin enviado será automaticamente rejeitado pelo sistema.

O sistema do Bitcoin processa cada transação e “publicamente anuncia” quando uma transação está sendo realizada. Isso garante que o sistema, junto a seus usuários, modere a cadeia de transações (blockchain) para garantir que atividades fraudulentas não sejam feitas. Ao utilizar este método de moderação das transações, o sistema garante que um intermediário não se faça necessário e que o sistema do Bitcoin seja verdadeiramente descentralizado.

Além disso, os participantes do sistema (computadores e nós da rede) devem chegar a um consenso sobre um único histórico de transações. Se os participantes utilizarem históricos diferentes, o problema do gasto duplo irá ocorrer e/ou múltiplas cadeias de transações serão criadas e isto seria o caos.

Para evitar isso, a maioria dos computadores (nós da rede) concordam em utilizar um único histórico e processam apenas transações relativas a este histórico.

(2) Servidor de carimbo de tempo

O servidor de carimbo de tempo é um simples software que é usado para estampar digitalmente a data e horário de cada transação. O servidor pega uma pequena parte dos dados da transação (um hash) e carimba o tempo nela. Esse hash com o tempo carimbado é então disponibilizado publicamente para que todos possam ver. A existência desse hash com o tempo carimbado é a prova de que a transação existiu e que foi válida.

Como previamente descrito na seção “transações”, a assinatura eletrônica da transação anterior é também incluída no hash que foi recém criado. Assim, isso cria uma cadeia de transações (Blockchain) ao passo que cada novo hash carimbado pelo tempo inclua os hashes prévios. O tamanho da Blockchain, então, cresce e o histórico de transações aumenta também.

Isso demonstra a razão pela qual é necessário cada vez mais poder computacional para minerar a blockchain, porque o histórico sempre cresce. Quando o Bitcoin foi pela primeira introduzido, um pequeno computador de mesa podia eficientemente “minerar” Bitcoins, ou seja, processar transações. Contudo, um computador de mesa não pode mais fazer isso e computadores especializados são necessários para processar as transações devido ao tamanho atingido pelo histórico de transações na Blockchain.

(3) Prova de trabalho

Para implementar um servidor de carimbo de tempo em uma rede de computadores (nós), um sistema de prova de trabalho precisa ser utilizado. Prova de trabalho requer prova que uma específica quantidade de trabalho foi feita pelo sistema.

No que tange ao Bitcoin, um problema matemático específico precisa ser resolvido por um computador e a resposta deste problema precisa ser divulgada para que o trabalho feito seja demonstrado. Como um computador precisa realizar um trabalho para resolver um problema, as pessoas não conseguem realizar spam na rede com múltiplos pedidos. Para realizar um spam na rede com múltiplos pedidos seria necessário muito poder computacional e, por isso, a prova de trabalho é utilizada para garantir a segurança do sistema.

Uma analogia para isso seria um professor dar uma lição de casa difícil para um estudante. O estudante pega essa lição, gasta seu tempo calculando a solução para o problema e então apresenta a resposta ao professor. O professor então checa a resposta do estudante e caso ela esteja correta, isso prova ao professor que o estudante gastou uma quantidade de trabalho suficiente para ser recompensado.

Em detalhe:

O hash criado pelo servidor de carimbo de tempo, como descrito acima, atribui para si um número único e aleatório para que ele possa ser identificado na Blockchain. Este número também contém um enigma que precisa ser resolvido antes que a transação aconteça.

Quando alguém envia uma transação, eles devem então pegar esse número único e resolver o enigma. A resposta para este enigma é então passada à frente para a próxima pessoa (receptor da transação) poder checá-la.

O receptor então checa a resposta dada pelo remetente ao colocar a resposta no hash que gerou um número aleatório. O hash então irá informar ao receptor se a resposta está correta.

Se a resposta estiver correta, o hash pode então ser passado do remetente para o receptor e isto completa a transação e a Blockchain cresce de tamanho.

Se a resposta estiver incorreta, a transação é rejeitada e considerada inválida.

Este processo de solucionar enigmas de hash essencialmente trava as transações (blocos) em um lugar dentro da Blockchain. Para reverter um conjunto de transações (destravar um bloco), o trabalho a ser feito para resolver o enigma do hash precisa ser desfeito. Como o hash é construído um sob o outro para formar a Blockchain, você também precisaria realizar trabalho em toda cadeia para desfazer um único bloco. Assim, é praticamente impossível destravar um único bloco, pois toda a cadeia precisaria ser modificada para se obter êxito, o que exigiria uma quantidade de poder computacional (e financeiro) colossal. Portanto, essas transações criadas não podem ser revertidas.

(4) Rede

Esta seção rapidamente define a estrutura e os processos da rede Bitcoin, vejamos a ordem:

Novas transações são “anunciadas publicamente” para todos os nós >>

Cada nó coloca todas as novas transações em um bloco >> Cada nó trabalha para resolver a prova de trabalho (descrita acima) para seu próprio bloco >> Quando um nó resolve um enigma para o seu bloco, ele informa todos os outros nós >> Os nós aceitam o bloco cujo enigma foi resolvido se TODAS as transações forem válidas e se não existirem problemas de gastos duplos >> Os nós passam para o próximo bloco na cadeia >> Este processo se repete.

Os nós sempre consideram a maior cadeia de blocos como sendo a correta. Se dois nós enviam duas versões do bloco ao mesmo tempo, estes blocos serão processados com base em seu carimbo de tempo. A cadeia que for maior será a vencedora. Se um nó é desligado e subsequentemente não receber um bloco, o resto dos nós irá continuar sem ele e o nó que estiver fora do ar será atualizado quando se reconectar à rede.

(5) Incentivos
Convencionalmente, a primeira transação em um bloco cria um novo Bitcoin que é de direito da pessoa (nó) que criou aquele bloco. Isso incentiva as pessoas a usarem seus computadores (nós) e conectá-los à rede do Bitcoin para ajudar no processamento das transações. É a partir daí que se origina o termo “mineração de Bitcoins”.

Taxas de transação também compõem os incentivos, que são custos adicionais relativos a cada transação. Uma vez que o montante máximo de Bitcoins (21 milhões) esteja disponível no sistema do Bitcoin (o que deverá ocorrer apenas no ano 2140), o incentivo para continuar minerando Bitcoin somente virá na forma de taxas de transação, que têm oscilação livre, a depender do congestionamento da rede.

Espera-se que estes incentivos manterão a honestidade (literalmente) dos nós e os impeçam de tentar fraudar o sistema para obter lucro. Se os usuários fraudulentos tiverem mais nós que os usuários honestos, eles poderão retroagir a Blockchain, roubar pagamentos e gerar novos Bitcoins. Mas, em realidade, é sempre mais lucrativo atuar conforme as regras do jogo devido aos incentivos e espera-se que este sistema seja suficiente para deter nós fraudulentos.

(6) Reivindicando espaço em disco

Esta seção simplesmente trata de alocação de memória, sendo os principais pontos:

Transações antigas podem ser descartadas depois de um certo tempo para poupar espaço em disco, mas a raiz (um rastro) de uma transação descartada será mantida na Blockchain para que ela se mantenha intacta.

O desenvolvimento de hardwares de computação (Lei de Moore) irá se sobrepor ao tamanho da Blockchain e, por isso, armazenar a cadeia de transações em um hardware não deverá ser um problema.

(7) Verificação simplificada de pagamento

Pagamentos podem ser verificados sem a necessidade de rodar a rede completa em um nó. Caso um usuário detenha a cópia da Blockchain mais longa e o hash do bloco (lembre-se: um hash é apenas uma pequena parte de uma transação), ele poderá verificar um pagamento. Isso é feito ao consultar a rede de nós e combinar a transação com seu devido carimbo de tempo.

Uma transação não pode ser checada por um nó individual, uma pessoa deve se conectar a outro nó que, então, os conectará à Blockchain. Esta conexão irá então verificar se versão da Blockchain da pessoa está atualizada. Se não estiver, a Blockchain irá atualizar a versão da pessoa antes de continuar.

Este método de verificação ao se fazer um pagamento é confiável desde que nós honestos estejam em controle, contudo este método de verificação torna-se vulnerável caso nós fraudulentos passem a controlar a rede. Para resolver isto, um alerta deve ser enviado pelos nós que detectarem um bloco inválido, informando aos outros nós para realizarem o download de uma cópia completa da Blockchain para confirmar a invalidez dos blocos. Empresas devem rodar seus próprios nós para ter uma segurança aprimorada.

(8) Combinando e dividindo valores
Processar Bitcoins individualmente é possível, contudo é ineficiente fazer uma transação em separado para cada centavo de uma transferência. O valor dos Bitcoins pode, portanto, ser dividido e/ou recombinado. Isso permite que um Bitcoin grande seja dividido em múltiplas partes antes de ser passado adiante, ou que Bitcoins menores sejam combinados para perfazerem um valor maior.

No máximo duas saídas de cada transação podem ser feitas, uma que vai para o receptor e outra que será o troco (se houver) para o remetente.

Um exemplo disto:
Você poderia pagar por um item ao enviar ao receptor um dólar por vez US$1…US$1…US$1…US$1… e US$1 ou, alternativamente, você poderia somar todos os seus dólares e enviar a ele US$5. É mais eficiente enviar ao receptor US$5 em uma transação e, por isso, esse método é usado para enviar Bitcoins.

(9) Privacidade
Apesar de as transações serem declaradas publicamente, as chaves públicas que identificam indivíduos são anônimas e, por isso, as identidades tanto do remetente quanto do receptor não podem ser determinadas pelo público. É publicamente declarado que um certo montante de Bitcoins está se movendo do ponto A para o B, contudo nenhuma informação identificável é abertamente disponibilizada.

(10) Cálculos

Estes cálculos requerem conhecimentos avançados de matemática que podem tomar um bom tempo para serem explicados de maneira simples. Não irei entrar nestes detalhes aqui, mas se muita gente pedir, irei fazer um post explicando do que se trata esta seção.

Rapidamente, esta seção diz:

Existe uma maior probabilidade de um nó honesto encontrar um bloco antes de um nó fraudulento. É, portanto, improvável que um nó fraudulento alcance um nó honesto ao fazer uma Blockchain fraudulenta. As chances não estão em favor do nó fraudulento ao menos que eles simplesmente tenham muita sorte. Por isso, é importante quando se aumenta o tamanho da Blockchain, pois os nós identificam a cadeia de transações mais longa como sendo a correta.

Conclusão

Satoshi conclui seu trabalho chamando a atenção para as principais características de seu artigo técnico:

  • Um sistema eletrônico de transação que não necessita de um intermediário foi proposto.
  • Assinaturas digitais permitem forte controle sobre propriedade e o gasto duplo é prevenido.
  • Uma rede peer-to-peer que utiliza prova de trabalho é usada para criar um registro público que é impraticável para fraudadores modificarem, desde que os nós honestos estejam em controle do sistema.
  • Os nós trabalham com pouca coordenação, eles não precisam ser identificados, pois as mensagens jamais são enviadas para uma única localização.
  • Os nós podem deixar e voltar à rede a qualquer hora, pois eles irão atualizar sua Blockchain uma vez que retornarem à rede.
  • As regras e incentivos podem ser aplicados utilizando um sistema de votação.

Tradução e colaboração Milton Leal