Ein kurzer Überblick über Blockchain-Test- und Benchmarking-Tools

Ein kurzer Überblick über Blockchain-Test- und Benchmarking-Tools

Heutzutage sind Lösungen zum Testen und Benchmarking von Blockchains auf eine bestimmte Blockchain oder deren Forks zugeschnitten. Es gibt aber auch einige allgemeinere Lösungen, die sich in der Funktionalität unterscheiden: Einige davon sind Open-Source-Projekte, andere werden als SaaS bereitgestellt, aber die meisten sind interne Lösungen, die vom Blockchain-Entwicklungsteam erstellt wurden. Allerdings lösen sie alle ähnliche Probleme. In diesem Artikel habe ich versucht, einige Produkte kurz zu besprechen, die speziell zum Testen von Blockchains entwickelt wurden.

Der Betrieb eines Blockchain-Netzwerks ähnelt dem Betrieb einer verteilten Datenbank, sodass zum Testen ähnliche Tools und Methoden verwendet werden können. Um besser zu verstehen, wie verteilte Datenbanken getestet werden, werfen Sie einen Blick auf eine gute Auswahl an Ressourcen und Artikeln daher. Hier wird beispielsweise die Latenz in Stücke sortiert Artikelund um zu verstehen, wie sie nach Fehlern in Replikationsalgorithmen suchen, empfehle ich, dies zu lesen Artikel.

Ich werde mehrere 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.

Ein kurzer Überblick über Blockchain-Test- und Benchmarking-Tools

Ich beginne mit einem Tool, das zwar nicht speziell für Blockchains entwickelt wurde, es Ihnen aber ermöglicht, deren Funktionsweise effektiv zu testen, vorausgesetzt, es gibt ein bereits laufendes Netzwerk, mit dem Sie experimentieren können. Der wichtigste Faktor für die Zuverlässigkeit eines verteilten Systems ist die Weiterarbeitsfähigkeit bei Problemen mit den Servern und dem Netzwerk. Dies können Netzwerkverzögerungen, volle Festplatte, Nichtverfügbarkeit externer Dienste (DNS), Hardwarefehler und Hunderte anderer Gründe sein. Um die Stabilität aller Systeme zu überprüfen, die auf einer großen Anzahl von Systemmaschinen zusammenarbeiten, können Sie Folgendes verwenden: Gremlin. Es verwendet einen äußerst effektiven Ansatz namens Chaos Engineering.

Mithilfe seines eigenen Netzwerkagenten verursacht Gremlin viele verschiedene Arten von Problemen auf der erforderlichen Anzahl von Maschinen: Netzwerkverzögerungen, Überlastung beliebiger Ressourcen (CPU, Festplatte, Speicher, Netzwerk), deaktiviert einzelne Protokolle usw. Für Blockchains kann Gremlin auf Testnet-Servern verwendet 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 passiert, wenn das System abstürzt oder der Code aktualisiert wird. In diesem Fall muss das Netzwerk im Voraus konfiguriert und bereitgestellt sowie für die Erfassung der erforderlichen Metriken konfiguriert werden.

Gremlin ist ein praktisches Tool für Architekten, Entwickler und Sicherheitsspezialisten und eine universelle Lösung zum Testen aller vorgefertigten und laufenden verteilten Systeme, einschließlich Blockchains.

Ein kurzer Überblick über Blockchain-Test- und Benchmarking-Tools

Hyperledger Caliper ist eine viel spezialisiertere Lösung Hyperledger-Messschieber. 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 Verträge zum Testen festlegen sowie die Konfiguration des Knotens beschreiben. Blockchain-Knoten werden in Docker-Containern auf einer Maschine erstellt. Als nächstes können Sie das Notwendige auswählen Testkonfigurationen und erhalten nach dem Start eine Datei mit einem Bericht über die Testergebnisse. Eine vollständige Liste der Caliper-Metriken und Benchmarking-Ansätze finden Sie hier Leistungsmetriken der Hyperledger-BlockchainDies ist ein großartiger Artikel, wenn Sie sich für das Thema Blockchain-Benchmarking interessieren. Sie können die Metriksammlung auch in einem separaten Prometheus/Grafana einrichten.

Hyperledger Caliper ist ein Tool für Entwickler und Systemarchitekten, da es Testwiederholbarkeit und Automatisierung von Tests und Benchmarking bietet. Es wird bei der Entwicklung des Kerns von Blockchains verwendet: Konsensalgorithmen, eine virtuelle Maschine zur Verarbeitung intelligenter Verträge, eine Peer-to-Peer-Schicht und andere Systemmechanismen.

Ein kurzer Überblick über Blockchain-Test- und Benchmarking-Tools

MixBytes-Tank ist ein Tool, das im Zuge der Entwicklung von Konsens- und Finalitätsalgorithmen für EOS-basierte Netzwerke und des Testens von Parachains auf Basis von Parity Substrate (Polkadot) entstanden ist. In Bezug auf die Funktionalität ähnelt es Hyperledger Caliper, da es Ihnen ermöglicht, wichtige Metriken von Knoten aller verteilten Systeme und Client-Maschinen zu sammeln, auf denen Testskripte ausgeführt werden.

MixBytes Tank nutzt mehrere Cloud-Dienste (Digital Ocean, Google Cloud Engine usw.), in denen es viele Knoten starten, vorläufige Konfigurationsverfahren durchführen, mehrere Benchmarks parallel auf verschiedenen Maschinen ausführen, die erforderlichen Metriken sammeln und automatisch herunterfahren kann Netzwerk.

Mit MixBytes Tank können Sie Geld auf Cloud-Servern sparen, indem unnötige Ressourcen nach einem Test automatisch minimiert werden. Eine weitere Besonderheit ist die Verwendung des Molecule-Pakets, das es dem Entwickler ermöglicht, den Einsatz der gewünschten Blockchain lokal zu testen.

Mit MixBytes Tank können Sie Engpässe und Fehler in Algorithmen frühzeitig erkennen, die in realen Netzwerken mit einer großen Anzahl geografisch verteilter Server und Clients auftreten. Der Tank hilft Ihnen zu verstehen, was auf den Knoten passiert, wenn Kunden Transaktionen mit einem bestimmten TPS unter hochgradig wiederholbaren Bedingungen und bei Bedarf mit einer realen Anzahl von Knoten auf verschiedenen Kontinenten senden.

Ein kurzer Überblick über Blockchain-Test- und Benchmarking-Tools

Whiteblock Genesis ist eine Testplattform für Ethereum-basierte Blockchains. Dieses Tool verfügt über eine recht umfangreiche Funktionalität: Es ermöglicht Ihnen, ein Netzwerk zu starten, die erforderliche Anzahl von Konten darin zu erstellen, die erforderliche Anzahl von Clients zu erhöhen, die Netzwerktopologie zu konfigurieren, die Bandbreiten- und Paketverlustparameter festzulegen und einen Test durchzuführen.

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

Mit Whiteblock Genesis können Sie einen ziemlich detaillierten Test konfigurieren, den die Plattform automatisch bei jeder wesentlichen Codeänderung durchführt. Dadurch können Sie Fehler frühzeitig erkennen und die Auswirkungen von Änderungen auf wichtige Netzwerkparameter wie Transaktionsgeschwindigkeit und von Knoten verbrauchte Ressourcen sofort beurteilen.

Verrückt

Ein weiteres interessantes junges Produkt zum Testen verteilter Systeme ist verrückt. Es ist in Python geschrieben und ermöglicht Ihnen die Erstellung der erforderlichen Netzwerktopologie und der erforderlichen Anzahl von Servern und Clients mithilfe eines einfachen Konfigurationsskripts (Beispiel). Anschließend stellt der Dienst das Netzwerk in mehreren Docker-Containern bereit und öffnet eine Weboberfläche, in der Sie Nachrichten von Servern und Clients des Netzwerks beobachten können. Madt kann zum Testen von Blockchains verwendet werden – das Projekt-Repository verfügt über einen P2P-Netzwerktest basierend auf dem Kademlia-Protokoll, bei dem Verzögerungen bei der Übermittlung von Daten an Knoten schrittweise erhöht werden und der Status dieser Daten überprüft wird.

Madt ist erst vor Kurzem erschienen, kann sich aber aufgrund seiner sehr flexiblen Architektur zu einem funktionalen Produkt entwickeln.

Andere Lösungen

Nahezu jedes Testen des Systemteils von Blockchains erfordert die Ausführung vorläufiger Skripte sowie die Vorbereitung von Konten und Bedingungen für den Test (dies kann das Testen von Konsensfehlern sein, die zahlreiche Forks von Ketten erzeugen können, das Testen von Hard-Fork-Szenarien, das Ändern von Systemparametern usw.). Alle diese Manipulationen werden in verschiedenen Blockchains unterschiedlich durchgeführt, sodass es für Teams einfacher ist, Produkttests und Benchmarking schrittweise an das interne CI/CD anzupassen und eigene Entwicklungen zu verwenden, die mit der Weiterentwicklung der Funktionalität der Blockchain schrittweise komplexer werden.

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

Abschluss

Zum Abschluss dieser kurzen Rezension werde ich einige wichtige Merkmale von Blockchain-Testtools auflisten:

  • Die Möglichkeit, ein Blockchain-Netzwerk unter wiederholbaren Bedingungen automatisch bereitzustellen. Dieser Faktor ist wichtig bei der Entwicklung von Systemteilen von Blockchains: Konsensalgorithmen, Endgültigkeit, intelligente Systemverträge.
  • Die Kosten für den Besitz des Systems, die verbrauchten Ressourcen und die Bequemlichkeit einer ständigen Nutzung. Dieser Faktor ermöglicht dem Projekt qualitativ hochwertige Tests für wenig Geld.
  • Flexibilität und Einfachheit der Testkonfiguration. Dieser Faktor erhöht die Wahrscheinlichkeit, Systemprobleme zu erkennen – die Wahrscheinlichkeit, etwas Wichtiges zu übersehen, ist geringer.
  • Anpassung für bestimmte Arten von Blockchains. Die Entwicklung einer Lösung auf Basis einer bestehenden Lösung kann die Qualität erheblich verbessern und den Zeitaufwand senken.
  • Bequemlichkeit und Zugänglichkeit der erhaltenen Ergebnisse und ihrer Art (Berichte, Metriken, Grafiken, Protokolle usw.). Dies ist unbedingt erforderlich, wenn Sie den Entwicklungsverlauf eines Produkts verfolgen möchten oder eine umfassende Analyse des Verhaltens des Blockchain-Netzwerks benötigen.

Viel Glück beim Testen und mögen Ihre Blockchains schnell und fehlertolerant sein!

Source: habr.com

Kommentar hinzufügen