BT

Disseminando conhecimento e inovação em desenvolvimento de software corporativo.

Contribuir

Tópicos

Escolha a região

Início Artigos Entendendo o básico sobre Blockchain e alguns casos de uso

Entendendo o básico sobre Blockchain e alguns casos de uso

Favoritos

Pontos Principais

  • Os blockchains podem ser públicos ou privados, com permissão ou não confiável;
  • O IBM Hyperledger e o R3 Corda são dois dos blockchains empresariais mais utilizados;
  • A implantação de soluções reais ainda é limitada e irregular;
  • O espaço continua a evoluir e está em seus estágios iniciais;
  • A adoção pelas empresas ainda é cautelosa.

Navegar pelo espaço do blockchain pode ser muito desafiador.

Um grande número de artigos foi escrito sobre o assunto, muitos dos quais são preenchidos com uma grande massa de ar quente e conteúdos publicitários, bem como conteúdos técnicos especializados e outros jargões.

Neste artigo, será explicado a diferença entre os dois principais ramos de projetos blockchain (públicos e privados), bem como alguns termos técnicos fundamentais relacionados com a área.

Isso permitirá abordar uma questão fundamental na discussão atual de blockchains e soluções relacionadas: Quais são os casos de uso válidos para usar um blockchain público e sem confiança versus utilizar um blockchain privado e distribuído em razão a um banco de dados tradicional?

Alguns dos termos mais importantes usados no espaço do blockchain são:

  • Terceiros confiáveis - Um sistema em que determinados fatos (por exemplo, a identidade dos participantes) não podem ser verificados, exceto por se referir a uma autoridade privilegiada (geralmente centralizada).
  • Não confiável - Um sistema que não depende de terceiros confiáveis ​​para qualquer aspecto de sua operação, incluindo confirmação de transação ou verificação de identidade.
  • Prova de trabalho (POW-Proof of work) - Encontrar a solução para um quebra-cabeça matemático (normalmente um problema de hashing) que não possui algoritmo de atalho e, portanto, deve ser resolvido por força computacional bruta.
  • Saída de transação não utilizada (UTXO-Unspent transaction output) - Em alguns blockchains (por exemplo, Bitcoin), as transações consomem entradas e deixam algumas (as saídas) _unspent_(não gasto). Essas saídas não gastas estão disponíveis para se tornarem entradas em transações futuras.
  • Modelo de máquina virtual - Alguns blockchains (notavelmente o Ethereum) têm um modelo abstrato de como o estado geral do sistema é representado e como esse estado é atualizado. Esse modelo geralmente pode ser descrito por um modelo formal de uma máquina de estado virtual, por exemplo, a Máquina Virtual Ethereum (EVM).
  • Contrato inteligente - Um programa pequeno, orientado a eventos, que pode ser implantado em um blockchain que suporta a execução do programa. Uma vez implantado, o programa continuará a executar, usando transações de blockchain como entradas e poderá executar ações que farão com que transações adicionais sejam executadas. O código do programa é protegido criptograficamente.
  • Turing-complete - Um termo de Ciência da Computação que pode ser lido como "linguagem de programação totalmente capaz". Todas as linguagens principais, como Java, Javascript, Python, Ruby, Go, etc, são Turing-completas. Por razões técnicas, algumas blockchains podem optar por não disponibilizar o poder total das linguagens completas de Turing aos redatores de contratos inteligentes.

Há muito outros detalhes sobre cada um desses termos, mas alguns dos aspectos mais importantes deles incluem o seguinte:

  1. A maioria dos sistemas de transação é totalmente ou parcialmente dependente de algum terceiro confiável. A falta de confiança, por outro lado, é uma propriedade bastante notável, mas não é obtida a baixo custo - considerável complexidade e esforço extra devem ser gastos para fazer um sistema se comportar sem confiança. A chave para isso é o algoritmo POW para o consenso usado por muitos blockchains.
  2. Uma vez que uma solução para um problema de POW tenha sido encontrada (essencialmente por tentativa e erro em grande escala), a correção da solução pode ser demonstrada por qualquer participante imediatamente. Bons problemas de POW têm propriedades estatísticas que permitem a qualquer observador estimar com precisão quanto tempo de computação foi gasto para tropeçar em uma solução. Isso os torna adequados para uso como um mecanismo de consenso distribuído em blockchains públicos (por exemplo, Bitcoin).
  3. O modelo UTXO fornece uma rota simples para garantir a integridade das transações e impedir que os mesmos Bitcoins sejam usados ​​duas vezes em duas transações separadas (o problema _double-spending_). Isso é garantir que qualquer entrada para qualquer transação deve aparecer na coleção de saídas - o banco de dados UTXO.
  4. Por outro lado, o modelo de máquina virtual (notavelmente implementado pela Ethereum) oferece uma extensão significativa - a capacidade de armazenar estados arbitrários e executar programas simples dentro da rede de maneira confiável e totalmente descentralizada.

Com essas principais definições (e algumas consequências) esclarecidas, pode-se agora dar uma olhada em algumas das principais tecnologias baseadas em blockchain em uso no mundo de hoje.

Bitcoin

A criptomoeda original, que usa o modelo de saída de transação não usada (UTXO) para o registro. Ele usa um algoritmo POW simples para mineração, com base na adivinhação de uma cadeia aleatória que, quando combinada com o último bloco de transação, faz com que o hash SHA-256 da composição seja numericamente menor do que um pequeno valor limite.

O participante que adivinhou com sucesso a resposta disse ter "extraído um bloco" e as transações contidas no bloco são adicionadas ao registro.

Isto permite um método muito simples de determinar o consenso - os participantes simplesmente concordam que a cadeia mais longa deve ser considerada como a base para a mineração do próximo bloco de transação.

O Bitcoin não foi projetado para acomodar contratos inteligentes. Como resultado, uma funcionalidade extremamente limitada está disponível, principalmente através do uso inovador de canais secundários que existem dentro do protocolo. A funcionalidade resultante não é de forma alguma Turing-completa e, em vez disso, a maioria das análises do Bitcoin simplesmente a ignora.

O sistema resultante é, portanto, puramente um registro criptográfico seguro.

Não existe semântica de identidade além do uso de assinaturas criptográficas para verificar a origem das transações, e é completamente sem confiança.

Ethereum

Este registro se baseia em algumas das ideias do Bitcoin, mas modela o estado de uma única máquina virtual global em vez de usar o modelo UTXO. A principal inovação é a adição de uma capacidade de contrato inteligente Turing-complete. Essa é a máquina virtual Ethereum (EVM), uma VM criada especificamente para uso no contexto de um registro distribuído com contratos inteligentes.

No Ethereum, o estado do programa é privado e pertence a endereços de contratos individuais e é alterado por uma série de instruções de bytecode na EVM, que são o conteúdo de contratos inteligentes.

O estado global é então derivado pela agregação do estado do programa de cada endereço do contrato.

Todos os nós completos na rede Ethereum seguem as regras do modelo. Eles podem calcular o estado do sistema para um estado de qualquer endereço de contrato em sua máquina desde que usem as mesmas transações (que constituem os dados de entrada no modelo Ethereum), elas chegarão ao mesmo resultado.

Como o Ethereum usa um algoritmo de consenso global e tem um conceito de bloco mais recente, a taxa de processamento de transação geral (isto é, a velocidade efetiva de clock) da máquina virtual Ethereum é limitada pela taxa de produção do bloco. Adicionar mais hardware e capacidade de computação à rede Ethereum não a torna mais rápida ou mais poderosa, apenas mais à prova de violação.

O uso de contratos inteligentes Turing-completos permite que funcionalidades adicionais sejam incluídas na parte superior da rede sem que todos os participantes precisem conhecê-las. Isso permite, por exemplo, que a rede Ethereum emita tokens de software mantidos como estado adicional na máquina virtual Ethereum. Isso configura a base das chamadas, Ofertas Iniciais de Moeda (ICOs).

A EVM é superficialmente semelhante à JVM e ambientes semelhantes, mas faz projetos diferentes em algumas áreas importantes. Em particular, o design do bytecode da EVM torna a análise estática do código compilado muito mais difícil do que para as alternativas estabelecidas. Este não é um ponto de venda para um ambiente de execução que requer um alto grau de transparência e verificabilidade.

O ambiente de uma EVM de baixo nível também não é um ambiente de programação particularmente humano. Como resultado, várias linguagens de alto nível foram criadas para compilar os bytecodes da EVM. Destes, o mais conhecido é o Solidity.

Inspirada em linguagens de programação de mainstream, como Javascript e Java, a linguagem Solidity também incorpora novos recursos para interagir com o blockchain Ethereum.

Em alguns aspectos, a Ethereum é vítima de seu próprio sucesso. Seu surgimento como plataforma de escolha para as ICOs levou a um alto preço para a ETH (o token da Ethereum) no início de 2018. O montante dessa criptomoeda mantida pela própria equipe da Ethereum levou a uma situação em que muitos dos principais interesses na situação atual, e em querer realizar seus lucros de papel.

Corda

O R3 Corda usa o modelo UTXO (como o Bitcoin), mas também inclui contratos inteligentes Turing-completos como parte do projeto. Esses contratos são representados por bytecode da JVM, com garantias adicionais de determinismo que restringem a semântica do contrato.

A abordagem não usa um único bloqueio global (altura do bloco) para controlar o avanço do estado do contrato, mas permite que as transações não conflitantes prossigam em paralelo. Isso efetivamente refina a trava, ao custo de exigir uma noção mais complexa e sutil do tempo e do relógio. No modelo de Corda - a simples regra de "ganho de cadeia mais longo" não é mais suficiente como um algoritmo de consenso.

Os participantes são conhecidos e confiáveis, pois a verificação de identidade de terceiros é uma parte natural da arquitetura Corda.

Como um efeito colateral do desejo de remover o bloqueio de contrato global, o Corda inclui semântica de saída/entrada para separar as transações da cadeia principal, e evitar que todas as transações fiquem entrelaçadas com o tempo. Isso é possível porque a arquitetura depende fortemente do modelo de terceiros confiável.

Como resultado, a autoridade de certos participantes de retirar itens do contrato (o equivalente a moedas em moedas criptografadas) e substituí-los por equivalentes recém-criados que não têm histórico de transações pode ser garantida pela identidade autoridades.

Os criadores do Corda não vêem isso como sendo semelhante a uma criptomoeda.

Em vez disso, eles consideram a tecnologia como a base da infraestrutura compartilhada em todo o mercado, e não no nível de uma empresa individual.

Isso posiciona o Corda como um blockchain corporativo destinado ao uso por organizações que podem se beneficiar de uma infraestrutura comum e uma visão compartilhada do estado e do mundo, em vez de manter versões separadas de registros, o que inevitavelmente leva a problemas de reconciliação.

HyperLedger

O projeto HyperLedger, iniciado pela IBM, é outra das soluções líderes em blockchain corporativo.

O HyperLedger Fabric é uma implementação de estrutura blockchain, e um dos projetos HyperLedger hospedados pela Linux Foundation.

Os principais objetivos da IBM para o projeto incluem confidencialidade, resiliência, flexibilidade e escalabilidade.

Como Corda, o HyperLedger usa uma arquitetura autorizada.

Ele implementa um algoritmo determinístico Prático Tolerante de Faul Bizantino (PBFT), que garante que, uma vez recebida uma notificação de transação concluída, ela seja genuinamente feita.

A IBM investiu na integração sólida do Docker, incluindo testes em contêineres.

Contratos inteligentes para o HyperLedger podem ser escritos em Java, com um SDK disponível (contratos Go também são possíveis).

O HyperLedger separa os nós por funções, que incluem pares completos, nós de autoridade de certificação (necessários para a permissão) e ordenadores que agrupam transações em blocos.

O estado do blockchain do HyperLedger é modelado como um armazenamento de valor da chave com versão (KVS), onde as chaves são nomes (cadeias) e os valores são blobs arbitrários.

Essa é uma interface de nível muito baixo, acima da qual o Hyperledger fornece uma camada chamada Ledger, que fornece um histórico verificável de todas as mudanças de estado bem-sucedidas.

O código e a arquitetura do Hyperledger ainda estão evoluindo, mesmo que rapidamente, mas os testes de produção reais estão começando a aparecer, e está surgindo ao lado do Corda como uma das soluções mais prováveis de serem usadas pelas empresas.

Casos de uso

Os casos de uso de blockchains ainda estão sendo muito debatidos. Existe o exemplo óbvio de moedas digitais resistentes à censura. No entanto, a volatilidade e a fragmentação observadas no mercado de criptomoedas em 2018 parecem sugerir que a real aplicabilidade de moedas digitais sem confiança é limitada.

Do ponto de vista corporativo, está se tornando claro que eles também podem ser usados ​​para criar sistemas ou redes que são implantados como uma construção compartilhada entre várias entidades que não necessariamente confiam umas nas outras, mas que desejam compartilhar dados e manter uma forma de consenso sobre preocupações que todas as partes possuem.

Esses casos de uso, em que uma autoridade centralizada é inaceitável para os participantes ou muito dispendiosa para configurar, ainda estão surgindo.

Isso ocorre apesar do tempo, esforço e capital de risco implantados na ampla gama de projetos blockchain criados até o momento.

À medida que mais projetos chegam ao mercado e também a medida que avançamos em 2019, resta ver se a promessa de blockchain equivalerá ao grande impacto que seus defensores já prometem há algum tempo.

Sobre o autor

Ben Evans é um dos fundadores da jClarity, uma empresa de otimização de desempenho da JVM. Ele é um organizador do LJC (London's JUG) e membro do Comitê Executivo do JCP, ajudando a definir padrões para o ecossistema Java. Ben é um campeão de Java: 3 vezes palestrante do JavaOne Rockstar; autor de "The Well-Grounded Java Developer", a nova edição de "Java in a Nutshell" e "Otimizando Java". Ele é um orador regular sobre a plataforma Java, desempenho, arquitetura, concorrência, startups e tópicos relacionados. Ben está às vezes disponível para palestras, ensino, redação e consultoria - por favor, entre em contato para maiores detalhes.

Avalie esse artigo

Relevância
Estilo/Redação

Conteúdo educacional

BT