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
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.
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
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.
Hyperledger Caliper er en meget mere specialiseret løsning
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
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.
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.
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 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