En kort oversigt over Blockchain-test- og benchmarkingværktøjer

En kort oversigt over Blockchain-test- og benchmarkingværktøjer

I dag er løsninger til test og benchmarking af blockchains skræddersyet til en specifik blockchain eller dens gafler. Men der er også flere mere generelle løsninger, der adskiller sig i funktionalitet: nogle af dem er open source-projekter, andre leveres som SaaS, men de fleste er interne løsninger skabt af blockchain-udviklingsteamet. De løser dog alle lignende problemer. I denne artikel forsøgte jeg kort at gennemgå flere produkter designet specifikt til test af blockchains.

Driften af ​​et blockchain-netværk ligner driften af ​​en distribueret database, så lignende værktøjer og metoder kan bruges til test. For bedre at forstå, hvordan distribuerede databaser testes, kan du tage et kig på et godt udvalg af ressourcer og artikler dermed. For eksempel er latency sorteret i stykker i denne artiklen, og for at forstå, hvordan de ser efter fejl i replikeringsalgoritmer, anbefaler jeg at læse dette artikel.

Jeg vil beskrive flere populære løsninger til test og benchmarking af blockchains. Jeg ville være glad, hvis du i kommentarerne beskriver andre nyttige softwareprodukter til at løse de samme problemer.

En kort oversigt over Blockchain-test- og benchmarkingværktøjer

Jeg starter med et værktøj, der, selvom det ikke er skabt specifikt til blockchains, giver dig mulighed for effektivt at teste deres drift, forudsat at der er et allerede kørende netværk, som du kan eksperimentere på. Den vigtigste faktor i pålideligheden af ​​et distribueret system er evnen til at fortsætte med at arbejde i tilfælde af problemer med servere og netværk. Dette kan være netværksforsinkelser, diskfuldhed, utilgængelighed af eksterne tjenester (DNS), hardwarefejl og hundredvis af andre årsager. For at kontrollere stabiliteten af ​​ethvert system, der fungerer sammen på et stort antal systemmaskiner, kan du bruge Gremlin. Den bruger en ekstremt effektiv tilgang kaldet Chaos Engineering.

Ved at bruge sin egen netværksagent skaber Gremlin mange forskellige typer problemer på det nødvendige antal maskiner: netværkslags, overbelastning af enhver ressource (CPU, disk, hukommelse, netværk), deaktiverer individuelle protokoller osv. Til blockchains kan Gremlin bruges på testnet-servere, der emulerer virkelige problemer og observerer netværkets adfærd. Med den kan udviklere og administratorer i et kontrolleret miljø observere, hvad der vil ske, hvis systemet går ned, eller når koden opdateres. I dette tilfælde skal netværket konfigureres og implementeres på forhånd, samt konfigureres til at indsamle de nødvendige metrics.

Gremlin er et praktisk værktøj for arkitekter, devops og sikkerhedsspecialister og en universel løsning til at teste alle færdige og kørende distribuerede systemer, inklusive blockchains.

En kort oversigt over Blockchain-test- og benchmarkingværktøjer

Hyperledger Caliper er en meget mere specialiseret løsning Hyperledger caliper. I øjeblikket understøtter Caliper flere blockchains på én gang - repræsentanter for Hyperledger-familien (Fabric, Sawtooth, Iroha, Burrow, Besu) såvel som Ethereum og FISCO BCOS-netværket.

Ved hjælp af Caliper kan du indstille topologien for blockchain-netværket og kontrakter til test, samt beskrive konfigurationen af ​​noden. Blockchain-noder er rejst i docker-containere på én maskine. Dernæst kan du vælge det nødvendige test konfigurationer og modtage en fil med en rapport om testresultaterne efter lanceringen. En komplet liste over Caliper-metrics og benchmarking-tilgang kan findes her Hyperledger Blockchain Performance Metrics, dette er en fantastisk artikel, hvis du er interesseret i emnet blockchain benchmarking. Du kan også konfigurere metriksamling i en separat Prometheus/Grafana.

Hyperledger Caliper er et værktøj rettet mod udviklere og systemarkitekter, da det giver testrepeterbarhed og automatisering af test og benchmarking. Det bruges i udviklingen af ​​kernen af ​​blockchains: konsensusalgoritmer, en virtuel maskine til behandling af smarte kontrakter, et peer-to-peer-lag og andre systemmekanismer.

En kort oversigt over Blockchain-test- og benchmarkingværktøjer

MixBytes Tank er et værktøj, der opstod i processen med at udvikle konsensus- og finalitetsalgoritmer til EOS-baserede netværk og teste parachains baseret på Parity Substrate (Polkadot). Med hensyn til funktionalitet er det tæt på Hyperledger Caliper, da det giver dig mulighed for at indsamle vigtige metrics fra noder i ethvert distribueret system og klientmaskiner, som testscripts kører på.

MixBytes Tank bruger adskillige cloud-tjenester (Digital Ocean, Google Cloud Engine osv.), hvor den kan starte mange noder, udføre foreløbige konfigurationsprocedurer, køre flere benchmarks parallelt på forskellige maskiner, indsamle de nødvendige målinger og automatisk lukke ned for netværk.

MixBytes Tank giver dig mulighed for at spare penge på cloud-servere ved automatisk at minimere unødvendige ressourcer efter en test. Et andet karakteristisk træk er brugen af ​​Molecule-pakken, som giver udvikleren mulighed for at teste implementeringen af ​​den ønskede blockchain lokalt.

MixBytes Tank giver dig mulighed for tidligt at opdage flaskehalse og fejl i algoritmer, der opstår i rigtige netværk med et stort antal geografisk distribuerede servere og klienter. Tanken hjælper dig med at forstå, hvad der vil ske på noderne, hvis klienter sender transaktioner med en given tps under meget gentagelige forhold og med et reelt antal noder spredt over forskellige kontinenter, hvis det er nødvendigt.

En kort oversigt over Blockchain-test- og benchmarkingværktøjer

Whiteblock Genesis er en testplatform for Ethereum-baserede blockchains. Dette værktøj har en ganske bred funktionalitet: det giver dig mulighed for at starte et netværk, oprette det nødvendige antal konti i det, hæve det nødvendige antal klienter, konfigurere netværkstopologien, angive båndbredde- og pakketabsparametre og køre en test.

Whiteblock Genesis tilbyder sine egne testfaciliteter. Udviklere skal blot angive testparametre, køre dem ved hjælp af en færdiglavet API og få resultater ved hjælp af et praktisk dashboard.

Whiteblock Genesis giver dig mulighed for at konfigurere en ret detaljeret test, som platformen automatisk vil udføre for hver væsentlig kodeændring. Dette vil give dig mulighed for at fange fejl på et tidligt tidspunkt og straks vurdere virkningen af ​​ændringer på vigtige netværksparametre, såsom transaktionshastighed og ressourcer, der forbruges af noder.

Madt

Et andet interessant ungt produkt til test af distribuerede systemer er madt. Det er skrevet i Python og giver dig mulighed for at oprette den nødvendige netværkstopologi og det nødvendige antal servere og klienter ved hjælp af et simpelt konfigurationsscript (eksempel). Herefter implementerer tjenesten netværket i flere Docker-containere og åbner en webgrænseflade, hvor du kan observere beskeder fra servere og klienter på netværket. Madt kan bruges til at teste blockchains - projektlageret har en p2p netværkstest baseret på Kademlia protokollen, hvor forsinkelser i levering af data til noder gradvist øges, og status for disse data kontrolleres.

Madt er først dukket op for nylig, men med sin meget fleksible arkitektur kan den udvikle sig til et funktionelt produkt.

Andre løsninger

Næsten enhver test af systemdelen af ​​blockchains kræver kørsel af foreløbige scripts, forberedelse af konti og betingelser for testen (dette kan være test af konsensusfejl, der kan generere adskillige gafler af kæder, test af hard fork-scenarier, ændring af systemparametre osv.). Alle disse manipulationer udføres forskelligt i forskellige blockchains, så det er nemmere for teams gradvist at tilpasse produkttest og benchmarking til intern CI/CD og bruge deres egne udviklinger, som gradvist bliver mere komplekse i takt med, at funktionaliteten af ​​blockchain udvikler sig.

Alligevel kan brugen af ​​færdige løsninger reducere testtiden kraftigt for disse teams, så jeg tror, ​​at denne software vil blive aktivt udviklet i de kommende år.

Konklusion

For at afslutte denne korte anmeldelse vil jeg liste flere vigtige egenskaber ved blockchain-testværktøjer:

  • Evnen til automatisk at implementere et blockchain-netværk under gentagelige forhold. Denne faktor er vigtig, når man udvikler systemdele af blockchains: konsensusalgoritmer, endelighed, systemsmarte kontrakter.
  • Omkostningerne ved at eje systemet, de forbrugte ressourcer og bekvemmeligheden ved konstant brug. Denne faktor giver projektet test af høj kvalitet til få penge.
  • Fleksibilitet og enkelhed i testkonfigurationen. Denne faktor øger chancerne for at identificere systemproblemer - der er mindre chance for at gå glip af noget vigtigt.
  • Tilpasning til specifikke typer blockchains. At udvikle en løsning baseret på en eksisterende kan i høj grad forbedre kvaliteten og reducere tidsomkostningerne.
  • Bekvemmelighed og tilgængelighed af de opnåede resultater og deres type (rapporter, målinger, grafer, logfiler osv.). Dette er absolut nødvendigt, hvis du vil spore historien om et produkts udvikling, eller hvis du har brug for dybe analyser af blockchain-netværkets adfærd.

Held og lykke med din test, og må dine blockchains være hurtige og fejltolerante!

Kilde: www.habr.com

Tilføj en kommentar