O que é blockchain?
Resumindo, um blockchain é uma lista de registros de dados que funciona como um livro-razão digital descentralizado. Os dados são organizados em blocos, organizados cronologicamente e protegidos por criptografia.
O modelo mais antigo de blockchain foi criado no início da década de 1990, quando o cientista da computação Stuart Haber e o físico W. Scott Stornetta empregaram técnicas criptográficas em uma cadeia de blocos como forma de proteger documentos digitais contra adulteração de dados.
O trabalho de Haber e Stornetta certamente inspirou o trabalho de muitos outros cientistas da computação e entusiastas da criptografia – o que eventualmente levou à criação do Bitcoin como o primeiro sistema de dinheiro eletrônico descentralizado (ou simplesmente a primeira criptomoeda).
Embora a tecnologia blockchain seja mais antiga que as criptomoedas, foi somente após a criação do Bitcoin, em 2008, que seu potencial começou a ser reconhecido. Desde então, o interesse na tecnologia blockchain tem crescido gradualmente e as criptomoedas estão agora a ser reconhecidas em maior escala.
A tecnologia Blockchain é usada principalmente para registrar transações de criptomoedas, mas é adequada para muitos outros tipos de dados digitais e pode ser aplicada a uma ampla gama de casos de uso. A maior, mais antiga e segura rede blockchain é o Bitcoin, que foi projetado com uma combinação cuidadosa e equilibrada de criptografia e teoria dos jogos.
Como funciona o blockchain?
No contexto das criptomoedas, um blockchain consiste em uma cadeia estável de blocos, cada um armazenando uma lista de transações previamente confirmadas. Como a rede blockchain é mantida por uma infinidade de computadores espalhados pelo mundo, ela funciona como um banco de dados (ou livro-razão) descentralizado. Isso significa que cada participante (nó) mantém uma cópia dos dados do blockchain e se comunica entre si para garantir que estejam todos na mesma página (ou bloco).
Portanto, as transações blockchain ocorrem dentro de uma rede global peer-to-peer e é isso que torna o Bitcoin uma moeda digital descentralizada, sem fronteiras e resistente à censura. Além disso, a maioria dos sistemas blockchain são considerados sem confiança porque não exigem nenhum tipo de confiança. Não existe uma autoridade única no controle do Bitcoin.
Uma parte central de quase todo blockchain é o processo de mineração, que depende de algoritmos de hash. Bitcoin usa o algoritmo SHA-256 (algoritmo de hash seguro de 256 bits). Ele recebe uma entrada de qualquer comprimento e gera uma saída que sempre terá o mesmo comprimento. A saída produzida é chamada de “hash” e, neste caso, é sempre composta por 64 caracteres (256 bits).
Portanto, a mesma entrada resultará na mesma saída, não importa quantas vezes o processo seja repetido. Mas se for feita uma pequena alteração na entrada, a saída mudará completamente. Como tal, as funções hash são determinísticas e, no mundo das criptomoedas, a maioria delas é projetada como uma função hash unilateral.
Ser uma função unidirecional significa que é quase impossível calcular qual foi a entrada da saída. Só podemos adivinhar qual foi a entrada, mas as chances de acertar são extremamente baixas. Esta é uma das razões pelas quais o blockchain do Bitcoin é seguro.
Agora que sabemos o que o algoritmo faz, vamos demonstrar como funciona um blockchain com um exemplo simples de transação.
Imagine que temos Alice e Bob junto com seu saldo de Bitcoin. Digamos que Alice deva a Bob 2 Bitcoins.
Para Alice enviar a Bob aqueles 2 bitcoins, Alice transmite uma mensagem com a transação que deseja fazer para todos os mineradores da rede.
Nessa transação, Alice fornece aos mineradores o endereço de Bob e a quantidade de Bitcoins que ela gostaria de enviar, juntamente com uma assinatura digital e sua chave pública. A assinatura é feita com a chave privada de Alice, e os mineradores podem validar que Alice, de fato, é a dona daquelas moedas.
Assim que os mineradores tiverem certeza de que a transação é válida, eles poderão colocá-la em um bloco junto com muitas outras transações e tentar minerar o bloco. Isso é feito colocando o bloco no algoritmo SHA-256. A saída precisa começar com uma certa quantidade de 0 para ser considerada válida. A quantidade de zeros necessária depende do que é chamado de “dificuldade”, que muda dependendo de quanto poder de computação existe na rede.
Para produzir um hash de saída com a quantidade desejada de 0 no início, os mineradores adicionam o que é chamado de “nonce” ao bloco antes de executá-lo no algoritmo. Como uma pequena alteração na entrada altera completamente a saída, os mineradores tentam nonces aleatórios até encontrarem um hash de saída válido.
Depois que o bloco é minerado, o minerador transmite esse bloco recém-minerado para todos os outros mineradores. Eles então verificam se o bloco é válido para que possam adicioná-lo à sua cópia do blockchain e a transação seja concluída. Mas no bloco, os mineradores também precisam incluir o hash de saída do bloco anterior para que todos os blocos fiquem interligados, daí o nome blockchain. Esta é uma parte importante devido à forma como a confiança funciona no sistema.
Cada minerador tem sua própria cópia do blockchain em seu computador, e todos confiam em qualquer blockchain que tenha mais trabalho computacional, o blockchain mais longo. Se um minerador alterar uma transação em um bloco anterior, o hash de saída desse bloco mudará, o que fará com que todos os hashes posteriores também sejam alterados devido aos blocos serem curtidos com hashes. O minerador teria que refazer todo o trabalho para que alguém aceitasse seu blockchain como o correto. Portanto, se um minerador quisesse trapacear, precisaria de mais de 50% do poder computacional da rede, o que é muito improvável. Ataques de rede como esse são chamados de ataques de 51%.
O modelo de fazer os computadores funcionarem para produzir blocos é denominado Prova de Trabalho (PoW). Existem também outros modelos como Prova de Participação (PoS) que não requerem tanto poder de computação e devem exigir menos eletricidade ao mesmo tempo que pode ser dimensionado para mais usuários.