Un bref aperçu des outils pour tester et comparer les blockchains


Aujourd'hui, les solutions pour tester et comparer les blockchains sont affinées pour une blockchain spécifique ou ses fourches. Mais il existe plusieurs solutions plus générales qui diffèrent par leurs fonctionnalités: certaines sont des projets open source, d'autres sont fournies en tant que SaaS, mais la plupart sont des solutions internes créées par l'équipe de développement de la blockchain. Cependant, ils résolvent tous des problèmes similaires. Dans cet article, j'ai essayé de considérer brièvement plusieurs produits spécialement conçus pour tester les blockchains.


Le fonctionnement du réseau blockchain ressemble au travail d'une base de données distribuée, par conséquent, pour les tests, vous pouvez appliquer des outils et des méthodes similaires. Pour mieux comprendre comment les bases de données distribuées sont testées, jetez un œil à une bonne sélection de ressources et d'articles d'ici . Par exemple, la latence est décomposée dans les étagères de cet article , et pour comprendre comment les bogues sont recherchés dans les algorithmes de réplication, je vous recommande de lire cet article .


Je décrirai plusieurs solutions populaires pour tester et comparer les blockchains. Je serais heureux si dans les commentaires vous décrivez d'autres produits logiciels utiles pour résoudre les mêmes problèmes.



Je vais commencer par un outil, bien qu'il n'ait pas été créé spécifiquement pour les blockchains, mais cela vous permet de tester efficacement leur travail à condition qu'il existe déjà un réseau en cours sur lequel vous pouvez expérimenter. Le facteur le plus important dans la fiabilité d'un système distribué est la possibilité de continuer à travailler en cas de problèmes avec les serveurs et le réseau. Il peut s'agir de retards réseau, de disque plein, de l'inaccessibilité des services externes (DNS), de pannes matérielles et de centaines d'autres raisons. Pour vérifier la stabilité de tout système fonctionnant de concert sur un grand nombre de systèmes de machine, vous pouvez utiliser Gremlin . Il utilise une approche extrêmement efficace appelée Chaos Engineering.


En utilisant son propre agent réseau, Gremlin crée de nombreux types de problèmes différents sur le nombre requis de machines: retards réseau, surcharge de toute ressource (CPU, disque, mémoire, réseau), désactive les protocoles individuels, etc. Pour les chaînes de blocs, Gremlin peut être utilisé sur des serveurs de réseau de test, émulant de vrais problèmes et observant le comportement du réseau. Avec lui, les développeurs et les administrateurs dans un environnement contrôlé peuvent observer ce qui se passe en cas de panne du système ou lors de la mise à jour du code. Dans ce cas, le réseau doit être préconfiguré et déployé, ainsi que configuré pour collecter les métriques nécessaires.


Gremlin est un outil pratique pour les architectes, les développeurs et les agents de sécurité et une solution universelle pour tester tous les systèmes distribués prêts à l'emploi et en cours d'exécution, y compris les chaînes de blocs.



Hyperledger Caliper est une solution Hyperledger Caliper beaucoup plus spécialisée. À l'heure actuelle, Caliper prend en charge plusieurs chaînes de blocs à la fois - des représentants de la famille Hyperledger (Fabric, Sawtooth, Iroha, Burrow, Besu), ainsi que Ethereum et le réseau FISCO BCOS.


À l'aide de Caliper, vous pouvez spécifier la topologie du réseau de chaînes de blocs et des contrats pour les tests, ainsi que décrire la configuration du nœud. Les nœuds de la chaîne de blocs montent dans des conteneurs Docker sur la même machine. Ensuite, vous pouvez sélectionner les configurations de test nécessaires et obtenir un fichier avec un rapport sur les résultats du test après le lancement. La liste complète des mesures Caliper et de l'approche comparative peut être trouvée ici Hyperledger Blockchain Performance Metrics , c'est un excellent article si vous êtes intéressé par le sujet de l'analyse comparative de la blockchain. En outre, vous pouvez configurer la collection de métriques dans un Prometheus / Grafana distinct.


Hyperledger Caliper est un outil destiné aux développeurs et architectes de systèmes, car il offre une répétabilité des tests et une automatisation des tests et des analyses comparatives. Il est utilisé dans le développement du cœur de la blockchain: algorithmes de consensus, machine virtuelle pour le traitement des contrats intelligents, couche peer-to-peer et autres mécanismes système.



MixBytes Tank est un outil qui est apparu dans le processus de développement d'algorithmes de consensus et de finalité pour les réseaux basés sur EOS et de test des parachains basés sur Parity Substrate (Polkadot). En termes de fonctionnalités, il est proche de Hyperledger Caliper, car il vous permet de collecter des métriques importantes à partir des nœuds de tout système distribué et des machines clientes qui exécutent des scripts de test.


MixBytes Tank utilise plusieurs services cloud (Digital Ocean, Google Cloud Engine, etc.), dans lesquels il peut lancer de nombreux nœuds, effectuer des procédures de configuration préliminaires, exécuter simultanément plusieurs benchmark-s sur différentes machines, collecter les métriques nécessaires et éteindre automatiquement le réseau.


MixBytes Tank vous permet d'économiser de l'argent sur les serveurs cloud, minimisant automatiquement les ressources inutiles après le test. Une autre caractéristique distinctive est l'utilisation du package Molecule, qui permet au développeur de tester localement le déploiement de la blockchain souhaitée.


MixBytes Tank permet une détection précoce des goulots d'étranglement et des erreurs dans les algorithmes qui se produisent dans les réseaux réels avec un grand nombre de serveurs et de clients géographiquement distribués. Le réservoir vous aidera à comprendre ce qui se passera sur les nœuds si les clients envoient des transactions avec un tps donné dans des conditions hautement reproductibles et avec un nombre réel de nœuds espacés sur différents continents, si nécessaire.



Whiteblock Genesis est une plateforme de test de blockchain basée sur Ethereum. Cet outil a une fonctionnalité assez large: il vous permet de démarrer le réseau, de créer le nombre de comptes nécessaires, d'augmenter le nombre de clients requis, de configurer la topologie du réseau, de spécifier la bande passante, les paramètres de perte de paquets et d'exécuter le test.


Whiteblock Genesis fournit ses propres installations de test. Il suffit aux développeurs de spécifier des paramètres de test, de les exécuter à l'aide d'une API prête à l'emploi et d'obtenir des résultats à l'aide d'un tableau de bord pratique.


Whiteblock Genesis vous permet de configurer un test assez détaillé, que la plateforme effectuera automatiquement pour chaque changement de code significatif. Cela vous permettra de détecter les erreurs dans les premières étapes et d'évaluer immédiatement l'impact des modifications sur les paramètres réseau importants, tels que la vitesse de transaction et les ressources consommées par les nœuds.


Madt


Un autre jeune produit intéressant pour tester les systèmes distribués est madt . Il est écrit en Python et vous permet de créer la topologie réseau nécessaire et le nombre requis de serveurs et de clients à l'aide d'un simple script de configuration ( exemple ). Après cela, le service déploie le réseau dans plusieurs conteneurs Docker et déclenche une interface Web dans laquelle vous pouvez regarder les messages des serveurs et des clients réseau. Madt peut être utilisé pour tester les chaînes de blocs - dans le référentiel du projet, il existe un test de réseau p2p basé sur le protocole Kademlia, dans lequel les retards dans la livraison des données aux nœuds sont progressivement augmentés et l'état de ces données est vérifié.


Madt est apparu récemment, mais, étant donné son architecture très flexible, il peut devenir un produit fonctionnel.


Autres solutions


Presque tous les tests de la partie système des chaînes de blocs nécessitent le lancement de scripts préliminaires, la préparation des comptes et les conditions du test (cela peut être le test d'erreurs de consensus qui peuvent générer de nombreuses chaînes de fourches, l'élaboration de scripts de fourches dures, la modification des paramètres système, etc.). Toutes ces manipulations dans différentes chaînes de blocs sont effectuées de différentes manières, il est donc plus facile pour les équipes d'adapter progressivement les tests et l'analyse comparative du produit au CI / CD interne et d'utiliser leurs propres développements, qui deviennent progressivement plus compliqués avec le développement de la fonctionnalité de la chaîne de blocs.


Néanmoins, l'utilisation de solutions prêtes à l'emploi peut réduire considérablement le temps de test pour ces équipes, par conséquent, je pense que ce logiciel sera activement développé dans les années à venir.


Conclusion


Pour conclure cette brève revue, je vais énumérer plusieurs caractéristiques importantes des outils de test de la blockchain:


  • La possibilité de déployer automatiquement un réseau blockchain dans des conditions reproductibles. Ce facteur est important lors du développement des parties système des blockchains: algorithmes de consensus, finalité, contrats intelligents système.
  • Le prix de possession du système, les ressources consommées et la commodité d'une utilisation constante. Ce facteur fournit au projet des tests de haute qualité pour peu d'argent.
  • Flexibilité et simplicité de configuration des tests. Ce facteur augmente les chances d'identifier les problèmes du système - moins susceptibles de manquer quelque chose d'important.
  • Personnalisation pour des types spécifiques de blockchains. Développer une solution basée sur une solution existante peut grandement améliorer la qualité et réduire les coûts de temps.
  • Commodité et accessibilité des résultats et de leur type (rapports, métriques, graphiques, journaux, etc.). Cela est absolument nécessaire si vous souhaitez suivre l'historique du développement du produit ou si vous avez besoin d'une analyse approfondie du comportement du réseau de blockchain.

Bonne chance dans les tests et laissez vos chaînes de blocs être rapides et tolérantes aux pannes!

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


All Articles