Danas su rješenja za testiranje i benchmarking blockchaina prilagođena određenom blockchainu ili njegovim forkovima. Ali postoji i nekoliko općenitijih rješenja koja se razlikuju po funkcionalnosti: neka od njih su projekti otvorenog koda, druga se pružaju kao SaaS, ali većina su interna rješenja koja je izradio tim za razvoj blockchaina. Međutim, svi oni rješavaju slične probleme. U ovom sam članku pokušao ukratko prikazati nekoliko proizvoda dizajniranih posebno za testiranje blockchaina.
Rad blockchain mreže nalikuje radu distribuirane baze podataka, pa se za testiranje mogu koristiti slični alati i metode. Da biste bolje razumjeli kako se testiraju distribuirane baze podataka, pogledajte dobar izbor izvora i članaka
Opisat ću nekoliko popularnih rješenja za testiranje i benchmarking blockchaina. Bilo bi mi drago ako u komentarima opišete druge korisne softverske proizvode za rješavanje istih problema.
Započet ću s alatom koji vam, iako nije kreiran posebno za blockchaine, omogućuje učinkovito testiranje njihovog rada pod uvjetom da već postoji pokrenuta mreža na kojoj možete eksperimentirati. Najvažniji čimbenik pouzdanosti distribuiranog sustava je mogućnost nastavka rada u slučaju problema s poslužiteljima i mrežom. To mogu biti mrežni zastoji, popunjenost diska, nedostupnost vanjskih usluga (DNS), hardverski kvarovi i stotine drugih razloga. Za provjeru stabilnosti bilo kojeg sustava koji radi zajedno na velikom broju strojeva sustava, možete koristiti
Koristeći vlastiti mrežni agent, Gremlin stvara mnoge različite vrste problema na potrebnom broju strojeva: mrežne kašnjenja, preopterećenje bilo kojeg resursa (CPU, disk, memorija, mreža), onemogućuje pojedinačne protokole itd. Za blockchaine, Gremlin se može koristiti na testnet poslužiteljima, emulirajući probleme iz stvarnog života i promatrajući ponašanje mreže. S njim programeri i administratori mogu promatrati u kontroliranom okruženju što će se dogoditi ako se sustav sruši ili kada se kod ažurira. U tom slučaju, mreža mora biti konfigurirana i postavljena unaprijed, kao i konfigurirana za prikupljanje potrebnih metrika.
Gremlin je prikladan alat za arhitekte, devops i sigurnosne stručnjake te univerzalno rješenje za testiranje bilo kojih gotovih i pokrenutih distribuiranih sustava, uključujući blockchaine.
Hyperledger Caliper puno je specijaliziranije rješenje
Pomoću Calipera možete postaviti topologiju blockchain mreže i ugovore za testiranje, kao i opisati konfiguraciju čvora. Blockchain čvorovi se podižu u docker spremnicima na jednom stroju. Zatim možete odabrati ono što je potrebno
Hyperledger Caliper je alat namijenjen programerima i sistemskim arhitektima, jer pruža ponovljivost testa i automatizaciju testiranja i benchmarkinga. Koristi se u razvoju jezgre blockchaina: algoritama konsenzusa, virtualnog stroja za obradu pametnih ugovora, peer-to-peer sloja i drugih mehanizama sustava.
MixBytes Tank koristi nekoliko usluga u oblaku (Digital Ocean, Google Cloud Engine, itd.), u kojima može pokrenuti mnoge čvorove, provesti preliminarne konfiguracijske procedure, pokrenuti nekoliko usporednih testova paralelno na različitim strojevima, prikupiti potrebne metrike i automatski isključiti mreža.
MixBytes Tank vam omogućuje uštedu novca na poslužiteljima u oblaku automatskim smanjivanjem nepotrebnih resursa nakon testa. Još jedna posebna značajka je korištenje paketa Molecule, koji razvojnom programeru omogućuje lokalno testiranje implementacije željenog blockchaina.
MixBytes Tank omogućuje rano otkrivanje uskih grla i pogrešaka u algoritmima koji se javljaju u stvarnim mrežama s velikim brojem geografski raspoređenih poslužitelja i klijenata. Spremnik će vam pomoći razumjeti što će se dogoditi na čvorovima ako klijenti pošalju transakcije s danim tps-om u vrlo ponovljivim uvjetima i sa stvarnim brojem čvorova raspoređenih po različitim kontinentima, ako je potrebno.
Whiteblock Genesis je platforma za testiranje za blockchaine temeljene na Ethereumu. Ovaj alat ima prilično široku funkcionalnost: omogućuje vam pokretanje mreže, stvaranje potrebnog broja računa u njoj, podizanje potrebnog broja klijenata, konfiguriranje topologije mreže, određivanje propusnosti i parametara gubitka paketa i pokretanje testa.
Whiteblock Genesis nudi vlastite objekte za testiranje. Programeri samo trebaju specificirati testne parametre, pokrenuti ih pomoću gotovog API-ja i dobiti rezultate pomoću prikladne nadzorne ploče.
Whiteblock Genesis vam omogućuje da konfigurirate prilično detaljan test koji će platforma automatski provesti za svaku značajnu promjenu koda. To će vam omogućiti da uhvatite pogreške u ranoj fazi i odmah procijenite utjecaj promjena na važne mrežne parametre, kao što su brzina transakcije i resursi koje troše čvorovi.
Madt
Još jedan zanimljiv mladi proizvod za testiranje distribuiranih sustava je
Madt se tek nedavno pojavio, ali s obzirom na vrlo fleksibilnu arhitekturu može se razviti u funkcionalan proizvod.
Ostala rješenja
Gotovo svako testiranje sistemskog dijela blockchaina zahtijeva pokretanje preliminarnih skripti, pripremu računa i uvjeta za testiranje (to može biti testiranje grešaka konsenzusa koje mogu generirati brojne forkove lanaca, testiranje scenarija hard forka, mijenjanje parametara sustava itd.). Sve te manipulacije provode se različito u različitim lancima blokova, tako da je timovima lakše postupno prilagođavati testiranje proizvoda i benchmarking internom CI/CD-u i koristiti se vlastitim razvojem, koji postupno postaje sve složeniji kako se funkcionalnost blockchaina razvija.
Ipak, korištenje gotovih rješenja može uvelike skratiti vrijeme testiranja tim timovima, stoga mislim da će se ovaj softver aktivno razvijati sljedećih godina.
Zaključak
Za kraj ovog kratkog pregleda navest ću nekoliko važnih karakteristika alata za testiranje blockchaina:
- Sposobnost automatske implementacije blockchain mreže pod ponovljivim uvjetima. Ovaj faktor je važan pri razvoju dijelova sustava blockchaina: algoritama konsenzusa, konačnosti, pametnih ugovora sustava.
- Trošak posjedovanja sustava, potrošeni resursi i pogodnost za stalnu upotrebu. Ovaj čimbenik daje projektu visokokvalitetne testove za malo novca.
- Fleksibilnost i jednostavnost konfiguracije testa. Ovaj čimbenik povećava šanse za prepoznavanje problema u sustavu - manja je mogućnost da propustite nešto važno.
- Prilagodba za određene vrste blockchaina. Razvijanje rješenja na temelju postojećeg može uvelike poboljšati kvalitetu i smanjiti vremenske troškove.
- Praktičnost i dostupnost dobivenih rezultata i njihove vrste (izvješća, metrike, grafikoni, zapisnici itd.). Ovo je apsolutno neophodno ako želite pratiti povijest razvoja proizvoda ili ako vam je potrebna duboka analitika ponašanja blockchain mreže.
Sretno s testiranjem i neka vaši lanci blokova budu brzi i tolerantni na greške!
Izvor: www.habr.com