Blog

A Blockchain-based Customizable Document Registration Service for Third Parties

Artigo Científico produzido por Pamella Soares, Raphael Saraiva, Iago Fernandes, Antônio Neto, Jerffeson Souza, descreve novo produto desenvolvido pela equipe de pesquisadores da Universidade Estadual do Ceará – Uece, e profissionais da empresa Blockchain One, ambos parceiros do Idesco. Produto auxilia empresas a desenvolverem um modelo baseado em blockchain personalizável. O artigo original “A Blockchain-based Customizable Document Registration Service for Third Parties”, foi aceito no IEEE International Conference on Blockchain and Cryptocurrency:

A Blockchain-based Customizable Document Registration Service for Third Parties

Pamella Soares, Raphael Saraiva, Iago Fernandes, Antoˆnio Neto, Jerffeson Souza

Programa de Pós-Graduação em Ciência da Computação Universidade Estadual do Ceará (UECE)

Blockchain One

Fortaleza, Ceará

pamella.soares, raphael.saraiva, iago.fernandes, toinho.neto @aluno.uece.br jerffeson.souza@uece.br

Abstract — O Blockchain tem sido relevante no processo de gestão documental, servindo como uma solução de armazenamento com potencial para garantir os requisitos relevantes necessários para qualquer solução de armazenamento e validação de documentos. No entanto, devido à natureza distribuída do blockchain, pode-se enfrentar dificuldades de implementação e altos custos operacionais, por exemplo. Para facilitar este processo, este trabalho propôs um serviço de registro de documentos baseado em blockchain personalizável que possibilita criar diferentes tipos de documentos generalizados para vários domínios de aplicação e armazená-los em um ou mais blockchains integrados em uma Application Programming Interface (API).

Index Terms— Armazenamento de Documentos, API, Blockchain

  1. INTRODUÇÃO

A gestão de documentos consiste em processos que garantem a produção, armazenamento e uso correto dos documentos da empresa ou do governo. Esse processo de gestão tem sido realizado por meio de intensa digitalização, possibilitando uma importante transformação digital que também foi acelerada pela pandemia do novo coronavírus. Nesse contexto, o blockchain tem sido uma estratégia de destaque para o processo de gestão documental, servindo como uma solução de armazenamento com potencial para garantir os requisitos de integridade, autenticidade, controle de acesso, transparência e disponibilidade necessários para qualquer solução de gestão documental. Em suma, um blockchain pode ser entendido como um banco de dados distribuído, protegido por criptografia e governado por um mecanismo de consenso [1].

Já existem soluções na literatura para registro de documentos suportados por blockchain. No entanto, essas propostas abordam domínios específicos com regras de negócio pré-definidas, como plataformas para registro de diplomas [4], API para registro de inspeções de barragens [3], entre outros. Além disso, existe a dificuldade de implementação da infraestrutura blockchain por ser essencialmente um sistema distribuído e ter um alto custo de operação e manutenção, afetando o desenvolvimento de diferentes entidades [2].

Motivados por esse contexto, propõe-se um Serviço de Registro de Documentos Customizável baseado em blockchain para fornecer e facilitar a integração com blockchains pré-configurados para registrar e validar documentos de forma genérica por aplicativos de terceiros de diferentes domínios. Este serviço permite a configuração de parâmetros para armazenamento de informações, desde a criação de modelos de documentos personalizáveis até a eCIolha de um ou mais blockchains de destino para armazenamento. As principais contribuições deste estudo são (i) o desenvolvimento de uma solução para permitir o registro e validação de documentos suportados por multi-blockchains pré-configuradas, e (ii) uma API genérica amigável ao desenvolvedor para diferentes contextos e terceiros.

  1. SERVIÇO DE REGISTRO DE DOCUMENTOS PERSONALIZÁVEL: UMA VISÃO GERAL DA ARQUITETURA

Esta proposta apresenta um serviço de registro e validação de documentos suportado pela tecnologia blockchain, permitindo a criação de modelos customizáveis de documentos que podem ser armazenados em diferentes blockchains. A API implementada possui funcionalidades para gerenciar documentos blockchain por plataformas de terceiros de diversos domínios. A arquitetura é composta por três camadas principais, conforme apresentado na Figura 1: (i) Camada de Aplicação; (ii) Camada de Serviço; e (iii) Camada de Persistência.

Fig. 1. Arquitetura do Serviço de Registro de Documentos.

Em relação à Camada de Aplicação, a API foi projetada para que a criação de documentos seja abrangente e possa ser integrada a qualquer domínio de aplicação que exija armazenamento de informações de blockchain e serviços de validação. A Camada de Aplicação compreende todos os Clientes que irão consumir a API, como sistemas para registro de diplomas de alunos em curso de graduação, registro de notícias pela mídia impressa para combater Fake News, e diversos outros contextos de aplicação.

A Camada de Serviço trata da implementação das regras de negócio da API referentes às funcionalidades que gerenciam quatro ativos principais: (i) Cliente; (ii) Modelo; (iii) Contrato Inteligente (CI), e (iv) Documento. Em suma, o ativo Cliente representa a entidade proveniente da Camada de Aplicação que consumirá o serviço. Cada Cliente pode ter 1 a N Templates específicos, 1 a N CIs e 1 a N Documentos. Por sua vez, o Template é uma estrutura do tipo Documento que o Cliente irá adicionar ao blockchain. Um Template contém seus respectivos atributos de estrutura de um documento específico e outras informações, como suas descrições. O ativo Contrato Inteligente é o contrato implantado que executa as principais funções de gravação e leitura para gerenciar as informações do documento no blockchain. Cada CI pode estar associado a pelo menos um Template previamente cadastrado, ou seja, cada SC armazena Documentos de um ou mais Template(s) específico(s).

Para generalizar os Templates em diferentes domínios de registros, projetamos a estrutura de dados primária no CI que mapeia cada índice do vetor para um atributo Template específico. Além disso, a solução usa mecanismos off-chain de um banco de dados externo para mapear cada atributo de Template com seu respectivo conteúdo de blockchain. Adicionalmente, foi criada uma funcionalidade em que o Cliente pode utilizar apenas um CI associado a vários Templates. Por fim, o ativo Documento consiste no conteúdo/valor da informação de um documento a ser gerenciado com base no Template criado anteriormente.

A Camada de Persistência usa um banco de dados como mecanismo off-chain e o blockchain para armazenamento de informações de documentos. Especificamente, o uso de um banco de dados tem como objetivo principal registrar e gerenciar Clientes, armazenar suas credenciais, tokens de acesso à API e outras informações relevantes. Portanto, o banco de dados armazena informações confidenciais e os atributos de templates criados para realizar cruzamentos de dados entre o banco de dados e o blockchain. O serviço proposto permite a inserção de informações em uma ou mais blockchains, permitindo que o sistema Cliente escolha a blockchain que melhor se adequa às suas demandas. Este requisito permite que o Cliente decida o armazenamento com base em quanto está disposto a pagar pelas taxas; a velocidade de registro das informações, influenciada pelo algoritmo de consenso e tecnologias utilizadas por cada blockchain; a reputação na comunidade; nível de descentralização; entre outras considerações. As blockchains integradas à API seguem uma estrutura baseada em Ethereum, na qual o código do CI é escrito em uma linguagem de bytecode baseada em pilha e executado na Ethereum Virtual Machine; eles são Ethereum, Ethereum Classic, Binance Smart Chain (BSC), Polygon e Klaytn. Portanto, cada blockchain público integrado a esta solução pode executar o CI implementado por meio da linguagem Solidity.

  1. DEMONSTRAÇÃO DO WORKFLOW

A Figura 2 apresenta, como exemplo, o fluxo de registro de informações de um diploma de estudante por um Cliente, um Sistema de Curso de Graduação. Para isso, assumimos que o Cliente já se cadastrou com suas devidas credenciais de acesso para fazer requisições à API.

Fig. 2. Fluxo Ilustrativo da API.

Na Etapa 1, o Cliente cria um Template para o registro dos Diplomas dos alunos. Assumimos a estrutura do Template de Diploma com os atributos: courseName, idStudent e um status. Como regra da API, o Cliente deve inserir uma referência idInternal ao identificador no banco de dados da aplicação, e o hashDoc, que consiste no hash da mídia do Documento a ser inserido. Ao solicitar \template com atributos de entrada mencionados, o Cliente cria um novo Template e recebe um modelCode, o identificador do Template criado na API e utilizado para implantação de CI.

Na Etapa 2, o Cliente solicita \contract para implantar o CI em um blockchain pré-definido, indicando aquele que deseja armazenar as informações do Diploma. Desta forma, o Cliente passa o código blockchain (0:Ethereum, 1:Ethereum Classic, 2:BCI, 3:Polygon e 4:Klaytn), e o modelCode que será associado ao CI implantado. Neste exemplo, implantaremos o CI na rede Polygon, e este CI conterá apenas registros referentes ao Modelo de Diploma. Por sua vez, a API gera um identificador idContract ao implantar um CI.

Na Etapa 3, a API recebe o idContract para identificar o contrato no qual as informações do Documento serão armazenadas ao solicitar  \document. Nesse ponto, será inserido o conteúdo do próprio documento, neste caso, a informação do diploma indica que o aluno com idStudent ‘0001’ da Engenharia de Software (courseName) tem status de ‘APROVADO’. Por fim, este registro pode ser consultado através da solicitação \document_read a qualquer momento (Passo 4). Ressalta-se que o Sistema de Cursos de Graduação utiliza a API apenas para registrar as informações finais as quais o Cliente deve ter realizado a curadoria adequadamente. Além disso, o Cliente pode criar templates com diferentes atributos em sua estrutura e solicitar outras funções para gerenciar os diplomas dos alunos, como registrar em mais de um blockchain; verificar a integridade da mídia através do atributo hashDoc, dentre outros. Fornecemos uma visualização do Postman¹ de algumas solicitações mostradas na Fig. 2.

Como trabalho futuro, pretende-se integrar a um blockchain autorizado para definir um controle de acesso mais elaborado caso clientes diferentes queiram compartilhar informações confidenciais entre eles.

REFERÊNCIAS

  • Roman Beck, Michel Avital, Matti Rossi, and Jason Bennett Thatcher. Blockchain technology in business and information systems research. Business Information Systems Engineering, 59(10):381–384, nov. 2017.
  • Xiaoyun Li, Zibin Zheng, and Hong-Ning Dai. When services computing meets blockchain: Challenges and opportunities. Journal of Parallel and Distributed Computing, 150:1–14, 2021.
  • Antonio Jefferson Macedo, Allysson Allex Arau´jo, and Itamara Taveira. Adoc¸a˜o  de  blockchain  para  apoio  ao  cadastro  e  inspec¸a˜o  de  barragens h´ıdricas: Uma proposta de pesquisa baseada em design CIience research. In  5º  Confereˆncia  sobre  Sistemas  de  Informac¸a˜o  na  Ame´rica  Latina (ISLA), 2021.
  • Raphael  Saraiva,  Allysson  Allex  Arau´jo,  Pamella  Soares,  and  Jerffeson Souza. Miriam: A blockchain-based web application for managing professional registrations of medical doctors in brazil. In 2021 IEEE International Conference on Blockchain and Cryptocurrency (CIBC), pages 1–2. IEEE, 2021.

1https://zenodo.org/record/6140266

Inove junto com o IDESCO