Brève revue des outils pour tester et évaluer les blockchains

Brève revue des outils pour tester et évaluer les blockchains

Aujourd'hui, les solutions pour tester et évaluer les blockchains sont généralement spécifiques à une blockchain ou à ses forks. Cependant, il existe également plusieurs solutions plus générales, chacune ayant des fonctionnalités différentes : certaines d'entre elles sont des projets open source, d'autres sont proposées en tant que SaaS, mais la majorité sont des solutions internes créées par l'équipe de développement de la blockchain. Néanmoins, toutes visent à résoudre des problèmes similaires. Dans cet article, j'ai essayé de passer en revue brièvement plusieurs produits spécifiquement destinés au test des blockchains.

Le fonctionnement d'un réseau blockchain ressemble à celui d'une base de données distribuée, il est donc possible d'utiliser des outils et des méthodes similaires pour les tests. Pour mieux comprendre comment les bases de données distribuées sont testées, consultez une bonne sélection de ressources et d'articles. d'ici. Par exemple, la latence est expliquée en détail dans cet article. article, et pour comprendre comment les bogues dans les algorithmes de réplication sont recherchés, je vous recommande de consulter cet article. article.

Je vais décrire quelques solutions populaires pour tester et évaluer les blockchains. Je serais ravi que vous partagiez dans les commentaires d'autres logiciels utiles pour résoudre les mêmes problèmes.

Brève revue des outils pour tester et évaluer les blockchains

Je commencerai par un outil, bien qu'il ne soit pas spécifiquement conçu pour les blockchains, mais qui permet de tester efficacement leur fonctionnement à condition qu'un réseau déjà en place soit disponible pour expérimenter. Le facteur le plus important pour la fiabilité d'un système distribué est sa capacité à continuer à fonctionner en cas de problèmes avec les serveurs et le réseau. Cela peut inclure des latences réseau, des débordements de disque, des services externes indisponibles (DNS), des pannes matérielles et des centaines d'autres raisons. Pour tester la résilience de tout système fonctionnant de manière cohérente sur un grand nombre de machines, on peut utiliser Gremlin. Il utilise une approche extrêmement efficace appelée Chaos Engineering.

Avec son propre agent réseau, Gremlin crée une multitude de types de problèmes sur le nombre de machines souhaité : latences réseau, surcharge de n'importe quelle ressource (CPU, disque, mémoire, réseau), désactivation de protocoles individuels, etc. Pour les blockchains, Gremlin peut être utilisé sur des serveurs de test, simulant de réels problèmes et observant le comportement du réseau. Grâce à cela, les développeurs et les administrateurs peuvent observer ce qui se passe dans le système en cas de défaillances ou lors de mises à jour de code, à condition que le réseau soit préalablement configuré et déployé, ainsi que les métriques nécessaires soient collectées.

Gremlin est un outil pratique pour les architectes, les DevOps et les spécialistes de la sécurité, offrant une solution universelle pour tester tout type de systèmes distribués, y compris les blockchains.

Brève revue des outils pour tester et évaluer les blockchains

Hyperledger Caliper est une solution beaucoup plus spécialisée Hyperledger Caliper. À ce jour, Caliper prend en charge plusieurs blockchains représentant la famille Hyperledger (Fabric, Sawtooth, Iroha, Burrow, Besu), ainsi qu'Ethereum et le réseau FISCO BCOS.

Avec Caliper, vous pouvez définir la topologie du réseau blockchain et les contrats à tester, ainsi que décrire la configuration des nœuds. Les nœuds blockchain sont lancés dans des conteneurs Docker sur une seule machine. Ensuite, vous pouvez choisir les configurations de test et recevoir un fichier contenant le rapport des résultats des tests après leur exécution. Vous pouvez consulter la liste complète des métriques de Caliper et son approche du benchmarking ici. Métriques de Performance Blockchain Hyperledger, c'est un excellent article si le sujet du benchmarking des blockchains vous intéresse. De plus, il est possible de configurer la collecte de métriques dans un Prometheus/Grafana séparé.

Hyperledger Caliper est un outil orienté vers les développeurs et les architectes systèmes, car il assure la répétabilité des tests et l'automatisation des tests et du benchmarking. Il est utilisé lors du développement du noyau des blockchains : algorithmes de consensus, machine virtuelle pour le traitement des contrats intelligents, couche pair-à-pair et d'autres mécanismes système.

Brève revue des outils pour tester et évaluer les blockchains

MixBytes Tank — un outil qui est apparu lors du développement d'algorithmes de consensus et de finalité pour les réseaux basés sur EOS et du test de parachains basés sur Parity Substrate (Polkadot). En termes de fonctionnalité, il est proche de Hyperledger Caliper, car il permet de collecter des métriques cruciales à partir des nœuds de n'importe quel système distribué et des machines clientes sur lesquelles fonctionnent des scripts de test.

MixBytes Tank utilise plusieurs services cloud (Digital Ocean, Google Cloud Engine, etc.), capable de lancer de nombreux nœuds, d'effectuer des procédures de configuration préliminaires, de lancer simultanément plusieurs benchmarks sur différentes machines, de rassembler les métriques nécessaires et de désactiver automatiquement le réseau.

MixBytes Tank permet de gérer efficacement les coûts des serveurs cloud en désactivant automatiquement les ressources inutiles après les tests. Une autre caractéristique distinctive est l'utilisation du package Molecule, qui permet aux développeurs de tester le déploiement du blockchain localement.

MixBytes Tank permet de détecter à un stade précoce les goulets 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 dispersés. 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 répétables et avec un véritable nombre de nœuds répartis sur différents continents, si nécessaire.

Brève revue des outils pour tester et évaluer les blockchains

Whiteblock Genesis est une plateforme pour tester des blockchains basées sur Ethereum. Cet outil dispose d'une fonctionnalité assez large : il permet de lancer un réseau, de créer le nombre nécessaire de comptes, d'élever le nombre de clients requis, de configurer la topologie du réseau, de spécifier les paramètres de bande passante, de perte de paquets et de lancer des tests.

Whiteblock Genesis fournit ses propres ressources pour effectuer des tests. Les développeurs n'ont qu'à spécifier les paramètres des tests, à les lancer via une API prête à l'emploi et à obtenir les résultats en utilisant un tableau de bord pratique.

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

Madt

Un autre produit jeune et intéressant pour le test des systèmes distribués — madt. Il est écrit en Python et permet de créer la topologie réseau nécessaire ainsi que le nombre requis de serveurs et de clients à l'aide d'un simple script de configuration (exemple). Ensuite, le service déploie le réseau dans plusieurs conteneurs Docker et met en place une interface web où l'on peut observer les messages des serveurs et des clients du réseau. Madt peut être utilisé pour tester des blockchains — dans le dépôt du projet, il existe un test de réseau p2p basé sur le protocole Kademlia, où les délais de livraison des données aux nœuds augmentent progressivement et le statut de ces données est vérifié.

Madt est apparu très récemment, mais compte tenu de son architecture très flexible, il pourrait se développer en un produit fonctionnel.

Autres solutions

Pratiquement tous les tests de la partie système des blockchains nécessitent l'exécution de scénarios préliminaires, la préparation des comptes et des conditions pour le test (cela peut concerner les tests des erreurs de consensus, qui peuvent provoquer de nombreux forks de chaînes, la mise en œuvre de scénarios de hard fork, des modifications des paramètres système, etc.). Toutes ces manipulations varient d’une blockchain à l’autre, donc il est plus facile pour les équipes d’adapter progressivement le test et le benchmarking du produit à leur CI/CD interne et d'utiliser leurs développements qui se complexifient progressivement avec l'évolution des fonctionnalités de la blockchain.

Cependant, l'utilisation de solutions prêtes à l'emploi peut considérablement réduire le temps de test de ces équipes, donc je pense que ce logiciel se développera activement dans les années à venir.

Conclusion

En terminant cette brève revue, je vais énumérer quelques caractéristiques importantes des outils de test des blockchains :

  • La possibilité de déployer automatiquement le réseau blockchain dans des conditions reproductibles. Ce facteur est important lors du développement des parties systèmes des blockchains : algorithmes de consensus, finalité, contrats intelligents système.
  • Le coût de possession du système, les ressources consommées et la facilité d'utilisation à long terme. Ce facteur garantit des tests de haut niveau pour un faible coût.
  • La flexibilité et la simplicité de configuration des tests. Ce facteur augmente les chances de détecter des problèmes dans le système — il est moins probable de passer quelque chose d'important.
  • Personnalisation pour des types spécifiques de blockchains. Le développement d'une solution basée sur un existant peut considérablement améliorer la qualité et réduire le temps nécessaire.
  • La commodité et l'accessibilité des résultats obtenus et leur type (rapports, métriques, graphiques, journaux, etc.). Cela est absolument nécessaire si vous souhaitez suivre l'historique de l'évolution du 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 résilientes !

Source : habr.com

Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS 🔥 Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster