Unha breve visión xeral das ferramentas de proba e benchmarking de Blockchain

Unha breve visión xeral das ferramentas de proba e benchmarking de Blockchain

Hoxe, as solucións para probar e comparar as cadeas de bloques están adaptadas a unha cadea de bloques específica ou aos seus forks. Pero tamén hai varias solucións máis xerais que difieren en funcións: algunhas delas son proxectos de código aberto, outras son proporcionadas como SaaS, pero a maioría son solucións internas creadas polo equipo de desenvolvemento da cadea de bloques. Non obstante, todos solucionan problemas similares. Neste artigo, tentei revisar brevemente varios produtos deseñados especificamente para probar blockchains.

O funcionamento dunha rede blockchain parécese ao funcionamento dunha base de datos distribuída, polo que se poden usar ferramentas e métodos similares para probar. Para comprender mellor como se proban as bases de datos distribuídas, bótalle un ollo a unha boa selección de recursos e artigos por iso. Por exemplo, a latencia está clasificada en anacos neste Artigo, e para entender como buscan erros nos algoritmos de replicación, recoméndolle ler isto artigos.

Describirei varias solucións populares para probar e comparar as cadeas de bloques. Gustaríame que nos comentarios describas outros produtos de software útiles para resolver os mesmos problemas.

Unha breve visión xeral das ferramentas de proba e benchmarking de Blockchain

Comezarei cunha ferramenta que, aínda que non se creou especificamente para as cadeas de bloques, permite probar de forma eficaz o seu funcionamento, sempre que exista unha rede xa en funcionamento na que poida experimentar. O factor máis importante na fiabilidade dun sistema distribuído é a capacidade de seguir traballando en caso de problemas cos servidores e a rede. Isto pode ser atrasos de rede, cheo do disco, non dispoñibilidade de servizos externos (DNS), fallos de hardware e centos de razóns máis. Para comprobar a estabilidade de calquera sistema que funcione en conxunto nun gran número de máquinas de sistemas, podes usar Gremlin. Usa un enfoque extremadamente eficaz chamado Chaos Engineering.

Usando o seu propio axente de rede, Gremlin crea moitos tipos diferentes de problemas no número necesario de máquinas: atrasos de rede, sobrecarga de calquera recurso (CPU, disco, memoria, rede), desactiva protocolos individuais, etc. Para as cadeas de bloques, Gremlin pódese usar en servidores testnet, emulando problemas da vida real e observando o comportamento da rede. Con el, os desenvolvedores e administradores poden observar nun ambiente controlado o que sucederá se o sistema falla ou cando se actualiza o código. Neste caso, a rede debe estar configurada e despregada previamente, así como configurada para recoller as métricas necesarias.

Gremlin é unha ferramenta conveniente para arquitectos, devops e especialistas en seguridade e unha solución universal para probar calquera sistema distribuído listo e en execución, incluíndo blockchains.

Unha breve visión xeral das ferramentas de proba e benchmarking de Blockchain

Hyperledger Caliper é unha solución moito máis especializada Calibre Hyperledger. Polo momento, Caliper admite varias cadeas de bloques á vez: representantes da familia Hyperledger (Fabric, Sawtooth, Iroha, Burrow, Besu), así como Ethereum e a rede FISCO BCOS.

Usando Caliper, pode establecer a topoloxía da rede blockchain e os contratos para probar, así como describir a configuración do nodo. Os nodos da cadea de bloques son creados en contedores docker nunha máquina. A continuación, pode seleccionar o necesario configuracións de proba e recibe un ficheiro cun informe sobre os resultados da proba despois do lanzamento. Aquí pódese atopar unha lista completa das métricas de Caliper e do enfoque de benchmarking Métricas de rendemento de Hyperledger Blockchain, este é un excelente artigo se estás interesado no tema do benchmarking blockchain. Tamén pode configurar a recollida de métricas nun Prometheus/Grafana separado.

Hyperledger Caliper é unha ferramenta dirixida a desenvolvedores e arquitectos de sistemas, xa que proporciona repetibilidade das probas e automatización das probas e do benchmarking. Utilízase no desenvolvemento do núcleo das cadeas de bloques: algoritmos de consenso, unha máquina virtual para procesar contratos intelixentes, unha capa peer-to-peer e outros mecanismos do sistema.

Unha breve visión xeral das ferramentas de proba e benchmarking de Blockchain

Tanque MixBytes é unha ferramenta que xurdiu no proceso de desenvolvemento de algoritmos de consenso e finalidade para redes baseadas en EOS e probas de paracadeas baseadas en Parity Substrate (Polkadot). En termos de funcionalidade, está preto de Hyperledger Caliper, xa que permite recoller métricas importantes de nodos de calquera sistema distribuído e máquinas cliente nas que se executan scripts de proba.

MixBytes Tank utiliza varios servizos na nube (Digital Ocean, Google Cloud Engine, etc.), nos que pode lanzar moitos nodos, realizar procedementos de configuración preliminares, executar varios benchmarks en paralelo en diferentes máquinas, recoller as métricas necesarias e apagar automaticamente o rede.

MixBytes Tank permítelle aforrar diñeiro nos servidores na nube minimizando automaticamente os recursos innecesarios despois dunha proba. Outra característica distintiva é o uso do paquete Molecule, que permite ao desenvolvedor probar localmente a implantación da cadea de bloques desexada.

MixBytes Tank permítelle detectar precozmente os pescozos de botella e os erros nos algoritmos que xorden en redes reais cunha gran cantidade de servidores e clientes distribuídos xeograficamente. O tanque axudarache a comprender o que ocorrerá nos nodos se os clientes envían transaccións cun tps determinado en condicións altamente repetibles e cun número real de nós repartidos por diferentes continentes, se é necesario.

Unha breve visión xeral das ferramentas de proba e benchmarking de Blockchain

Whiteblock Genesis é unha plataforma de proba para cadeas de bloques baseadas en Ethereum. Esta ferramenta ten unha funcionalidade bastante ampla: permítelle iniciar unha rede, crear o número necesario de contas nela, aumentar o número necesario de clientes, configurar a topoloxía da rede, especificar o ancho de banda e os parámetros de perda de paquetes e realizar unha proba.

Whiteblock Genesis ofrece as súas propias instalacións de proba. Os desenvolvedores só precisan especificar parámetros de proba, executalos mediante unha API preparada e obter resultados mediante un panel de control cómodo.

Whiteblock Genesis permítelle configurar unha proba bastante detallada que a plataforma realizará automaticamente para cada cambio significativo de código. Isto permitirache detectar erros nunha fase inicial e avaliar inmediatamente o impacto dos cambios en parámetros importantes da rede, como a velocidade de transacción e os recursos consumidos polos nodos.

Madt

Outro produto novo interesante para probar sistemas distribuídos é madt. Está escrito en Python e permítelle crear a topoloxía de rede necesaria e o número necesario de servidores e clientes mediante un script de configuración sinxelo (exemplo). Despois diso, o servizo desprega a rede en varios contedores Docker e abre unha interface web na que podes observar as mensaxes dos servidores e clientes da rede. Madt pódese usar para probar cadeas de bloques: o repositorio do proxecto ten unha proba de rede p2p baseada no protocolo Kademlia, na que os atrasos na entrega de datos aos nodos aumentan gradualmente e comproba o estado destes datos.

Madt apareceu recentemente, pero dada a súa arquitectura moi flexible, pode converterse nun produto funcional.

Outras solucións

Case calquera proba da parte do sistema das cadeas de bloques require executar scripts preliminares, preparar contas e condicións para a proba (isto pode ser probar erros de consenso que poden xerar numerosos forks de cadeas, probar escenarios de hard fork, cambiar os parámetros do sistema, etc.). Todas estas manipulacións realízanse de forma diferente en diferentes cadeas de bloques, polo que é máis doado para os equipos adaptar gradualmente as probas e os benchmarking de produtos ao CI/CD interno e utilizar os seus propios desenvolvementos, que se van facendo máis complexos a medida que se desenvolve a funcionalidade da cadea de bloques.

Non obstante, o uso de solucións preparadas pode reducir moito o tempo de proba destes equipos, polo que creo que este software desenvolverase activamente nos próximos anos.

Conclusión

Para concluír esta breve revisión, enumerarei varias características importantes das ferramentas de proba de blockchain:

  • A capacidade de implementar automaticamente unha rede blockchain en condicións repetibles. Este factor é importante cando se desenvolven partes do sistema das cadeas de bloques: algoritmos de consenso, finalidade, contratos intelixentes do sistema.
  • O custo de posuír o sistema, os recursos consumidos e a comodidade de uso constante. Este factor proporciona ao proxecto probas de alta calidade por pouco diñeiro.
  • Flexibilidade e sinxeleza da configuración da proba. Este factor aumenta as posibilidades de identificar problemas do sistema: hai menos posibilidades de perder algo importante.
  • Personalización para tipos específicos de blockchains. Desenvolver unha solución baseada nunha existente pode mellorar moito a calidade e reducir os custos de tempo.
  • Comodidade e accesibilidade dos resultados obtidos e da súa tipoloxía (informes, métricas, gráficos, rexistros, etc.). Isto é absolutamente necesario se queres seguir o historial do desenvolvemento dun produto ou se necesitas unha análise profunda do comportamento da rede blockchain.

Boa sorte coas túas probas e que as túas cadeas de bloques sexan rápidas e tolerantes a fallos.

Fonte: www.habr.com

Engadir un comentario