Como o Bitcoin Funciona?
Uma explicação rápida para iniciantes
Bitcoin é um sistema de pagamento eletrônico que permite a qualquer pessoa criar uma conta e enviar qualquer quantia de dinheiro para qualquer um no mundo.
Talvez você queira ler isso de novo.
Ele foi criado como uma alternativa ao sistema financeiro atual. No sistema atual temos um pequeno número de grandes bancos que controlam quem pode criar uma conta e quais transações você pode fazer. Isso centraliza o controle do dinheiro, e não temos outra opção a não ser confiar que esses bancos vão agir de forma justa e responsável.
É preciso confiar nos bancos para guardar nosso dinheiro e transferi-lo eletronicamente, mas eles o emprestam em ondas de bolhas de crédito com mal uma fração em reserva.
O Bitcoin foi desenvolvido em resposta à crise financeira de 2007-2008 causada pela centralização do sistema atual. Foi projetado anonimamente por Satoshi Nakamoto e foi lançado em janeiro de 2009 como um sistema de pagamento que funciona sem um ponto central de controle.
Ele também é um software de código aberto, o que significa que qualquer pessoa pode rodar o programa e interagir com o sistema.
O que segue é uma explicação simples de como ele funciona.
O que é o Bitcoin?
O Bitcoin é só um programa de computador. Você pode baixá-lo e rodá-lo no seu computador.
Quando você roda o programa pela primeira vez, ele se conecta a outros computadores rodando o mesmo programa, e eles começam a compartilhar um arquivo com você. Esse arquivo é chamado de blockchain, que é uma grande lista de transações.
Quando uma nova transação entra na rede, ela é retransmitida de computador em computador até que todos tenham uma cópia dela. Em intervalos de aproximadamente 10 minutos, um computador aleatório (nó) da rede adiciona à blockchain as transações mais recentes que recebeu e compartilha as atualizações com todos os outros.
Como resultado, o programa Bitcoin cria uma grande rede de computadores que se comunicam entre si para compartilhar um arquivo e atualizá-lo com novas transações.
Que problema o Bitcoin resolve?
O Bitcoin resolve o problema de poder ter um sistema de pagamento que opera sem um ponto central de controle.
Antes do Bitcoin, já era possível retransmitir transações por uma rede de computadores. Porém, o problema é que você pode inserir transações conflitantes em uma rede de computadores. Por exemplo, você poderia criar duas transações separadas que gastam a mesma moeda digital e enviar ambas para a rede ao mesmo tempo.
Isso é chamado de "gasto duplo" (double-spend):
Alguns computadores receberão a transação verde primeiro, e alguns receberão a transação vermelha primeiro.
Agora, se você está criando um sistema de pagamento eletrônico sem uma autoridade central, você tem o problema de descobrir qual dessas transações veio "primeiro", e isso é algo difícil de determinar quando você tem uma rede de computadores agindo de forma independente.
Então, quem deve decidir qual transação veio "primeiro" e deve ser a única gravada no arquivo?
O Bitcoin resolve esse problema forçando os nós a manterem todas as transações que recebem na memória antes de gravá-las em um arquivo. Então, em intervalos de 10 minutos, um nó aleatório da rede adiciona as transações da sua memória ao arquivo.
Esse arquivo atualizado é então compartilhado com o resto da rede. Os nós aceitam as transações do arquivo atualizado como as "corretas" e removem da sua memória quaisquer transações conflitantes.
Como resultado, nenhuma transação de gasto duplo será gravada no arquivo, e todos os nós se atualizam regularmente para a mesma versão do arquivo compartilhado.
Esse processo de adicionar transações ao arquivo é chamado de mineração, e é uma competição em toda a rede que não pode ser controlada por um único nó.
Como funciona a mineração?
A mineração é o processo de adicionar novos blocos de transações à blockchain.
Para começar, cada nó armazena as transações mais recentes que recebeu no seu memory pool, que é apenas uma memória temporária no computador dele.
Qualquer nó pode então tentar minerar as transações do seu memory pool no arquivo compartilhado (a blockchain).
Para isso, um nó reúne as transações do seu memory pool em um contêiner chamado bloco e então usa poder de processamento para tentar adicionar esse bloco de transações à blockchain.
Então, onde entra esse poder de processamento? Bem, para adicionar esse bloco à blockchain, você precisa alimentar seu bloco de transações em algo chamado função de hash. Uma função de hash é basicamente um mini programa de computador que recebe qualquer quantidade de dados, embaralha-os e cospe um número completamente único (e imprevisível).
Para que seu bloco seja adicionado com sucesso à blockchain, esse número (ou hash do bloco) precisa ser igual ou inferior ao alvo, que é um limite com o qual todos na rede concordam.
Se o seu hash de bloco resultante não estiver abaixo do alvo, você pode fazer um pequeno ajuste nos dados dentro do bloco e passá-lo pela função de hash de novo. Isso produzirá um número completamente diferente que, com sorte, estará abaixo do alvo. Se não, você ajusta o bloco e tenta de novo.
Em algum momento, um dos nós (ou mineradores) da rede encontrará um hash de bloco abaixo do alvo, e esse bloco de transações será adicionado à blockchain.
Então o processo de mineração começa de novo para adicionar o próximo bloco à cadeia.
Então, resumindo, o processo de mineração usa poder de processamento para fazer cálculos de hash o mais rápido possível, tentando ser o primeiro computador da rede a obter um hash de bloco abaixo do alvo. Se você tiver sucesso, pode adicionar seu bloco de transações à blockchain e compartilhá-lo com o resto da rede.
O uso da função de hash em conjunto com um valor alvo cria uma competição em toda a rede da qual qualquer um pode participar. Também significa que nenhum computador isolado da rede tem controle total sobre a adição de transações à blockchain, o que cria uma rede de compartilhamento de arquivos sem ponto central de controle.
Embora ainda seja possível para qualquer um tentar minerar blocos, não é mais competitivo fazer isso em um computador doméstico. Os mineradores agora usam hardware especializado, feito para realizar cálculos de hash o mais rápido (e da forma mais eficiente) possível, o que significa que a mineração hoje é feita principalmente por quem tem acesso a hardware especializado e energia elétrica barata.
De onde vêm os bitcoins?
Como incentivo para usar poder de processamento na tentativa de adicionar novos blocos de transações à blockchain, cada novo bloco disponibiliza uma quantidade fixa de bitcoins que não existiam antes. Portanto, se você conseguir minerar um bloco com sucesso, pode "enviar" a si mesmo esses novos bitcoins como recompensa pelo seu esforço.
Esse lote de novos bitcoins é chamado de recompensa do bloco e é a razão pela qual o processo é chamado de "mineração".
Por que o arquivo é chamado de "blockchain"?
As transações não são adicionadas ao arquivo individualmente — elas são coletadas juntas e adicionadas em blocos. Cada um desses novos blocos se constrói sobre um bloco existente, e assim o arquivo é formado por uma cadeia de blocos; daí, blockchain (cadeia de blocos).
Além disso, todo nó da rede sempre adotará a cadeia mais longa de blocos que receber como a versão "oficial" da blockchain.
Isso significa que os mineradores sempre tentarão construir sobre a "ponta" da cadeia de blocos conhecida mais longa, já que quaisquer transações que não façam parte da cadeia mais longa serão inválidas.
Portanto, se alguém quisesse reescrever o histórico de transações, precisaria reconstruir uma cadeia de blocos mais longa para criar uma nova cadeia mais longa para os outros nós adotarem. Porém, para conseguir isso, um único minerador precisaria ter mais poder de processamento do que o resto da rede combinado.
Como resultado, o esforço combinado da rede torna difícil para qualquer indivíduo "ultrapassar" a rede e reescrever a blockchain.
Em outras palavras, todo o histórico de transações (e o seu dinheiro) é protegido pela energia combinada da mineração.
Como funcionam as transações?
Você pode pensar na blockchain como um depósito de cofres de segurança, que chamamos de saídas. Essas saídas são só contêineres que guardam várias quantidades de bitcoin.
Quando você faz uma transação de bitcoin, você seleciona algumas saídas e as destrava, depois cria novas saídas e coloca novas travas nelas.
Então, quando você "envia" bitcoins para alguém, na verdade você está colocando uma quantidade de bitcoins em um novo cofre de segurança e pondo nele uma trava que só a pessoa para quem você está "enviando" os bitcoins consegue destravar.
Por exemplo, se eu quisesse te enviar alguns bitcoins, eu selecionaria algumas saídas da blockchain que consigo destravar e criaria uma nova saída a partir delas que só você consegue destravar. Além disso, se eu não quisesse te enviar todos os bitcoins que destravei, eu criaria uma saída extra como meu "troco" e a travaria para mim mesmo.
Daqui em diante, se você quiser enviar seus bitcoins para outra pessoa, repetiria o processo de selecionar saídas existentes (que você consegue destravar) e criar novas saídas a partir delas. Como resultado, as transações de bitcoin formam uma estrutura parecida com um grafo, onde a movimentação dos bitcoins é conectada por uma série de transações.
Por fim, quando uma transação é minerada na blockchain, as saídas que foram consumidas (gastas) na transação não podem ser usadas em outra transação, e as saídas recém-criadas ficarão disponíveis para serem gastas em uma transação futura.
Como você possui bitcoins?
Para conseguir "receber" bitcoins, você precisa ter o seu próprio conjunto de chaves.
Esse conjunto de chaves é como o seu número de conta e senha, só que no Bitcoin elas são chamadas de chave pública e chave privada.
Por exemplo, se eu quisesse te enviar alguns bitcoins, você primeiro precisaria me dar sua chave pública. Quando eu criasse minha transação, eu colocaria sua chave pública dentro da trava da saída (o cofre de segurança). E quando você quisesse enviar esses bitcoins para outra pessoa, usaria sua chave privada para destravar essa saída.
Então, onde você consegue uma chave pública e uma chave privada? Bem, com a ajuda da criptografia, você pode na verdade gerá-las você mesmo.
Resumindo, sua chave privada é só um grande número aleatório, e sua chave pública é um número calculado a partir dessa chave privada. Mas a parte engenhosa é: você pode dar sua chave pública a outra pessoa, mas ela não consegue trabalhar de trás para frente a partir dela para descobrir a chave privada.
Agora, quando você quer destravar bitcoins que estão atribuídos à sua chave pública, você usa sua chave privada para criar o que é chamado de assinatura digital. Essa assinatura prova que você é o dono da chave pública (e, portanto, pode destravar os bitcoins), sem ter que revelar sua chave privada. Essa assinatura também só é válida para a transação para a qual foi criada, então não pode ser usada para destravar outros bitcoins travados à mesma chave pública.
Esse sistema é conhecido como Criptografia de Chave Pública e está disponível desde 1978 (veja RSA). O Bitcoin faz uso desse sistema para permitir que qualquer um crie chaves para enviar e receber bitcoins com segurança, sem a necessidade de uma autoridade central para emitir contas e senhas.
No Bitcoin, convertemos a chave pública em um endereço mais amigável, que é o que você normalmente vai usar ao enviar e receber pagamentos.
Resumo
Para usar o Bitcoin, você gera sua própria chave privada e chave pública. Sua chave privada é um número aleatório muito grande, e sua chave pública é calculada a partir dela. Essas chaves podem ser facilmente geradas no seu computador, ou até em algo tão simples quanto uma calculadora. A maioria das pessoas, porém, usa uma carteira de bitcoin para ajudar a gerar e gerenciar suas chaves.
Para receber bitcoins, você dá à pessoa que vai te enviá-los a sua chave pública. Essa pessoa então cria uma transação em que destrava bitcoins que possui e cria um novo "cofre de segurança" de bitcoins, colocando sua chave pública dentro da trava.
Essa transação é então enviada a um nó, onde é retransmitida de computador em computador até que todos os nós da rede tenham uma cópia dela. A partir daí, cada nó tem a oportunidade de tentar minerar as transações mais recentes que recebeu na blockchain.
O processo de mineração envolve um nó coletando transações do seu memory pool em um bloco e repetidamente fazendo o hash do bloco (com um pequeno ajuste a cada vez) para tentar obter um hash de bloco abaixo do valor alvo atual.
O primeiro minerador a encontrar um hash de bloco abaixo do alvo adicionará o bloco à sua blockchain e transmitirá esse bloco aos outros nós da rede. Cada nó então verifica e adiciona esse bloco à sua blockchain (removendo no processo quaisquer transações conflitantes do seu memory pool) e reinicia o processo de mineração para tentar construir sobre esse novo bloco da cadeia.
Por fim, o minerador que minerou esse bloco terá colocado a sua própria transação especial dentro do bloco, o que lhe permite recolher uma quantidade determinada de bitcoins que ainda não existiam. Essa recompensa do bloco funciona como um incentivo para que os nós continuem a construir a blockchain, ao mesmo tempo em que distribui novas moedas pela rede bitcoin.
Conclusão
O Bitcoin é um programa de computador que compartilha um arquivo seguro com outros computadores ao redor do mundo. Esse arquivo seguro é formado por transações, e essas transações usam criptografia para permitir que as pessoas enviem e recebam cofres de segurança digitais.
Como resultado, isso cria um sistema de pagamento eletrônico que pode ser usado por qualquer pessoa e opera sem um ponto central de controle.
A rede Bitcoin funciona ininterruptamente desde o seu lançamento em janeiro de 2009. Em 2023, a rede Bitcoin processou mais de 153 milhões de transações, movimentando um total de US$ 12.820.677.140.286 (12,82 trilhões)1.
O próprio programa Bitcoin também está em desenvolvimento ativo, com mais de 600 pessoas contribuindo com o código desde o seu lançamento2. Isso se deve ao fato de o software ser de "código aberto", o que significa que qualquer um pode ver o código e contribuir para melhorá-lo.
- bitcoin.pdf – Whitepaper
- github.com/bitcoin/bitcoin/ – Código-fonte