A tecnologia da cadeia de blocos
1 dez., 2017
Baldolino Calvino

Nesta nova postagem, vamos falar sobre a possível utilização da tecnologia blockchain na comunicação científica. Eu topei no twitter com um artigo publicado na Digital Science News Blog, falando sobre o potencial do uso da tecnologia da blockchain na pesquisa científica. Digital Science & Research é uma empresa fundada pelo inglês Timmo Hannay e operada pelo mega-grupo editorial Holtzbrinck, o qual controla algumas das maiores casas editoriais do mundo, como Springer Nature e MacMillan. Depois de trabalhar na Nature, fundar e dirigir a Digital Science e a Overleaf, Hannay agora ajuda a dirigir a SAGE. Ou seja, é jogo de gigantes.

A Digital Science tem seu foco na produção de software e serviços digitais a pesquisadores e instituições de pesquisa. Nesta postagem, revelam o Blockchain for Research Digital Science Report [1], um documento que mostra a perspectiva atual do possível impacto da tecnologia da blockchain na pesquisa e comunicação acadêmicas. Além disso, lançam um financiamento especial de até $30k para a pesquisa sobre o uso da blockchain em ciência: Catalyst Grant for the Blockchain. As aplicações estão abertas e vão até 15 de janeiro de 2018 e cobrem desde propostas de criação de criptomoedas ou criptoprotocolos até a criação de grupos para influenciar a implementação da nova tecnologia na pesquisa científica. Um sinal claro de que o mainstream da publicação acadêmica organizada vê com olhos muito atentos a blockchain e deseja participar desta nascente aplicação da tecnologia.

Mas, afinal, o que é a blockchain? Podemos traduzir esta expressão como cadeia de blocos, o que corresponde com alguma fidelidade a sua estrutura básica. A cadeia de blocos é uma “corrente” formada por estruturas digitais chamadas de blocos, os quais constituem pacotes de dados com uma estrutura padronizada: contém um apontador criptográfico (hash pointer) que o liga ao bloco imediatamente anterior, um registro temporal (timestamp) e um conjunto de dados armazenados. Cada bloco é, assim, um pequeno banco de dados, ou, para ser mais exato, o conjunto de blocos é um banco de dados distribuído em entidades discretas. O grande salto conceitual da cadeia de blocos é o fato de que é impossível mudar de forma bem sucedida um bloco sem mudar a cadeia toda. Para mudar a cadeia inteira, cada apontador criptográfico (criado usando uma função de criptografia SHA 256) de cada bloco tem que ser recalculado. Se a cadeia for grande o suficiente, o poder computacional exigido para cada operação de mudança dessas seria longe do trivial, tornando a operação toda inviável. Mais difícil ainda, a cadeia de blocos não tem um servidor central, podendo ser armazenada num número arbitrário de servidores (nodos). Uma fração também arbitrária destes nodos competem entre si para realizar os cálculos criptográficos necessários para gerar o próximo bloco (é a isso que chama “minerar a cadeia de blocos”) em troca de uma recompensa.

Illustration by Matthäus Wander(Wikimedia)

No caso da primeira implementação de cadeia de blocos da história, a moeda digital Bitcoin, a dificuldade dos cálculos a serem realizados para criar um novo bloco é controlada pelo conjunto de regras do sistema e cada nodo tenta achar a resposta correta, variando um número arbitrário gravado no bloco, o nonce. A operação criptográfica necessária para isso segue um protocolo denominado proof-of-work (prova de trabalho) e é um exemplo de um ataque de força bruta ao problema. A recompensa é na forma de unidades monetárias da criptomoeda. Ou seja, os “mineradores” (servidores que competem com cálculos intensivos) que “acham” (vencem a competição digital e geram um bloco antes dos outros) um bloco recebem moedas digitais em troca. A rede da cadeia de blocos é descentralizada e acumula cada vez mais capacidade computacional na competição entre os “mineradores”. Assim, torna-se virtualmente impossível, com o passar do tempo, alterar a rede da cadeia de blocos. Como consequência, alterar dados gravados nos blocos da cadeia é tido como impossível e os registros inseridos na cadeia de blocos são ditos imutáveis.

Isso resolve um grande e antigo problema em tecnologia da informação: como confiar em dados digitais obtidos de algum servidor qualquer? Normalmente, é necessaŕio a presença de uma autoridade centralizada com uma correspondência a uma instituição no mundo real, a qual é da confiança de todas as partes envolvidas. As brechas para possíveis problemas são óbvias. Satoshi Nakamoto, o elusivo criador da blockchain e da Bitcoin, criou uma solução combinando conceitos já existentes, como o de uma rede distribuída e o de prova de confiança criptográfica, a fim de garantir que a cadeia de blocos fosse confiável para usuários anônimos sem a presença de uma autoridade central. Obviamente, tal confiabilidade não é inerente a qualquer cadeia de blocos e vai depender de suas características e de sua implementação. Atualmente, a criptomoeda Bitcoin sobrevive sem nenhum histórico de problemas de segurança na sua cadeia de blocos. O mesmo já não se pode falar de várias centenas de criptomoedas “clones” (altcoins) que surgiram na esteira do sucesso da Bitcoin, muitas delas claramente fraudulentas e algumas envolvidas em graves problemas de segurança.

No caso da Bitcoin, os dados armazenados nos blocos são as transações entre os usuários da rede, na forma de uma estrutura chamada Merkle Root, formando um “livro-caixa” digital, mas virtualmente qualquer tipo de dado pode ser armazenado na cadeia de blocos da Bitcoin ou em outras cadeias semelhantes. Atualmente, já existem empresas em estágio inicial de implantação que oferecem um “serviço notarial” onde documentos podem ser “registrados” de forma permanente na rede. Essa função notarial já pode ser usada por pesquisadores para registrar suas publicações (obtendo, assim, um registro temporal imutável que comprova sua alegação de prioridade sobre uma descoberta). No entanto, o que se vislumbra para a pesquisa científica é muito mais amplo e abrange todo o ciclo de produção e publicação de dados de pesquisa.

cadeia de blocos

Meu interesse pessoal no uso da cadeia de blocos nasceu recentemente de uma constatação algo perturbadora: assim como muitos, eu uso o programa de controle de versões Git para organizar localmente e o repositório de código GitHub para armazenar meus dados, pesquisas, etc. O Git rastreia eficientemente cada versão de seu trabalho, atribuindo um hash SHA 256 para cada uma. Assim, fica impossível adulterar sem seu conhecimento seu código ou seus dados. Assim eu pensava, tão ingênuo. Como demonstrado de forma contundente por Mike Gerwitz em sua História de Terror, não somente é possível, como na verdade muito fácil alterar seus dados e mesmo seu registro temporal da árvore de registros do Git. Isso acontece porque o Git tem estas funções embutidas, e não são difíceis de usar (um tutorial rápido e claro pode ser visto em um blog da Link Intersystems). Na minha mente surgiu um cenário onde um diretor de pesquisas implicado em fraude nervosamente adultera seus bancos de dados, incluindo as contas pessoais de seus cientistas, a fim de escapar de uma condenação. Muito sinistro. Como confiar no seu próprio banco de dados assim? Mesmo com o suporte de uma instituição externa e centralizada como o GitHub?

Foi nessa altura que lembrei da blockchain e de sua imutabilidade. Perfeito para dar aos dados de pesquisa em projetos sensíveis (como, por exemplo, pesquisa de novos medicamentos para seres humanos) ou em projetos públicos como na Ciência Aberta, um grau de confiança que dificilmente se pode conseguir de outra forma. Como sou um aficionado pelo conceito de Ciência Aberta, entendi logo o papel crucial que a cadeia de blocos pode ter como provedora de confiança descentralizada. Isso libertaria a pesquisa aberta das dúvidas sobre a possibilidade de plágio que a cercam. Esse princípio de provimento de confiança pode ser utilizado em todo o ciclo de vida da pesquisa científica, unificando a coleta, análise e apresentação dos dados num único elo de confiabilidade.

Mas não termina por aí. Outra possibilidade de impacto da tecnologia blockchain na pesquisa científica é o financiamento direto a partir de criptomoedas. Isso abriria uma interessante perspectiva: a mesma cadeia de blocos usada para pesquisar e publicar os dados científicos pode ser usada também para financiar estas mesmas atividades científicas. Instituições que desejem fomentar a pesquisa poderiam, assim, auditar em tempo real os projetos financiados usando a própria ferramenta de financiamento. É quase surreal, não é?

Isso certamente explica o grande interesse da indústria da publicação acadêmica nesta tecnologia. Quem a dominar, sairá na frente de uma corrida que promete mudar a forma como o mundo científico trabalha de maneira revolucionária e duradoura. Mas a cadeia de blocos realmente já tem aplicabilidade na ciência? Para tentar descobrir mais sobre isso, fui à página do projeto Blockchain for Science, cujo criador, Soenke Bartling, foi entrevistado para o documento da Digital Science. Na sua FAQ, o criador do projeto já é bem visionário, saindo-se com várias noções ousadas (até mesmo declarando que sua “fronteira final” é a “humanidade multi-planetária”), porém objetivamente assume que bancos de dados descentralizados, imutáveis, etc, baseados na blockchain serão inúteis a não ser que os cientistas sejam educados sobre suas vantagens e um movimento seja criado. Os autores se colocam na posição de prover esta educação ao mundo acadêmico. Então, podemos concluir através deste projeto, ainda numa fase conceitual, que a implementação da cadeia de blocos na ciência ainda está num estágio incipente, anterior a qualquer aplicação prática.

No entanto, consigo ver um ponto onde até mesmo os autores deste projeto ainda estão perdendo de vista algumas possibilidades: segundo eles declaram, os problemas de incompatibilidade de informações, ausência de informação prévia, metadados inexistentes, entre outros, serão resolvidos eventualmente e, após isso, como organizar o compartilhamento destes dados?, sugerindo que a cadeia de blocos será de utilidade no próximo grande passo. Na verdade, o projeto Blockchain for Science deixa passar uma grande oportunidade de utilização da cadeia de blocos ainda antes da oportunidade de difusão da informação. O problema unificador de todas estas questões é um problema de confiabilidade entre várias partes que interagem, uma situação para a qual a cadeia de blocos tem sido usada com muito sucesso (a montagem de uma criptomoeda exige a solução de problemas como o do duplo gasto). Dessa forma, acredito que uma implementação apropriada da cadeia de blocos poderia resolver, entre outros, problemas relacionados à confiabilidade das bases de dados (incluindo dados omitidos), à confiabilidade da publicação científica (melhorando ou substituindo a sistema de revisão por pares) e à transparência do financiamento da ciência (criando, talvez, um sistema onde somente resultados, mesmo que teóricos, autorizem o financiamento de um projeto, e o julgamento não seja centralizado).

Será que chegaremos a ver esse dia ainda em nosso tempo de vida?

Referências:

  1. Science, Digital; van Rossum, Joris (2017): Blockchain for Research. figshare. doi:10.6084/m9.figshare.5607778.v1