Tecnologia do Bitcoin: entenda definitivamente como funciona!

O universo das criptomoedas ainda envolvem muitas dúvidas, principalmente sobre como funciona o Bitcoin. Não é à toa. Em uma primeira busca mais técnica sobre essa moeda digital, o leitor pode se deparar com conceitos pouco familiares: redes peer-to-peer, protocolos de rede, criptografia e muito mais.

Criada por Satoshi Nakamoto, a tecnologia do Bitcoin é uma fusão desses e outros conceitos que o precederam. Saiba mais sobre esse assunto que está revolucionando a maneira de investir e pensar em dinheiro!

Tecnologia do Bitcoin: uma rede Peer-to-Peer

Para retirar o intermediador das transferências, Satoshi transferiu a responsabilidade de manter o registro das transações para os próprios usuários. Isso transformou o Bitcoin em uma rede peer-to-peer – semelhante ao antigo Napster ou o BitTorrent.

Nessas redes, o próprio usuário é responsável por armazenar os arquivos que serão compartilhados. Cada um fornece e consome os serviços da rede. É diferente dos sistemas tradicionais, em que uma empresa disponibiliza a informação por meio de um servidor central e os clientes apenas fazem requisições, como Google e Amazon.

No âmbito da tecnologia da moeda Bitcoin, a dúvida imediata que surge é: se os próprios usuários serão os responsáveis por manter o banco de dados das transações, como garantir que todos possuam a cópia correta e atualizada do registro?

Em outras palavras, como garantir que haja consenso sobre as transações que já ocorreram? Lembre-se que não existe um servidor central para consultar. Cada um possui uma cópia do registro geral de transações. Ao resolver isso, Satoshi desenvolveu uma tecnologia surpreendente.

O Problema dos Generais Bizantinos

O “Problema dos Generais Bizantinos” é uma abstração para ilustrar os problemas na tentativa de coordenar a ação entre dois ou mais indivíduos, que não estão fisicamente próximos. Utilizaremos esse modelo para entender como a tecnologia do Bitcoin mantém o consenso do seu registro de transações entre seus usuários.

Tomemos o exemplo mais simples no qual apenas dois generais juntos precisam atacar a fortaleza do Rei. Para obterem sucesso na batalha, é necessário que ambos ataquem ao mesmo tempo. Caso contrário, as tropas do império serão capazes de derrotá-los.
Podendo se comunicar apenas por meio de um mensageiro, os generais passam a travar o seguinte diálogo:

– General A: “Vamos atacar às 14:00!”;

Mesmo que o General B receba a mensagem, o General A não realizará o ataque, pois não saberá se a mensagem chegou. Então, o General B envia uma resposta para confirmar o recebimento:

– General B: “Mensagem recebida. Atacaremos às 14:00!”;

O General B não saberá se o General A recebeu a confirmação e também não realizará o ataque. Não importa quantas mensagens sejam enviadas, eles jamais entrarão em consenso e perderão a batalha por não serem capazes de sincronizar seus ataques.

Esse problema ilustra muito bem a dificuldade que diferentes usuários teriam em atingir consenso sobre um registro de transações quando não há uma entidade única os coordenando.

Tecnologia do Bitcoin: a Proof of Work (Prova de Trabalho)

Para solucionar essa questão, Satoshi acrescentou algo que chamamos de “prova de trabalho”. É uma informação adicionada à mensagem, pelo remetente, que comprova que esta foi gerada a partir de algum esforço já conhecido pelo(s) destinatário(s).

À medida que circula pela rede, a mensagem acumula as provas de trabalho de cada um que optou por reenviá-la aos demais. No exemplo dos generais, a prova de trabalho é a comprovação de que o general concorda com o que ele recebeu. Toda mensagem da qual o general discorde, será ignorada e não será reenviada aos demais.

Dessa forma, por mais que, de início, diferentes mensagens sejam propagadas, logo ficará visível a cada um que uma delas está acumulando provas de trabalho mais rapidamente. Na prática, isso significa que essa é a mensagem que possui o maior número de generais de acordo.

Logo, havendo interesse de entrarem em consenso, todos deixarão de trabalhar em cima de mensagens que foram esquecidas e passarão a gerar mais provas de trabalho apenas na mensagem que está com maior esforço acumulado. Nesse momento, é possível dizer que a rede entrou em consenso e que todos estão cientes.

Proof of Work do Bitcoin

No Bitcoin, a prova de trabalho é gerada da seguinte forma: o remetente adiciona um número arbitrário à mensagem (chamaremos esse número de nonce) e aplica uma função matemática chamada SHA-256.

O objetivo é encontrar uma resposta com um certo número de zeros na frente. Ele repete o procedimento variando o nonce até achar essa resposta. Como é relativamente difícil encontrar tal resposta, ao receber a mensagem, todo usuário será capaz de verificar que houve um grande esforço do remetente em gerá-la.

Proof of Work da tecnologia do Bitcoin aplicado aos Generais Bizantinos

Vamos aplicar esse conceito para resolver nosso problema dos generais. Imagine que um primeiro general começa a realizar o procedimento de geração da prova de trabalho em cima de uma mensagem contendo sua proposta para a hora do ataque.

Assim que ele encontrar a solução, a mensagem será enviada aos demais. Então, cada general verifica se ela realmente satisfaz o critério. Para isso, ele aplica o SHA-256 e verifica se o resultado possui o número de zeros exigido. Se concordar com o horário do ataque, ele recomeça o trabalho em cima da nova mensagem.

Entenda com um exemplo

Exemplificando: o primeiro general envia a mensagem “vamos atacar às 14:00!5842” aos demais. O valor 5842 ilustra o nonce encontrado (o exemplo é apenas didático, pois não atende ao critério do número de zeros). Em seguida, todos passam a simultaneamente tentar confeccionar a próxima mensagem em cima desta.

Note que agora a próxima mensagem será algo como: “vamos atacar às 14:00!58426841“, sendo “6841” o segundo nonce encontrado. O primeiro a encontrar envia aos demais e, assim, o procedimento se repete até a hora do ataque.

Cada general se guiará pela mensagem com a maior quantidade de nonces acumulados. Isso garante que, caso alguém tente propagar um horário diferente, todos saibam qual é a mensagem que está sendo gerada pela maioria.

Ao se aproximar do horário combinado, os generais poderão ter múltiplas propostas, mas saberão qual possui a maior prova de trabalho acumulada. Ao chegar às 14:00, se a mensagem com mais nonces for esta, o ataque será efetuado nesse horário.

Caso contrário, os generais continuarão o procedimento até que chegue a hora que contém a maior prova de trabalho. Entrando em consenso, eles atacarão simultaneamente e vencerão a batalha.

Os papéis dos nós na transação Bitcoin

Os usuários da rede Bitcoin podem exercer três funções principais: banco de dados completo das transações (Blockchain), mineração e carteira. De forma simplificada:

Blockchain: banco de dados, com o armazenamento do registro completo das transações;
mineração: é a função de atualizar o registro com as novas transações. São os “generais” do proof-of-work,
carteira: é a função responsável por administrar as chaves que dão ao usuário acesso a sua quantia de Bitcoins.

Tomemos como exemplo Alice, que deseja enviar 1.0 BTC a Bob, sendo que ambos são usuários comuns. Alice enviará tal informação a todos os nós conectados à carteira dela.

Esses nós deverão espalhar a informação para nós adjacentes até que a informação chegue aos nós mineradores. Cada minerador trabalha individualmente para gerar a prova de trabalho, utilizando essa e as demais transações recebidas como mensagem.

O processo de mineração resulta num arquivo chamado de “bloco”, que contém a lista de todas transações recentes e um cabeçalho contendo a prova de trabalho. O primeiro minerador a finalizar seu bloco o espalha aos demais, reiniciando o processo para a próxima leva de transações.

Em cerca de 10 minutos, um novo bloco com novas transações será integrado à cadeia de blocos (Blockchain) utilizando a prova de trabalho do bloco anterior. Não irá demorar para que ambas as carteiras, de Alice e de Bob, sincronizem seus valores conforme o novo bloco seja aceito pela rede.

Tecnologia do Bitcoin: a Blockchain

O nome Blockchain foi dado pelos primeiros usuários do Bitcoin devido à estrutura formada ao longo da mineração. O cabeçalho do bloco contém a prova de trabalho gerada a partir do cabeçalho do bloco anterior e as novas transações.

É esse vínculo entre os blocos que dá à arquitetura do registro uma ideia de “corrente de blocos” ou “cadeia de blocos”. O termo costuma ser utilizado de forma mais ampla, mas em tese se refere apenas à arquitetura do banco de dados das transações.

A mineração e o consenso emergente

Como recompensa pelo árduo trabalho de minerar o próximo bloco, o minerador tem o direito de adicionar uma transação para si no bloco gerado. É o único momento em que Bitcoins são criados.

O valor é controlado e incentiva o minerador a aumentar sua capacidade computacional de gerar provas de trabalho. Ele também recebe taxas que são colocadas nas transações pelos remetentes para terem prioridade no processamento.

Como vimos, os mineradores compartilham blocos entre si para manter uma blockchain constantemente atualizada com novas transações. A maior corrente será sempre tomada como a corrente primária – por conter a maior prova de trabalho acumulada.

Porém, essa é uma meia verdade. Na realidade, cada minerador mantém duas Blockchains, pois é comum haver uma bifurcação na rede. O entendimento desse fenômeno nos ajudará a compreender o importante conceito de Consenso Emergente.

A bifurcação da rede

A bifurcação ocorre quando dois ou mais usuários encontram simultaneamente uma solução para o próximo bloco, na qual ambas são diferentes, mas atendem igualmente aos requisitos. Isso ocorre pois nada garante que num mesmo instante todos mineradores possuam a mesma lista de transações, nem que as agrupe da mesma forma.

Tal diferença faz com que diferentes mineradores optem por construir o próximo bloco em cima de diferentes blocos. Isso não prejudica o consenso – apenas pode fazer algumas transações entrarem depois ou antes de alguns blocos, dependendo de qual corrente vencer.

Quando um novo bloco X for gerado, é necessário que toda a rede possua o bloco que foi utilizado como base. Caso o bloco X tenha sido gerado a partir do bloco B, todos mineradores que haviam optado pelo bloco A passarão a construir seu novo bloco em cima da corrente P–B–X.

Assim, eles deixarão a corrente P–A como secundária para o caso de uma inversão. É possível que a corrente P–A se torne P–A-Z-W antes de termos uma P–B–X-Y, por exemplo. Lembrando que a rede sempre dará preferência para a maior corrente.

Consenso do Bitcoin não é explícito

Note como o consenso do Bitcoin não é explícito – não existe uma eleição ou um momento fixo no qual o consenso ocorre. Apesar das inúmeras correntes que podem se formar, o consenso é atingido gradativamente.

Ele emerge da interação assíncrona de milhares de mineradores independentes. Blocos recentes podem divergir entre os usuários, mas tão logo haja novos blocos, os mineradores se encarregarão de deixar de lado os que não pertencem à corrente principal.

Todo o vínculo existente entre os blocos e todo esforço necessário para se gerar um novo torna inviável que alguém altere o registro de qualquer forma. As alterações indevidas serão ignorada pelos participantes, assim como toda mensagem que não respeite a rigorosa estrutura de dados e as regras impostas pelo software.

Tecnologia do Bitcoin: o que é uma carteira digital?

A Carteira Bitcoin é o software ou dispositivo utilizado para guardar e administrar as chaves que dão acesso às transações. Para entender melhor o que isso significa, é preciso entender como funciona o Bitcoin e as operações dentro da sua tecnologia.

A transação Bitcoin

Pode-se pensar que as transações de Bitcoins funcionam como uma espécie de cheque. Nelas, os remetentes indicam a intenção de transferir uma quantia a outro, assinam e aguardam a submissão ao sistema bancário.

Mas, como essas transações são assinadas? E como indicar um destinatário? Para responder essas e outras perguntas, precisamos entender, ainda que vagamente, o conceito de criptografia de chave pública.

Criptografia de chave pública

Imagine que cada usuário possui um par de chaves: chave pública e chave privada, que, em sua essência, são apenas números. Cabe notar que o vínculo matemático entre as duas chaves não permite que a chave privada seja descoberta a partir da chave pública.

A criptografia de chave pública é mais comumente utilizada para sigilo no envio de mensagens. Temos como exemplo o próprio WhatsApp. Nele, as mensagens são criptografadas com a chave pública do destinatário de forma que apenas ele será capaz de descriptografá-la utilizando a chave privada correspondente.

Analogamente, a ideia aqui é gerar uma transação que só pode ser desbloqueada a partir da chave privada do beneficiário. Para tal, a transação Bitcoin possui um script de comandos que utiliza a chave pública do beneficiário para bloquear o acesso dos demais. Apenas o detentor da respectiva chave privada será capaz de desbloquear a transação para reuso.

Dentre outras informações presentes na transação, as duas mais importantes são a entrada (input) e a saída (output). No input estão informações referentes ao remetente da transação, enquanto no output estão informações referentes ao destinatário ou beneficiário.

Na entrada, o usuário gera o valor a ser gasto a partir do destravamento de uma ou mais transações (hash da transação) que possui sua chave pública. O desbloqueio é feito a partir de uma sequência de comandos (script de travamento), que só tornarão a transação válida caso o usuário seja capaz de fornecer a chave privada correspondente.

Na saída, o usuário deve fornecer a fração da transação que deverá ser transferida (montante). Aqui, ele pode fracionar ou agregar transações a fim de atingir o valor desejado.

Assim como o usuário teve que utilizar sua chave privada para gerar um script de destravamento, ele agora precisa adicionar um script de travamento contendo a chave pública do novo destinatário.

Transações são construídas a partir de outras transações e, da mesma forma que os blocos, formam uma cadeia. Retomando a analogia com o cheque, seria como se o mesmo cheque pudesse ser utilizado infinitas vezes apenas adicionando a cada transação o novo beneficiário.

Double spending

Agora veremos como a tecnologia do Bitcoin lida com possíveis tentativas de double spending. Todas consistem em tentar anular uma transação com uma transação concorrente.

Uma transação concorrente seria uma transação que utiliza o mesmo input. A rede jamais aceitaria duas transações que gastam o mesmo valor, mas é possível enganar a rede por algum tempo e veremos o porquê. Existem três formas de se tentar realizar double spending com Bitcoins:

Standard attack

A primeira chama-se “standard attack”. Consiste em tentar enviar duas transações concorrentes simultaneamente para a rede. O atacante envia uma para o vendedor e outra si mesmo.

O valor da taxa colocada na transação para o minerador influencia diretamente na velocidade de inclusão desta na Blockchain. O atacante pode, então, acrescentar uma taxa maior para a transação que fez a si mesmo e tentar retirar o produto antes do vendedor descobrir que a transação foi anulada.

Finney attack

A segunda forma de double spending é chamada de “finney attack”. É quando o atacante minera um bloco e, antes de enviar seu bloco para a rede, realiza transações com inputs já utilizados no bloco. Logo que ele lançar seu bloco, essas operações serão nulas. Como anteriormente, o vendedor deve aguardar o próximo bloco para entregar o produto.

51% attack

A terceira é chamada de “51% attack”. O minerador atacante lança uma transação para a rede e em privado constrói uma Blockchain alternativa contendo uma transação concorrente. É uma extensão do “finney attack”. Da mesma forma, assim que ele lançar sua Blockchain, a transação será anulada.

A diferença está em poder manter a fraude por mais tempo. Note que para o ataque ser bem sucedido, ele precisa concorrer contra o poder de mineração de todos os demais mineradores juntos. Por isso é chamado de “51% attack”. O atacante precisaria possuir 51% de todo o poder de processamento da rede.

Mesmo assim, o máximo que ele conseguiria é enganar o vendedor por alguns minutos a mais. É um ataque puramente teórico. O mesmo custo para realizar o ataque poderia ser gasto para minerar de forma honesta e ganhar Bitcoins.

Conclusão

Como visto, há por trás da moeda digital uma complexa tecnologia que o torna seguro, confiável e eficaz. Agora que você entende melhor como funciona o Bitcoin, conheça a plataforma do Atlas Quantum e o que ela pode fazer pelos seus investimentos. E aproveite já para comprar Bitcoins!

Compartilhe
Atlas Quantum
Publicado por Atlas Quantum
Queremos transformar o mundo em que vivemos, tornando os investimentos financeiros acessíveis a qualquer pessoa, em qualquer lugar do mundo.