A visão revolucionária de uma versão peer-to-peer de dinheiro eletrônico publicada em 2008 por Satoshi Nakamoto, em “Bitcoin: Um Sistema de Dinheiro Eletrônico Peer-to-Peer”, rapidamente tomou conta da comunidade de desenvolvedores. Enquanto o bitcoin e o conceito de criptomoedas foram as ideias que inicialmente capturaram a imaginação mundial, o artigo de Nakamoto trouxe também um segundo conceito: blockchain. Baseada em um sistema de contabilidade, a novidade poderia oferecer um mecanismo de transporte não apenas para bitcoin, mas para qualquer objeto digital.
Entretanto, quais são as melhores práticas para a criação de aplicações eficientes de blockchain? Simplesmente inserir dados em algo do tipo e manipular as informações com códigos inerentes a contratos inteligentes, ou códigos de cadeia (chaincodes), não é o bastante. Para serem bem-sucedidos, desenvolvedores precisam dominar alguns estilos arquiteturais e as ações mais adequadas. Este artigo traz um conjunto de práticas recomendadas que podem auxiliá-lo a criar aplicações eficazes de blockchain.
1 – Aproveite cases já disponíveis
Antes de iniciar o desenvolvimento de uma aplicação de blockchain, a equipe de desenvolvedores precisa realizar um levantamento de cases que descrevam as melhores práticas para o problema comercial que pretendem resolver.
Aqui, é interessante considerar as três regras de outro para blockchain da IBM:
Deve haver um problema comercial a ser resolvido;
Deve haver uma rede comercial identificável;
Deve haver uma base de confiança na rede comercial.
A IBM também disponibiliza uma página abrangente de cases bem-sucedidos de uso de blockchain com a qual desenvolvedores podem contar antes de iniciarem seus processos.
Um outro recurso importante é o IBM Garage, solução paga construída a partir de uma metodologia baseada em design thinking que pode auxiliar profissionais no desenvolvimento de produto mínimo viável (MVP).
Não se deve iniciar projetos sem a definição de um ou mais cases como guias. Com estudos de caso, é possível encontrar as soluções mais populares e mais bem-sucedidas fornecidas pelo espaço da cadeia de suprimentos na qual se atuará.
Mais informações sobre cases da indústria cafeeira podem ser conferidos em “Coffee supply chains are now going the blockchain way.”
Além disso, a IBM Developer code patterns for blockchain é mais uma ferramenta útil, oferecendo um código open source pronto para ser utilizado por desenvolvedores.
2 – Clone uma aplicação existente
A tecnologia blockchain ainda é relativamente nova, e muitos times de desenvolvimento podem não se sentir confortáveis para trabalhar com ela, a menos que tenham uma experiência considerável no campo de atuação. É por isso que você encontra aplicações do tipo surgindo apenas em determinadas áreas, como cadeias de suprimentos – tendo como exemplo as cadeias de suprimentos cafeeiros. Uma vez obtido sucesso em determinado ramo comercial, como o citado, uma série de clones surgirá a partir de soluções já existentes aplicadas em campos correlatos – a exemplo de novidades cafeeiras em áreas geográficas diferentes.
Uma vez que muitas dessas aplicações são open source, especialmente aquelas baseadas em diferentes tecnologias Hyperledger, como o Hyperledger Fabric, um primeiro passo recomendado para uma equipe de desenvolvedores recém-criada é clonar uma aplicação de blockchain já existente e aplicá-la a um domínio ligeiramente novo. No caso exemplificado neste artigo, alternativas da cadeia cafeeira de suprimentos oferecem um bom ponto de partida.
Falando especificamente de equipe de desenvolvimento de aplicações de blockchain, como deveria ser formada? O time deve incluir:
Um arquiteto-chefe com experiência e conhecimento profundo em criptografia, em performance e em melhores práticas de arquiteturas de blockchain;
Um especialista de domínio alinhado ao arquiteto;
Alguns desenvolvedores e operadores de blockchain.
Ou seja, um total de seis desenvolvedores é ideal para começar – número que pode crescer junto com o projeto. Levantamento de custos está fora do escopo deste artigo.
3 – Entenda os conceitos do Fabric
Um bom panorama de conceitos básicos de blockchain que você precisa conhecer e a serem incorporados na estrutura do Hyperledger Fabric pode ser encontrado no artigo: “Blockchain basics: Hyperledger Fabric.”
Veja os componentes-chave:
Assets: aquilo que você insere e pelo que procura em um blockchain utilizando contratos inteligentes;
Livro-razão distribuído: registro que grava o estado e a propriedade de um asset;
Contratos inteligentes ou códigos de cadeia (chaincodes): software que define os assets e as transações relacionadas;
Serviço de requisição: empacota transações em blocos e garante a entrega da transação na rede. Os principais são o Raft e o Kafka.
Como mencionado anteriormente, a melhor maneira para que um time de desenvolvimento se familiarize rapidamente com esses conceitos é reimplementando um projeto open source existente, como o Blockchain Bean ou outro bem-sucedido baseado em Hyperledger Fabric.
4 – Escolha a plataforma mais adequada
Há muitas plataformas e ferramentas de desenvolvimento voltadas à criação de aplicações de blockchain. Este artigo é focado nas três seguintes:
Hyperledger Fabric;
Visual Studio Code;
IBM Blockchain Platform.
Hyperledger Fabric
O Hyperledger Fabric é um projeto open source gerenciado pela Linux Foundation construído para ser utilizado como base para o desenvolvimento de aplicações ou soluções de blockchain com arquitetura modular, permitindo componentes plug-and-play. Seu design modular e versátil contempla uma ampla margem de cases industriais, oferecendo uma abordagem única de desempenho em larga escala enquanto preserva, ao mesmo tempo, a privacidade de seus usuários. E mais: o Hyperledger Fabric inclui uma documentação excelente.
Visual Studio Code
O Visual Studio Code, aliado à extensão Blockchain VSCode, auxilia desenvolvedores a criar, testar e realizar o debug de contratos inteligentes, além de permitir a conexão com ambientes Hyperledger Fabric e possibilitar a construção de aplicativos que transacionam em sua rede de blockchain.
Depois de decidir o case base, a equipe utiliza o Hyperledger Fabric aliado à extensão VSCode para criar uma aplicação blockchain com contratos inteligentes. A extensão VSCode acompanha uma galeria de tutoriais fáceis de seguir e focados em manipular blockchain nesses casos.
Ou seja, utilizamos a extensão VSCode para criar, empacotar, instalar, instanciar, submeter e avaliar contratos inteligentes.
Figura 1. Fluxo do processo da extensão VS Code.
Mais informações a respeito de contratos inteligentes podem ser encontradas no padrão de códigos “Create and execute a blockchain smart contract” – e eles são a principal maneira de criar aplicações de blockchain.
A galeria de tutoriais da extensão VSCode é certamente o lugar para começar a aprender como criar aplicações de blockchain com contratos inteligentes no Hyperledger Fabric e na IBM Blockchain Platform.
IBM Blockchain Platform
A IBM Blockchain Platform é uma plataforma baseada na nuvem para criar e executar aplicações de blockchain corporativas em uma infraestrutura de sua escolha. Hoje, é possível fazer o deploy da IBM Blockchain Platform em nuvens públicas, como IBM Cloud, AWS ou Azure – ou realizar o processo em nuvens privadas com infraestruturas seguras, como o LinuxONE.
Ainda que muitas equipes comecem suas jornadas de desenvolvimento com o Hyperledger Fabric ou alguma outra solução relacionada, é quase certo que elas acabem realizando o deploy de suas aplicações na nuvem pública ou em nuvens múltiplas com diferentes configurações.
5 – O livro-razão e o blockchain
Figura 2. O coração de um sistema de blockchain.
Um livro-razão compartilhado, replicado e autorizado
Registros do Participante A
Registros do Participante B
Registros do banco
Registros da seguradora
Registros da reguladora
Registros da auditora
... com consenso, procedência, imutabilidade e definição.
Uma vez identificado um case bem documentado, a equipe foca, então, em estruturar a rede comercial. A rede comercial utiliza um livro-razão compartilhado e acessível a todos os participantes (e esse item foi citado seção 3, logo acima.) Livros-razões comerciais estão presentes nas empresas há um bom tempo como uma maneira de gerenciar transações comerciais. Entretanto, os modelos tradicionais sempre trazem a necessidade de igualar as informações do livro de cada participante com as de todos os outros da rede – o que pode ser tanto trabalhoso quanto propenso a erro.
Acabar com essa necessidade de comparar informações ao permitir a todos os membros de uma rede comercial a utilização de um mesmo livro compartilhado é uma inovação histórica. Isso também proporciona uma consensualidade que se destaca em qualquer rede. Todos os participantes precisam concordar com uma ação antes que qualquer transação possa ser realizada no livro-razão.
O livro-razão utiliza um blockchain compartilhado com as seguintes características:
Consensualidade, já que o Raft ou o Kafka ajudam a estruturar maior tolerância a falhas para o blockchain;
Acompanhamento, pois hashes criptográficos, como o SHA256, sinalizam quaisquer mudanças nas transações de blockchain;
Segurança, uma vez que assinaturas digitais asseguram que transações não sejam criadas por impostores;
Procedência, dada a possibilidade de rastrear a origem de um item em um blockchain;
Imutabilidade, garantindo que dados inseridos não possam ser alterados;
Definição, assegurando que as transações sejam consideradas imediatamente finalizadas após serem incluídas em um bloco e adicionadas ao blockchain.
Para mais informações sobre livro-razão, leia “Blockchain basics: Introduction to distributed ledgers.”
In-chain e off-chain
Mesmo com essas informações, é importante saber que a equipe de desenvolvimento não se limita a conectar um blockchain e executá-lo. Os membros precisam começar determinando quais dados pertencem ao blockchain e quais não pertencem. Por exemplo, não é possível inserir giga ou terabytes de informações em um blockchain caso seja necessário realizar pesquisas rápidas – e tais pesquisas são uma das funcionalidades essenciais proporcionadas por uma aplicação.
Além disso, alguns dados podem já existir em bancos ineficientes e personalizados que não precisam ser eliminados ou substituídos. Em vez de interromper um blockchain, é melhor manter essas informações na própria aplicação por meio de links off-chain conforme a necessidade. O conceito “off-chain” é a chave para desenvolver aplicações de blockchain bem-sucedidas. Isso significa que sua solução é parte de outras que não precisavam ser eliminadas a não ser que absolutamente necessário.
Por fim, não se esqueça que dados pessoais nunca devem ser inseridos em um blockchain sem serem, antes de tudo, anonimizados, respeitando-se leis de proteção de dados, como o Regulamento Geral sobre a Proteção de Dados (GDPR) da União Europeia.
Uma vantagem oferecida pelo blockchain é a capacidade de se pesquisar algo na cadeia de blocos e encontrar rapidamente as informações desejadas – algo impossível de se realizar com registros em papel, que ainda são, surpreendentemente, utilizados em muitos livros-razão tradicionais. Muitas soluções de blockchain permitem que empresas digitalizem formulários, dando suporte a evidências e permitindo assinaturas digitais.
Outro uso comum de armazenamento off-chain é para dar suporte ao cache dos valores mais recentes do estado dos dados na cadeia ou para aproveitar uma tecnologia adequada a tal finalidade, como as de pesquisas e análises avançadas para orientar a interação da aplicação com a rede.
Frequentemente, deve-se armazenar dados sensíveis off-chain, uma vez que, por definição, informações inseridas no blockchain não podem ser alteradas nem excluídas. Para saber mais sobre o assunto, dê uma olhada nas Private Data Collections do guia Hyperledger Fabric.
Questões in-chain ou off-chain são de responsabilidade do arquiteto-chefe e os principais fatores que determinam a criação de uma aplicação de blockchain ou sua quebra.
6 – Contratos inteligentes e oráculos
Já falamos de contratos inteligentes, também chamados de chaincodes, por meio do quais desenvolvedores manipulam dados no blockchain. O blockchain garante que nada em seus registros seja modificado ou excluído sem que todos os envolvidos sejam imediatamente notificados. Essa é uma vantagem que o torna único. Entretanto, e quando se trata da informação importada de fora dele? Afinal, o blockchain depende da interação com o mundo real.
É aqui que entra a função dos oráculos. Eles são fontes de dados confiáveis que oferecem informações determinísticas para o blockchain através de contratos inteligentes – e determinismo é a chave. Por exemplo, taxas de câmbio mudam rapidamente, sendo que informações externas podem facilmente fornecer valores não determinísticos que variam de acordo com sua fonte de conversão. O oráculo, então, gerencia as fontes de dados das quais o blockchain depende para assegurar que valores fixos sejam fornecidos, possibilitando à aplicação lidar com flutuações de maneira determinística. Oráculos devem ser estruturados na solução de blockchain desde o momento inicial – não adicionados posteriormente e de maneira tardia.
7 – Segurança
O Hyperledger Fabric e a IBM Blockchain Platform são essencialmente seguros. Para aprimorar essa característica, é aconselhado utilizar o IBM Secure Service Container para IBM Cloud Private, um software que hospeda aplicativos baseados em contêineres para cargas de trabalho híbridas e em nuvem privada nos servidores IBM LinuxONE e IBM Z.
Este ambiente computacional seguro dedicado a aplicações baseadas em microsserviços permite implementação sem requisição de códigos para se explorar os recursos de segurança, fornecendo:
Proteção contra adulteração durante o tempo de instalação;
Acesso de administrador restrito para prevenir mal uso de credenciais privilegiadas;
Encriptação automática de dados, tanto em execução quanto em repouso.
A equipe de desenvolvedores precisa, também, estar ciente do Padrão Federal de Processamento de Informações (FIPS). Trata-se de uma série de normas que descrevem padrões para processamento de documentos, algoritmos de criptografia e outras orientações voltadas à tecnologia da informação que devem ser utilizadas por agências governamentais não militares e por fornecedores governamentais que atuam com tais agências. As 140 séries do FIPS são padrões de segurança do governo dos EUA que especificam requisitos para módulos de criptografia. Em dezembro de 2016, foi adotada a versão FIPS 140-2, baseada na original, de 25 de maio de 2001. Sua sucessora, FIPS 140-3, entrou em vigor em 22 de setembro de 2019.
O nível 4 é o que mais proporciona segurança. Nele, mecanismos físicos oferecem um pacote completo de proteção em torno de um módulo criptográfico cujo objetivo é detectar e reagir a quaisquer tentativas de acesso físico não autorizadas. A invasão do gabinete do módulo de qualquer origem apresenta alta probabilidade de detecção, resultando na exclusão imediata de todos os parâmetros críticos de segurança (CSPs) de textos sem formatação.
Segurança é, por razões óbvias, a chave para o sucesso ou a falha de uma aplicação comercial de blockchain desenvolvida pela equipe. Poucos times precisam de tais níveis de segurança, mas é bom saber que existem soluções do tipo fornecidas pelos servidores IBM LinuxONE e IBM Z.
8 – Evite utilizar a Tolerância Prática a Falha Bizantina (PBFT)
Serviços de requisição no Hyperledger Fabric e no IBM Blockchain, como o Kafka e o Raft, fornecem serviços de tolerância a falhas, uma vez que uma implementação de blockchain usual é distribuída e precisa ser protegida de futuras quedas.
Entretanto, o que acontece caso agentes maliciosos se infiltrem em uma rede comercial? Afinal, uma rede consiste em organizações cooperadas, sendo que uma delas poderia ser repentinamente assumida por um proprietário mal-intencionado, cujo objetivo seria tentar assumir o controle de todo o blockchain.
Bem, para esta situação, existe a Tolerância Prática a Falha Bizantina (PBFT). O único problema é que, para um sistema de blockchain permissionado, tal recurso pode ser algo exagerado. Em outras palavras, não é exatamente o método mais eficiente para resolver esse tipo de problema.
Sistemas de blockchain permissionados são, por definição, resguardados por leis e regulações que, se infringidas, tornam os tribunais a melhor opção para resolução – algo que não demanda recursos técnicos demasiados. É por isso que o Hyperledger Fabric ainda não suporta PBFT.
9 – Blockchain corporativo na nuvem
Desenvolver aplicações de blockchain com o Hyperledger Fabric e a extensão VS Code é algo certeiro. É fácil criar uma instância do Hyperledger Fabric e executar o chaincode em um blockchain. A única limitação é que o blockchain será executado em seu próprio hardware, não na nuvem.
Para executá-lo na nuvem, você pode utilizar a IBM Blockchain Platform, dedicada à criação e à execução de aplicações corporativas de blockchain em nuvens IBM, AWS e outras (saiba mais clicando aqui.) No mundo híbrido em que vivemos, ter a possibilidade de executar diversas nuvens (às vezes ao mesmo tempo) é extremamente necessário. Grande parte das aplicações de blockchain já são executadas em uma ou mais.
O console da IBM Blockchain Platform, mostrado na Figura 3, facilita a criação de aplicativos de blockchain corporativos.
Figura 3. Console da IBM Blockchain Platform.
Além disso, a IBM Blockchain Platform da IBM Cloud vem com uma rica arquitetura que facilita criar aplicações corporativas avançadas (veja a figura 4).
Figura 4. Arquitetura da IBM Blockchain Platform
Resumo
Blockchain é uma das tecnologias mais promissoras que apareceram na última década. Desenvolvedores do mundo todo estão dedicados ao aprendizado e à aplicação de sua premissa em diversos problemas que despertem interesse. Iniciar o desenvolvimento dessas soluções é fácil e gratuito com o Hyperledger Fabric e o Visual Studio Code aliado à extensão Blockchain VS Code.
A chave para o sucesso é entender o campo no qual se quer atuar, realizar um levantamento de cases e aprender o modelo de programação. A maneira mais rápida de começar é copiando aplicações open source existentes, como a Blockchain Bean, e aplicar as mudanças necessárias no código-base.
Também é importante entender plenamente aspectos corporativos e organizacionais de seu novo empreendimento blockchain. Sim, é necessário um arquiteto com habilidades em criptografia e segurança, assim como um ou dois programadores, além de profissionais de domínio e especialistas comerciais. Por fim, zelo excessivo deve ser evitado, sendo que focar no desenvolvimento de uma aplicação que forneça valor real para seu primeiro consumidor é o que mais importa. Hoje em dia, seus clientes certamente serão encontrados na cadeia de suprimentos do segmento mercadológico em questão.
Não deixe de ler, também, a rica documentação do Hyperledger Fabric.
Estas 9 melhores práticas podem ajudar tanto você quanto o seu time a começar o caminho mais adequado de desenvolvimento de aplicações de blockchain. O resto é com vocês!
...
Quer ler mais conteúdo especializado de programação? Conheça a IBM Blue Profile e tenha acesso a matérias exclusivas, novas jornadas de conhecimento e testes personalizados. Confira agora mesmo, consiga as badges e dê um upgrade na sua carreira!
Categorias