O que é blockchain?
Basicamente, uma blockchain é uma lista de registros de dados que funciona como um livro digital descentralizado. Os dados são armazenados em blocos, que são organizados cronologicamente e protegidos por criptografia.
O primeiro modelo de blockchain foi criado no início dos anos 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 a 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 acabou ocasionando à criação do Bitcoin como o primeiro sistema de dinheiro eletrônico descentralizado (ou em outras palavras, 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 pela tecnologia blockchain cresce gradualmente e as criptomoedas são reconhecidas e adotadas em uma escala maior.
A tecnologia Blockchain é usada principalmente para registro de transações de criptomoedas, mas se adapta a muitos outros tipos de dados digitais e pode ser aplicada a uma ampla variedade de casos de uso. A maior, mais antiga e mais segura rede blockchain é a do Bitcoin, que foi projetada com uma combinação cuidadosa e equilibrada de criptografia e teoria dos jogos.
Como funciona a blockchain?
No contexto das criptomoedas, uma 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 descentralizado (conhecido também como ledger ou livro-razão). Isso significa que cada participante (node) mantém uma cópia dos dados da blockchain e eles se comunicam entre si para garantir que estejam todos na "mesma página" (ou mesmo bloco).
Portanto, as transações da blockchain ocorrem dentro de uma rede peer-to-peer global 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 trustless pois não há necessidade de confiança entre os participantes. Não existe uma autoridade única no controle do Bitcoin.
Um aspecto central de quase todas as blockchains é o processo de mineração, que depende de algoritmos de hashing. O Bitcoin usa o algoritmo SHA-256 (Secure Hash Algorithm 256 bits). Ele recebe uma entrada (input) de qualquer comprimento e gera uma saída (output) que sempre terá o mesmo comprimento. O output produzido é chamado de "hash" e, neste caso, é sempre composto por 64 caracteres (256 bits).
Portanto, um determinado input sempre resultará no mesmo output, não importa quantas vezes o processo se repita. Mas se uma pequena mudança for feita nos dados de entrada, o output mudará completamente. Sendo assim, as funções de hash são determinísticas e, no mundo das criptomoedas, a maioria delas é projetada como uma função de hash unidirecional.
Ser uma função unidirecional significa que é quase impossível descobrir qual foi o input conhecendo somente o output. Existe sim a possibilidade de adivinhar o input, mas as chances de fazer isso corretamente são extremamente baixas. Esta é uma das razões pelas quais a blockchain do Bitcoin é segura.
Agora que sabemos o que o algoritmo faz, vamos demonstrar como uma blockchain funciona, com um exemplo simples de uma transação.
Para o exemplo, vamos considerar os saldos em Bitcoin de Alice e Bob. Digamos que Alice deve 2 Bitcoins a Bob.
Para enviar a Bob esses 2 Bitcoins, Alice transmite uma mensagem para todos os mineradores da rede, contendo a transação que ela deseja fazer.
Nessa transação, Alice fornece aos mineradores o endereço de Bob e informa a quantidade de Bitcoins que ela deseja enviar, juntamente com uma assinatura digital e a sua chave pública. Essa assinatura digital é feita com a chave privada de Alice. Com ela, os mineradores podem confirmar que Alice é, de fato, a proprietária das respectivas moedas.
Assim que os mineradores confirmam que a transação é válida, eles podem colocá-la em um bloco junto com muitas outras transações e tentar minerar o bloco. Para isso, eles submetem o bloco ao algoritmo SHA-256. O output precisa começar com uma certa quantidade de zeros para ser considerado válido. A quantidade de zeros necessária depende da chamada "dificuldade", que muda dependendo da quantidade de poder computacional existente na rede.
Para produzir um hash de saída (output hash) com a quantidade desejada de zeros no início, antes de processar o bloco através do algoritmo, os mineradores adicionam um "nonce" ao bloco. Como uma pequena alteração no input altera completamente o output, os mineradores tentam utilizar nonces aleatórios até encontrar um hash de saída válido.
Quando o bloco é minerado com sucesso, o minerador transmite esse novo bloco para todos os outros mineradores da rede. Eles então confirmam se o bloco é válido e o adicionam à sua cópia da blockchain, concluindo a transação. No entanto, os mineradores também precisam incluir nesse bloco o hash de saída do bloco anterior, para que todos os blocos sejam conectados, daí o nome blockchain (do inglês, "cadeia de blocos"). Esta é uma parte importante devido à forma como a confiança funciona no sistema.
Cada minerador tem sua própria cópia da blockchain em seu computador e todos confiam nas cópias da blockchain com mais trabalho computacional. Ou seja, a blockchain com mais blocos será a versão válida e mais atualizada. Caso um minerador altere uma transação contida em um bloco anterior, o hash de saída desse bloco será alterado, o que também altera todos os hashes posteriores, já que os blocos são vinculados com hashes. O minerador teria que refazer todo o trabalho para tentar convencer os outros participantes da rede de que a blockchain dele é a correta. Portanto, se um minerador quisesse trapacear, ele precisaria ter mais de 50% de todo o poder computacional da rede, o que é muito improvável. Ataques de rede como esse são conhecidos como ataques de 51%.
O modelo que utiliza poder computacional para a produção de blocos é chamado de Proof of Work (PoW). Também existem outros modelos como o Proof of Stake (PoS), que não requer tanto poder computacional, geralmente exige menos eletricidade e apresenta um grau maior de escalabilidade, comportando mais usuários.