Ein kurzer Überblick über Tools zum Testen und Benchmarking von Blockchains


Heutzutage werden Lösungen zum Testen und Benchmarking von Blockketten für eine bestimmte Blockkette oder deren Gabeln geschärft. Es gibt jedoch einige allgemeinere Lösungen, die sich in der Funktionalität unterscheiden: Einige sind Open Source-Projekte, andere werden als SaaS bereitgestellt, die meisten sind jedoch interne Lösungen, die vom Blockchain-Entwicklungsteam erstellt wurden. Sie lösen jedoch alle ähnliche Probleme. In diesem Artikel habe ich versucht, einige Produkte kurz zu betrachten, die speziell auf das Testen von Blockchains zugeschnitten sind.


Der Betrieb des Blockchain-Netzwerks ähnelt der Arbeit einer verteilten Datenbank. Daher können Sie zum Testen ähnliche Tools und Methoden anwenden. Um besser zu verstehen, wie verteilte Datenbanken getestet werden, sehen Sie sich hier eine gute Auswahl an Ressourcen und Artikeln an . Zum Beispiel wird die Latenz in diesem Artikel aufgeschlüsselt. Um zu verstehen, wie in Replikationsalgorithmen nach Fehlern gesucht wird, empfehle ich, diesen Artikel zu lesen.


Ich werde einige beliebte Lösungen zum Testen und Benchmarking von Blockchains beschreiben. Ich würde mich freuen, wenn Sie in den Kommentaren weitere nützliche Softwareprodukte zur Lösung der gleichen Probleme beschreiben.



Ich werde mit einem Tool beginnen, das zwar nicht speziell für Blockchains erstellt wurde, das es Ihnen jedoch ermöglicht, ihre Arbeit effektiv zu testen, vorausgesetzt, es gibt bereits ein laufendes Netzwerk, in dem Sie experimentieren können. Der wichtigste Faktor für die Zuverlässigkeit eines verteilten Systems ist die Fähigkeit, bei Problemen mit den Servern und dem Netzwerk weiterarbeiten zu können. Dies kann Netzwerkverzögerungen, Datenträger voll, Unzugänglichkeit externer Dienste (DNS), Hardwarefehler und Hunderte anderer Gründe sein. Mit Gremlin können Sie die Stabilität von Systemen überprüfen, die auf einer großen Anzahl von Maschinensystemen zusammenarbeiten. Es verwendet einen äußerst effektiven Ansatz namens Chaos Engineering.


Mit seinem eigenen Netzwerkagenten verursacht Gremlin viele verschiedene Probleme auf der richtigen Anzahl von Computern: Netzwerkverzögerungen, Überlastung von Ressourcen (CPU, Festplatte, Speicher, Netzwerk), Deaktivierung einzelner Protokolle usw. Für Blockchains kann Gremlin auf Testnetzwerkservern verwendet werden, um echte Probleme zu emulieren und das Netzwerkverhalten zu beobachten. Damit können Entwickler und Administratoren in einer kontrollierten Umgebung beobachten, was bei einem Systemabsturz oder bei der Aktualisierung des Codes passiert. In diesem Fall muss das Netzwerk vorkonfiguriert und bereitgestellt sowie konfiguriert werden, um die erforderlichen Metriken zu erfassen.


Gremlin ist ein praktisches Tool für Architekten, Entwickler und Sicherheitsexperten und eine universelle Lösung zum Testen fertiger und lauffähiger verteilter Systeme, einschließlich Blockchains.



Hyperledger Caliper ist eine viel spezialisiertere Hyperledger Caliper-Lösung . Derzeit unterstützt Caliper mehrere Blockchains gleichzeitig - Vertreter der Hyperledger-Familie (Fabric, Sawtooth, Iroha, Burrow, Besu) sowie Ethereum und das FISCO BCOS-Netzwerk.


Mit Caliper können Sie die Topologie des Blockchain-Netzwerks und die zu testenden Verträge angeben sowie die Konfiguration des Knotens beschreiben. Blockchain-Knoten werden in Docker-Containern auf demselben Computer hochgefahren. Als Nächstes können Sie die erforderlichen Testkonfigurationen auswählen und nach dem Start eine Datei mit einem Bericht über die Testergebnisse abrufen. Die vollständige Liste der Caliper-Metriken und des Benchmarking-Ansatzes finden Sie hier. Hyperledger Blockchain Performance Metrics . Dies ist ein großartiger Artikel, wenn Sie sich für das Thema Blockchain-Benchmarking interessieren. Sie können die Sammlung von Metriken auch in einem separaten Prometheus / Grafana konfigurieren.


Hyperledger Caliper ist ein Tool für Entwickler und Systemarchitekten, da es die Wiederholbarkeit von Tests und die Automatisierung von Tests und Benchmarking ermöglicht. Es wird bei der Entwicklung des Blockchain-Kerns verwendet: Consensus-Algorithmen, eine virtuelle Maschine für die Verarbeitung intelligenter Verträge, Peer-to-Peer-Layer und andere Systemmechanismen.



MixBytes Tank ist ein Tool, das bei der Entwicklung von Konsens- und Finalitätsalgorithmen für auf EOS basierende Netzwerke und beim Testen von auf Parity Substrate (Polkadot) basierenden Fallschirmen aufgetaucht ist. In Bezug auf die Funktionalität ähnelt es Hyperledger Caliper, da Sie wichtige Messdaten von den Knoten aller verteilten System- und Clientcomputer erfassen können, auf denen Testskripts ausgeführt werden.


MixBytes Tank verwendet mehrere Cloud-Dienste (Digital Ocean, Google Cloud Engine usw.), mit denen viele Knoten gestartet, vorbereitende Konfigurationsvorgänge durchgeführt, gleichzeitig mehrere Benchmarks auf verschiedenen Computern ausgeführt, die erforderlichen Messdaten erfasst und das Netzwerk automatisch gelöscht werden können.


Mit MixBytes Tank können Sie Geld auf Cloud-Servern sparen und unnötige Ressourcen nach dem Test automatisch minimieren. Ein weiteres Unterscheidungsmerkmal ist die Verwendung des Molecule-Pakets, mit dem der Entwickler die Bereitstellung der gewünschten Blockchain lokal testen kann.


MixBytes Tank ermöglicht die frühzeitige Erkennung von Engpässen und Fehlern in Algorithmen, die in realen Netzwerken mit einer großen Anzahl geografisch verteilter Server und Clients auftreten. Mithilfe des Tanks können Sie nachvollziehen, was auf Knoten geschieht, wenn Kunden Transaktionen mit einem bestimmten tps unter wiederholbaren Bedingungen und gegebenenfalls mit einer realen Anzahl von Knoten senden, die über verschiedene Kontinente verteilt sind.



Whiteblock Genesis ist eine Ethereum-basierte Blockchain-Testplattform. Dieses Tool bietet zahlreiche Funktionen: Sie können das Netzwerk starten, die erforderliche Anzahl von Konten erstellen, die erforderliche Anzahl von Clients erhöhen, die Netzwerktopologie konfigurieren, die Bandbreite und die Paketverlustparameter angeben und den Test ausführen.


Whiteblock Genesis stellt eigene Testeinrichtungen zur Verfügung. Entwickler müssen lediglich Testparameter angeben, diese über eine vorgefertigte API ausführen und die Ergebnisse über ein praktisches Dashboard abrufen.


Mit Whiteblock Genesis können Sie einen ziemlich detaillierten Test konfigurieren, den die Plattform automatisch für jede wesentliche Codeänderung durchführt. Auf diese Weise können Sie frühzeitig Fehler erkennen und die Auswirkungen von Änderungen auf wichtige Netzwerkparameter wie die Transaktionsgeschwindigkeit und den Ressourcenverbrauch von Knoten sofort abschätzen.


Madt


Ein weiteres interessantes junges Produkt zum Testen verteilter Systeme ist madt . Es ist in Python geschrieben und ermöglicht es Ihnen, die erforderliche Netzwerktopologie und die erforderliche Anzahl von Servern und Clients mithilfe eines einfachen Konfigurationsskripts ( Beispiel ) zu erstellen. Danach stellt der Dienst das Netzwerk in mehreren Docker-Containern bereit und ruft eine Webschnittstelle auf, über die Sie Nachrichten von Servern und Netzwerk-Clients anzeigen können. Madt kann zum Testen von Blockchains verwendet werden - im Projekt-Repository gibt es einen p2p-Netzwerktest auf der Grundlage des Kademlia-Protokolls, bei dem Verzögerungen bei der Datenübermittlung an Knoten schrittweise erhöht und der Status dieser Daten überprüft werden.


Madt ist erst kürzlich auf den Markt gekommen, kann sich aber aufgrund der sehr flexiblen Architektur zu einem funktionalen Produkt entwickeln.


Andere Lösungen


Nahezu jedes Testen des Systemteils von Blockchains erfordert das Starten von vorläufigen Skripten, das Erstellen von Konten und Bedingungen für den Test (dies kann das Testen von Konsensfehlern sein, die zahlreiche Gabelketten erzeugen können, das Ausarbeiten von harten Gabel-Skripten, das Ändern von Systemparametern usw.). Alle diese Manipulationen in verschiedenen Blockchains werden auf unterschiedliche Weise durchgeführt, sodass es für Teams einfacher ist, das Testen und Benchmarking des Produkts schrittweise an das interne CI / CD anzupassen und eigene Entwicklungen zu verwenden, die mit der Entwicklung der Blockchain-Funktionalität schrittweise komplizierter werden.


Trotzdem kann der Einsatz von vorgefertigten Lösungen die Testzeit für diese Teams erheblich verkürzen. Daher denke ich, dass diese Software in den kommenden Jahren aktiv weiterentwickelt wird.


Fazit


Abschließend werde ich einige wichtige Merkmale von Blockchain-Testwerkzeugen auflisten:


  • Die Fähigkeit, ein Blockchain-Netzwerk unter wiederholbaren Bedingungen automatisch bereitzustellen. Dieser Faktor ist wichtig bei der Entwicklung der Systemteile von Blockchains: Konsensalgorithmen, Endgültigkeit, intelligente Systemverträge.
  • Der Preis für den Betrieb des Systems, die verbrauchten Ressourcen und die Bequemlichkeit für den ständigen Gebrauch. Dieser Faktor bietet dem Projekt hochwertige Tests für wenig Geld.
  • Flexibilität und Einfachheit der Testkonfiguration. Dieser Faktor erhöht die Wahrscheinlichkeit, Systemprobleme zu erkennen - weniger wahrscheinlich, dass etwas Wichtiges übersehen wird.
  • Anpassung für bestimmte Arten von Blockchains. Die Entwicklung einer auf einer vorhandenen Lösung basierenden Lösung kann die Qualität erheblich verbessern und die Zeitkosten senken.
  • Komfort und Zugänglichkeit der Ergebnisse und ihrer Art (Berichte, Metriken, Diagramme, Protokolle usw.). Dies ist unbedingt erforderlich, wenn Sie die Entwicklung des Produkts nachverfolgen möchten oder eine eingehende Analyse des Verhaltens des Blockchain-Netzwerks benötigen.

Viel Glück beim Testen und lass deine Blockchains schnell und fehlertolerant sein!

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


All Articles