Un rezumat al instrumentelor pentru testarea și benchmarking-ul blockchain-urilor

Un rezumat al instrumentelor pentru testarea și benchmarking-ul blockchain-urilor

Astăzi, soluțiile pentru testarea și benchmarking-ul blockchain-ului sunt specializate pe un anumit blockchain sau pe fork-urile acestuia. Totuși, există și câteva soluții mai generale, care se diferențiază prin funcționalitate: unele dintre ele sunt proiecte open source, altele sunt oferite ca SaaS, dar cea mai mare parte constă în soluții interne, dezvoltate de echipa de blockchain. Cu toate acestea, toate ele rezolvă probleme similare. În acest articol, am încercat să analizez pe scurt câteva produse special concepute pentru testarea blockchain-urilor.

Funcționarea rețelei blockchain seamănă cu cea a unei baze de date distribuite, prin urmare, pentru testare pot fi aplicate instrumente și metode similare. Pentru a înțelege mai bine cum se testează bazele de date distribuite, aruncați o privire asupra unei selecții bune de resurse și articole. de aici. De exemplu, latenta este detaliată în acest material. pe care l-ați citit, iar pentru a înțelege cum se caută bug-uri în algoritmii de replicare, recomand să consultați această resursă. articol.

Voi descrie câteva soluții populare pentru testarea și benchmarking-ul blockchain-urilor. Aș fi bucuros dacă ați descrie în comentarii alte produse software utile pentru rezolvarea acelorși probleme.

Un rezumat al instrumentelor pentru testarea și benchmarking-ul blockchain-urilor

Voi începe cu un instrument care, deși nu a fost creat special pentru blockchain-uri, permite testarea eficientă a funcționării acestora, cu condiția să existe deja o rețea lansată pe care să se experimenteze. Un factor esențial al fiabilității unei sisteme distribuite este capacitatea de a continua să funcționeze în caz de probleme cu serverele și rețeaua. Acestea pot include lag-uri de rețea, supraîncărcarea discului, indisponibilitatea serviciilor externe (DNS), defecte hardware și sute de alte cauze. Pentru a verifica robustetea oricăror sisteme care funcționează în mod coerent pe un număr mare de mașini, se poate utiliza Gremlin. Acesta utilizează o abordare extrem de eficientă, numită inginerie a haosului.

Cu ajutorul agentului de rețea propriu, Gremlin creează pe un număr necesar de mașini diverse tipuri de probleme: întârzieri de rețea, supraîncărcarea oricărui resurs (CPU, disc, memorie, rețea), dezactivează protocoale specifice etc. Pentru blockchain-uri, Gremlin poate fi utilizat pe serverele rețelei de testare, emulând probleme reale și observând comportamentul rețelei. Cu ajutorul său, dezvoltatorii și administratorii pot observa, într-un mediu controlat, ce se întâmplă cu sistemul în cazul unor defecțiuni sau în urma unor actualizări de cod. În acest sens, rețeaua trebuie configurată și desfășurată în prealabil, precum și setată pentru a colecta metricile necesare.

Gremlin este un instrument convenabil pentru arhitecți, devops și specialiști în securitate și este o soluție universală pentru testarea oricăror sisteme distribuite gata și funcționale, inclusiv blockchain-uri.

Un rezumat al instrumentelor pentru testarea și benchmarking-ul blockchain-urilor

Hyperledger Caliper este o soluție mult mai specializată Hyperledger Caliper. În prezent, Caliper suportă mai multe blockchain-uri reprezentative din familia Hyperledger (Fabric, Sawtooth, Iroha, Burrow, Besu), precum și Ethereum și rețeaua FISCO BCOS.

Cu ajutorul Caliper, se poate defini topologia rețelei blockchain și contractele pentru testare, precum și descrie configurația nodului. Nodurile blockchain-ului sunt ridicate în containere Docker pe o singură mașină. Apoi, puteți alege configurațiile necesare ale testelor și puteți obține un fișier cu raportul rezultatelor testului după execuție. O listă completă a metricilor Caliper și abordarea privind benchmarkingul poate fi consultată aici Hyperledger Blockchain Performance Metrics, acesta este un articol excelent dacă sunteți interesat de subiectul benchmarking-ului blockchain-urilor. De asemenea, se poate configura colectarea metricilor într-un Prometheus/Grafana separat.

Hyperledger Caliper este un instrument orientat către dezvoltatori și arhitecți de sistem, deoarece asigură repetabilitatea testelor și automatizarea testării și benchmarkingului. Este utilizat în dezvoltarea nucleului blockchain-urilor: algoritmilor de consens, mașinii virtuale pentru procesarea contractelor inteligente, stratului peer-to-peer și altor mecanisme sistemice.

Un rezumat al instrumentelor pentru testarea și benchmarking-ul blockchain-urilor

MixBytes Tank — un instrument apărut în procesul de dezvoltare a algoritmilor de consens și finalitate pentru rețelele bazate pe EOS și testarea parachain-urilor bazate pe Parity Substrate (Polkadot). Funcțional, este apropiat de Hyperledger Caliper, deoarece permite colectarea de metrici importante de la nodurile oricărei sisteme distribuite și de la mașinile client în care rulează scripturile de testare.

MixBytes Tank utilizează mai multe servicii cloud (Digital Ocean, Google Cloud Engine etc.), având capacitatea de a lansa multe noduri, de a efectua proceduri preliminare de configurare, de a rula simultan mai multe benchmark-uri pe mașini diferite, de a colecta metricile necesare și de a opri automat rețeaua.

MixBytes Tank permite cheltuirea eficientă a fondurilor pentru servere cloud, oprind automat resursele inutile după efectuarea testului. O altă caracteristică distinctivă este utilizarea pachetului Molecule, care permite dezvoltatorului să testeze desfășurarea unui blockchain necesar local.

MixBytes Tank permite identificarea timpurie a punctelor slabe și a erorilor din algoritmi care apar în rețele reale cu un număr mare de servere și clienți distribuiți geografic. Tankul vă va ajuta să înțelegeți ce se va întâmpla pe noduri dacă clienții trimitem tranzacții cu un tps specificat în condiții de repetabilitate ridicată și cu un număr real de noduri repartizate pe diferite continente, dacă este necesar.

Un rezumat al instrumentelor pentru testarea și benchmarking-ul blockchain-urilor

Whiteblock Genesis este o platformă pentru testarea blockchain-urilor pe baza Ethereum. Acest instrument are o funcționalitate destul de largă: permite lansarea unei rețele, crearea unui număr dorit de conturi, ridicarea unui număr necesar de clienți, configurarea topologiei rețelei, specificarea parametrilor de lățime de bandă, pierdere de pachete și lansarea testului.

Whiteblock Genesis oferă capacități proprii pentru desfășurarea testelor. Dezvoltatorii trebuie doar să indice parametrii testelor, să le lansați prin intermediul unui API gata pregătit și să primească rezultatele folosind un dashboard convenabil.

Whiteblock Genesis permite configurarea unui test destul de detaliat, care va fi desfășurat automat de platformă la fiecare modificare semnificativă a codului. Acest lucru va permite identificarea timpurie a erorilor și evaluarea imediată a impactului modificărilor asupra parametrilor importanți ai rețelei, cum ar fi viteza de procesare a tranzacțiilor și resursele consumate de noduri.

Madt

Un alt produs interesant pentru testarea sistemelor distribuite — madt. Este scris în Python și permite crearea topologiei de rețea necesare și a numărului dorit de servere și clienți printr-un script de configurare simplu (exemplu). După aceasta, serviciul desfășoară rețeaua în mai multe containere docker și ridică o interfață web, în care se pot observa mesajele de la servere și clienți. Madt poate fi folosit pentru testarea blockchain-urilor — în repository-ul proiectului există un test p2p pe baza protocolului Kademlia, în care întârzierile de livrare a datelor către noduri cresc treptat și se verifică starea acestor date.

Madt a apărut foarte recent, dar, având în vedere arhitectura sa foarte flexibilă, poate evolua într-un produs funcțional.

Alte soluții

Practically any testing of the blockchain's system part requires running preliminary scenarios, preparing accounts, and conditions for testing (this could involve testing consensus errors that may lead to numerous chain forks, implementing hard fork scenarios, changing system parameters, etc.). All these operations are carried out differently across various blockchains, so teams find it easier to gradually adapt testing and benchmarking of the product to their internal CI/CD and use their own developments, which become increasingly complex as the blockchain's functionality advances.

Nevertheless, the use of ready-made solutions can significantly reduce the time these teams spend on testing, so I believe this software will actively develop in the coming years.

Concluzie

Concluzionând această scurtă revizuire, voi enumera câteva caracteristici importante ale uneltelor pentru testarea blockchain-urilor:

  • Posibilitatea de desfășurare automată a rețelei blockchain în condiții repetabile. Acest factor este important în dezvoltarea părților sistemice ale blockchain-urilor: algoritmi de consens, finalitate, smart contracts sistemice.
  • Costul de proprietate al sistemului, resursele consumate și ușurința de utilizare pe termen lung. Acest factor asigură proiectului teste de înaltă calitate la un preț accesibil.
  • Flexibilitatea și simplitatea configurării testelor. Acest factor crește șansele de a identifica problemele sistemului — există o probabilitate mai mică de a rata ceva important.
  • Personalizare pentru tipuri specifice de blockchain-uri. Dezvoltarea unei soluții pe baza celor existente poate îmbunătăți semnificativ calitatea și reduce timpul necesar.
  • Conveniența și accesibilitatea rezultatelor obținute, precum și tipul acestora (rapoarte, metrici, grafice, log-uri, etc.). Acest lucru este absolut necesar dacă doriți să urmăriți istoricul evoluției produsului sau aveți nevoie de o analiză profundă a comportamentului rețelei blockchain.

Mult succes în testare și să fie blockchain-urile voastre rapide și rezistente la erori!

Sursa: habr.com

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster