Uma breve visão geral das ferramentas de teste e benchmarking de Blockchain

Uma breve visão geral das ferramentas de teste e benchmarking de Blockchain

Hoje, as soluções para testar e comparar blockchains são adaptadas a um blockchain específico ou a seus forks. Mas também existem várias soluções mais gerais que diferem em funcionalidade: algumas delas são projetos de código aberto, outras são fornecidas como SaaS, mas a maioria são soluções internas criadas pela equipe de desenvolvimento de blockchain. No entanto, todos eles resolvem problemas semelhantes. Neste artigo, tentei revisar brevemente vários produtos projetados especificamente para testar blockchains.

A operação de uma rede blockchain se assemelha à operação de um banco de dados distribuído, portanto, ferramentas e métodos semelhantes podem ser usados ​​para testes. Para entender melhor como os bancos de dados distribuídos são testados, dê uma olhada em uma boa seleção de recursos e artigos por isso. Por exemplo, a latência é classificada em partes neste статье, e para entender como eles procuram bugs em algoritmos de replicação, recomendo a leitura deste artigo.

Descreverei várias soluções populares para testar e comparar blockchains. Eu ficaria feliz se nos comentários você descrevesse outros produtos de software úteis para resolver os mesmos problemas.

Uma breve visão geral das ferramentas de teste e benchmarking de Blockchain

Começarei com uma ferramenta que, embora não tenha sido criada especificamente para blockchains, permite testar efetivamente seu funcionamento, desde que já exista uma rede em execução na qual você possa experimentar. O fator mais importante na confiabilidade de um sistema distribuído é a capacidade de continuar trabalhando em caso de problemas nos servidores e na rede. Podem ser atrasos na rede, disco cheio, indisponibilidade de serviços externos (DNS), falhas de hardware e centenas de outros motivos. Para verificar a estabilidade de qualquer sistema operando em conjunto em um grande número de máquinas de sistemas, você pode usar Gremlin. Ele usa uma abordagem extremamente eficaz chamada Engenharia do Caos.

Usando seu próprio agente de rede, o Gremlin cria muitos tipos diferentes de problemas no número necessário de máquinas: atrasos na rede, sobrecarga de qualquer recurso (CPU, disco, memória, rede), desabilita protocolos individuais, etc. Para blockchains, o Gremlin pode ser usado em servidores testnet, emulando problemas da vida real e observando o comportamento da rede. Com ele, desenvolvedores e administradores podem observar em um ambiente controlado o que acontecerá se o sistema travar ou quando o código for atualizado. Neste caso, a rede deve ser configurada e implantada antecipadamente, bem como configurada para coletar as métricas necessárias.

Gremlin é uma ferramenta conveniente para arquitetos, devops e especialistas em segurança e uma solução universal para testar qualquer sistema distribuído pronto e em execução, incluindo blockchains.

Uma breve visão geral das ferramentas de teste e benchmarking de Blockchain

Hyperledger Caliper é uma solução muito mais especializada Calibre do Hyperledger. No momento, o Caliper suporta vários blockchains ao mesmo tempo - representantes da família Hyperledger (Fabric, Sawtooth, Iroha, Burrow, Besu), bem como Ethereum e a rede FISCO BCOS.

Usando o Caliper, você pode definir a topologia da rede blockchain e contratos para teste, bem como descrever a configuração do nó. Os nós Blockchain são gerados em contêineres docker em uma máquina. Em seguida, você pode selecionar o necessário configurações de teste e receba um arquivo com um relatório sobre os resultados do teste após o lançamento. Uma lista completa de métricas do Caliper e abordagem de benchmarking pode ser encontrada aqui Métricas de desempenho do Hyperledger Blockchain, este é um ótimo artigo se você estiver interessado no tópico de benchmarking de blockchain. Você também pode configurar a coleta de métricas em um Prometheus/Grafana separado.

O Hyperledger Caliper é uma ferramenta voltada para desenvolvedores e arquitetos de sistemas, pois fornece repetibilidade de testes e automação de testes e benchmarking. É usado no desenvolvimento do núcleo dos blockchains: algoritmos de consenso, uma máquina virtual para processamento de contratos inteligentes, uma camada ponto a ponto e outros mecanismos do sistema.

Uma breve visão geral das ferramentas de teste e benchmarking de Blockchain

Tanque MixBytes é uma ferramenta que surgiu no processo de desenvolvimento de algoritmos de consenso e finalidade para redes baseadas em EOS e teste de parachains baseados em Substrato de Paridade (Polkadot). Em termos de funcionalidade, está próximo do Hyperledger Caliper, pois permite coletar métricas importantes de nós de qualquer sistema distribuído e máquinas clientes nas quais scripts de teste estão sendo executados.

MixBytes Tank utiliza vários serviços em nuvem (Digital Ocean, Google Cloud Engine, etc.), nos quais pode lançar vários nós, realizar procedimentos de configuração preliminar, executar vários benchmarks em paralelo em diferentes máquinas, coletar as métricas necessárias e desligar automaticamente o rede.

MixBytes Tank permite que você economize dinheiro em servidores em nuvem, minimizando automaticamente recursos desnecessários após um teste. Outro diferencial é a utilização do pacote Molecule, que permite ao desenvolvedor testar localmente a implantação do blockchain desejado.

MixBytes Tank permite detectar precocemente gargalos e erros em algoritmos que surgem em redes reais com um grande número de servidores e clientes distribuídos geograficamente. O tanque irá ajudá-lo a entender o que acontecerá nos nós se os clientes enviarem transações com um determinado tps em condições altamente repetíveis e com um número real de nós espalhados por diferentes continentes, se necessário.

Uma breve visão geral das ferramentas de teste e benchmarking de Blockchain

Whiteblock Genesis é uma plataforma de teste para blockchains baseados em Ethereum. Esta ferramenta possui uma funcionalidade bastante ampla: permite iniciar uma rede, criar o número necessário de contas nela, aumentar o número necessário de clientes, configurar a topologia da rede, especificar os parâmetros de largura de banda e perda de pacotes e executar um teste.

Whiteblock Genesis fornece suas próprias instalações de teste. Os desenvolvedores só precisam especificar parâmetros de teste, executá-los usando uma API pronta e obter resultados usando um painel conveniente.

Whiteblock Genesis permite configurar um teste bastante detalhado que a plataforma conduzirá automaticamente para cada alteração significativa no código. Isso permitirá que você detecte erros em um estágio inicial e avalie imediatamente o impacto das alterações em parâmetros importantes da rede, como velocidade de transação e recursos consumidos pelos nós.

louco

Outro produto jovem e interessante para testar sistemas distribuídos é louco. Ele é escrito em Python e permite criar a topologia de rede necessária e o número necessário de servidores e clientes usando um script de configuração simples (exemplo). Depois disso, o serviço implanta a rede em diversos containers Docker e abre uma interface web na qual é possível observar mensagens de servidores e clientes da rede. Madt pode ser usado para testar blockchains - o repositório do projeto possui um teste de rede p2p baseado no protocolo Kademlia, no qual os atrasos na entrega de dados aos nós são aumentados gradativamente e o status desses dados é verificado.

Madt apareceu recentemente, mas dada a sua arquitetura muito flexível, pode evoluir para um produto funcional.

Outras soluções

Quase todos os testes da parte do sistema de blockchains requerem a execução de scripts preliminares, a preparação de contas e condições para o teste (isso pode ser testar erros de consenso que podem gerar vários forks de cadeias, testar cenários de hard fork, alterar parâmetros do sistema, etc.). Todas essas manipulações são realizadas de forma diferente em diferentes blockchains, por isso é mais fácil para as equipes adaptar gradualmente os testes e benchmarking de produtos ao CI/CD interno e usar seus próprios desenvolvimentos, que gradualmente se tornam mais complexos à medida que a funcionalidade do blockchain se desenvolve.

No entanto, o uso de soluções prontas pode reduzir bastante o tempo de teste dessas equipes, por isso acredito que este software será desenvolvido ativamente nos próximos anos.

Conclusão

Para concluir esta breve revisão, listarei várias características importantes das ferramentas de teste de blockchain:

  • A capacidade de implantar automaticamente uma rede blockchain sob condições repetíveis. Este fator é importante no desenvolvimento de partes do sistema de blockchains: algoritmos de consenso, finalidade, contratos inteligentes do sistema.
  • O custo de propriedade do sistema, os recursos consumidos e a comodidade para uso constante. Esse fator proporciona ao projeto testes de alta qualidade por pouco dinheiro.
  • Flexibilidade e simplicidade de configuração de teste. Esse fator aumenta as chances de identificar problemas no sistema – há menos chances de perder algo importante.
  • Personalização para tipos específicos de blockchains. Desenvolver uma solução baseada em uma já existente pode melhorar significativamente a qualidade e reduzir os custos de tempo.
  • Comodidade e acessibilidade dos resultados obtidos e sua tipologia (relatórios, métricas, gráficos, logs, etc.). Isso é absolutamente necessário se você quiser acompanhar o histórico de desenvolvimento de um produto ou se precisar de análises profundas do comportamento da rede blockchain.

Boa sorte com seus testes e que seus blockchains sejam rápidos e tolerantes a falhas!

Fonte: habr.com

Adicionar um comentário