Kurze Übersicht über Tools zur Testung und Benchmarking von Blockchains

Kurze Übersicht über Tools zur Testung und Benchmarking von Blockchains

Heutzutage sind Lösungen für das Testen und Benchmarking von Blockchains auf bestimmte Blockchains oder deren Forks ausgelegt. Es gibt jedoch auch einige allgemeinere Lösungen, die sich in ihrer Funktionalität unterscheiden: Einige sind Open-Source-Projekte, andere werden als SaaS angeboten, aber der Großteil sind interne Lösungen, die von den Entwicklungsteams der Blockchains erstellt werden. Dennoch adressieren alle ähnliche Aufgaben. In diesem Artikel werde ich einige Produkte vorstellen, die speziell auf das Testen von Blockchains ausgerichtet sind.

Die Funktionsweise eines Blockchain-Netzwerks ähnelt der einer verteilten Datenbank, daher können ähnliche Mittel und Methoden auch für das Testen verwendet werden. Um besser zu verstehen, wie verteilte Datenbanken getestet werden, werfen Sie einen Blick auf diese nützliche Sammlung von Ressourcen und Artikeln. hier herunter. Zum Beispiel wird die Latenz in diesem Artikel detailliert behandelt. Artikel, und um zu verstehen, wie Bugs in Replikationsalgorithmen gefunden werden, empfehle ich, sich diesen Artikel anzusehen. Artikel..

Ich werde einige beliebte Lösungen für das Testen und Benchmarking von Blockchains beschreiben. Ich würde mich freuen, wenn Sie in den Kommentaren andere nützliche Softwareprodukte für die Bewältigung ähnlicher Aufgaben teilen.

Kurze Übersicht über Tools zur Testung und Benchmarking von Blockchains

Ich beginne mit einem Tool, das zwar nicht speziell für Blockchains entwickelt wurde, aber dennoch eine effektive Möglichkeit bietet, deren Funktionalität zu testen, sofern bereits ein Netzwerk vorhanden ist, auf dem Experimente durchgeführt werden können. Ein entscheidender Faktor für die Zuverlässigkeit eines verteilten Systems ist die Fähigkeit, im Falle von Problemen mit Servern und Netzwerken weiterzuarbeiten. Dazu gehören Netzwerkverzögerungen, Festplattenspeicherüberlauf, die Nichterreichbarkeit externer Dienste (DNS), Hardwarefehler und viele andere Ursachen. Um die Stabilität von Systemen zu überprüfen, die konsistent auf einer Vielzahl von Maschinen arbeiten, kann man Gremlinverwendet werden. Es wird ein äußerst effektiver Ansatz genutzt, der als Chaos Engineering bezeichnet wird.

Mit dem eigenen Netzwerk-Agenten erstellt Gremlin auf der gewünschten Anzahl an Maschinen zahlreiche verschiedene Arten von Problemen: Netzwerkverzögerungen, Überlastungen sämtlicher Ressourcen (CPU, Disk, RAM, Netzwerk), schaltet einzelne Protokolle ab usw. Für Blockchains kann Gremlin auf Testnetzwerk-Servern eingesetzt werden, um reale Probleme zu emulieren und das Verhalten des Netzwerks zu beobachten. Damit können Entwickler und Administratoren in einer kontrollierten Umgebung beobachten, was im System bei Ausfällen oder bei Code-Updates passieren würde. Das Netzwerk muss zuvor konfiguriert und bereitgestellt sowie die erforderlichen Metriken gesammelt werden.

Gremlin ist ein benutzerfreundliches Werkzeug für Architekten, DevOps und Sicherheitsverantwortliche und bietet eine universelle Lösung zur Testung beliebiger bestehender und laufender verteilter Systeme, einschließlich Blockchains.

Kurze Übersicht über Tools zur Testung und Benchmarking von Blockchains

Hyperledger Caliper ist eine deutlich spezialisiertere Lösung Hyperledger Caliper. Derzeit unterstützt Caliper mehrere Blockchains aus 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 Testverträge definieren sowie die Konfiguration des Knotens beschreiben. Die Blockchain-Knoten werden in Docker-Containern auf einem einzelnen Rechner gestartet. Anschließend können Sie die benötigten auswählen. Testkonfigurationen und nach der Ausführung eine Datei mit dem Testbericht erhalten. Eine vollständige Liste der Caliper-Metriken und den Ansatz zur Benchmarking finden Sie hier. Hyperledger Blockchain Leistungsmetriken, ein hervorragender Artikel, wenn Sie sich für das Thema Blockchain-Benchmarking interessieren. Außerdem können Sie die Erfassung von Metriken für Prometheus/Grafana einrichten.

Hyperledger Caliper ist ein Tool, das sich an Entwickler und Systemarchitekten richtet, da es Wiederholbarkeit von Tests und Automatisierung von Tests und Benchmarking gewährleistet. Es wird bei der Entwicklung von Blockchain-Kernen verwendet: Konsensalgorithmen, virtueller Maschinen zur Verarbeitung von Smart Contracts, Peer-to-Peer-Schichten und anderen systemischen Mechanismen.

Kurze Übersicht über Tools zur Testung und Benchmarking von Blockchains

MixBytes Tank — ein Werkzeug, das im Laufe der Entwicklung von Konsens- und Finalisierungsalgorithmen für EOS-basierte Netzwerke und beim Testen von Parachains auf der Parity Substrate (Polkadot) entstanden ist. In seiner Funktionalität ähnelt es Hyperledger Caliper, da es ermöglicht, wichtige Metriken von Knoten beliebiger verteilter Systeme und von Client-Maschinen, auf denen Testscripte ausgeführt werden, zu sammeln.

MixBytes Tank nutzt mehrere Cloud-Dienste (Digital Ocean, Google Cloud Engine usw.), in denen es viele Knoten starten, Vorbereitungsverfahren zur Konfiguration durchführen, mehrere Benchmarks parallel auf verschiedenen Maschinen ausführen, die erforderlichen Metriken sammeln und das Netzwerk automatisch schließen kann.

MixBytes Tank ermöglicht es, die Ausgaben für Cloud-Server ökonomisch zu gestalten, indem es unnötige Ressourcen nach dem Test automatisch abschaltet. Ein weiteres herausragendes Merkmal ist die Verwendung des Molecule-Pakets, das es Entwicklern ermöglicht, die Bereitstellung der benötigten Blockchain lokal zu testen.

MixBytes Tank ermöglicht es, bereits in frühen Phasen Engpässe und Fehler in Algorithmen zu identifizieren, die in echten Netzwerken mit einer großen Anzahl geografisch verteilter Server und Kunden auftreten. Der Tank hilft Ihnen zu verstehen, was mit den Knoten passiert, wenn Kunden Transaktionen mit einer bestimmten TPS unter hochrepetitiven Bedingungen und mit einer realen Anzahl von Knoten, die über verschiedene Kontinente verteilt sind, senden müssen.

Kurze Übersicht über Tools zur Testung und Benchmarking von Blockchains

Whiteblock Genesis ist eine Plattform zur Testung von Blockchains basierend auf Ethereum. Dieses Tool verfügt über einen umfangreichen Funktionsumfang: Es ermöglicht das Starten eines Netzwerks, das Erstellen der benötigten Anzahl von Konten, das Hochfahren der erforderlichen Anzahl von Clients, die Konfiguration der Netzwerktopologie sowie das Festlegen von Parametern wie Bandbreite und Paketverlust und das Starten von Tests.

Whiteblock Genesis bietet eigene Ressourcen zur Durchführung von Tests. Entwickler müssen lediglich die Testparameter angeben, diese über die bereitgestellte API starten und die Ergebnisse über ein benutzerfreundliches Dashboard abrufen.

Whiteblock Genesis ermöglicht die Konfiguration eines detaillierten Tests, der von der Plattform automatisch bei jedem signifikanten Code-Änderung durchgeführt wird. So können Fehler frühzeitig erkannt und die Auswirkungen von Änderungen auf wichtige Netzwerkparameter wie Transaktionsgeschwindigkeit und Ressourcenverbrauch der Knoten sofort bewertet werden.

Madt

Ein weiteres interessantes, junges Produkt zum Testen verteilter Systeme — madt. Es ist in Python geschrieben und ermöglicht die Erstellung der erforderlichen Netzwerktopologie sowie die benötigte Anzahl an Servern und Clients mit einem einfachen Konfigurationsskript (Nummer 00 oder). Danach implementiert der Dienst das Netzwerk in mehreren Docker-Containern und richtet eine Web-Oberfläche ein, auf der Nachrichten von Servern und Clients des Netzwerks beobachtet werden können. Madt kann zum Testen von Blockchains verwendet werden — im Repository des Projekts gibt es einen Test für ein P2P-Netzwerk, das auf dem Kademlia-Protokoll basiert, bei dem die Verzögerungen bei der Datenübertragung zu den Knoten schrittweise erhöht werden und der Status dieser Daten überprüft wird.

Madt ist ganz neu, aber aufgrund seiner sehr flexiblen Architektur könnte es sich zu einem funktionalen Produkt entwickeln.

Andere Lösungen

Fast nahezu jede Systemtestung von Blockchain erfordert das Ausführen von Vorab-Szenarien, die Vorbereitung von Konten und Testbedingungen (dazu kann die Fehlertestung des Konsenses gehören, die zahlreiche Forks der Kette erzeugen kann, das Durchspielen von Hardfork-Szenarien, Änderungen an Systemparametern usw.). Diese Maneuver werden in verschiedenen Blockchains unterschiedlich durchgeführt, weshalb es für Teams einfacher ist, die Testung und das Benchmarking des Produkts schrittweise an ihren internen CI/CD anzupassen und ihre eigenen Entwicklungen zu nutzen, die sich mit der Weiterentwicklung der Blockchain-Funktionalität allmählich verkomplizieren.

Dennoch kann die Nutzung von fertigen Lösungen den Teams erheblich Zeit bei der Testung sparen, weshalb ich der Meinung bin, dass diese Software in den kommenden Jahren aktiv weiterentwickelt wird.

Fazit

Abschließend möchte ich einige wichtige Merkmale von Werkzeugen zur Blockchain-Testung aufzählen:

  • Die Möglichkeit, eine Blockchain-Netzwerkinfrastruktur unter reproduzierbaren Bedingungen automatisch bereitzustellen. Dieser Aspekt ist entscheidend bei der Entwicklung systemrelevanter Komponenten von Blockchains: Konsensalgorithmen, Finalität und systemrelevanten Smart Contracts.
  • Die Eigentumskosten des Systems, der Ressourcenverbrauch und die Benutzerfreundlichkeit für den Dauerbetrieb. Dieser Faktor ermöglicht hochwertige Tests zu geringen Kosten.
  • Flexibilität und einfache Konfiguration von Tests. Dieser Aspekt erhöht die Wahrscheinlichkeit, Systemprobleme zu entdecken, wodurch die Gefahr verringert wird, etwas Wichtiges zu übersehen.
  • Anpassung für spezifische Blockchain-Typen. Die Entwicklung einer Lösung auf Basis bestehender Systeme kann die Qualität erheblich steigern und den Zeitaufwand reduzieren.
  • Benutzerfreundlichkeit und Zugänglichkeit der erhaltenen Ergebnisse sowie deren Art (Berichte, Metriken, Grafiken, Logs usw.). Dies ist unerlässlich, wenn Sie die Entwicklungsgeschichte des Produkts verfolgen oder eine tiefgreifende Analyse des Verhaltens der Blockchain-Netzwerke benötigen.

Viel Erfolg beim Testen, und mögen Ihre Blockchains schnell und ausfallsicher sein!

Quelle: habr.com

Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen 🔥 Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen | ProHoster