Mas afinal, o que é uma Blockchain?

Pedro Fiuza Linhares
5 min readAug 23, 2019

--

Bitcoin usa a tecnologia de Blockchain (fonte: https://www.needpix.com/photo/download/1269388/bitcoin-crypto-currency-currency-money-cash-and-cash-equivalents-buy-pay-accepted-allows)

Então, todo mundo tem ouvido falar dessa nova tecnologia chamada de Blockchain… Mas afinal, o que tem de tão glamoroso numa lista encadeada virada ao contrário?

Tá, tá, talvez eu esteja simplificando demais o assunto, afinal blockchain é uma lista encadeada virada ao contrario e descentralizada! (Ufa!) E tem mais porque a Blockchain é persistente! Seja lá onde os dados estão sendo persistidos… Pronto, agora que já devo ter conseguido sua atenção, vamos falar um pouco mais a sério sobre o assunto.

TL;DR;

O blockchain é, basicamente, uma maneira segura de se armazenar dados imutáveis ou programas (chamados de smart contracts no contexto da blockchain) de maneira descentralizada e geralmente pública. Seu uso mais conhecido é para armazenar o histórico das transações em bitcoins e ether, servindo como uma espécie de livro contábil público, mas com as partes anonimizadas através de criptografia. Dito isso, criptografia pode ser usada para ocultar dados que estão numa blockchain pública, mas blockchains privadas com suas próprias regras também podem ser usadas (veja Ethereum e Hyperledger Fabric).

Agora vamos para a explicação um pouco mais longa e complexa.

Deste ponto em diante, para entender completamente o artigo, pode ser necessário uma base de conhecimento em ciência da computação, mas tentarei mantê-lo compreensível para todos. Contudo, esteja avisado que a cada parágrafo estaremos mergulhando um pouco mais profundamente no assunto até atingir um conhecimento minimamente razoável de como a tecnologia funciona e para que ela serve.

Representação de uma lista encadeada (fonte: https://www.geeksforgeeks.org/data-structures/linked-list/)

Vamos começar esclarecendo a comparação feita com as listas encadeadas. No conteúdo básico de qualquer disciplina de estrutura de dados, estudantes de computação aprendem sobre uma estrutura chamada de lista encadeada que é uma estrutura de lista onde cada elemento, além de armazenar seu próprio valor, armazena uma referência para o elemento seguinte, isto é, se houver um disponível.

Quando olhamos para uma blockchain, é cabível pensar nela como uma lista encadeada, sendo os blocos análogos aos elementos da lista, contudo ao invés do bloco conter uma referência para o elemento seguinte, cada bloco contém uma referência do bloco anterior.

Dito isso, a outra peculiaridade é que ao invés de manter referências de memória para o bloco anterior, cada bloco contém um hash do bloco anterior e um hash próprio (comumente, um tipo especial de hash chamado de Merkle Root). Por fazer isso, podemos verificar a integridade de cada bloco usando seu próprio hash e o hash dos blocos anteriores. Esta é uma das características que torna a blockchain uma maneira segura de se preservar dados que não vão mudar ou que não devem mudar, e por isso, a blockchain é como um banco de dados de dados imutáveis. Um banco de dados que tem sido muito adequado as aplicações financeiras, uma vez que ninguém quer que suas transações sejam adulteradas, não é mesmo? (A menos que erros humanos sejam cometidos, ou que algum tipo de regulamentação seja necessária, mas este é assunto para uma outra discussão…)

Estes hashes pertencem a um elemento do bloco chamado de cabeçalho (header), no cabeçalho do bloco, além destes hashes, normalmente, encontraremos também um timestamp (data/hora de criação) e um valor de nonce que é usado, por exemplo, pelo algoritmo Proof of Work (PoW) de consenso, que é o que é usado pela Bitcoin. Cada implementação de blockchain pode ter seu cabeçalho especializado, de forma a acomodar lógica específica ou para se adequar a diferentes algoritmos de consenso, mas estes valores tendem a ser os mais comuns.

O payload (“valor”) de um bloco é normalmente uma lista de transações, mas pode ser quase qualquer coisa, como programas que são chamados de contratos inteligentes (smart contracts) no contexto da blockchain.

Topologia de rede de malha (mesh), para ilustrar uma rede P2P (fonte: https://www.comparitech.com/net-admin/network-topologies-advantages-disadvantages/)

Certo, mas o que estes algoritmos de consenso estão fazendo aí? Bem, como foi dito antes, a blockchain é uma tecnologia descentralizada, em outras palavras, ela roda sobre uma rede peer-to-peer (P2P). De maneira similar ao BitTorrent, mas quando novos dados vão ser adicionados à blockchain, deve haver uma computação centralizada do hash do novo bloco, uma vez que ainda não foi encontrada uma maneira de se utilizar o poder computacional combinado da blockchain sem arriscar a integridade ou a confiança dos dados.

Quando um nó produz novos dados para a blockchain, estes dados são enviados para um elemento compartilhado chamado de memory pool (sigamos usando a tradução piscinão de memória), periodicamente, cada nó da rede P2P vai buscar um conjunto de dados deste piscinão e tentará executar um desafio para computar o hash deste bloco, de forma que este hash atenda a uma regra predefinida (é para isto que serve o valor nonce, para ser gerado de forma que o hash atenda a esta regra).

Quando o primeiro nó completa o desafio, ele envia sua resposta para outros nós na rede que o validam e adicionam a sua própria referência da blockchain, desta forma, todos os nós participantes têm todos os dados da blockchain.

Quando este novo bloco é adicionado, os dados contidos nele são removidos do piscinão, e todos os outros nós descartam os dados que tinham buscado e buscam novos arranjos de dados do piscinão de memória.

Vale notar que, uma vez que os dados estão replicados em todos os nós da cadeia (blockchain = cadeia de blocos), a perda de um nó é praticamente irrelevante, mas quando um novo nó quer se juntar ou reentrar na cadeia, ele deve baixar toda a cadeia antes de poder minerar, este processo que acabamos de descrever é o processo de mineração, a disputa para computar um hash.

Na maior parte das implementações de blockchain, o “ganhador” da disputa de mineração recebe uma fração do valor das transações do bloco, como um pouco de bitcoin ou ether, isto funciona como uma forma de incentivo para que o nó permaneça como minerador na blockchain.

Todos estes processos tornam a tecnologia blockchain no que ela é. Uma tecnologia para arranjar uma rede de nós de um banco de dados que suporta apenas leitura e escrita de novos dados e onde todos os nós desta rede estão debaixo de políticas que os desfavorecem de tentar adulterar os dados. Além de manter os dados em, fundamentalmente, todos os nós, tornando muito, mas muito improvável que dados sejam perdidos ou adulterados.

Blockchain pode se provar muito útil para aplicações que consigam tirar vantagem de suas características e seus usos não são restritos ao mundo de aplicações financeiras, mas definitivamente é uma tecnologia bastante adequada a este mundo.

Eu espero que este texto possa ser útil para aqueles interessados num conhecimento geral sobre o funcionamento da blockchain. Sinta-se a vontade para responder para que mais coisas possas ser esclarecidas e mais discussões interessantes possam ser levantadas. Eu não sou um especialista na tecnologia, mas tenho algum estudo sobre ela e apreciaria novas informações :)

--

--

Pedro Fiuza Linhares

Computer Engineer, Master’s degree student and a Software Architect