Danes so rešitve za testiranje in primerjalno analizo verig blokov prilagojene določeni verigi blokov ali njenim forkom. Obstaja pa tudi več bolj splošnih rešitev, ki se razlikujejo po funkcionalnosti: nekatere med njimi so odprtokodni projekti, druge so na voljo kot SaaS, večina pa je internih rešitev, ki jih je ustvarila skupina za razvoj blockchaina. Vendar pa vsi rešujejo podobne težave. V tem članku sem poskušal na kratko pregledati več izdelkov, zasnovanih posebej za testiranje verig blokov.
Delovanje omrežja blockchain je podobno delovanju porazdeljene baze podatkov, zato se lahko za testiranje uporabljajo podobna orodja in metode. Če želite bolje razumeti, kako se testirajo porazdeljene baze podatkov, si oglejte dober izbor virov in člankov
Opisal bom več priljubljenih rešitev za testiranje in primerjalno analizo verig blokov. Vesel bi bil, če bi v komentarjih opisali druge uporabne programske izdelke za reševanje istih težav.
Začel bom z orodjem, ki vam, čeprav ni ustvarjeno posebej za verige blokov, omogoča učinkovito testiranje njihovega delovanja, pod pogojem, da že obstaja delujoče omrežje, na katerem lahko eksperimentirate. Najpomembnejši dejavnik pri zanesljivosti porazdeljenega sistema je zmožnost nadaljnjega delovanja v primeru težav s strežniki in omrežjem. To so lahko zaostanki v omrežju, polnost diska, nedostopnost zunanjih storitev (DNS), okvare strojne opreme in na stotine drugih razlogov. Če želite preveriti stabilnost vseh sistemov, ki delujejo usklajeno na velikem številu sistemskih strojev, lahko uporabite
Z uporabo lastnega omrežnega agenta Gremlin ustvari veliko različnih vrst težav na zahtevanem številu strojev: omrežne zakasnitve, preobremenitev katerega koli vira (CPE, disk, pomnilnik, omrežje), onemogoči posamezne protokole itd. Za verige blokov se lahko Gremlin uporablja na strežnikih testne mreže, posnema težave v resničnem življenju in opazuje vedenje omrežja. Z njim lahko razvijalci in skrbniki v nadzorovanem okolju opazujejo, kaj se bo zgodilo, če se sistem zruši ali ko se posodobi koda. V tem primeru mora biti omrežje vnaprej konfigurirano in uvedeno ter konfigurirano za zbiranje potrebnih meritev.
Gremlin je priročno orodje za arhitekte, devops in varnostne strokovnjake ter univerzalna rešitev za testiranje vseh že pripravljenih in delujočih porazdeljenih sistemov, vključno z verigami blokov.
Hyperledger Caliper je veliko bolj specializirana rešitev
Z uporabo Caliperja lahko nastavite topologijo omrežja blockchain in pogodbe za testiranje ter opišete konfiguracijo vozlišča. Vozlišča verige blokov so dvignjena v docker vsebnikih na enem stroju. Nato lahko izberete potrebno
Hyperledger Caliper je orodje namenjeno razvijalcem in sistemskim arhitektom, saj zagotavlja ponovljivost testov ter avtomatizacijo testiranja in primerjalnega testiranja. Uporablja se pri razvoju jedra verig blokov: konsenznih algoritmov, virtualnega stroja za obdelavo pametnih pogodb, ravni enakovrednih in drugih sistemskih mehanizmov.
MixBytes Tank uporablja več storitev v oblaku (Digital Ocean, Google Cloud Engine itd.), v katerih lahko zažene številna vozlišča, izvede predhodne konfiguracijske postopke, izvaja več primerjalnih testov vzporedno na različnih napravah, zbira potrebne meritve in samodejno zaustavi omrežje.
MixBytes Tank vam omogoča, da prihranite denar na strežnikih v oblaku s samodejnim zmanjšanjem nepotrebnih virov po preizkusu. Druga posebnost je uporaba paketa Molecule, ki razvijalcu omogoča lokalno testiranje uvedbe želene verige blokov.
MixBytes Tank vam omogoča zgodnje odkrivanje ozkih grl in napak v algoritmih, ki se pojavljajo v realnih omrežjih z velikim številom geografsko porazdeljenih strežnikov in odjemalcev. Rezervoar vam bo pomagal razumeti, kaj se bo zgodilo na vozliščih, če odjemalci pošiljajo transakcije z danim tps v zelo ponovljivih pogojih in z dejanskim številom vozlišč, razpršenih po različnih celinah, če je potrebno.
Whiteblock Genesis je platforma za testiranje blokovnih verig, ki temeljijo na Ethereumu. To orodje ima precej široko funkcionalnost: omogoča vam, da zaženete omrežje, ustvarite zahtevano število računov v njem, povečate zahtevano število odjemalcev, konfigurirate topologijo omrežja, določite parametre pasovne širine in izgube paketov ter izvedete test.
Whiteblock Genesis ponuja lastne zmogljivosti za testiranje. Razvijalci morajo samo določiti testne parametre, jih zagnati z že pripravljenim API-jem in dobiti rezultate s priročno nadzorno ploščo.
Whiteblock Genesis vam omogoča, da konfigurirate dokaj podroben test, ki ga bo platforma samodejno izvedla za vsako pomembno spremembo kode. To vam bo omogočilo, da ujamete napake v zgodnji fazi in takoj ocenite vpliv sprememb na pomembne parametre omrežja, kot so hitrost transakcij in viri, ki jih porabijo vozlišča.
Madt
Še en zanimiv mlad izdelek za testiranje porazdeljenih sistemov je
Madt se je pojavil šele pred kratkim, vendar se lahko glede na zelo prilagodljivo arhitekturo razvije v funkcionalen izdelek.
Druge rešitve
Skoraj vsako testiranje sistemskega dela verig blokov zahteva izvajanje predhodnih skriptov, pripravo računov in pogojev za test (to je lahko testiranje konsenznih napak, ki lahko ustvarijo številne razcepe verig, testiranje scenarijev hard fork, spreminjanje sistemskih parametrov itd.). Vse te manipulacije se v različnih verigah blokov izvajajo različno, zato je ekipam lažje postopoma prilagoditi testiranje izdelkov in primerjalno analizo internemu CI/CD ter uporabiti lasten razvoj, ki z razvojem funkcionalnosti verige blokov postopoma postane kompleksnejši.
Kljub temu lahko uporaba že pripravljenih rešitev močno skrajša čas testiranja za te ekipe, zato menim, da se bo ta programska oprema aktivno razvijala v naslednjih letih.
Zaključek
Za zaključek tega kratkega pregleda bom naštel nekaj pomembnih značilnosti orodij za testiranje blockchaina:
- Možnost samodejne postavitve omrežja blockchain v ponovljivih pogojih. Ta dejavnik je pomemben pri razvoju sistemskih delov verig blokov: algoritmi soglasja, dokončnost, sistemske pametne pogodbe.
- Stroški lastništva sistema, porabljeni viri in udobje stalne uporabe. Ta dejavnik zagotavlja projektu visokokakovostne teste za malo denarja.
- Fleksibilnost in enostavnost testne konfiguracije. Ta dejavnik poveča možnosti za odkrivanje sistemskih težav – manj je možnosti, da bi kaj pomembnega spregledali.
- Prilagajanje za posebne vrste verig blokov. Razvoj rešitve na podlagi obstoječe lahko močno izboljša kakovost in zmanjša časovne stroške.
- Priročnost in dostopnost dobljenih rezultatov in njihove vrste (poročila, metrike, grafi, dnevniki itd.). To je nujno potrebno, če želite slediti zgodovini razvoja izdelka ali če potrebujete globoko analitiko obnašanja omrežja blockchain.
Vso srečo pri testiranju in naj bodo vaše verige blokov hitre in odporne na napake!
Vir: www.habr.com