top of page
Foto do escritorUFRJ Consulting Club

Blockchain: o Futuro do Armazenamento de Dados

Atualizado: 13 de abr. de 2021



Muitas pessoas quando ouvem o termo blockchain pensam: "não faço ideia do que seja isso". Dos poucos que sabem algo sobre a palavra, grande parte diria algo como: “Ah sim, blockchain! Essa é a tecnologia por trás da Bitcoin.”

Caso você faça parte do segundo grupo, meus parabéns! Você está mais por dentro de novidades tecnológicas do que a maioria das pessoas, que ainda pede táxi ligando para uma cooperativa.


No entanto, dentro do pequeno grupo de indivíduos que conhece a palavra ‘Blockchain’, há uma classe ainda mais restrita. Ela é composta por um conjunto de pessoas – com interesse incomum por tecnologia – que pesquisou e entendeu como a blockchain funciona e conseguiu enxergar muitos usos além de criptomoedas para ela.


Dessa forma, o objetivo desse texto é que você possa compreender o mecanismo por trás da blockchain e as suas diferentes aplicações fora do mundo das moedas digitais. Não será necessário gastar horas em blogs obscuros da internet e arrancar os eventuais fios de cabelo tentando entender como essa criptografia funciona.



Blockchain – O que ela é e como funciona?

Blockchain, formalmente definido, é um registro público, transparente e descentralizado que só pode ser modificado acrescentando informação, nunca alterando o que já foi incluído, que tem sua confiança garantida por criptografia e consenso.


Para entender com mais facilidade, usaremos uma analogia. Imagine um fichário que todos tem uma cópia. Nada que foi escrito nele pode ser alterado e novas informações só são aceitas se acopladas ao seu final, como se alguém tivesse que acrescentar uma folha nova. Nessa lógica, as folhas são os blocos (block) e o fichário é a corrente (chain).


Essa rede descentralizada de registros é uma blockchain. Todos que fazem parte tem uma cópia idêntica de tudo que já foi escrito nela e qualquer versão diferente é descartada. Para um bloco novo ser adicionado, ele precisa ser enviado à todos da rede, de forma que os detentores das cópias possam mantê-las atualizadas e iguais. Mais a frente vamos ver outros fatores que dificultam a criação de um bloco novo ou de uma corrente alternativa, agora vamos nos preocupar em entender o que é um bloco.


Um bloco tem quatro componentes distintos, sendo eles as declarações, o nº confirmador, a variável, e o nº confirmador passado, conforme a imagem:


Figura 1 – O bloco e seus componentes

No entanto, para começarmos a entender como todos esses elementos trabalham juntos, devemos primeiro abordar rapidamente o que é uma função de hash, a cola que une tudo de forma segura.


Uma função de hash é um tipo especial de algoritmo criptográfico. É uma função que recebe como entrada uma mensagem qualquer e dá como saída uma outra mensagem completamente diferente, de forma que é impossível deduzir a mensagem inicial a partir da final.


Figura 2 - Funcionamento de uma função de Hash: A entrada e a saída são números sem nenhuma relação aparente

Além da irreversibilidade, é necessário que a mesma entrada sempre gere a mesma saída, para que seja possível verificar se um resultado específico vem de uma mensagem específica. Eu sei, parece difícil, mas não se assuste, pois é um conceito muito simples. Um exemplo básico seria a soma de todos os algarismos de um número.


Somando todos os algarismos da data da independência do Brasil obtemos o número 29. No entanto, é impossível saber a mensagem inicial, mesmo com conhecimento do algoritmo implementado, a partir da mensagem final.


Figura 3 - Exemplo de função de hash

Obviamente, essa soma não é uma boa função de hash. Primeiramente, a chance de dois inputs diferentes darem o mesmo output é muito alta. Além disso, o output (29 nesse caso) é manipulável, ou seja, você pode moldar a mensagem inicial de modo a gerar uma mensagem final específica. Idealmente, a chance de duas entradas diferentes darem o mesmo resultado deve ser quase nula e o output deve ter uma relação indecifrável com o input. Para isso, a bitcoin utiliza a SHA256, função criada pelo governo americano na década de 90 que atende às duas condições nas quais nossa soma fracassa.


Agora que você já teve sua primeira aula de criptografia, está pronto para descobrir como cada elemento de um bloco (declarações, nº confirmador, variável e nº confirmador passado) se encaixam e possibilitam o funcionamento dessa tecnologia.


Declarações: A parte mais importante do bloco, ela é o conjunto das mensagens a serem passadas, a informação contida nele. Cada bloco pode conter inúmeras declarações, cada uma numerada apropriadamente. No caso da Bitcoin, elas seriam as transações dizendo quantas moedas o agente transfere para um recipiente. Sua estrutura é a seguinte:


Figura 4 - Elementos de uma declaração

A “assinatura do agente” é onde entra o primeiro pedaço interessante de criptografia. Assim como uma assinatura física não consegue ser fraudada por causa da caligrafia de seu dono, a digital é garantida por dois números, a chave pública e a chave privada, que explicaremos a seguir.


Essas “chaves” são números específicos com uma relação matemática entre eles que todos usuários de uma blockchain tem. A chave pública, como o nome sugere, deve ser do conhecimento de todos e servirá como sua identidade dentro da blockchain. Já a privada, deverá ser mantida secreta, pois é com ela que criaremos assinaturas impossíveis de serem fraudadas. Para gerar a assinatura é necessário fazer o seguinte: você insere toda a declaração, ou seja, seu nº, a chave pública do agente e a ação mais a chave secreta do agente em uma função de hash. O resultado será uma assinatura específica daquela mensagem e daquele agente.


Figura 5 - Criação da assinatura a partir da declaração, da chave privada e da função de hash

Se um terceiro quiser verificar se a assinatura realmente é do detentor daquela chave pública, ele consegue. Existe uma função verificadora que recebe como entrada a mensagem, a chave pública e a assinatura e retorna somente V (verdadeiro) ou F (falso) dependendo se a chave privada correta foi utilizada.


A assinatura serve para que nenhuma declaração possa ser forjada. Ela introduz um aspecto de segurança criptográfica que não requer um mediador para garanti-la.

Agora que já sabemos como funcionam as declarações e o que lhes garante confiabilidade, podemos entender como funcionam os próximos elementos: o número confirmador e a variável.


Número confirmador e variável: Da mesma forma que a assinatura era o que dava segurança a declaração, esses dois elementos são os que dão segurança ao bloco.


O número confirmador (que chamarei daqui em diante de confirmador), como o nome sugere, é um número que vai no final de cada bloco que confirma se ele é válido ou não. Sem ele, não é possível acrescentar um bloco novo à corrente. No entanto, o confirmador não é um número qualquer, precisando atender a duas limitações. Primeiro, ele precisa ter uma quantidade pré-determinada de zeros a sua frente (atualmente a bitcoin requer que 18 dos 64 caracteres de seus confirmadores sejam zeros). Segundo, ele deve ser o resultado da aplicação da função de hash a todo o conteúdo do bloco.


"Tá, deixa eu ver se entendi. A função de hash devolve um número quase aleatório quando alimentamos uma mensagem a ela. O que garante que o confirmador resultado da função de hash vai ter 18 zeros à sua frente?"


É aí que entra a variável! Ela é um número que vai sendo alterado até o confirmador atender à restrição da quantidade de zeros. Como já vimos lá em cima, quando lidamos com boas funções de hash, não é possível moldar a mensagem inicial para criar a mensagem final que queremos. É impossível saber quais valores da variável, quando unidos ao resto do bloco e imputados na função de hash, vão resultar num confirmador que começa com 18 zeros. A única forma de descobrir é ir testando valores diferentes para sua variável, um a um, até que dê certo. A famosa tentativa e erro.


Figura 6 - Mecanismo de chutar variáveis uma a uma até que o confirmador atenda à restrição dos zeros

Essa dinâmica de tentar achar números de 64 algarismos com 18 zeros na frente na base do chute faz que seja extremamente trabalhoso achar um confirmador válido. Só para você ter uma ideia, a chance de um número aleatório ter essa característica é menor que uma em um bilhão ao quadrado. Ou seja, um computador capaz de chutar um bilhão de variáveis diferentes por segundo demoraria mais de mil anos para achar um confirmador válido.


Agora, analisando o componente que falta do nosso bloco, o nº confirmador passado, poderemos entender qual é a grande dificuldade de se criar um bloco novo e o que confere segurança a corrente.


Número Confirmador Passado: Ele nada mais é do que o confirmador do bloco anterior. Ou seja, todo bloco tem escrito, em seu começo, o confirmador do bloco que veio antes dele. Isso faz que eles fiquem interligados e é o que cria a corrente, que se estende até o primeiro bloco criado.


Figura 7 - Confirmadores passados e a corrente

Agora, uma dinâmica muito interessante ocorre. Se lembra que eu falei que para criar o confirmador de um bloco é necessário pôr todo o conteúdo presente nele na função de hash? O confirmador passado também precisa ser levado em conta. Dessa forma, se alguém alterar um bloco passado ele não terá só que gerar um confirmador válido novo para esse bloco, o que já seria extremamente trabalhoso, ele precisaria gerar confirmadores válidos novos para todos os blocos subsequentes. Caso contrário, qualquer um seria capaz de verificar a fraude que ele está tentando cometer.


Vamos supor que esse fraudador fosse muito persistente. Ele decidiu que está disposto a fazer todo o trabalho necessário para reconfirmar todos os blocos subsequentes ao que ele fraudou. No tempo imenso que levaria para uma tarefa como essa ser concluída, o resto dos usuários da blockchain já teriam adicionados novos blocos a corrente. E a não ser que o fraudador detenha a maioria do poder computacional de toda a rede da blockchain, o resto dos usuários combinados acrescentariam blocos à corrente numa taxa mais rápida do que o fraudador conseguiria reconfirmá-los.


Assim, é muito simples para uma pessoa saber em qual versão da blockchain ela deve confiar. Basta ela escolher a mais longa, pois seria necessário que mais da metade do poder computacional da rede trabalhasse em conjunto para criar uma cópia fraudulenta mais longa do que a original. O nome desse conceito é proof of work, que diz que o trabalho necessário gasto para produzir a corrente mais longa é a prova de sua honestidade.


Agora você já sabe como blockchain funciona! Resumidamente, uma blockchain é uma corrente de blocos que forma um registro público. A informação inscrita é composta de declarações, que requerem assinaturas criptográficas para serem válidas. A única forma de alterar esse registro é acrescentando blocos, o que é muito trabalhoso. E, por último, essa necessidade de trabalho faz com que o registro mais longo seja sempre o mais confiável.


Após entendermos como funciona a blockchain, agora precisamos entender quais são suas possíveis aplicações além de moedas digitais. Para isso, vamos ver exemplos no setor de saúde, em supply-chain e no setor imobiliário.


Além das Criptomoedas:


Setor de saúde:

Um problema recorrente na indústria da saúde é o registro e manutenção de informação sobre pacientes. Para um médico conseguir diagnosticar e medicar uma pessoa da forma adequada, é fundamental que ele saiba quais foram seus problemas de saúde passados, quais remédios ela já tomou e por quais tratamentos já passou.


Atualmente, esse tipo de informação é armazenada pelos médicos, pelos hospitais ou pelos próprios pacientes. No entanto, não há uma forma padrão de guardá-las, além de não haver um mecanismo difundido de compartilhamento. Isso gera uma série de problemas, como perda do registro, erros na transferência dos dados de um sistema para outro e a inacessibilidade dos dados de um paciente por quem precisar, seja ele mesmo ou um médico diferente.


Se registros médicos fossem postos em uma blockchain, todos os problemas listados acima seriam mitigados. Primeiramente, a informação de um paciente jamais seria perdida, pois o que está escrito numa blockchain é inalterável e ela fica espalhada ao redor do mundo, impedindo que um ataque ou acidente venha a danificá-la. Depois, todos teriam acesso ao registro quando desejarem. Raramente ocorreria o caso de um médico não saber que tipo de remédio já foi prescrito a seu paciente, pois essa informação está em um outro consultório no outro lado do país. Por último, não haveria erro na transferência dos dados de um sistema para outro, pois todos sempre estariam no mesmo registro público e não poderia haver confusão de identidades.


Um exemplo de empresa criada com o fim de integrar saúde na blockchain é a Clinicoin. Startup criada em 2017 por um grupo de estudantes de mestrado da universidade de Berkeley, ela traz uma plataforma na qual pacientes entram com os próprios dados de saúde para que médicos, pesquisadores e empresas tenham acesso gratuito. Um dos objetivos declarados do empreendimento é minimizar a possibilidade de empresas lucrarem com os dados de seus pacientes, pois eles veem isso como uma barreira para o desenvolvimento da ciência e de melhores tratamentos.


Supply-Chain:

Supply-chain é a cadeia logística que leva os produtos desde os fornecedores de sua matéria prima até a loja em que ele é finalmente comprado pelo consumidor final. Acompanhar os insumos nessa jornada é ao mesmo tempo extremamente valioso e difícil.


Poder ter um registro do caminho percorrido, do tempo demorado e da qualidade de cada matéria prima de um produto traria vários benefícios. Em primeiro lugar, isso reduziria a incerteza de quanto tempo demoraria para uma empresa no final da cadeia receber os insumos que ela precisa, porque ela poderia acompanhar em tempo real as atualizações de seus fornecedores e dos fornecedores desses na blockchain. Além disso, facilitaria muito no controle de qualidade, pois ajudaria a identificar em qual elo o produto sofreu possíveis danos.


Para consumidores finais, a adoção de um sistema transparente como a blockchain também seria muito benéfico. Eles poderiam ver de qual país seu produto e suas matérias primas são realmente originárias. Poderiam também ter acesso a quanto tempo um determinado alimento está numa prateleira ou esteve armazenado.


No entanto, integrantes intermediários da supply-chain poderiam não ficar muito satisfeitos com o uso dessa tecnologia. A transparência que ela proporciona tornaria a tolerância por atrasos muito mais baixa e qualquer dano a um produto poderia resultar em uma multa a quem o causou, já que agora não seria mais possível se esconder por trás da incerteza de quem foi seu causador.


Setor Imobiliário:

Atualmente, comprar ou vender um imóvel é um processo extremamente burocrático. Isso se dá porque é fundamental que tudo seja muito bem registrado, para que no futuro não haja problemas legais frutos de dúvidas nos documentos de transferência.


Se as transferências e o registro de imóveis fossem feitos numa blockchain, muitos desses problemas seriam resolvidos. Logo de cara, ela serviria para reduzir o número de intermediários, que aumentam os custos de qualquer serviço. Além disso, ela seria uma lista universal onde toda as informações e o histórico de um imóvel ficariam registrados.

Governos corruptos locais não conseguiriam mais manipular de quem é um pedaço de terra, já que seria impossível forjar ou alterar um documento. Também não seria mais necessário se preocupar se todos os impostos de uma unidade foram devidamente pagos, já que tudo isso poderia estar na blockchain. Por último, o governo teria um registro único de todos os imóveis e seus donos disponíveis para consulta a qualquer momento.


Um país que está tomando a dianteira na implementação da tecnologia para registro de terras é a Índia. A nação de mais de um bilhão de habitantes tem um problema notório de saber quem realmente é dono de que em suas zonas rurais. A questão só é piorada quando levamos em conta que o responsável por administrar isso são as jurisdições locais, não exatamente famosas por sua honestidade.


Para isso, várias províncias estão lançando registros públicos em blockchains. Elas utilizam a competência em TI de sua população para reformular os sistemas que o governo utiliza atualmente. Os principais benefícios que vêm sendo colhidos são a agilidade do método novo (quando comparado ao antigo) e a maior confiança da população.


Riscos:

Tudo que falamos até agora pareceu maravilhoso. A impressão que passamos foi de uma tecnologia sem nenhum lado negativo, mas não é bem assim. O uso de blockchain ainda está em seu estado incipiente e ainda tem muito a provar.


A sua principal desvantagem é a necessidade de retrabalho. Todo computador da rede contém um cópia de toda a blockchain, ou seja, de tudo que já foi registrado nela. Além do mais, sempre que um bloco novo é adicionado, toda a blockchain tem que ser copiada novamente em sua integridade em todos os computadores. Isso faz com que o sistema use muita energia numa atividade redundante.


Outra questão importante é a possibilidade de um "ataque de 51%". Se um indivíduo maldoso conseguir controlar mais da metade do poder computacional da rede, possivelmente através de um hack, ele será capaz de duplicar blocos antigos ou adicionar blocos novos fraudulentos. A pior parte é que, mesmo se posteriormente os usuários honestos do sistema descubram que um ataque dessa natureza foi realizado, não há muito a se fazer.


Por último, há o fato de a tecnologia ser nova e ainda não ter sido legitimada pelo uso difundido. A única área em que ela foi utilizada em larga escala foi nas criptomoedas. Apesar dos exemplos promissores expostos no texto, a maioria das iniciativas de implementação de blockchain ainda são muito pequenas para termos um veredito de se a ela é de fato revolucionária ou somente uma moda passageira.


No entanto, acreditamos que a blockchain tenha muito potencial. Correr o risco de não explorá-la pode se tornar tão fatal quanto foi para as livrarias dos anos 90 que julgaram a internet um espaço para nerds de computação. E é possível que aquele capaz de implementá-la com competência se torne o homem mais rico do mundo. Só o futuro dirá.


Comments


bottom of page