Visão geral dos ferramentas para teste e benchmark de blockchains

Visão geral dos ferramentas para teste e benchmark de blockchains

Atualmente, as soluções para teste e benchmark de blockchains estão direcionadas a um blockchain específico ou seus forks. No entanto, existem também algumas soluções mais gerais, que diferem em funcionalidades: algumas são projetos de código aberto, outras são fornecidas como SaaS, mas a maior parte são soluções internas criadas pela equipe de desenvolvimento do blockchain. No entanto, todas elas tratam de problemas semelhantes. Neste artigo, procurei abordar brevemente alguns produtos especificamente voltados para o teste de blockchains.

O funcionamento de uma rede blockchain é semelhante ao de um banco de dados distribuído, portanto, podem-se aplicar ferramentas e métodos análogos para teste. Para compreender melhor como testam bancos de dados distribuídos, confira uma boa seleção de recursos e artigos. daqui. Por exemplo, a latência é detalhada neste artigo, e para entender como bugs são encontrados nos algoritmos de replicação, recomendo conferir este o artigo.

Descreverei algumas soluções populares para teste e benchmark de blockchains. Fico feliz se nos comentários você puder mencionar outros produtos de software úteis para resolver as mesmas questões.

Visão geral dos ferramentas para teste e benchmark de blockchains

Começarei com uma ferramenta que, embora não tenha sido criada especificamente para blockchains, permite testar sua operação de forma eficaz, desde que haja uma rede já em funcionamento sobre a qual se possa experimentar. Um fator crucial na confiabilidade de um sistema distribuído é a capacidade de continuar operando em caso de problemas com servidores e rede. Isso pode incluir lag de rede, preenchimento do disco, indisponibilidade de serviços externos (DNS), falhas de hardware e centenas de outras causas. Para verificar a resiliência de quaisquer sistemas que operam de forma coordenada em um grande número de máquinas, pode-se usar Gremlin.. Ele utiliza uma abordagem extremamente eficaz chamada Engenharia do Caos.

Com o agente de rede próprio, a Gremlin cria vários tipos de problemas em uma quantidade necessária de máquinas: latências de rede, sobrecarga de qualquer recurso (CPU, disco, memória, rede), desativa protocolos específicos, etc. Para blockchains, a Gremlin pode ser utilizada em servidores de rede de teste, simulando problemas reais e observando o comportamento da rede. Com isso, desenvolvedores e administradores em um ambiente controlado podem observar o que acontecerá com o sistema em caso de falhas ou durante uma atualização de código. Para isso, a rede deve ser configurada e implantada previamente, assim como deve ser estabelecido o monitoramento das métricas necessárias.

A Gremlin é uma ferramenta conveniente para arquitetos, DevOps e profissionais de segurança, sendo uma solução abrangente para testar qualquer sistema distribuído pronto e em funcionamento, incluindo blockchains.

Visão geral dos ferramentas para teste e benchmark de blockchains

O Hyperledger Caliper é uma solução muito mais especializada Hyperledger Caliper. Atualmente, o Caliper suporta vários blockchains da família Hyperledger (Fabric, Sawtooth, Iroha, Burrow, Besu), além de Ethereum e da rede FISCO BCOS.

Com o Caliper, é possível definir a topologia da rede blockchain e os contratos a serem testados, além de descrever a configuração do nó. Os nós do blockchain são executados em contêineres Docker em uma única máquina. Em seguida, você pode selecionar as configurações de teste e obter um arquivo com o relatório dos resultados do teste após a execução. Você pode conferir a lista completa de métricas do Caliper e a abordagem para a benchmarkagem aqui Métricas de Performance do Blockchain Hyperledger, este é um ótimo artigo se você se interessa pelo tema da benchmarkagem de blockchains. Além disso, você pode configurar a coleta de métricas para o Prometheus/Grafana separadamente.

O Hyperledger Caliper é uma ferramenta voltada para desenvolvedores e arquitetos de sistemas, pois garante a repetibilidade dos testes e a automação de testes e benchmarkagem. É utilizado no desenvolvimento do núcleo dos blockchains: algoritmos de consenso, máquinas virtuais para processamento de contratos inteligentes, camada peer-to-peer e outros mecanismos sistêmicos.

Visão geral dos ferramentas para teste e benchmark de blockchains

MixBytes Tank — uma ferramenta que surgiu durante o desenvolvimento de algoritmos de consenso e finalização para redes baseadas em EOS e no teste de parachains com base no Parity Substrate (Polkadot). Em termos de funcionalidade, é semelhante ao Hyperledger Caliper, pois permite coletar métricas importantes de nós de qualquer sistema distribuído e de máquinas clientes nas quais os scripts de teste estão em execução.

O MixBytes Tank utiliza vários serviços em nuvem (Digital Ocean, Google Cloud Engine, entre outros), nos quais consegue iniciar múltiplos nós, realizar procedimentos de configuração preliminares, executar vários benchmarks em paralelo em diferentes máquinas, coletar as métricas necessárias e desativar automaticamente a rede.

O MixBytes Tank permite economizar recursos em servidores em nuvem, desativando automaticamente recursos desnecessários após a realização do teste. Outra característica distinta é o uso do pacote Molecule, que permite ao desenvolvedor testar a implantação do blockchain necessário localmente.

O MixBytes Tank permite detectar gargalos e erros em algoritmos nas fases iniciais, que ocorrem em redes reais com um grande número de servidores e clientes geograficamente distribuídos. O Tank ajudará você a entender o que acontecerá nos nós se os clientes enviarem transações com uma TPS específica em condições altamente repetíveis e com um número real de nós dispersos por diferentes continentes, se necessário.

Visão geral dos ferramentas para teste e benchmark de blockchains

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

O Whiteblock Genesis fornece sua própria capacidade para a realização de testes. Os desenvolvedores apenas precisam especificar os parâmetros dos testes, iniciá-los com a ajuda de uma API pronta e obter os resultados usando um painel de controle conveniente.

O Whiteblock Genesis permite configurar um teste bastante detalhado, que a plataforma realizará automaticamente a cada modificação significativa no código. Isso permitirá identificar erros nas fases iniciais e imediatamente avaliar o impacto das mudanças em parâmetros importantes da rede, como a velocidade de processamento de transações e os recursos consumidos pelos nós.

Madt

Mais um interessante jovem produto para testar sistemas distribuídos — madt. Ele é escrito em Python e permite criar a topologia de rede necessária e o número desejado de servidores e clientes com um simples script de configuração (exemplo). Depois disso, o serviço implanta a rede em vários contêineres docker e inicia uma interface web, na qual é possível observar as mensagens dos servidores e clientes da rede. O Madt pode ser utilizado para testar blockchains — no repositório do projeto há um teste de rede p2p baseado no protocolo Kademlia, onde as latências na entrega de dados para os nodes aumentam gradualmente e o status desses dados é verificado.

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

Outras soluções

Quase qualquer teste da parte sistêmica dos blockchains requer a execução de cenários preliminares, preparação de contas e condições para o teste (isso pode incluir testes de falhas de consenso que podem gerar numerosos forks de cadeias, execução de cenários de hard fork, alterações de parâmetros sistêmicos, etc.). Todas essas manipulações em diferentes blockchains são realizadas de forma diferente, por isso as equipes frequentemente preferem adaptar gradualmente os testes e o benchmarking do produto ao CI/CD interno e usar suas próprias práticas que se tornam progressivamente mais complexas com o desenvolvimento das funcionalidades do blockchain.

No entanto, o uso de soluções prontas pode reduzir significativamente o tempo de teste para essas equipes, portanto, acredito que esse software será amplamente desenvolvido nos próximos anos.

Conclusão

Ao encerrar essa breve revisão, listo algumas características importantes das ferramentas para testar blockchains:

  • A capacidade de implantar automaticamente uma rede blockchain em condições repetíveis. Esse fator é importante ao desenvolver as partes sistêmicas dos blockchains: algoritmos de consenso, finalidades, contratos inteligentes sistêmicos.
  • Custo de propriedade do sistema, recursos consumidos e conveniência para uso contínuo. Esse fator garante ao projeto testes de alta qualidade por um preço baixo.
  • Flexibilidade e simplicidade na configuração dos testes. Esse fator aumenta as chances de identificar problemas no sistema — há menor probabilidade de deixar algo importante passar.
  • Personalização para tipos específicos de blockchains. O desenvolvimento de uma solução baseada em uma já existente pode melhorar significativamente a qualidade e reduzir o tempo de trabalho.
  • A conveniência e a acessibilidade dos resultados obtidos e seu tipo (relatórios, métricas, gráficos, logs, etc.). Isso é absolutamente necessário se você deseja monitorar a história de desenvolvimento do produto ou se precisa de uma análise aprofundada do comportamento da rede blockchain.

Boa sorte nos testes e que suas blockchains sejam rápidas e resistentes a falhas!

Fonte: habr.com

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster