Een kort overzicht van tools voor het testen en benchmarken van Blockchain

Een kort overzicht van tools voor het testen en benchmarken van Blockchain

Tegenwoordig zijn oplossingen voor het testen en benchmarken van blockchains afgestemd op een specifieke blockchain of zijn vorken. Maar er zijn ook een aantal meer algemene oplossingen die qua functionaliteit verschillen: sommige zijn open source-projecten, andere worden aangeboden als SaaS, maar de meeste zijn interne oplossingen die zijn gemaakt door het blockchain-ontwikkelteam. Ze lossen echter allemaal soortgelijke problemen op. In dit artikel heb ik geprobeerd een aantal producten kort te bespreken die speciaal zijn ontworpen voor het testen van blockchains.

De werking van een blockchain-netwerk lijkt op de werking van een gedistribueerde database, dus voor het testen kunnen vergelijkbare tools en methoden worden gebruikt. Om beter te begrijpen hoe gedistribueerde databases worden getest, kunt u een goede selectie van bronnen en artikelen bekijken vandaar. Hierin wordt bijvoorbeeld de latentie in stukjes gesorteerd статье, en om te begrijpen hoe ze zoeken naar bugs in replicatie-algoritmen, raad ik aan dit te lezen Lidwoord.

Ik zal verschillende populaire oplossingen beschrijven voor het testen en benchmarken van blockchains. Ik zou blij zijn als je in de reacties andere nuttige softwareproducten beschrijft voor het oplossen van dezelfde problemen.

Een kort overzicht van tools voor het testen en benchmarken van Blockchain

Ik begin met een tool waarmee je, ook al is deze niet specifiek voor blockchains gemaakt, de werking ervan effectief kunt testen, op voorwaarde dat er al een netwerk bestaat waarop je kunt experimenteren. De belangrijkste factor voor de betrouwbaarheid van een gedistribueerd systeem is de mogelijkheid om door te werken bij problemen met de servers en het netwerk. Dit kunnen netwerkvertragingen, schijfvolheid, onbeschikbaarheid van externe services (DNS), hardwarefouten en honderden andere redenen zijn. Om de stabiliteit te controleren van systemen die samenwerken op een groot aantal systeemmachines, kunt u gebruiken kabouter. Het maakt gebruik van een uiterst effectieve aanpak genaamd Chaos Engineering.

Met behulp van zijn eigen netwerkagent creëert Gremlin veel verschillende soorten problemen op het vereiste aantal machines: netwerkvertragingen, overbelasting van welke bron dan ook (CPU, schijf, geheugen, netwerk), schakelt individuele protocollen uit, enz. Voor blockchains kan Gremlin worden gebruikt op testnet-servers, waarbij problemen uit de praktijk worden nagebootst en het gedrag van het netwerk wordt geobserveerd. Hiermee kunnen ontwikkelaars en beheerders in een gecontroleerde omgeving observeren wat er gebeurt als het systeem crasht of als de code wordt bijgewerkt. In dit geval moet het netwerk vooraf worden geconfigureerd en geïmplementeerd, en ook worden geconfigureerd om de benodigde statistieken te verzamelen.

Gremlin is een handig hulpmiddel voor architecten, devops en beveiligingsspecialisten en een universele oplossing voor het testen van kant-en-klare en draaiende gedistribueerde systemen, inclusief blockchains.

Een kort overzicht van tools voor het testen en benchmarken van Blockchain

Hyperledger Caliper is een veel meer gespecialiseerde oplossing Hyperledger schuifmaat. Op dit moment ondersteunt Caliper meerdere blockchains tegelijk - vertegenwoordigers van de Hyperledger-familie (Fabric, Sawtooth, Iroha, Burrow, Besu), evenals Ethereum en het FISCO BCOS-netwerk.

Met Caliper kunt u de topologie van het blockchain-netwerk en testcontracten instellen, en de configuratie van het knooppunt beschrijven. Blockchain-knooppunten worden in docker-containers op één machine geplaatst. Vervolgens kunt u het benodigde selecteren configuraties testen en ontvang na de lancering een bestand met een rapport over de testresultaten. Een volledige lijst met Caliper-statistieken en benchmarkingaanpak vindt u hier Hyperledger Blockchain-prestatiestatistieken, dit is een geweldig artikel als je geïnteresseerd bent in het onderwerp blockchain-benchmarking. U kunt de verzameling van statistieken ook instellen in een aparte Prometheus/Grafana.

Hyperledger Caliper is een tool gericht op ontwikkelaars en systeemarchitecten, omdat het testherhaalbaarheid en automatisering van testen en benchmarking biedt. Het wordt gebruikt bij de ontwikkeling van de kern van blockchains: consensusalgoritmen, een virtuele machine voor het verwerken van slimme contracten, een peer-to-peer-laag en andere systeemmechanismen.

Een kort overzicht van tools voor het testen en benchmarken van Blockchain

MixBytes-tank is een hulpmiddel dat naar voren kwam tijdens het ontwikkelen van consensus- en finaliteitsalgoritmen voor op EOS gebaseerde netwerken en het testen van parachains op basis van Parity Substrate (Polkadot). Qua functionaliteit ligt het dicht bij Hyperledger Caliper, omdat je hiermee belangrijke statistieken kunt verzamelen van knooppunten van elk gedistribueerd systeem en clientmachines waarop testscripts worden uitgevoerd.

MixBytes Tank maakt gebruik van verschillende clouddiensten (Digital Ocean, Google Cloud Engine, enz.), waarin het veel knooppunten kan lanceren, voorbereidende configuratieprocedures kan uitvoeren, verschillende benchmarks parallel op verschillende machines kan uitvoeren, de nodige statistieken kan verzamelen en automatisch de netwerk.

Met MixBytes Tank kunt u geld besparen op cloudservers door na een test automatisch onnodige bronnen te minimaliseren. Een ander onderscheidend kenmerk is het gebruik van het Molecule-pakket, waarmee de ontwikkelaar de inzet van de gewenste blockchain lokaal kan testen.

Met MixBytes Tank kunt u knelpunten en fouten in algoritmen die zich voordoen in echte netwerken met een groot aantal geografisch verspreide servers en clients vroegtijdig detecteren. De tank helpt u te begrijpen wat er op de knooppunten zal gebeuren als klanten transacties met een bepaalde tps verzenden in zeer herhaalbare omstandigheden en indien nodig met een reëel aantal knooppunten verspreid over verschillende continenten.

Een kort overzicht van tools voor het testen en benchmarken van Blockchain

Whiteblock Genesis is een testplatform voor op Ethereum gebaseerde blockchains. Deze tool heeft een vrij brede functionaliteit: je kunt er een netwerk mee starten, er het vereiste aantal accounts in aanmaken, het vereiste aantal clients verhogen, de netwerktopologie configureren, de bandbreedte- en pakketverliesparameters specificeren en een test uitvoeren.

Whiteblock Genesis beschikt over eigen testfaciliteiten. Ontwikkelaars hoeven alleen maar testparameters op te geven, deze uit te voeren met behulp van een kant-en-klare API en resultaten te verkrijgen via een handig dashboard.

Met Whiteblock Genesis kunt u een vrij gedetailleerde test configureren die het platform automatisch uitvoert voor elke belangrijke codewijziging. Hierdoor kunt u fouten in een vroeg stadium onderkennen en onmiddellijk de impact van wijzigingen op belangrijke netwerkparameters beoordelen, zoals transactiesnelheid en bronnen die door knooppunten worden verbruikt.

Gek

Een ander interessant jong product voor het testen van gedistribueerde systemen is gek. Het is geschreven in Python en stelt u in staat de vereiste netwerktopologie en het vereiste aantal servers en clients te creëren met behulp van een eenvoudig configuratiescript (voorbeeld). Hierna implementeert de dienst het netwerk in verschillende Docker-containers en opent een webinterface waarin u berichten van servers en clients van het netwerk kunt bekijken. Madt kan worden gebruikt voor het testen van blockchains - de projectrepository beschikt over een p2p-netwerktest gebaseerd op het Kademlia-protocol, waarbij vertragingen bij het leveren van gegevens aan knooppunten geleidelijk worden vergroot en de status van deze gegevens wordt gecontroleerd.

Madt is pas recent verschenen, maar kan gezien de zeer flexibele architectuur uitgroeien tot een functioneel product.

Andere oplossingen

Bijna elke test van het systeemgedeelte van blockchains vereist het uitvoeren van voorlopige scripts, het voorbereiden van accounts en voorwaarden voor de test (dit kan het testen van consensusfouten zijn die talloze ketenvorken kunnen genereren, het testen van harde vorkscenario's, het wijzigen van systeemparameters, enz.). Al deze manipulaties worden in verschillende blockchains op verschillende manieren uitgevoerd, waardoor het voor teams gemakkelijker wordt om producttests en benchmarking geleidelijk aan te passen aan interne CI/CD en hun eigen ontwikkelingen te gebruiken, die geleidelijk complexer worden naarmate de functionaliteit van de blockchain zich ontwikkelt.

Toch kan het gebruik van kant-en-klare oplossingen de testtijd voor deze teams sterk verkorten, dus ik denk dat deze software de komende jaren actief ontwikkeld zal worden.

Conclusie

Ter afsluiting van dit korte overzicht zal ik een aantal belangrijke kenmerken van blockchain-testtools opsommen:

  • De mogelijkheid om automatisch een blockchain-netwerk in te zetten onder herhaalbare omstandigheden. Deze factor is belangrijk bij het ontwikkelen van systeemonderdelen van blockchains: consensusalgoritmen, finaliteit, slimme systeemcontracten.
  • De kosten van het bezit van het systeem, de verbruikte bronnen en het gemak van constant gebruik. Deze factor levert het project hoogwaardige tests op voor weinig geld.
  • Flexibiliteit en eenvoud van testconfiguratie. Deze factor vergroot de kans op het identificeren van systeemproblemen; er is minder kans dat u iets belangrijks mist.
  • Maatwerk voor specifieke soorten blockchains. Het ontwikkelen van een oplossing op basis van een bestaande oplossing kan de kwaliteit aanzienlijk verbeteren en de tijdskosten verlagen.
  • Gemak en toegankelijkheid van de verkregen resultaten en hun type (rapporten, statistieken, grafieken, logs, enz.). Dit is absoluut noodzakelijk als je de geschiedenis van de ontwikkeling van een product wilt volgen, of als je diepgaande analyses van het gedrag van het blockchain-netwerk nodig hebt.

Veel succes met het testen en moge uw blockchains snel en fouttolerant zijn!

Bron: www.habr.com

Voeg een reactie