Introdução

Em termos gerais, blockchain é um sistema de livro-razão com registros imutáveis, mantido em uma rede distribuída por múltiplos nós pares (peer nodes). Esses nós mantêm uma cópia do livro-razão contendo as transações que foram validadas por um protocolo de consenso e agrupadas em blocos que inclue um hash que liga cada bloco ao bloco anterior.

A aplicação amplamente reconhecida do blockchain é a criptomoeda Bitcoin, embora outras moedas tenham seguido seus passos. A Ethereum, uma criptomoeda alternativa, adotou uma abordagem diferente, integrando muitas das características do Bitcoin, mas adicionando contratos inteligentes (smart contracts) para criar uma plataforma para aplicativos distribuídos. Bitcoin e Ethereum se enquadram em uma classe de blockchain que classificamos como tecnologia de blockchain pública não permissionada (public permissionless). Basicamente, são redes públicas, abertas a qualquer pessoa, onde os participantes interagem anonimamente.

À medida que a popularidade do Bitcoin, Ethereum e algumas outras tecnologias derivadas aumentavam, o interesse em aplicar as tecnologias subjacentes do blockchain, como, registro distribuído e a plataforma de aplicativos distribuídos em casos de uso mais inovadores para empresas também crescia. No entanto, muitos casos de uso corporativos exigem características de desempenho que as tecnologias blockchain sem permissão não conseguem (atualmente) atender. Além disso, em muitos casos de uso, a identidade dos participantes é um requisito obrigatório, como no caso de transações financeiras, onde é obrigatório conhecer o consumidor (Know-Your-Customer - KYC) e regras antí-lavagem de dinheiro devem ser seguidas (Anti-Money Laundering - AML).

Para uso corporativo, precisamos considerar os seguintes requisitos:

Embora muitas plataformas de blockchain antigas estejam sendo adaptadas para uso corporativo, a Hyperledger Fabric foi projetada para uso corporativo desde o início. As seções a seguir descrevem como a Hyperledger Fabric (Fabric) se diferencia de outras plataformas de blockchain e descreve algumas das motivações para suas decisões de arquitetura.

Hyperledger Fabric

A Hyperledger Fabric é uma plataforma de tecnologia de livro-razão distribuído (Distributed Ledger Technology - DLT) de nível empresarial e código aberto, projetada para uso em ambientes empresariais e que fornece alguns recursos diferenciados importantes em relação a outras plataformas populares de livro-razão distribuído ou blockchain.

Um ponto chave de diferenciação é que o Hyperledger foi estabelecido sob a Linux Foundation, que possui uma longa e muito bem-sucedida história de fomentar projetos de código aberto sob governança aberta, que desenvolvem comunidades sustentáveis fortes e ecossistemas prósperos. A Hyperledger é governada por um comitê de direção técnica diversificada e o projeto Hyperledger Fabric por um conjunto diversificado de mantenedores de várias organizações. Tem uma comunidade de desenvolvimento que ultrapassa 35 organizações e quase 200 desenvolvedores desde suas primeiras versões.

A Fabric possui uma arquitetura altamente modular e configurável, permitindo inovação, versatilidade e otimização para uma ampla gama de casos de uso da indústria, incluindo bancos, finanças, seguros, assistência médica, recursos humanos, cadeia de suprimentos e até distribuição de música digital.

A Fabric, é a primeira plataforma de livro-razão distribuído a suportar contratos inteligentes criados em linguagens de programação de uso geral como Java, Go e Node.js, em vez de linguagens específicas de domínio restrito (Domain-specific Languages - DSL). Isso significa que a maioria das empresas já possui o conjunto de habilidades necessárias para desenvolver contratos inteligentes e não é necessário treinamento adicional para aprender um novo idioma ou DSL.

A plataforma Fabric também é permissionada, o que significa que, diferente de uma rede pública, sem identificação, os participantes são conhecidos uns pelos outros, em vez de anônimos e totalmente não confiáveis. Isso significa que, embora os participantes não confiem plenamente uns nos outros (eles podem, por exemplo, ser concorrentes no mesmo mercado), uma rede pode ser operada sob um modelo de governança baseada na confiança que existe entre os participantes, como um contrato ou modelo para reger divergências.

Um dos diferenciais mais importantes da plataforma é o suporte aos protocolos de consenso conectáveis, o que permite que a plataforma seja mais customizável e atenda modelos de confiança e casos de uso específicos. Por exemplo, quando implantado em uma única empresa, ou operado por uma autoridade confiável, consenso tolerante a falha bizantina pode ser considerado desnecessário pois impacta na performance e na taxa de transferência de dados. Em situações assim, um protocolo de consenso tolerante a falhas (CFT) pode ser mais do que adequado, enquanto que, em caso de uso descentralizado, um método mais tradicional de consenso com um protocolo tolerante a falha bizantina (BFT) pode ser necessário.

A Fabric pode suportar protocolos de consenso que não se baseiam em criptomoeda para incentivar mineração ou para promover a execução de contratos inteligentes. Evitar uma criptomoeda reduz alguns vetores significativos de risco/ataque. A ausência de operações de mineração criptográfica significa que a plataforma pode ser implementado com aproximadamente o mesmo custo operacional que qualquer outro sistema distribuído.

A combinação desses recursos de design diferenciados faz da Fabric uma das plataformas com melhor desempenho disponíveis hoje, tanto em termos de processamento de transações e da latência na confirmação da transação, além de permitir privacidade e confidencialidade nas transações e nos contratos inteligentes (o que a Fabric chama "chaincode") que os implementa.

Vamos explorar esses recursos diferenciadores em mais detalhes.

Modularidade

A Hyperledger Fabric foi arquitetada especificamente para ter uma arquitetura modular. Seja com consenso conectável, gerenciamento de identidade conectável de protocolos como LDAP ou OpenID Connect, protocolos de gerenciamento de chaves ou bibliotecas criptográficas, a plataforma foi projetada em seu núcleo para ser configurada para atender à diversidade de requisitos de casos de uso corporativos.

Em alto nível, a Fabric é composta pelos seguintes componentes modulares:

Existe consenso no mercado de que não existe "um blockchain único para tudo". A Hyperledger Fabric pode ser configurada de várias maneiras para satisfazer as diversas necessidades de vários casos de uso.

Blockchains Permissionada vs Não Permissionada

Em uma blockchain sem permissão (ou não permissionada), praticamente qualquer um pode participar e todos os participants são anônimos. Nesse contexto, pode não haver outra confiança senão o estado da blockchain, que antes de mais nada, é imutável. Para atenuar essa falta de confiança, blockchains não permissionadas normalmente empregam uma criptomoeda nativa "minerada" ou taxa por transação para fornecer incentivo econômico para compensar os custos extraordinários na participação em um protocolo de consenso bizantino tolerante a falhas com base na "prova de trabalho" (PoW).

As blockchains com permissão (ou permissionadas), por outro lado, operam uma blockchain com um conjunto conhecido de participantes, identificados e frequentemente controlados, que operam sob um modelo de governança que promove um certo grau de confiança. Uma blockchain permissionada fornece uma maneira de proteger as interações entre um grupo de entidades que têm um objetivo comum, mas que podem não confiar totalmente uma nas outras. Ao confiar nas identidades dos participantes, uma blockchain permissionada pode usar protocolos de consenso mais tolerante a falhas (CFT) ou tolerante a falha bizantina (BFT), que não exigem mineração dispendiosa.

Além disso, no contexto permissionado, o risco da introdução intencional de um código malicioso por um participante usando um contrato inteligente diminui. Primeiro, os participantes se conhecem e todas suas ações, seja enviar transações, modificar a configuração da rede ou implantar um contrato inteligente, são registradas no blockchain, seguindo uma política de endosso que foi estabelecida para a rede e o tipo de transação. Por não ser completamente anônimo, a parte culpada pode ser facilmente identificada e o incidente tratado de acordo com as regras do modelo de governança.

Contratos Inteligentes

Um contrato inteligente ("smart contract"), o que a Fabric chama de "chaincode", funciona como um aplicativo distribuído confiável, que garante sua segurança/confiabilidade no blockchain e do consenso subjacente entre os pares. É a lógica de negócios em um aplicativo blockchain.

Existem três pontos principais que se aplicam a contratos inteligentes, especialmente quando aplicados a uma plataforma:

A maioria das plataformas existentes de blockchain que suportam contratos inteligentes segue uma arquitetura de ordena-executa na qual o protocolo de consenso:

A arquitetura ordena-executa pode ser encontrada em praticamente todos os sistemas de blockchain existentes, desde plataformas públicas/não permissionada, como na Ethereum (com consenso baseado em PoW), como em plataformas permissionadas como Tendermint, Cadeia e Quorum.

Os contratos inteligentes executados em uma blockchain que opera com a arquitetura ordena-executa devem ser determinísticos; caso contrário, o consenso nunca poderá ser alcançado. Para solucionar o problema do não determinismo, muitas plataformas exigem que os contratos inteligentes sejam escritos em um idioma não padrão ou específico do domínio (como Solidity) para que operações não determinísticas possam ser eliminadas. Isso dificulta uma ampla adoção dessas plataformas, pois requer que os desenvolvedores aprendam uma nova linguagem para escrever os contratos inteligentes, o que pode levar a erros de programação.

Além disso, como todas as transações são executadas sequencialmente por todos os nós, o desempenho e a escala são limitados. O fato de o código do contrato inteligente ser executado em todos os nós do sistema exige que medidas complexas sejam tomadas para proteger o sistema como um todo contra contratos potencialmente maliciosos, a fim de garantir a resiliência do sistema.

Uma Nova Abordagem

O Fabric introduz uma nova arquitetura para transações que chamamos de executa-ordena-valida. Ele aborda os desafios de resiliência, flexibilidade, escalabilidade, desempenho e confidencialidade enfrentados pelo modelo ordena-executa, separando o fluxo da transação em três etapas:

Esse design se afasta radicalmente do paradigma ordena-executa, onde, a Fabric executa as transações antes de chegar a um acordo final sobre a ordem.

Na Fabric, uma política de endosso específica do aplicativo especifica quais nós pares, ou quantos deles, precisam garantir a execução correta de um determinado contrato inteligente. Assim, cada transação só precisa ser executada (endossada) por um subconjunto dos nós pares para satisfazer a política de endosso da transação. Isso permite a execução paralela, aumentando o desempenho geral e a escala do sistema. Essa primeira fase também elimina qualquer não-determinismo, pois os resultados inconsistentes podem ser filtrados antes do pedido.

Como eliminamos o não determinismo, a Fabric é a primeira tecnologia blockchain que permite o uso de linguagens de programação de mercado.

Privacidade e Confidencialidade

Como discutimos, em uma rede pública de blockchain não permissionada que aproveita o PoW para seu modelo de consenso, as transações são executadas em todos os nós. Isso significa que pode não haver confidencialidade nos contratos, nem nos dados de transação que eles processam. Toda transação e o código que a implementa são visíveis para todos os nós da rede. Nesse caso, trocamos a confidencialidade do contrato e dos dados por consenso tolerante a falha bizantina fornecido pela prova de trabalho (PoW).

Essa falta de confidencialidade pode ser problemática para muitos casos de uso de negócios/empresas. Por exemplo, em uma rede de parceiros da cadeia de suprimentos, alguns consumidores podem receber taxas preferenciais como meio de solidificar um relacionamento ou promover vendas adicionais. Se todo participante puder ver todos os contratos e transações, torna-se impossível manter essas relações comerciais em uma rede completamente transparente --- todo mundo vai querer as tarifas preferenciais!

Como segundo exemplo, considere o setor de valores mobiliários, onde um trader que constrói uma posição (ou se desfaz de uma) e não gostaria que seus concorrentes soubessem disso, ou então eles tentariam entrar no jogo, enfraquecendo a aposta do trader.

Para abordar a falta de privacidade e confidencialidade e com o objetivo de atender aos requisitos de casos de uso corporativos, as plataformas blockchain adotaram uma variedade de abordagens. E todas têm seus prós e contras.

Criptografar dados é uma abordagem para fornecer confidencialidade, no entanto, em uma rede não permissionada que utiliza a prova de trabalho (PoW) no seu consenso, os dados criptografados estão em todos os nós. Com tempo e recursos computacionais suficientes, a criptografia pode ser quebrada. Para muitos casos de uso corporativo, o risco de suas informações serem comprometidas é inaceitável.

As provas de conhecimento zero (ZKP) é outra área de pesquisa que está sendo explorada para resolver esse problema, o trade-off aqui é que, atualmente, computar um ZKP requer tempo e recursos computacionais consideráveis. Portanto, o compromisso neste caso é o desempenho por confidencialidade.

Em um contexto permissionado, pode se alavancar formas alternativas de consenso, pode-se explorar abordagens que restrinjam a distribuição de informações confidenciais exclusivamente a nós autorizados.

A Hyperledger Fabric, por ser uma plataforma permissionada, permite a confidencialidade por meio de sua arquitetura de canal e o recurso de dados privados. Nos canais, os participantes de uma rede Fabric estabelecem uma sub-rede na qual cada membro tem visibilidade para de conjunto específico de transações. Assim, apenas os nós que participam de um canal têm acesso ao contrato inteligente (chaincode) e aos dados transacionados, preservando a privacidade e a confidencialidade de ambos. Os dados privados permitem divisões entre membros em um canal, permitindo a mesma proteção que os canais sem a sobrecarga operacional de criar e manter um canal separado.

Consenso Conectável

A ordem das transações é delegada a um componente modular de consenso que é logicamente desacoplado dos pares que executam as transações e mantêm o livro-razão. Especificamente, o serviço de pedidos. Como o consenso é modular, sua implementação pode ser adaptada à necessidade de confiança de uma implantação ou solução específica. Essa arquitetura modular permite que a plataforma conte com um conjunto de ferramentas melhor estabelecido para ordens tolerantes a falhas (CFT) ou tolerante a falhas bizantina (BFT).

Atualmente a Fabric oferece uma implementação de serviço de ordens que suporta CFT com base na biblioteca etcd do protocolo Raft. Para mais informações sobre os serviços de ordem disponíveis no momento, consulte nossa documentação conceitual sobre ordens.

Observe que eles não são mutuamente exclusivos. Uma rede Fabric pode ter vários serviços de ordem que suportem os aplicativos ou requisitos de diferentes aplicativos.

Performance e Escalabilidade

O desempenho de uma plataforma de blockchain pode ser afetado por inúmeras variáveis, como, tamanho da transação, tamanho do bloco, tamanho da rede, bem como limites do hardware, etc. O Grupo de Trabalho de Performance e Escalabilidade da Hyperledger Fabric atualmente trabalha em um modelo de performance chamado Hyperledger Caliper.

Vários trabalhos de pesquisa foram publicados estudando e testando os recursos de performance do Hyperledger Fabric. O mais recente escalou a Fabric para 20.000 transações por segundo.

Conclusão

Qualquer avaliação séria das plataformas blockchain deve incluir a Hyperledger Fabric em sua lista final.

Combinados, os recursos diferenciadores da Fabric o tornam um sistema altamente escalável para blockchains com permissão, oferece suporte a assunções de confiança flexíveis que permitem à plataforma suportar uma ampla variedade de casos de uso da indústria, desde governo, finanças, logística da cadeia de suprimentos, saúde e muito mais.

A Hyperledger Fabric é um dos projetos mais ativos da Hyperledger. A construção da comunidade em torno da plataforma está crescendo constantemente, e a inovação oferecida a cada lançamento ultrapassa em muito qualquer das outras plataformas corporativas de blockchain.

Agradecimento

Esse conteúdo é derivado da revisão por pares "Hyperledger Fabric: um sistema operacional distribuído para blockchains permitidos" - Elli Androulaki, Artem Barger, Vita Bortnikov, Christian Cachin, Konstantinos Christidis, Angelo De Caro, David Enyeart, Christopher Ferris, Gennady Laventman, Yacov Manevich, Srinivasan Muralidharan, Chet Murthy, Binh Nguyen, Manish Sethi, Gari Singh, Keith Smith, Alessandro Sorniotti, Chrysoula Stathakopoul, Mark Smith Jason Yellick Cocco