Una breu visió general de les eines de proves i benchmarking de Blockchain

Una breu visió general de les eines de proves i benchmarking de Blockchain

Avui dia, les solucions per provar i comparar cadenes de blocs s'adapten a una cadena de blocs específica o a les seves bifurcacions. Però també hi ha diverses solucions més generals que difereixen en funcionalitat: algunes d'elles són projectes de codi obert, d'altres es proporcionen com a SaaS, però la majoria són solucions internes creades per l'equip de desenvolupament de blockchain. Tot i això, tots resolen problemes similars. En aquest article, he intentat revisar breument diversos productes dissenyats específicament per provar blockchains.

El funcionament d'una xarxa de cadena de blocs s'assembla al funcionament d'una base de dades distribuïda, de manera que es poden utilitzar eines i mètodes similars per fer proves. Per entendre millor com es posen a prova les bases de dades distribuïdes, feu una ullada a una bona selecció de recursos i articles per tant. Per exemple, la latència s'ordena en trossos article, i per entendre com busquen errors en algorismes de replicació, recomano llegir això article.

Descriuré diverses solucions populars per provar i comparar cadenes de blocs. M'alegraria que en els comentaris descrius altres productes de programari útils per resoldre els mateixos problemes.

Una breu visió general de les eines de proves i benchmarking de Blockchain

Començaré amb una eina que, tot i que no s'ha creat específicament per a les cadenes de blocs, us permet provar el seu funcionament de manera eficaç, sempre que hi hagi una xarxa en funcionament amb la qual podeu experimentar. El factor més important en la fiabilitat d'un sistema distribuït és la capacitat de continuar treballant en cas de problemes amb els servidors i la xarxa. Això podria ser retards de xarxa, plenitud del disc, indisponibilitat de serveis externs (DNS), errors de maquinari i centenars d'altres motius. Per comprovar l'estabilitat de qualsevol sistema que funcioni conjuntament en un gran nombre de màquines de sistemes, podeu utilitzar Gremlin. Utilitza un enfocament extremadament eficaç anomenat Chaos Engineering.

Utilitzant el seu propi agent de xarxa, Gremlin crea molts tipus de problemes diferents en el nombre de màquines requerit: retards de xarxa, sobrecàrrega de qualsevol recurs (CPU, disc, memòria, xarxa), desactiva protocols individuals, etc. Per a les cadenes de blocs, Gremlin es pot utilitzar en servidors testnet, emulant problemes de la vida real i observant el comportament de la xarxa. Amb ell, els desenvolupadors i administradors poden observar en un entorn controlat què passarà si el sistema falla o quan s'actualitza el codi. En aquest cas, la xarxa s'ha de configurar i desplegar prèviament, així com configurar-la per recollir les mètriques necessàries.

Gremlin és una eina convenient per a arquitectes, devops i especialistes en seguretat i una solució universal per provar qualsevol sistema distribuït ja fet i en funcionament, incloses les cadenes de blocs.

Una breu visió general de les eines de proves i benchmarking de Blockchain

Hyperledger Caliper és una solució molt més especialitzada Hyperledger Caliper. De moment, Caliper admet diverses cadenes de blocs alhora: representants de la família Hyperledger (Fabric, Sawtooth, Iroha, Burrow, Besu), així com Ethereum i la xarxa FISCO BCOS.

Mitjançant Caliper, podeu establir la topologia de la xarxa blockchain i els contractes per a la prova, així com descriure la configuració del node. Els nodes de la cadena de blocs es plantegen en contenidors docker en una màquina. A continuació, podeu seleccionar el necessari configuracions de prova i rebreu un fitxer amb un informe sobre els resultats de la prova després del llançament. Podeu trobar una llista completa de mètriques i enfocaments de benchmarking de Caliper aquí Mètriques de rendiment de Hyperledger Blockchain, aquest és un gran article si esteu interessats en el tema del benchmarking de blockchain. També podeu configurar la col·lecció de mètriques en un Prometheus/Grafana separat.

Hyperledger Caliper és una eina adreçada a desenvolupadors i arquitectes de sistemes, ja que proporciona repetibilitat i automatització de proves i benchmarking. S'utilitza en el desenvolupament del nucli de blockchains: algorismes de consens, una màquina virtual per processar contractes intel·ligents, una capa peer-to-peer i altres mecanismes del sistema.

Una breu visió general de les eines de proves i benchmarking de Blockchain

Tanc MixBytes és una eina que va sorgir en el procés de desenvolupament d'algorismes de consens i finalitat per a xarxes basades en EOS i prova de paracadenes basades en Parity Substrate (Polkadot). Pel que fa a la funcionalitat, és proper a Hyperledger Caliper, ja que permet recollir mètriques importants dels nodes de qualsevol sistema distribuït i màquines client en què s'executen scripts de prova.

MixBytes Tank utilitza diversos serveis al núvol (Digital Ocean, Google Cloud Engine, etc.), en els quals pot llançar molts nodes, realitzar procediments de configuració preliminars, executar diversos benchmarks en paral·lel en diferents màquines, recopilar les mètriques necessàries i apagar automàticament el xarxa.

MixBytes Tank us permet estalviar diners als servidors del núvol minimitzant automàticament els recursos innecessaris després d'una prova. Una altra característica distintiva és l'ús del paquet Molecule, que permet al desenvolupador provar localment el desplegament de la cadena de blocs desitjada.

MixBytes Tank permet detectar precoçment colls d'ampolla i errors en algorismes que sorgeixen en xarxes reals amb un gran nombre de servidors i clients distribuïts geogràficament. El dipòsit us ajudarà a entendre què passarà als nodes si els clients envien transaccions amb un determinat tps en condicions altament repetibles i amb un nombre real de nodes repartits per diferents continents, si cal.

Una breu visió general de les eines de proves i benchmarking de Blockchain

Whiteblock Genesis és una plataforma de proves per a cadenes de blocs basades en Ethereum. Aquesta eina té una funcionalitat bastant àmplia: us permet llançar una xarxa, crear-hi el nombre necessari de comptes, augmentar el nombre necessari de clients, configurar la topologia de la xarxa, especificar l'amplada de banda i els paràmetres de pèrdua de paquets i executar una prova.

Whiteblock Genesis ofereix les seves pròpies instal·lacions de prova. Els desenvolupadors només han d'especificar els paràmetres de prova, executar-los mitjançant una API ja feta i obtenir resultats mitjançant un tauler de control convenient.

Whiteblock Genesis us permet configurar una prova bastant detallada que la plataforma realitzarà automàticament per a cada canvi significatiu de codi. Això us permetrà detectar errors en una fase inicial i avaluar immediatament l'impacte dels canvis en paràmetres importants de la xarxa, com ara la velocitat de transacció i els recursos consumits pels nodes.

Madt

Un altre producte jove interessant per provar sistemes distribuïts és madt. Està escrit en Python i us permet crear la topologia de xarxa necessària i el nombre necessari de servidors i clients mitjançant un script de configuració senzill (exemple). Després d'això, el servei desplega la xarxa en diversos contenidors Docker i obre una interfície web en la qual es poden observar missatges dels servidors i clients de la xarxa. Madt es pot utilitzar per provar cadenes de blocs: el repositori del projecte té una prova de xarxa p2p basada en el protocol Kademlia, en què els retards en el lliurament de dades als nodes augmenten gradualment i es comprova l'estat d'aquestes dades.

Madt només ha aparegut recentment, però donada la seva arquitectura molt flexible, es pot convertir en un producte funcional.

Altres solucions

Gairebé qualsevol prova de la part del sistema de les cadenes de blocs requereix executar scripts preliminars, preparar comptes i condicions per a la prova (això pot ser provar errors de consens que poden generar nombroses bifurcacions de cadenes, provar escenaris de forquilla dura, canviar els paràmetres del sistema, etc.). Totes aquestes manipulacions es duen a terme de manera diferent en diferents blockchains, per la qual cosa és més fàcil per als equips adaptar gradualment les proves i el benchmarking de productes a CI/CD interns i utilitzar els seus propis desenvolupaments, que gradualment es tornen més complexos a mesura que es desenvolupa la funcionalitat de la blockchain.

No obstant això, l'ús de solucions ja fetes pot reduir molt el temps de prova d'aquests equips, per la qual cosa crec que aquest programari es desenvoluparà activament en els propers anys.

Conclusió

Per concloure aquesta breu revisió, enumeraré diverses característiques importants de les eines de prova de blockchain:

  • La capacitat de desplegar automàticament una xarxa blockchain en condicions repetibles. Aquest factor és important a l'hora de desenvolupar parts del sistema de blockchains: algorismes de consens, finalitat, contractes intel·ligents del sistema.
  • El cost de la propietat del sistema, els recursos consumits i la comoditat per a un ús constant. Aquest factor proporciona al projecte proves d'alta qualitat per pocs diners.
  • Flexibilitat i simplicitat de la configuració de la prova. Aquest factor augmenta les possibilitats d'identificar problemes del sistema: hi ha menys possibilitats de perdre's alguna cosa important.
  • Personalització per a tipus específics de blockchains. Desenvolupar una solució basada en una existent pot millorar molt la qualitat i reduir els costos de temps.
  • Conveniència i accessibilitat dels resultats obtinguts i la seva tipologia (informes, mètriques, gràfics, registres, etc.). Això és absolutament necessari si voleu fer un seguiment de l'historial del desenvolupament d'un producte o si necessiteu analítiques profundes del comportament de la xarxa blockchain.

Molta sort amb les vostres proves i que les vostres cadenes de blocs siguin ràpides i tolerants a errors!

Font: www.habr.com

Afegeix comentari