Kort översikt av verktyg för testning och benchmarking av blockkedjor

Kort översikt av verktyg för testning och benchmarking av blockkedjor

Idag Ă€r lösningar för testning och benchmarkning av blockkedjor anpassade för en specifik blockkedja eller dess forkar. Men det finns ocksĂ„ nĂ„gra mer generella lösningar som skiljer sig Ă„t i funktionalitet: vissa av dem Ă€r öppen kĂ€llkod, medan andra tillhandahĂ„lls som SaaS, men de flesta Ă€r interna lösningar som skapas av blockkedjens utvecklingsteam. ÄndĂ„ har de alla liknande syften. I den hĂ€r artikeln kommer jag kort att gĂ„ igenom nĂ„gra produkter som sĂ€rskilt Ă€r inriktade pĂ„ testning av blockkedjor.

Arbetet i en blockkedjenÀtverk liknar arbetet i en distribuerad databas, dÀrför kan liknande verktyg och metoder anvÀndas för testning. För att bÀttre förstÄ hur man testar distribuerade databaser, ta en titt pÄ denna bra samling av resurser och artiklar. hÀrifrÄn. Till exempel, latency Àr noga granskad i denna. artikeln, och för att förstÄ hur man hittar buggar i replikationsalgoritmer, rekommenderar jag att bekanta sig med denna. artikeln.

Jag kommer att beskriva nÄgra populÀra lösningar för testning och benchmarkning av blockkedjor. Jag skulle vara glad om du i kommentarerna kunde beskriva andra anvÀndbara programvaror för att lösa samma problem.

Kort översikt av verktyg för testning och benchmarking av blockkedjor

Jag börjar med ett verktyg som inte Àr specifikt skapat för blockkedjor, men som gör det möjligt att effektivt testa deras funktionalitet under förutsÀttning att det redan finns ett driftsatt nÀtverk som kan anvÀndas för experiment. En avgörande faktor för tillförlitligheten hos ett distribuerat system Àr förmÄgan att fortsÀtta fungera vid problem med servrar och nÀtverk. Detta kan inkludera nÀtverkslatens, disköverbelastning, otillgÀngliga externa tjÀnster (DNS), hÄrdvarufel och hundratals andra orsaker. För att sÀkerstÀlla motstÄndskraften hos alla system som arbetar synkront pÄ mÄnga maskiner kan man anvÀnda Gremlin. Det anvÀnder en mycket effektiv metod kallad Chaos Engineering.

Med den egna nÀtverksagenten skapar Gremlin ett antal olika typer av problem pÄ ett antal maskiner: nÀtverkslaggar, överbelastning av resurser (CPU, disk, minne, nÀtverk), stÀnger av specifika protokoll, etc. För blockkedjor kan Gremlin anvÀndas pÄ servrar för testnÀtet, vilket emulerar verkliga problem och observerar nÀtverksbeteendet. Med hjÀlp av detta kan utvecklare och administratörer i en kontrollerad miljö se vad som hÀnder i systemet vid avbrott eller nÀr koden uppdateras. NÀtverket mÄste dock konfigureras och distribueras i förvÀg, samt stÀlla in insamlingen av nödvÀndiga mÀtvÀrden.

Gremlin Àr ett anvÀndarvÀnligt verktyg för arkitekter, DevOps och sÀkerhetsansvariga och en universell lösning för att testa alla fÀrdiga och igÄngsatta distribuerade system, inklusive blockkedjor.

Kort översikt av verktyg för testning och benchmarking av blockkedjor

Hyperledger Caliper Àr en mycket mer specialiserad lösning Hyperledger Caliper. För nÀrvarande stödjer Caliper flera blockkedjor frÄn Hyperledger-familjen (Fabric, Sawtooth, Iroha, Burrow, Besu), samt Ethereum och nÀtverket FISCO BCOS.

Med Caliper kan du ange blockkedjenÀtverkets toppologi och kontrakt för testning, liksom beskriva nodens konfiguration. Blockkedjenoder startas i docker-containrar pÄ en maskin. Du kan sedan vÀlja nödvÀndiga testkonfigurationer och fÄ en rapportfil om testresultaten efter körning. En fullstÀndig lista över Calipers mÀtvÀrden och tillvÀgagÄngssÀtt för benchmarking kan ses hÀr Hyperledger Blockchain Performance Metrics, detta Àr en utmÀrkt artikel om du Àr intresserad av Àmnet blockkedjebenchmarking. Dessutom kan insamlingen av mÀtvÀrden stÀllas in för separat Prometheus/Grafana.

Hyperledger Caliper Àr ett verktyg inriktat pÄ utvecklare och systemarkitekter, eftersom det möjliggör upprepbarhet i tester och automatisering av testning och benchmarking. Det anvÀnds vid utvecklingen av blockkedjors kÀrna: konsensusalgoritmer, virtuella maskiner för bearbetning av smarta kontrakt, peer-to-peer lager och andra systemmekanismer.

Kort översikt av verktyg för testning och benchmarking av blockkedjor

MixBytes Tank — ett verktyg som har uppkommit under utvecklingen av konsensus- och finalitetsalgoritmer för nĂ€tverk baserade pĂ„ EOS och testning av parachains baserade pĂ„ Parity Substrate (Polkadot). Funktionellt Ă€r det likt Hyperledger Caliper, eftersom det gör det möjligt att samla viktiga mĂ€tvĂ€rden frĂ„n noder i vilket distribuerat system som helst och frĂ„n klientmaskiner dĂ€r testskripten körs.

MixBytes Tank anvÀnder flera molntjÀnster (Digital Ocean, Google Cloud Engine med flera) dÀr den kan starta ett stort antal noder, genomföra nödvÀndiga konfigureringsprocedurer, parallellt köra flera benchmark-tester pÄ olika maskiner, samla in nödvÀndiga mÀtvÀrden och automatiskt stÀnga nÀtverket.

MixBytes Tank möjliggör kostnadseffektiv anvÀndning av medel för molnservrar genom att automatiskt stÀnga av onödiga resurser efter att testerna genomförts. En annan utmÀrkande egenskap Àr anvÀndningen av paketet Molecule, vilket tillÄter utvecklaren att testa driftsÀttning av den nödvÀndiga blockkedjan lokalt.

MixBytes Tank gör det möjligt att tidigt upptÀcka flaskhalsar och fel i algoritmer som uppstÄr i verkliga nÀtverk med ett stort antal geografiskt distribuerade servrar och klienter. Tanket hjÀlper dig att förstÄ vad som kommer att hÀnda pÄ noderna om klienter skickar transaktioner med en angiven tps under högrepetitiva förhÄllanden och med ett verkligt antal noder, spridda över olika kontinenter, om sÄ behövs.

Kort översikt av verktyg för testning och benchmarking av blockkedjor

Whiteblock Genesis Àr en plattform för testning av blockkedjor baserade pÄ Ethereum. Detta verktyg har en ganska bred funktionalitet: det gör det möjligt att starta ett nÀtverk, skapa det nödvÀndiga antalet konton, aktivera det önskade antalet klienter, konfigurera nÀtverkstopologin, ange parametrarna bandwidth, packetloss och starta tester.

Whiteblock Genesis tillhandahÄller egna resurser för att genomföra tester. Utvecklare behöver bara ange testparametrarna, starta dem med hjÀlp av det fÀrdiga API:t och fÄ resultaten via ett anvÀndarvÀnligt dashboard.

Whiteblock Genesis möjliggör konfigurering av ganska detaljerade tester som plattformen automatiskt kommer att utföra vid varje betydande Àndring av koden. Detta gör det möjligt att tidigt fÄnga fel och omedelbart bedöma pÄverkan av Àndringar pÄ viktiga nÀtverksparametrar, sÄsom hastigheten pÄ transaktionerna och resurserna som noderna anvÀnder.

Madt

En annan intressant ung produkt för testning av distribuerade system — madt. Den Ă€r skriven i Python och gör det möjligt att skapa den nödvĂ€ndiga nĂ€tverkstopologin och det önskade antalet servrar och klienter med hjĂ€lp av ett enkelt konfigurationsscript (exempel). DĂ€refter distribuerar tjĂ€nsten nĂ€tverket i flera dockercontainrar och startar ett webbgrĂ€nssnitt dĂ€r man kan övervaka meddelanden frĂ„n servrarna och klienterna i nĂ€tverket. Madt kan anvĂ€ndas för testning av blockkedjor — i projektets repository finns ett test av p2p-nĂ€tverket baserat pĂ„ Kademlia-protokollet, dĂ€r fördröjningar vid överföring av data till noderna gradvis ökar och statusen för dessa data kontrolleras.

Madt dyker upp nyligen, men med tanke pÄ den mycket flexibla arkitekturen kan det utvecklas till en funktionell produkt.

Andra lösningar

NÀstan all testning av systemdelen av blockkedjor krÀver att man kör förberedande scenarier, förbereder konton och villkor för testet (detta kan innebÀra testning av konsensusfel som kan leda till mÄnga gafflar av kedjor, bearbetning av hÄrd gaffelscenarier, förÀndringar av systemparametrar osv.). Alla dessa manipulationer görs pÄ olika sÀtt i olika blockkedjor, sÄ det Àr lÀttare för teamen att gradvis anpassa testning och benchmarking av produkten till den interna CI/CD och anvÀnda sina egna utvecklingar, som gradvis blir mer komplexa i takt med att blockkedjans funktionalitet vÀxer.

ÄndĂ„ kan anvĂ€ndning av fĂ€rdiga lösningar betydligt förkorta dessa teamens tid för testning, sĂ„ jag tror att denna mjukvara kommer att utvecklas aktivt under de kommande Ă„ren.

Slutsats

Avslutningsvis, i denna korta översikt, ska jag nÀmna nÄgra viktiga egenskaper hos verktyg för testning av blockkedjor:

  • Möjlighet till automatisk distribution av blockkedjenĂ€tet under upprepade förhĂ„llanden. Denna faktor Ă€r viktig vid utvecklingen av systemdelar av blockkedjor: konsensusalgoritmer, slutgiltighet, system-smartkontrakt.
  • Ägandekostnaden för systemet, resursförbrukningen och anvĂ€ndarvĂ€nligheten för kontinuerlig anvĂ€ndning. Denna faktor ger projektet högkvalitativa tester till ett lĂ„gt pris.
  • Flexibilitet och enkelhet i konfiguration av tester. Denna faktor ökar chansen att upptĂ€cka problem i systemet — minskar risken att missa nĂ„got viktigt.
  • Anpassning för specifika typer av blockkedjor. Utvecklingen av en lösning baserad pĂ„ befintliga alternativ kan avsevĂ€rt förbĂ€ttra kvaliteten och minska tidskostnaderna.
  • BekvĂ€mligheten och tillgĂ€ngligheten av de erhĂ„llna resultaten samt deras typ (rapporter, mĂ€tvĂ€rden, diagram, loggar, etc.). Det Ă€r helt nödvĂ€ndigt om du vill följa produktens utvecklingshistoria, eller om du behöver djupgĂ„ende analys av blockkedjenĂ€tets beteende.

Lycka till med testningen och mÄ era blockkedjor vara snabba och motstÄndskraftiga!

KĂ€lla: habr.com

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster