En kort översikt av Blockchain-testnings- och benchmarkingverktyg

En kort översikt av Blockchain-testnings- och benchmarkingverktyg

Idag är lösningar för att testa och benchmarka blockkedjor skräddarsydda för en specifik blockkedja eller dess gafflar. Men det finns också flera mer generella lösningar som skiljer sig åt i funktionalitet: några av dem är projekt med öppen källkod, andra tillhandahålls som SaaS, men de flesta är interna lösningar skapade av blockchain-utvecklingsteamet. Men de löser alla liknande problem. I den här artikeln försökte jag kortfattat granska flera produkter designade specifikt för att testa blockkedjor.

Driften av ett blockchain-nätverk liknar driften av en distribuerad databas, så liknande verktyg och metoder kan användas för testning. För att bättre förstå hur distribuerade databaser testas, ta en titt på ett bra urval av resurser och artiklar hence. Till exempel sorteras latens i bitar i detta artikeln, och för att förstå hur de letar efter buggar i replikeringsalgoritmer rekommenderar jag att du läser detta artiklar.

Jag kommer att beskriva flera populära lösningar för att testa och benchmarka blockkedjor. Jag skulle bli glad om du i kommentarerna beskriver andra användbara mjukvaruprodukter för att lösa samma problem.

En kort översikt av Blockchain-testnings- och benchmarkingverktyg

Jag börjar med ett verktyg som, även om det inte skapats specifikt för blockkedjor, låter dig effektivt testa deras funktion, förutsatt att det finns ett redan kört nätverk som du kan experimentera på. Den viktigaste faktorn för tillförlitligheten hos ett distribuerat system är möjligheten att fortsätta arbeta vid problem med servrar och nätverk. Detta kan vara nätverksfördröjningar, diskfullhet, otillgänglighet för externa tjänster (DNS), hårdvarufel och hundratals andra orsaker. För att kontrollera stabiliteten hos alla system som fungerar tillsammans på ett stort antal systemmaskiner kan du använda Gremlin. Den använder en extremt effektiv metod som kallas Chaos Engineering.

Med sin egen nätverksagent skapar Gremlin många olika typer av problem på det erforderliga antalet maskiner: nätverksfördröjningar, överbelastning av någon resurs (CPU, disk, minne, nätverk), inaktiverar individuella protokoll, etc. För blockkedjor kan Gremlin användas på testnätservrar, emulera verkliga problem och observera nätverkets beteende. Med den kan utvecklare och administratörer i en kontrollerad miljö observera vad som händer om systemet kraschar eller när koden uppdateras. I det här fallet måste nätverket konfigureras och distribueras i förväg, samt konfigureras för att samla in nödvändiga mätvärden.

Gremlin är ett bekvämt verktyg för arkitekter, devops och säkerhetsspecialister och en universell lösning för att testa alla färdiga och köra distribuerade system, inklusive blockkedjor.

En kort översikt av Blockchain-testnings- och benchmarkingverktyg

Hyperledger Caliper är en mycket mer specialiserad lösning Hyperledger skjutmått. För tillfället stöder Caliper flera blockkedjor samtidigt - representanter för Hyperledger-familjen (Fabric, Sawtooth, Iroha, Burrow, Besu), såväl som Ethereum och FISCO BCOS-nätverket.

Med hjälp av Caliper kan du ställa in topologin för blockchain-nätverket och kontrakt för testning, samt beskriva nodens konfiguration. Blockkedjenoder höjs i hamnarcontainrar på en maskin. Därefter kan du välja det nödvändiga testkonfigurationer och få en fil med en rapport om testresultaten efter lanseringen. En fullständig lista över mätvärden för skjutmått och benchmarking-metoder finns här Hyperledger Blockchain Performance Metrics, det här är en bra artikel om du är intresserad av ämnet blockchain benchmarking. Du kan också ställa in metrikinsamling i en separat Prometheus/Grafana.

Hyperledger Caliper är ett verktyg riktat till utvecklare och systemarkitekter, eftersom det ger testrepeterbarhet och automatisering av testning och benchmarking. Det används i utvecklingen av kärnan i blockkedjor: konsensusalgoritmer, en virtuell maskin för att bearbeta smarta kontrakt, ett peer-to-peer-lager och andra systemmekanismer.

En kort översikt av Blockchain-testnings- och benchmarkingverktyg

MixBytes Tank är ett verktyg som växte fram i processen att utveckla konsensus- och finalitetsalgoritmer för EOS-baserade nätverk och testa parakedjor baserade på Parity Substrate (Polkadot). När det gäller funktionalitet ligger det nära Hyperledger Caliper, eftersom det låter dig samla in viktiga mätvärden från noder i alla distribuerade system och klientmaskiner på vilka testskript körs.

MixBytes Tank använder flera molntjänster (Digital Ocean, Google Cloud Engine, etc.), där den kan starta många noder, utföra preliminära konfigurationsprocedurer, köra flera benchmarks parallellt på olika maskiner, samla in nödvändiga mätvärden och automatiskt stänga av nätverk.

MixBytes Tank låter dig spara pengar på molnservrar genom att automatiskt minimera onödiga resurser efter ett test. En annan utmärkande egenskap är användningen av Molecule-paketet, vilket gör att utvecklaren kan testa utplaceringen av den önskade blockkedjan lokalt.

MixBytes Tank låter dig tidigt upptäcka flaskhalsar och fel i algoritmer som uppstår i riktiga nätverk med ett stort antal geografiskt distribuerade servrar och klienter. Tanken hjälper dig att förstå vad som kommer att hända på noderna om klienter skickar transaktioner med en given tps under mycket repeterbara förhållanden och med ett reellt antal noder spridda över olika kontinenter, om det behövs.

En kort översikt av Blockchain-testnings- och benchmarkingverktyg

Whiteblock Genesis är en testplattform för Ethereum-baserade blockkedjor. Det här verktyget har en ganska bred funktionalitet: det låter dig starta ett nätverk, skapa det erforderliga antalet konton i det, öka det erforderliga antalet klienter, konfigurera nätverkstopologin, ange parametrar för bandbredd och paketförlust och köra ett test.

Whiteblock Genesis tillhandahåller sina egna testfaciliteter. Utvecklare behöver bara specificera testparametrar, köra dem med ett färdigt API och få resultat med hjälp av en bekväm instrumentpanel.

Whiteblock Genesis låter dig konfigurera ett ganska detaljerat test som plattformen automatiskt kommer att utföra för varje betydande kodändring. Detta gör att du kan fånga fel i ett tidigt skede och omedelbart utvärdera effekterna av ändringar på viktiga nätverksparametrar, såsom transaktionshastighet och resurser som förbrukas av noder.

Madt

En annan intressant ung produkt för att testa distribuerade system är madt. Det är skrivet i Python och låter dig skapa den nödvändiga nätverkstopologin och det erforderliga antalet servrar och klienter med hjälp av ett enkelt konfigurationsskript (exempel). Efter detta distribuerar tjänsten nätverket i flera Docker-behållare och öppnar ett webbgränssnitt där du kan observera meddelanden från servrar och klienter i nätverket. Madt kan användas för att testa blockkedjor - projektförrådet har ett p2p-nätverkstest baserat på Kademlia-protokollet, där förseningar i leverans av data till noder gradvis ökas och statusen för denna data kontrolleras.

Madt har nyligen dykt upp, men med sin mycket flexibla arkitektur kan den utvecklas till en funktionell produkt.

Andra lösningar

Nästan alla tester av systemdelen av blockkedjor kräver att man kör preliminära skript, förbereder konton och villkor för testet (detta kan vara att testa konsensusfel som kan generera många kedjekedjor, testa hårdgaffelscenarier, ändra systemparametrar, etc.). Alla dessa manipulationer utförs olika i olika blockkedjor, så det är lättare för team att gradvis anpassa produkttestning och benchmarking till intern CI/CD och använda sina egna utvecklingar, som gradvis blir mer komplexa i takt med att funktionaliteten i blockkedjan utvecklas.

Ändå kan användningen av färdiga lösningar avsevärt minska testtiden för dessa team, så jag tror att denna mjukvara kommer att utvecklas aktivt under de kommande åren.

Slutsats

För att avsluta denna korta recension kommer jag att lista flera viktiga egenskaper hos blockchain-testverktyg:

  • Möjligheten att automatiskt distribuera ett blockchain-nätverk under repeterbara förhållanden. Denna faktor är viktig när man utvecklar systemdelar av blockkedjor: konsensusalgoritmer, finalitet, systemsmarta kontrakt.
  • Kostnaden för att äga systemet, de resurser som förbrukas och bekvämligheten för konstant användning. Denna faktor ger projektet högkvalitativa tester för små pengar.
  • Flexibilitet och enkelhet i testkonfigurationen. Denna faktor ökar chanserna att identifiera systemproblem – det är mindre chans att missa något viktigt.
  • Anpassning för specifika typer av blockkedjor. Att utveckla en lösning baserad på en befintlig kan avsevärt förbättra kvaliteten och minska tidskostnaderna.
  • Bekvämlighet och tillgänglighet för de erhållna resultaten och deras typ (rapporter, mätvärden, grafer, loggar, etc.). Detta är absolut nödvändigt om du vill spåra historien om en produkts utveckling, eller om du behöver djupgående analyser av beteendet hos blockchain-nätverket.

Lycka till med ditt testande och må dina blockkedjor vara snabba och feltoleranta!

Källa: will.com

Lägg en kommentar