Un bref aperçu des outils de test et d'analyse comparative de la blockchain

Un bref aperçu des outils de test et d'analyse comparative de la blockchain

Aujourd’hui, les solutions de test et d’analyse comparative des blockchains sont adaptées à une blockchain spécifique ou à ses forks. Mais il existe également plusieurs solutions plus générales dont les fonctionnalités diffèrent : certaines d'entre elles sont des projets open source, d'autres sont fournies en 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 passer brièvement en revue plusieurs produits conçus spécifiquement pour tester les blockchains.

Le fonctionnement d’un réseau blockchain ressemble à celui d’une base de données distribuée, des outils et méthodes similaires peuvent donc être utilisés pour les tests. 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 par conséquent,. Par exemple, la latence est triée en morceaux dans cette article, et pour comprendre comment ils recherchent les bugs dans les algorithmes de réplication, je vous recommande de lire ceci 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.

Un bref aperçu des outils de test et d'analyse comparative de la blockchain

Je vais commencer par un outil qui, bien qu’il ne soit pas créé spécifiquement pour les blockchains, vous permet de tester efficacement leur fonctionnement, à condition qu’il existe un réseau déjà opérationnel sur lequel vous pouvez expérimenter. Le facteur le plus important pour la fiabilité d'un système distribué est la capacité de continuer à fonctionner en cas de problèmes avec les serveurs et le réseau. Cela peut être dû à des retards du réseau, à la saturation du disque, à l'indisponibilité des services externes (DNS), à des pannes matérielles et à des centaines d'autres raisons. Pour vérifier la stabilité de tout système fonctionnant de concert sur un grand nombre de machines système, vous pouvez utiliser Diablotin. 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 sur le nombre de machines requis : décalage du réseau, surcharge de toute ressource (CPU, disque, mémoire, réseau), désactivation de protocoles individuels, etc. Pour les blockchains, Gremlin peut être utilisé sur des serveurs testnet, émulant des problèmes réels et observant le comportement du réseau. Grâce à lui, les développeurs et les administrateurs peuvent observer dans un environnement contrôlé ce qui se passera en cas de panne du système ou lorsque le code est mis à jour. Dans ce cas, le réseau doit être configuré et déployé à l'avance, ainsi que configuré pour collecter les métriques nécessaires.

Gremlin est un outil pratique pour les architectes, les développeurs et les spécialistes de la 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 blockchains.

Un bref aperçu des outils de test et d'analyse comparative de la blockchain

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

À l'aide de Caliper, vous pouvez définir la topologie du réseau blockchain et les contrats à tester, ainsi que décrire la configuration du nœud. Les nœuds Blockchain sont créés dans des conteneurs Docker sur une seule machine. Ensuite, vous pouvez sélectionner les éléments nécessaires configurations de test et recevez un fichier avec un rapport sur les résultats des tests après le lancement. Une liste complète des métriques Caliper et de l’approche d’analyse comparative peut être trouvée ici Mesures de performances de la blockchain Hyperledger, c'est un excellent article si vous êtes intéressé par le sujet de l'analyse comparative de la blockchain. Vous pouvez également configurer la collecte de métriques dans un Prometheus/Grafana distinct.

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

Un bref aperçu des outils de test et d'analyse comparative de la blockchain

Réservoir MixBytes est un outil qui a émergé dans le processus de développement d'algorithmes de consensus et de finalité pour les réseaux basés sur EOS et de test de parachains basés sur Parity Substrate (Polkadot). En termes de fonctionnalités, il est proche d'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 sur lesquelles des scripts de test sont exécutés.

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éliminaire, exécuter plusieurs benchmarks en parallèle sur différentes machines, collecter les métriques nécessaires et arrêter automatiquement le réseau.

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

MixBytes Tank vous permet de détecter rapidement les goulots d'étranglement et les erreurs dans les algorithmes qui surviennent dans des réseaux réels avec un grand nombre de serveurs et de clients géographiquement répartis. Le tank 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 répartis sur différents continents, si nécessaire.

Un bref aperçu des outils de test et d'analyse comparative de la blockchain

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

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

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

Madt

Un autre jeune produit intéressant pour tester les systèmes distribués est fou. Il est écrit en Python et vous permet de créer la topologie réseau requise 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 ouvre une interface Web dans laquelle vous pouvez observer les messages des serveurs et des clients du réseau. Madt peut être utilisé pour tester les blockchains - le référentiel du projet dispose d'un test de réseau p2p basé sur le protocole Kademlia, dans lequel les délais de 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 grâce à son architecture très flexible, il peut évoluer vers un produit fonctionnel.

Autres solutions

Presque tous les tests de la partie système des blockchains nécessitent l'exécution de scripts préliminaires, la préparation des comptes et des conditions pour le test (il peut s'agir de tester des erreurs de consensus pouvant générer de nombreux forks de chaînes, de tester des scénarios de hard fork, de modifier les paramètres du système, etc.). Toutes ces manipulations sont effectuées différemment dans différentes blockchains, il est donc plus facile pour les équipes d'adapter progressivement les tests et benchmarks de produits au CI/CD interne et d'utiliser leurs propres développements, qui deviennent progressivement plus complexes à mesure que les fonctionnalités de la blockchain se développent.

Néanmoins, l'utilisation de solutions toutes faites peut réduire considérablement le temps de test pour ces équipes, je pense donc que ce logiciel sera activement développé dans les années à venir.

Conclusion

Pour conclure cette courte revue, je listerai plusieurs caractéristiques importantes des outils de test blockchain :

  • La capacité de déployer automatiquement un réseau blockchain dans des conditions reproductibles. Ce facteur est important lors du développement de parties système de blockchains : algorithmes de consensus, finalité, contrats intelligents système.
  • Le coût 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 des problèmes système - il y a moins de chances 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 obtenus et de leur type (rapports, métriques, graphiques, journaux, etc.). Ceci est absolument nécessaire si vous souhaitez suivre l'historique du développement d'un produit ou si vous avez besoin d'une analyse approfondie du comportement du réseau blockchain.

Bonne chance pour vos tests et que vos blockchains soient rapides et tolérantes aux pannes !

Source: habr.com

Ajouter un commentaire