Hyperledger
Desenvolvedor | Linux Foundation |
Plataforma | alpha, x86, x64, hppa, ppc, ppc64, sparc |
Modelo do desenvolvimento | Software livre |
Lançamento | 9 de fevereiro de 2016 (8 anos) |
Versão estável | 0.4.0 |
Idioma(s) | Multilíngue |
Escrito em | Go e JavaScript |
Sistema operativo | Multiplataforma |
Gênero(s) | Blockchain |
Licença | Licença Apache (Version 2) |
Estado do desenvolvimento | Corrente |
Página oficial | www |
Repositório | github |
Hyperledger (ou o "Projeto Hyperledger") é um projeto colaborativo envolvendo várias indústrias, iniciado em dezembro de 2015 pela Linux Foundation.[1] Tem como objetivo avançar a tecnologia de registro distribuído Blockchain em múltiplos segmentos da indústria.[2] O seu foco é livros razão feitos para suportar transações de indústrias globais, incluindo as principais empresas de tecnologia, financeiras e logísticas, com o objetivo de melhorar vários aspectos da performance e robustez.[3] O projeto aspira unir um número de tentativas independentes para desenvolver protocolos e padrões abertos, provendo um framework modular que suporta componentes diferentes para usuários diferentes. Isso inclui uma variedade de blockchains, cada uma com seu consenso, modelos de persistência, e serviços para identidade, controle de acesso e contratos.
Histórico
[editar | editar código-fonte]Em Dezembro de 2015, a Linux Foundation anunciou a criação do projeto Hyperledger. Os primeiros fundadores do projeto foram anunciados em Fevereiro de 2016, e mais 10 membros que compõem o conselho de administração foram anunciados em 29 de Março.[4] Em 19 de Maio, Brian Behlendorf foi apontado como diretor executivo do projeto.[5]
No inicio de 2016, o projeto começou a aceitar propostas para bases de código e outras tecnologias a serem incubadas, para potencial inclusão como componentes centrais do Hyperledger. Uma das primeiras propostas foi para uma base de código que combina trabalhos prévios feitos pela Digital Asset Holdings (Blockstream's libconsensus) e a OpenBlockchain da IBM.[6]Posteriormente, esse projeto foi renomeado para Fabric.[7] Em maio, o livro razão distribuído da Intel (Sawtooth) também foi incubado.[8]
Membros
Os primeiros membros da iniciativa incluem empresas que trabalham com blockchain (Blockchain, ConsenSys, R3), outras empresas tecnológicas (Cisco, Digital Asset Holdings, Fujitsu, Hitachi, IBM, Intel, NEC, NTT DATA, Red Hat, VMware), empresas financeiras (ABN AMRO, ANZ Bank, BNY Mellon, CLS Group, CME Group, The Depository Trust & Clearing Corporation (DTCC), Deutsche Börse Group, J.P. Morgan, State Street, SWIFT, Wells Fargo), e outras (Accenture, Calastone, Credits, Guardtime, IntellectEU, Symbiont).
Motivação do projeto
[editar | editar código-fonte]De acordo com o Whitepaper do Hyperledger [9]:
As a fledgling technology, existing blockchain implementations have fallen short of meeting the multitude of requirements inherent in the complex world of business transactions. Scalability challenges, and the lack of support for confidential and private transactions, among other limitations, make its use unworkable for many business-critical applications. [...] To meet the varied demands of the modern marketplace, Hyperledger has been designed for a broad array of industry-focused use cases, thereby extending the work of the pioneers in the field by addressing the existing shortcomings.
Em outras palavras, baseado no cenário atual de requisitos da indústria, foi identificado que as implementações atuais de blockchain não são suficientes. Problemas de escalabilidade, falta de suporte para transações privadas e outras limitações são citados como os principais culpados. A proposta do Hyperledger é justamente suprir esses requisitos a partir de uma série de casos de uso. A ideia também consiste de estender trabalhos existentes com o objetivo de mitigar as suas limitações. Vale destacar que o Hyperledger tem o foco na indústria, mais especificamente nas relações B2B e B2C.[9]
Objetivos
[editar | editar código-fonte]O objetivo principal do Hyperledger é criar uma plataforma útil, fácil de usar e robusta onde qualquer individuo interessado em construir um software baseado em blockchain pode usa-lá como base. Por motivos práticos, o Hyperledger pode nunca alcançar esse ideal que cobre todos os casos possíveis, mas o objetivo do time é chegar o mais perto possível.[9]
De maneira mais tangível, o projeto também define objetivos mais específicos como: modularidade, extensibilidade, facilidade de uso, variedade de métodos criptográficos. Cada um desses objetivos contribui para a visão geral do Hyperledger. Por exemplo, a modularidade contribui para a interoperabilidade entre sistemas que, por sua vez, potencializa a flexibilidade do projeto, e aumenta a cobertura de casos. A extensibilidade também contribui para aumentar a cobertura de novos casos, já que funcionalidades novas podem ser adicionadas.[9]
A conceito da modularidade é importante porque incentiva o desenvolvimento externo. Uma empresa não relacionada pode desenvolver novos módulos e contribuir para a melhora de módulos existentes. Generalizando, deve ser possível construir uma blockchain que não usa nenhum componente central do Hyperledger, mas ainda assim, se encaixar no seu framework. A troca de componentes a fim de satisfazer requisitos específicos também é um conceito central do Hyperledger. Por exemplo, alguns casos pedem um algoritmo rápido de consenso que requer alguma confiança, enquanto outros casos podem pedir menos velocidade com mais confiança.[9]
A extensibilidade e modularidade se provam como requisito central do projeto porque é inviável prever todos os usos futuros do Hyperledger e de tecnologias blockchain de uma maneira geral. Facilitar as contribuições externas pode incentivar o envolvimento de pessoas que contribuirão e usarão o Hyperledger.[9]
Requisitos propostos
[editar | editar código-fonte]Transações privadas e contratos confidenciais
[editar | editar código-fonte]O Hyperledger pretende suportar uma variedade de ferramentas criptográficas que devem garantir a presença de confidencialidade e privacidade. Essas ferramentas não devem prejudicar as propriedades de privacidade. Alguns casos de uso requerem confidencialidade mais básicas e otimizadas para performance que não são adequadas para o uso financeiro. O objetivo é suportar tanto o caso otimizado para performance quanto os casos mais sofisticados que pedem algoritmos criptográficos mais complexos.[9]
Identidade e auditabilidade
[editar | editar código-fonte]Em adição as transações privadas e confidenciais, o conceito de identidade baseado numa infraestrutura de chave pública completa os algoritmos criptográficos provendo a confidenciabilidade do Hyperledger. Além da infraestrutura de chave pública, o Hyperledger também deve prover suporte a uma documentação compreensível e imutável sobre essas identidades - incluindo os requisitos de confidenciabilidade associada a elas. O objetivo da documentação é suportar os casos que envolvem troca de identidade e auditoria. É importante notar que sempre deverá ser respeitado o contrato inicial sobre a anonimidade da identidade. Por exemplo, se é previsto que certa entidade é totalmente anônima, a documentação não incluirá nada que quebre esse acordo.[9]
Interoperabilidade
[editar | editar código-fonte]Como o Hyperledger propõe a utilização de vários componentes independentes, a interoperabilidade é proposta para que a interação entre esses elementos ocorra apesar de possíveis implementações fundamentalmente diferentes. Por exemplo, é esperado que haja a cooperação entre mais de um tipo de blockchain. Dessa forma, é dito que existe interação quando informação é trocada e utilizada por esses componentes. Para prover esse caso de uso, é definido um protocolo que permite a comunicação entre 2 ou mais blockchains.[9]
Portabilidade
[editar | editar código-fonte]A portabilidade em um nível de infraestrutura garante que o projeto Hyperledger funcione da mesma maneira em ambientes computacionais heterogêneos. O valor da portabilidade é explicitado ao ressaltar que o projeto deverá rodar com base numa grande combinação de blockchains, falhar em prover a portabilidade fere um principio geral do Hyperledger. A portabilidade em um nível de arquitetura tem significado parecido com o de modularidade: significa abstrair as interfaces dos componentes centrais para que não haja acoplamento de ambientes. Por exemplo, o componente de contratos inteligentes pode ser movido para uma unidade diferente de produção sem que haja necessidade de mudança a esse componente. [9]
Arquitetura
[editar | editar código-fonte]A arquitetura geral do Hyperledger consiste de 4 categorias:
- Identidade (Identity)
- Política (Policy)
- Blockchain e contratos inteligentes (Smart Contracts)
De uma forma geral, essas categorias possuem responsabilidades específicas: a identidade é responsável por identificar as entidades participantes, a policy é responsável por regular o acesso e responsabilidades dessas entidades e o blockchain provê o serviço p2p que guarda o estado do sistema. Vale destacar que essas categorias são divisões lógicas do software e não necessariamente significam serviços fisicamente separados.[9]
Serviços de identidade
[editar | editar código-fonte]O requisito deste componente é identificar os componentes participantes da rede. Esses componentes incluem organizações participantes, validadores e transactors; Objetos contidos no livro razão e componentes mais tangíveis como: redes, servidores e ambiente de execuções.[9]
Serviços de política
[editar | editar código-fonte]Os serviços de política permitem o gerenciamento das políticas de acesso ao sistema. Algumas dessas políticas incluem o gerenciamento do registro de novos membros e o controle de suas entradas e saídas. Esse serviço também é responsável pelo níveis de privacidade e as políticas de confiabilidade, responsabilidade e consenso. [9]
Blockchain
[editar | editar código-fonte]Os serviços de blockchain consistem de 3 partes:
- Protocolo P2P.
- Livro razão distribuído.
- Gerenciador de Consenso.
O protocolo P2P funciona em cima da infraestrutura atual da internet e provê as capacidades de intercomunicação do sistema. O livro razão distribuído é a parte central do sistema e tem características parecidas com a de outros sistemas de criptomoedas. Por exemplo, o livro razão é responsável por manter e processar o estado do sistema e isso também é comum a bitcoin. Outras responsabilidades do livro razão distribuído sob o contexto do Hyperledger incluem: validar transações; calcular o hash de toda a base de dados de forma eficiente após cada bloco; minimizar a quantidade de dados necessários para uma participante operar.[9]
Por fim, o gerenciador de consenso provê uma abstração para que outras partes do sistema utilizem os algoritmos de consenso de forma transparente. A ideia central é facilitar o uso e ao mesmo tempo prover um sistema flexível o suficiente para que novos procedimentos de consenso também possam ser adicionados.[9]
Incubação de projetos
[editar | editar código-fonte]Como um dos objetivos do Hyperledger é agregar contribuições externas, é adotada uma política de incubação para o gerenciamento dessas contribuições. Unidades de trabalhos são chamados de Projetos, e esses Projetos possuem um ciclo de vida [10]:
- Proposta
- Incubação
- Maturidade
- Depreciado
- Fim de vida
Metodologias de gerenciamento similares são comuns a outros projetos open source, como o eclispe,[11] apache [12] e o OSGEO.[13] Até Julho de 2016, o Hyperledger possui dois projetos em fase de incubação, o Fabric e o Sawtooth.[14]
Sawtooth
O projeto Sawtooth, consiste na implementação de uma plataforma para construir e rodar livros razões distribuídos. O seu objetivo de modularidade é alinhado ao Hyperledger e é um dos motivos pela sua incubação. Diferente do Bitcoin, a proposta do Sawtooth é oferecer flexibilidade, desde transferências internacionais até aplicações de internet das coisas.[15]
Fabric
O fabric também é um projeto de tecnologias blockchain que oferece a possibilidade de encaixar várias implementações para certas funcionalidades. A versão de preview disponível em Julho de 2016 possui as seguintes features[16]:
- Blockchain permissiva com finalidade imediata
- Ambientes para a execução de contratos inteligentes
- Módulos de consenso PBFT, NOOPS e SIEVE
- Framework de eventos que suporta eventos predefinidos e customizados
- SDK Client e API REST Básicas e Ferramentas CLI
Nessa mesma versão, estão presentes alguns BUGs e limitações, como [16]:
- Alto tempo de resposta depois de testes de estresse.
- Não possui eventos para peers no SDK.
- Atributos no TCert não estão encriptados.
Referências
- ↑ «Linux Foundation Unites Industry Leaders to Advance Blockchain Technology» (em inglês). The Linux Foundation. 17 de dezembro de 2015. Consultado em 5 de fevereiro de 2019
- ↑ «About Hyperledger» (em inglês). Consultado em 5 de fevereiro de 2019
- ↑ «Linux Foundation's Hyperledger Project Announces 30 Founding Members and Code Proposals To Advance Blockchain Technology». 9 de fevereiro de 2016. Consultado em 17 de fevereiro de 2016. Arquivado do original em 25 de fevereiro de 2016
- ↑ «Open Source Blockchain Effort for the Enterprise Elects Leadership Positions and Gains New Investments». 29 de março de 2016. Consultado em 4 de julho de 2016. Arquivado do original em 13 de abril de 2016
- ↑ «Founder of the Apache Software Foundation Joins Linux Foundation to Lead Hyperledger Project». 19 de maio de 2016. Consultado em 4 de julho de 2016. Arquivado do original em 10 de junho de 2016
- ↑ «Incubating Project Proposal: Joint DAH/IBM proposal». Tamas Blummer, Christopher Ferris. 29 de março de 2016. Consultado em 21 de junho de 2016
- ↑ «hyperledger/fabric». GitHub. Consultado em 23 de junho de 2016
- ↑ «Sawtooth Lake Hyperledger Incubation Proposal». Mic Bowman, Richard Brown. 14 de abril de 2016. Consultado em 21 de junho de 2016
- ↑ a b c d e f g h i j k l m n o «Hyperledger Whitepaper». Consultado em 5 de julho de 2016
- ↑ «Hyperledger Project Lifecicle». Consultado em 6 de julho de 2016
- ↑ «Eclipse Development Process 2015». Consultado em 6 de julho de 2016
- ↑ «Apache Incubator». Consultado em 6 de julho de 2016
- ↑ «OSGEO Incubation Process». Consultado em 6 de julho de 2016. Arquivado do original em 17 de agosto de 2016
- ↑ «Hyperledger github». Consultado em 6 de julho de 2016
- ↑ «Sawtooth introduction». Consultado em 6 de julho de 2016
- ↑ a b «Fabric Releases». Consultado em 6 de julho de 2016