Como as Blockchains Funcionam
O problema do gasto duplo parecia matematicamente impossível — dinheiro digital sem uma autoridade central. A solução combina três ferramentas matemáticas que existem há décadas. O avanço foi conectá-las em um único protocolo.
Como as blockchains funcionam? Elas resolvem o problema do gasto duplo usando criptografia e livros-razão distribuídos. Em vez de confiar em um banco, as blockchains permitem que qualquer pessoa verifique transações enquanto tornam fraudes proibitivamente caras. O sistema funciona porque trapacear custa mais do que vale a pena.
Funções Hash: Impressões Digitais
Funções hash verificam que um documento massivo não foi alterado enviando apenas uma pequena informação para prová-lo.
Uma função hash recebe qualquer entrada — seja uma única palavra, um livro inteiro ou um bloco contendo milhares de transações — e produz uma saída de tamanho fixo: uma impressão digital única.
Considere estes hashes SHA-256:
SHA-256("Hello") = 185f8db32271fe25f561a6fc938b2e264306ec304eda518007d1764826381969
SHA-256("hello") = 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824Mudar apenas a capitalização de uma letra cria um hash completamente diferente. Esse é o efeito avalanche: pequenas mudanças na entrada produzem saídas radicalmente diferentes.
Funções hash são determinísticas — a mesma entrada sempre gera a mesma saída. "Hello" sempre produzirá 185f8db3.... Elas também são irreversíveis: calcular um hash leva milissegundos, mas trabalhar de trás para frente levaria bilhões de anos mesmo com todos os computadores da Terra rodando simultaneamente. E elas exibem o efeito avalanche, onde mudar até um bit da entrada muda completamente a saída.
Nas blockchains, hashes criam um histórico imutável. Cada bloco contém o hash do bloco anterior. Se alguém modificar uma transação da semana passada, muda o hash daquele bloco, que quebra a referência do próximo bloco a ele. Para esconder a mudança, precisaria recalcular o hash de cada bloco subsequente mais rápido do que a rede adiciona novos — praticamente impossível.
Assinaturas Digitais: Comprovando Propriedade
Assinaturas digitais usam pares de chaves pública/privada para comprovar propriedade matematicamente em vez de depender de bancos.
A autenticação tradicional depende de segredos compartilhados como senhas. Isso não funciona para um sistema sem autoridade central e sem forma de compartilhar segredos privadamente. Assinaturas digitais permitem autenticação sem revelar nenhuma informação secreta.
Assinaturas digitais usam criptografia assimétrica — relações matemáticas que vão em uma direção: rápidas de calcular para frente, inviáveis de reverter. Quando você cria um sistema de assinatura digital, gera dois números matematicamente relacionados: uma chave privada e uma chave pública. A chave privada deve permanecer secreta. A chave pública pode ser compartilhada livremente.
A chave privada cria uma assinatura digital para uma transação específica. A assinatura é única tanto para sua chave privada quanto para o conteúdo exato da transação. Qualquer pessoa pode usar sua chave pública para verificar que a assinatura só poderia ter sido criada por alguém com a chave privada correspondente.
Sem sua chave privada, criar uma assinatura válida é computacionalmente impossível, mesmo com acesso a milhões de assinaturas anteriores. Para evitar que um atacante reproduza uma transação antiga, cada assinatura deve incluir dados únicos — geralmente um simples contador chamado nonce — que garante que cada assinatura difere de todas as outras.
Uma vez que você assina uma transação, não pode alegar que não a autorizou. A matemática prova isso, e você não pode negar depois — uma propriedade chamada não-repúdio.
Nas blockchains, é assim que as carteiras funcionam. Sua carteira armazena suas chaves privadas e assina transações — isso é tudo que ela faz. As moedas em si vivem na blockchain como entradas no livro-razão.
Árvores Merkle: Verificação Eficiente
Como verificar que uma transação específica existe em um bloco contendo milhares de outras transações sem baixar o bloco inteiro?
Árvores Merkle organizam dados em uma árvore binária onde cada folha é uma transação, e cada nó pai contém o hash de seus dois filhos. Essa estrutura continua subindo na árvore até chegar a um único hash raiz que representa todo o conjunto de dados.
Para provar que qualquer transação existe na árvore, você precisa apenas da transação e do caminho Merkle: os hashes irmãos necessários para reconstruir a raiz. Para uma árvore com um milhão de transações, você precisa de apenas cerca de 20 hashes para provar a inclusão — alguns kilobytes em vez de gigabytes.
O processo de verificação funciona assim:
Comece com sua transação e faça o hash
Combine seu hash com o hash irmão e faça o hash do resultado
Repita até chegar à raiz
Compare sua raiz calculada com a raiz conhecida
Se as raízes coincidirem, a transação está comprovadamente no bloco. Se alguém mudar qualquer transação, o hash raiz muda completamente, tornando a adulteração imediatamente detectável.
Nas blockchains, árvores Merkle tornam a verificação prática. Clientes leves (light clients) — dispositivos sem espaço para armazenar toda a blockchain — podem verificar transações com apenas alguns kilobytes de prova. A segurança é igualmente forte: se o caminho Merkle confere, a transação está comprovadamente no bloco.
Blocos e Correntes
Transações são agrupadas em blocos. Cada bloco contém:
Uma lista de transações
Um carimbo de data/hora (timestamp)
O hash do bloco anterior
Uma raiz Merkle de todas as transações
Metadados adicionais
O hash do bloco anterior cria a corrente. O Bloco 100 contém o hash do Bloco 99. O Bloco 99 contém o hash do Bloco 98. Essa vinculação continua até o bloco gênesis — o primeiro bloco da cadeia.
Essa estrutura torna a adulteração óbvia. Mudar qualquer transação muda o hash do seu bloco, que quebra a referência do próximo bloco a ele. Para esconder a adulteração, um atacante precisaria recalcular o hash daquele bloco, depois o hash do próximo bloco, depois de cada bloco subsequente, tudo enquanto a rede continua adicionando novos blocos. Quanto mais antiga no histórico a transação adulterada, mais trabalho é necessário para encobri-la.
Livros-Razão Distribuídos
Um livro-razão distribuído significa que milhares de computadores mantêm cada um uma cópia completa do registro de transações — não é um banco mantendo a versão oficial. Toda transação é transmitida a todos os participantes, que a validam independentemente. Se a transação é válida, ela é adicionada à cópia do livro-razão de cada um.
Essa distribuição torna a fraude óbvia. Se alguém tenta modificar sua cópia local para dar a si mesmo mais dinheiro, sua cópia não coincide mais com a cópia de todos os outros. A rede vê a discrepância e rejeita a versão fraudulenta. Um atacante precisaria convencer a maioria da rede a aceitar sua versão falsa, o que se torna economicamente proibitivo conforme a rede cresce.
O livro-razão distribuído elimina o ponto único de falha. Nenhuma entidade controla o sistema, nenhum servidor pode cair e quebrar tudo, e nenhuma empresa pode censurar transações ou congelar contas. Enquanto alguns participantes permanecerem online, a rede continua funcionando.
A Jornada de uma Transação
Esses componentes trabalham juntos toda vez que alguém envia criptomoeda. Veja o que acontece quando Alice envia 1 BTC para Bob:
A carteira de Alice constrói uma transação ("transferir 1 BTC de Alice para Bob") e a assina com sua chave privada. A assinatura digital prova que Alice autorizou esta transferência específica.
A carteira envia a transação assinada para a rede. Os nós verificam a assinatura e confirmam que Alice tem fundos suficientes. Transações válidas ficam no memory pool até um minerador pegá-las.
Um minerador coleta transações pendentes do pool, organiza-as em uma árvore Merkle e inclui o hash do bloco anterior para estender a cadeia.
O minerador encontra um hash válido para o bloco (mais sobre isso na lição de consenso). Isso custa trabalho computacional real, tornando caro propor blocos fraudulentos.
O minerador transmite o bloco completo. Cada nó verifica independentemente: Todas as assinaturas são válidas? Todos os remetentes têm fundos suficientes? O hash do bloco atende ao requisito de dificuldade? Ele referencia corretamente o bloco anterior?
Nós que verificam o bloco o adicionam à sua cópia da cadeia. A transação de Alice agora está registrada. Conforme mais blocos são construídos sobre ela, a transação fica mais difícil de reverter — após seis blocos (~60 minutos no Bitcoin), a reversão é economicamente impossível.
A carteira do Bob detecta o novo saldo. A transferência está completa. Nenhum banco ou intermediário esteve envolvido, e qualquer pessoa na rede pode verificar a transferência independentemente.
Criando Confiança Sem Autoridade
Juntos, hashes detectam adulterações, assinaturas provam propriedade, árvores Merkle mantêm a verificação leve, e a distribuição remove qualquer ponto único de controle. Cada participante pode verificar independentemente todo o histórico usando apenas seus próprios recursos computacionais — sem confiar em ninguém, compartilhar segredos ou depender de um único servidor.
Sistemas tradicionais controlam acesso através de intermediários. As blockchains invertem isso: qualquer pessoa pode verificar, e trapacear é óbvio. Funciona porque a matemática faz trapacear custar mais do que jogar limpo.
Esses primitivos criptográficos previnem adulterações e provam propriedade. Mas se qualquer pessoa pode propor novas transações, como milhares de desconhecidos concordam sobre qual versão do livro-razão está correta? Mecanismos de consenso resolvem esse problema de coordenação.