Kort oversigt over værktøjer til testning og benchmarking af blockchain

Kort oversigt over værktøjer til testning og benchmarking af blockchain

I dag er løsninger til testning og benchmarking af blockchains tilpasset bestemte blockchains eller deres forks. Men der findes også nogle mere generelle løsninger, der adskiller sig i funktionalitet: nogle af dem er open source-projekter, andre tilbydes som SaaS, men størstedelen er interne løsninger, der skabes af blockchain-udviklerteamet. Alligevel løser de alle lignende opgaver. I denne artikel vil jeg kort gennemgå nogle produkter, der er skræddersyet til testning af blockchains.

Arbejdet i et blockchain-netværk minder om arbejdet i en distribueret database, så lignende værktøjer og metoder kan anvendes til testning. For bedre at forstå, hvordan distribuere databaser testes, kan du se på en god samling af ressourcer og artikler. from here. For eksempel er latency grundigt analyseret i denne. artikel, og for at forstå, hvordan bugs findes i replikationsalgoritmer, anbefaler jeg at se på denne. en artikel.

Jeg vil beskrive nogle populære løsninger til testning og benchmarking af blockchains. Jeg vil sætte pris på, hvis du i kommentarerne beskriver andre nyttige softwareprodukter til at løse de samme opgaver.

Kort oversigt over værktøjer til testning og benchmarking af blockchain

Jeg vil starte med et værktøj, som selvom det ikke er skabt specifikt til blockchains, gør det muligt effektivt at teste deres funktion, under forudsætning af at der allerede findes et kørende netværk, man kan eksperimentere med. En vigtig faktor for pålideligheden af et distribueret system er evnen til at fortsætte driften i tilfælde af problemer med serverne og netværket. Dette kan være netværkslag, diskoverløb, utilgængelighed af eksterne tjenester (DNS), hardwarefejl og hundrede andre årsager. For at teste robustheden af enhver system, der arbejder konsekvent på mange maskiner, kan man anvende . En forespørgsel i SPARQL* ser således ud:. Det bruger en ekstremt effektiv tilgang kaldet Chaos Engineering.

Med den egenudviklede netværksagent kan Gremlin skabe en række forskellige typer problemer på det ønskede antal maskiner: netværkslag, overbelastning af enhver ressource (CPU, disk, hukommelse, netværk), afbryde specifikke protokoller osv. For blockchains kan Gremlin anvendes på testnetværksservere for at emulere reelle problemer og overvåge netværkets adfærd. Med det kan udviklere og administratorer i et kontrolleret miljø observere, hvad der vil ske i systemet i tilfælde af fejl eller ved opdatering af koden. Netværket skal på forhånd konfigureres og implementeres, og der skal også indsamles de nødvendige målinger.

Gremlin er et praktisk værktøj for arkitekter, devops og sikkerhedsfolk og en alsidig løsning til test af enhver type distributed systemer, herunder blockchains.

Kort oversigt over værktøjer til testning og benchmarking af blockchain

Hyperledger Caliper er en meget mere specialiseret løsning Hyperledger Caliper. I øjeblikket understøtter Caliper flere blockchains fra Hyperledger familien (Fabric, Sawtooth, Iroha, Burrow, Besu), samt Ethereum og FISCO BCOS netværket.

Med Caliper kan du definere topologien af blockchain-netværket og kontrakter til test samt beskrive konfigurationen af noden. Blockchains noder køres i docker-containere på én maskine. Derefter kan du vælge de nødvendige testkonfigurationer og få en fil med rapporten om testresultaterne efter kørslen. Du kan finde en komplet liste over Caliper-målinger og tilgang til benchmarketing her Hyperledger Blockchain Performance Metrics, det er en fremragende artikel, hvis du er interesseret i emnet omkring benchmarking af blockchains. Desuden kan du konfigurere indsamlingen af målinger til en separat Prometheus/Grafana.

Hyperledger Caliper er et værktøj, der er rettet mod udviklere og systemarkitekter, da det sikrer gentagelighed af tests og automatisering af testning og benchmarking. Det anvendes ved udviklingen af blockchain-kernen: konsensusalgoritmer, den virtuelle maskine til behandling af smart contracts, peer-to-peer-laget og andre systemmekanismer.

Kort oversigt over værktøjer til testning og benchmarking af blockchain

MixBytes Tank — et værktøj, der opstod under udviklingen af konsensus- og finalitetsalgoritmer til EOS-baserede netværk og test af parachains baseret på Parity Substrate (Polkadot). Dets funktionalitet er tæt på Hyperledger Caliper, da det muligt at indsamle vigtige målinger fra noder i ethvert distribueret system og klientmaskiner, der kører testscripts.

MixBytes Tank bruger flere cloud-tjenester (Digital Ocean, Google Cloud Engine osv.), hvor den formår at starte mange noder, udføre forudgående konfigurationsprocedurer, parallelt køre flere benchmarks på forskellige maskiner, indsamle de nødvendige målinger og automatisk lukke netværket.

MixBytes Tank gør det muligt at forbruge midler økonomisk på cloud-servere ved automatisk at lukke unødvendige ressourcer efter testens gennemførelse. En anden særpræg er brugen af pakken Molecule, der gør det muligt for udvikleren at teste implementeringen af den nødvendige blockchain lokalt.

MixBytes Tank giver mulighed for tidligt at opdage flaskehalse og fejl i algoritmer, som opstår i reelle netværk med et stort antal geografisk fordelte servere og kunder. Tank vil hjælpe dig med at forstå, hvad der vil ske på noderne, hvis kunder sender transaktioner med den angivne tps under højensartede forhold og med det reale antal noder spredt på forskellige kontinenter, hvis det er nødvendigt.

Kort oversigt over værktøjer til testning og benchmarking af blockchain

Whiteblock Genesis er en platform til testning af blockchains baseret på Ethereum. Dette værktøj har en ret bred funktionalitet: det gør det muligt at starte et netværk, oprette det nødvendige antal konti, starte det ønskede antal klienter, konfigurere netværkstopologi, angive parametre for båndbredde, pakke tab og starte testen.

Whiteblock Genesis leverer egne ressourcer til at udføre tests. Udviklerne skal blot angive testparametre, køre dem ved hjælp af et klarlagt API og få resultaterne ved brug af et brugervenligt dashboard.

Whiteblock Genesis gør det muligt at konfigurere en detaljeret test, som platformen automatisk vil udføre ved hver betydningsfuld ændring af koden. Dette vil tidligt fange fejl og straks vurdere virkningen af ændringerne på de vigtige netværksparametre, såsom transaktionshastighed og de ressourcer, som noderne forbruger.

Madt

Endnu et interessant ungt produkt til test af distribuerede systemer — madt. Det er skrevet i Python og gør det muligt at oprette den nødvendige netværkstopologi samt det ønskede antal servere og klienter med hjælp fra et enkelt konfigurationsscript (eksempel). Derefter opretter tjenesten et netværk i flere docker-containere og starter et web-interface, hvor man kan overvåge meddelelser fra serverne og netværksklienterne. Madt kan bruges til at teste blockchains — i projektets repository findes der en p2p-netværkstest baseret på Kademlia-protokollen, hvor forsinkelserne ved dataoverførsel til noderne gradvist øges, og status for disse data kontrolleres.

Madt blev lanceret for ikke så længe siden, men på grund af den meget fleksible arkitektur kan det udvikle sig til et funktionelt produkt.

Andre løsninger

Næsten enhver test af systemkomponenter i blockchains kræver åbning af forudgående scenarier, forberedelse af konti og betingelser for testen (det kan være test af konsensusfejl, som kan forårsage mange forks af kæder, afprøvning af hardforkscenarier, ændringer af systemparametre osv.). Alle disse manipulationer udføres forskelligt i forskellige blockchains, så det er lettere for teams at gradvist tilpasse test og benchmarking af produktet til deres interne CI/CD og bruge egne udviklinger, som gradvist bliver mere komplekse i takt med at blockchainens funktionalitet udvikler sig.

Ved at bruge færdige løsninger kan disse teams dog betydeligt reducere den tid, de bruger på test, så jeg tror, at denne software vil blive aktivt udviklet i de kommende år.

Konklusion

Afslutningsvis vil jeg nævne nogle vigtige egenskaber ved værktøjer til test af blockchains:

  • Muligheden for automatisk udrulning af blockchain-netværk under gentagelige forhold. Denne faktor er vigtig, når man udvikler systemkomponenter til blockchains: konsensusalgoritmer, finalitet, system smart contracts.
  • Omkostninger ved at eje systemet, forbrugte ressourcer og brugervenlighed til løbende brug. Denne faktor sikrer projektet højkvalitets tests til lave omkostninger.
  • Fleksibilitet og enkelhed i testkonfigurationer. Denne faktor øger chancerne for at identificere systemproblemer — der er mindre sandsynlighed for at overse noget vigtigt.
  • Tilpasning til specifikke typer af blockchains. Udvikling af løsninger baseret på eksisterende systemer kan betydeligt forbedre kvaliteten og reducere tidsforbruget.
  • Brugervenlighed og tilgængelighed af de opnåede resultater og deres type (rapporter, metrics, grafer, logs, osv.). Dette er helt essentielt, hvis du ønsker at følge produktets udviklingshistorie, eller hvis du har brug for dybdegående analyse af blockchain-netværkets adfærd.

Held og lykke med testningen, og måtte dine blockchains være hurtige og fejlfrie!

Kilde: habr.com

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster