Hyperledger Sawtooth: Conceitos e Aplicações

On 14 de outubro de 2019 by Charles Garrocho
Imagem disponível em https://github.com/hyperledger/sawtooth-core

Blockchain é um tipo de DLT (Distributed Ledger Technologies), no qual é livro-razão (ledger) imutável, mantido por nós (peers) em uma rede distribuída. Hyperledger Sawtooth é uma das diversas DLTs existentes sendo desenvolvida pela Intel e mantida pela Linux Foundation.

Sawtooth

Hyperledger sawtooth fornece mecanismos prontos. Os desenvolvedores não precisam escrever todo o software blockchain do zero. A estrutura deste projeto é altamente focada na agilidade. Basicamente, a própria estrutura fornece funcionalidades básicas como a comunicação entre nós em uma rede, armazenando de dados no blockchain e a arquitetura para conectar contratos inteligentes e algoritmos de consenso. Sua estrutura é modular e pode ser facilmente alterado por dentro e por fora.

Conceitos e Aspectos Importantes do Hyperledger Sawtooth

Com permissão / sem permissão: sawtooth suporta redes blockchain com e sem permissão. O Sawtooth possui uma abordagem flexível usando funções e permissões.

Algoritmos de consenso: sawtooth usa a Prova de tempo decorrido (PoET), com base nas Extensões de guarda de software da Intel (SGX), para eleger líderes para cortar blocos com base em tempos de espera aleatórios, uma abordagem mais eficiente em termos de energia do que a prova de trabalho tradicional, que permite o dimensionamento para redes muito grandes.

Linguagem de contrato inteligente: sawtooth suporta contratos baseados em Go, JavaScript, Java, Python, Rust e Ethereum Solidity.

Privacidade: no sawtooth, os pares têm acesso a todos os dados da transação.

Fluxo de transação: sawtooth suporta o fluxo tradicional (Order-Execute-Commit) de blockchain.

Execução de transação paralela: A maioria das blockchains exige execução de transação serial para garantir pedidos consistentes em cada nó da rede. O Sawtooth inclui um agendador paralelo avançado que divide as transações em fluxos paralelos. Com base nos locais no estado que são acessados ​​por uma transação, o Sawtooth isola a execução das transações, mantendo as alterações contextuais.

Compatibilidade de contrato do Ethereum com Seth: O projeto de integração Sawtooth-Ethereum, Seth, estende a interoperabilidade da plataforma Sawtooth ao Ethereum. Os contratos inteligentes do EVM (Ethereum Virtual Machine) podem ser implantados no Sawtooth usando a família de transações Seth.

Arquitetura do Hyperledger Sawtooth

O diagrama a seguir mostra uma visão de alto nível da arquitetura sawtooth.

Imagem disponível em https://sawtooth.hyperledger.org/docs/core/releases/1.1/architecture.html

Clientes: sawtooth possui o seguinte padrão de cliente / servidor assíncrono:

  • Os clientes se conectam ao servidor e enviam solicitações.
  • Para cada solicitação, o servidor responde com 0 ou mais respostas.
  • Os clientes podem enviar várias solicitações e não precisam esperar por uma resposta do servidor.
  • Os servidores também podem enviar várias respostas e não precisam esperar novas solicitações.

Rest API: sawtooth fornece uma API RESTish pragmática para que os clientes interajam com um validador usando padrões JSON / HTTP comuns. É um processo separado que permite o envio de transações e a leitura de blocos com uma interface neutra em linguagem comum. A API REST trata principalmente o validador como uma caixa preta para enviar transações e buscar resultados. É amplamente documentado usando a especificação OpenAPI. Ele atua como uma única fonte de verdade que documenta todos os aspectos da API. É legível por máquinas e seres humanos.

Processadores de transação: manipulam a lógica de negócios e têm autoridade para permitir ou recusar a adição de transações ao estado. Quando um cliente interage com a rede enviando uma transação, eles validam as transações, aplicam as alterações e as adicionam no próximo bloco. Os nós do validador garantem se a assinatura de uma transação é válida. Também permite adicionar lógica adicional no processador de transações para verificar requisitos mais específicos. Para que um processador de transações processe transações, os manipuladores de transações precisam ser adicionados. Um processador de transações é composto por dois componentes de nível superior, como:

  • Classe de processador: O Software Development Kit fornece uma classe de processador de uso geral.
  • Classe de manipulador: Depende do aplicativo. Ele contém lógica de negócios para um conjunto específico de transações. Como o processador de transações é um processo demorado, requer um ponto de entrada. No ponto de entrada, a classe do processador de transações é fornecida com o endereço para conectar-se ao validador e à classe do manipulador.

Mecanismo de consenso: A API de consenso do sawtooth foi totalmente redesenhada. Foi movido para um processo separado denominado ‘mecanismo de consenso’. É uma interface que inclui o recurso de independência de linguagem para algoritmos de consenso. Os mecanismos de consenso permitem mais opções de consenso para o sawtooth. As ferramentas de implantação de rede foram atualizadas. O mecanismo de consenso opera em seus próprios processos separados, como API REST e processadores de transações. Existem três processadores que são executados neste componente:

  • Consensus.BlockPublisher: ele é equipado apenas com acesso somente leitura e ajuda a estender a cadeia criando blocos candidatos. As três ações que são executadas são inicialização, verificação e finalização.
  • Consensus.BlockVerifier: fornece funções de verificação de bloco ao Validador de Bloco. Ajuda a verificar se o bloco candidato foi publicado seguindo as regras de consenso.
  • Consensus.ForkResolver: ajuda na seleção do próximo bloco que pode ser o cabeçote da corrente.

Validador: no Hyperledger Sawtooth, blocos e lotes são validados de maneira semelhante por nós autorizados. O processo de validação de bloco verifica as permissões de transação na cadeia para verificar a entidade que tem permissão para emitir blocos e lotes. Depois disso, as regras de validação de bloco na cadeia adicionadas através da definição de propostas são aplicadas ao bloco. . A camada de rede é responsável pela comunicação entre os validadores de uma rede Sawtooth. Ele realiza atividades como interconectar API REST, processadores de transações e clientes.

Ele desempenha as principais funções:

-descobrir pares na rede;

– manipular transações;

– gerenciar blocos e trabalhar no suporte aos mecanismos de consenso.

O Sawtooth suporta agendamento serial e paralelo de transações. O manuseio e a execução de transações no Sawtooth lida com eficiência e corretamente transações que modificam os mesmos endereços de estado e também transações dentro do mesmo bloco. Sawtooth não tem restrições de nível de bloco.

Isso ajuda a melhorar o desempenho das transações e evita gastos duplos, mas ainda permite que várias transações que alteram os mesmos valores de estado apareçam em um único bloco.

O processo validador sawtooth possui dois componentes principais, como:

  • Controlador de corrente: mantém um ponteiro para o último bloco da corrente atual. Determina se um cabeçote de corrente deve ser atualizado. Ele cria um planejador para calcular o novo estado do bloco que está sendo publicado com um hash Merkle. O hash do Merkle é comparado à raiz do estado do cabeçalho do bloco. Se eles corresponderem, o bloco é considerado válido.
  • Gerente e editor de blocos: é responsável pela criação de novos blocos candidatos. Somente transações válidas são adicionadas ao próximo bloco candidato.

Exemplos de Aplicação no Mundo Real

XO: demonstra como construir transações básicas, jogando o jogo da velha. A família de transações XO inclui transações de criação e recebimento, com um comando xo que permite que dois participantes joguem o jogo. Para obter mais informações, consulte Introdução à família de transações XO.

Cadeia de suprimentos Sawtooth: ajuda a rastrear a proveniência e outras informações contextuais de qualquer ativo. A cadeia de suprimentos fornece um aplicativo de exemplo completo com um processador de transações, API REST personalizada e aplicativo da web. Esse aplicativo também demonstra uma solução segura e descentralizada para assinatura de transações no navegador e ilustra como sincronizar o estado do blockchain com um banco de dados local para consultas complexas. Para obter mais informações, consulte o Repositório da cadeia de suprimentos sawtooth no GitHub.

Mercado Sawtooth: permite que os usuários troquem quantidades específicas de ativos personalizados com outros usuários na blockchain. Este aplicativo contém vários componentes que, juntamente com um validador do Sawtooth, executam uma blockchain do Sawtooth e fornecem uma API RESTful simples para interagir com ele. Para obter mais informações, consulte o Repositório do mercado sawtooth no GitHub.

UTXO Privado Sawtooth: Demonstra como os ativos podem ser criados e negociados. Ele mostra como usar o SGX para permitir que os ativos sejam transferidos do razão e negociados em particular, onde apenas as partes negociantes conhecem os detalhes da transação. Para obter mais informações, consulte o Repositório sawtooth-private-utxo no GitHub.

Summary
Review Date
Reviewed Item
Sawtooth

Deixe um comentário

O seu endereço de e-mail não será publicado.