Blockchain é uma das palavras do momento quando se pensa em tecnologia inovadora.
Mas muitas entidades privadas e governamentais têm se perguntado se existe necessidade de implantação de um sistema em Blockchain privado dentro do seu ambiente de produção.
Desenvolver em Blockchain significa resolver um problema de um processo que não é possível de se solucionar perfeitamente com as tecnologias tradicionais (bancos de dados relacionais ou não-relacionais, servidores de aplicação, etc).
Para saber se existe a necessidade de um Blockchain, algumas questões precisam ser respondidas:
Se todas as respostas para as questões acima foram ‘SIM’, então você precisa de um sistema em Blockchain.
Importante lembrar que o Blockchain nasce do conceito de redes distribuídas.
Não apenas os dados são compartilhados, como também os sistemas (contratos inteligentes) estão disponíveis em todos os equipamentos (nós) e são executados em todos os nós quando assim necessário.
Para dimensionar um sistema Blockchain deve-se primeiro entender o processo que precisa ser aplicado entre as diversas entidades.
Quanto mais detalhado o processo, maior a facilidade de se definir o sistema em Blockchain.
Terminada essa etapa, agora é necessário definir o ativo compartilhado e os participantesque vão fazer uso dessas informações compartilhadas.
Tecnicamente falando, o ativo pode ser definido por arquivos XML, JSON, XSD, ou qualquer representação de estruturação de dados que se tenha preferência.
Já os participantes são identificados por pares de chaves ou certificados digitais (a tecnologia que nós trabalhamos –Hyperledgerse utiliza de certificados digitais x.509). Cada participante terá um conjunto de nós de sua propriedade, instanciados dentro dos seus datacenters ou em nuvens pré-definidas, que irão realizar suas transações e armazenar os dados do Blockchain.
Após a definição do ativo e participantes, agora deve-se definir qual a hierarquia de escrita e leitura de cada participante quando for criar, modificar ou ler o ativo.
Essas regras de leitura e escrita fazem parte do conceito de consenso do Blockchain privado e permissionado.
Após concluídas essas etapas do conceito do Blockchain, podemos iniciar a codificar o processo em linguagem de programação. Dependendo do tipo de Blockchain que se esteja trabalhando, existe uma gama de linguagens de programação a se escolher.
O framework de Blockchain que trabalhamos (Hyperledger) permite codificação em Go, Node ou utilizar um runtime baseado em JavaScript chamado Composer.
Essa etapa de codificação representa a interpretação do processo para transformá-lo em sistema. O sistema distribuído é comumente conhecido por Contrato Inteligente (Smart Contracts ou Chaincodes).
Como exercício para criar um Blockchain privado e permissionado, vamos pensar um processo simples: o transporte de produtos controlados.
Nesse caso fictício, vamos considerar produtos controlados sendo cargas sensíveis a temperatura (ex: medicamentos, alimentos), cargas de risco (ex: resíduos hospitalares, explosivos), cargas com risco ambiental (ex: lotes de madeira) ou qualquer lote de produtos que precise de autorização especial para transporte.
Nesse processo simplificado, iremos pensar no controle feito entre os seguintes participantes:
No futuro, é possível pensar na evolução desse processo, adicionando novos participantes, como centros de distribuição, portos secos, dentre outros.
O processo desse exemplo se define pelo seguinte fluxo:
Esse exemplo fictício descrito acima é uma pequena representação de um processo simples de transporte. Outros exemplos podem ser imaginados para a concepção de Blockchains em diversas cadeias produtivas.
Exemplo utilizando tecnologias tradicionais cliente/servidor
Agora vamos analisar esse exemplo de processo para rastreabilidade de produtos controlados e tentar resolvê-lo com as tecnologias tradicionais.
Quando se pensa em criar um sistema com as tecnologias cliente/servidor tradicionais, em geral se começa com a modelagem dos dados e criação de Web APIs e VPNs para realizar a interconexão entre as diversas bases de dados.
As informações do lote de produto são definidas internamente dentro dos bancos de dados do Fabricante. No momento do início de transporte, a transportadora armazena suas próprias informações a partir dos dados passados pelo Fabricante.
Nesse momento, surgem diversos problemas: as informações sobre os lotes de produtos são duplicadas em dois bancos de dados distintos, e conforme as situações de transporte começam a ocorrer, os dados armazenados dentro do Fabricante não condizem mais com a real situação do lote transportado.
Nos processos tradicionais em geral se inclui uma etapa de conciliação, na qual os dados de cada lado são confrontados pelas equipes administrativas de cada parte, etapa que em geral é realizada ao final do transporte e é conhecida por ser extremamente trabalhosa e improdutiva.
Além disso, o processo de prestação de contas ao Regulador, em geral é feito através de auditorias pré-agendadas. Essas análises feitas de forma esporádica são a causa de diversas fraudes que deveriam ser evitas pelas agências reguladoras.
No processo de transporte de produtos controlados, o ativo representa as informações de controle do lote:
Os participantes são identificados por certificados digitais capazes de gerar as informações dentro dos seus nós.
Dentro das regras do Blockchain temos:
Cada etapa desse processo de transporte é validada e as novas versões do ativo são replicadas em todas os nós.
Nenhum dos dados pode ser escrito sem autorização descrita na regra de consenso. Ou seja, um Transportador não pode gravar informações relativas ao Fabricante e vice-versa.
Além disso, o Regulador terá disponível nos seus nós todos os dados relativos aos transporte, em tempo real, podendo criar monitoramentos avançados e realizar auditoriasmais aprofundadas a qualquer momento.
Sistemas em Blockchain são desenvolvidos para garantir a segurança de implementação de um processo entre várias partes.
Desenvolver um Blockchain privado para funcionamento em uma única empresa apenas faz sentido quando separamos o processo entre diversos departamentos, considerando principalmente um departamento de auditoria e governança.
Quando um departamento de auditoria se conecta a outros departamentos, informações de governança são imediatamente sincronizadas entre todas as partes, possibilitando ações em tempo real, ou análises temporárias de qualquer etapa do processo, independente do momento em que os eventos ocorreram.
Sistemas em Blockchain são desenvolvidos para garantir a segurança de implementação de um processo entre várias organizações.
Porém nem sempre se consegue iniciar o desenvolvimento de uma rede de confiança em Blockchain com a participação de todos os envolvidos no processo.
Nesse caso, iremos nos beneficiar de uma das características mais importante da tecnologia: escalabilidade.
A rede Blockchain pode ser iniciada sem a presença de todos os participantes do processo.
As organizações que estiverem dentro do Blockchain, estarão representadas por certificados digitais e nós de sincronização. Essas terão todas as vantagens que a tecnologia fornece: imutabilidade, auditabilidade, segurança, dentre outras.
Para aquelas outras entidades do processo, o acesso aos serviços se darão da forma tradicional, com acesso ao sistema vias páginas Web, ou Web APIs (o framework Hyperledger usa o padrão REST para Web API).
Caso uma entidade deseje entrar posteriormente, é realizado um processo conhecido como versionamento do Blockchain, para permitir a entrada de um novo participante a rede de confiança.
Diversas portarias, normativas e leis são criadas todos os dias envolvendo diversas entidades, organizações, empresas, orgãos de governo ou mesmo segmentos de mercado em um mesmo processo.
Blockchain veio resolver esse tipo de projeto.
Mais do que isso, Blockchain veio para resolver problemas que não tinham solução antes do seu advento.
Se você consegue resolver 100% de uma situação utilizando as tecnologias tradicionais, então você não precisa de um sistema em Blockchain.