Uma breve visão geral das ferramentas para testar e comparar as blockchains


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


A operação da rede blockchain se assemelha ao trabalho de um banco de dados distribuído, portanto, para teste, você pode aplicar ferramentas e métodos semelhantes. Para entender melhor como os bancos de dados distribuídos são testados, consulte uma boa seleção de recursos e artigos aqui . Por exemplo, a latência é dividida neste artigo e, para entender como os erros são pesquisados ​​nos algoritmos de replicação, recomendo que você leia este artigo .


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



Começarei com uma ferramenta, embora ela não tenha sido criada especificamente para blockchains, mas isso permite que você teste efetivamente o trabalho deles, 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 com os servidores e a rede. Pode haver atrasos na rede, disco cheio, inacessibilidade de serviços externos (DNS), falhas de hardware e centenas de outros motivos. Para verificar a estabilidade de qualquer sistema que esteja trabalhando em conjunto em um grande número de sistemas de máquinas, você pode usar o Gremlin . Ele usa uma abordagem extremamente eficaz chamada Chaos Engineering.


Usando seu próprio agente de rede, o Gremlin cria muitos tipos diferentes de problemas no número certo de máquinas: defasagens na rede, sobrecarregando qualquer recurso (CPU, disco, memória, rede), desabilita protocolos individuais, etc. Para blockchains, o Gremlin pode ser usado em servidores de rede de teste, emulando problemas reais e observando o comportamento da rede. Com isso, desenvolvedores e administradores em um ambiente controlado podem observar o que acontece no caso de uma falha do sistema ou na atualização do código. Nesse caso, a rede deve ser pré-configurada e implantada, bem como configurada para coletar as métricas necessárias.


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



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


Usando o Caliper, você pode especificar a topologia da rede blockchain e os contratos para teste, além de descrever a configuração do nó. Nós Blockchain sobem em contêineres de docker na mesma máquina. Em seguida, você pode selecionar as configurações de teste necessárias e obter um arquivo com um relatório sobre os resultados do teste após o lançamento. A lista completa de métricas do Caliper e a abordagem de benchmarking podem ser encontradas aqui Métricas de desempenho do Hyperledger Blockchain , este é um ótimo artigo se você estiver interessado no tópico de benchmarking do blockchain. Além disso, você pode configurar a coleção de métricas em um Prometheus / Grafana separado.


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



O MixBytes Tank é uma ferramenta que apareceu no processo de desenvolvimento de algoritmos de consenso e finalidade para redes baseadas em EOS e de teste de para-quedas com base no Parity Substrate (Polkadot). Em termos de funcionalidade, está próximo ao Hyperledger Caliper, pois permite coletar métricas importantes dos nós de qualquer sistema distribuído e máquinas clientes que executam scripts de teste.


O MixBytes Tank usa vários serviços em nuvem (Digital Ocean, Google Cloud Engine etc.), nos quais pode iniciar muitos nós, executar procedimentos de configuração preliminares, executar simultaneamente vários benchmark-s em diferentes máquinas, coletar as métricas necessárias e extinguir automaticamente a rede.


O MixBytes Tank permite economizar dinheiro em servidores em nuvem, minimizando automaticamente recursos desnecessários após o teste. Outra característica distintiva é o uso do pacote Molecule, que permite ao desenvolvedor testar a implantação da blockchain desejada localmente.


O MixBytes Tank permite a detecção precoce de gargalos e erros em algoritmos que ocorrem em redes reais com um grande número de servidores e clientes distribuídos geograficamente. O tanque ajudará você 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 espaçados em diferentes continentes, se necessário.



O Whiteblock Genesis é uma plataforma de teste de blockchain baseada no Ethereum. Essa ferramenta possui uma funcionalidade bastante ampla: permite iniciar a rede, criar o número necessário de contas, aumentar o número necessário de clientes, configurar a topologia da rede, especificar a largura de banda, parâmetros de perda de pacotes e executar o teste.


O Whiteblock Genesis fornece suas próprias instalações de teste. É suficiente para os desenvolvedores especificarem parâmetros de teste, executá-los usando uma API pronta e obter resultados usando um painel conveniente.


O Whiteblock Genesis permite que você configure um teste bastante detalhado, que a plataforma realizará automaticamente para cada alteração significativa no código. Isso permitirá detectar erros nos estágios iniciais e avaliar imediatamente o impacto das alterações em parâmetros importantes da rede, como velocidade da transação e recursos consumidos pelos nós.


Madt


Outro produto jovem e interessante para testar sistemas distribuídos é o madt . Está 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 vários contêineres do docker e gera uma interface da Web na qual você pode assistir a mensagens de servidores e clientes da rede. Madt pode ser usado para testar blockchains - no repositório do projeto, há um teste de rede p2p baseado no protocolo Kademlia, no qual os atrasos na entrega de dados aos nós são gradualmente aumentados e o status desses dados é verificado.


Madt apareceu recentemente, mas, dada a arquitetura muito flexível, pode se transformar em um produto funcional.


Outras soluções


Quase todo teste da parte do sistema de blockchains requer o lançamento de scripts preliminares, a preparação de contas e condições para o teste (isso pode estar testando erros de consenso que podem gerar inúmeras cadeias de forquilhas, elaborar scripts de forquilhas rígidas, alterar os parâmetros do sistema etc.). Todas essas manipulações em diferentes blockchains são realizadas de maneiras diferentes, por isso é mais fácil para as equipes adaptarem gradualmente os testes e benchmarking do produto ao CI / CD interno e usarem seus próprios desenvolvimentos, que gradualmente se tornam mais complicados com o desenvolvimento da funcionalidade blockchain.


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


Conclusão


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


  • A capacidade de implantar automaticamente uma rede blockchain em condições repetíveis. Esse fator é importante ao desenvolver as partes do sistema de blockchains: algoritmos de consenso, finalidade, contratos inteligentes do sistema.
  • O preço de propriedade do sistema, os recursos consumidos e a conveniência de uso constante. Esse fator fornece ao projeto testes de alta qualidade por pouco dinheiro.
  • Flexibilidade e simplicidade da configuração de teste. Esse fator aumenta as chances de identificar problemas do sistema - menos propensos a perder algo importante.
  • Customização para tipos específicos de blockchains. O desenvolvimento de uma solução baseada em uma já existente pode melhorar muito a qualidade e reduzir os custos de tempo.
  • Conveniência e acessibilidade dos resultados e seu tipo (relatórios, métricas, gráficos, logs, etc.). Isso é absolutamente necessário se você deseja acompanhar o histórico do desenvolvimento do produto ou se precisa de análises aprofundadas do comportamento da rede blockchain.

Boa sorte no teste e deixe suas cadeias de bloqueio serem rápidas e tolerantes a falhas!

Source: https://habr.com/ru/post/pt481150/


All Articles