Panoramica degli strumenti per il test e il benchmarking delle blockchain

Panoramica degli strumenti per il test e il benchmarking delle blockchain

Oggi, le soluzioni per il test e il benchmarking delle blockchain sono orientate verso specifiche blockchain o i loro fork. Tuttavia, ci sono anche alcune soluzioni più generali che si differenziano per funzionalità: alcune di esse sono progetti open source, altre sono fornite come SaaS, ma la maggior parte sono soluzioni interne sviluppate dal team di sviluppo della blockchain. Tuttavia, tutte affrontano compiti simili. In questo articolo ho cercato di esaminare brevemente alcuni prodotti progettati specificamente per il test delle blockchain.

Il funzionamento di una rete blockchain assomiglia a quello di un database distribuito, quindi per il test è possibile utilizzare strumenti e metodi analoghi. Per comprendere meglio come vengono testati i database distribuiti, date un'occhiata a una buona selezione di risorse e articoli. da qui. Ad esempio, la latenza è stata analizzata in dettaglio in questo abbiamo chiarito il corretto completamento dei programmi che utilizzano il mediastreamer., e per capire come vengono cercati i bug negli algoritmi di replica, consiglio di dare un'occhiata a questo l'articolo.

Descriverò alcune soluzioni popolari per il test e il benchmarking delle blockchain. Sarei felice se nei commenti descriveste altri prodotti software utili per affrontare le stesse sfide.

Panoramica degli strumenti per il test e il benchmarking delle blockchain

Inizierò con uno strumento, sebbene non sia stato creato specificamente per le blockchain, ma consente di testare efficacemente il loro funzionamento a condizione che esista già una rete avviata su cui sperimentare. Un fattore chiave per l'affidabilità di un sistema distribuito è la capacità di continuare a funzionare in caso di problemi con server e rete. Possono verificarsi lag di rete, sovraccarico del disco, indisponibilità di servizi esterni (DNS), guasti hardware e centinaia di altre cause. Per testare la resilienza di qualsiasi sistema che opera coerentemente su un gran numero di macchine, è possibile utilizzare Gremlin.. Utilizza un approccio estremamente efficace, chiamato Chaos Engineering.

Con l'ausilio del proprio agente di rete, Gremlin crea una vasta gamma di problemi su un numero desiderato di macchine: ritardi di rete, sovraccarico di qualsiasi risorsa (CPU, disco, memoria, rete), disabilita singoli protocolli, e così via. Per le blockchain, Gremlin può essere utilizzato sui server della rete di test, emulando problemi reali e osservando il comportamento della rete. Con il suo aiuto, sviluppatori e amministratori in un ambiente controllato possono osservare cosa accade nel sistema in caso di guasti o durante un aggiornamento del codice. È necessario configurare e distribuire la rete in anticipo, e impostare la raccolta delle metriche necessarie.

Gremlin è uno strumento pratico per architetti, DevOps e professionisti della sicurezza, ed è una soluzione universale per testare qualsiasi sistema distribuito esistente e in esecuzione, comprese le blockchain.

Panoramica degli strumenti per il test e il benchmarking delle blockchain

Hyperledger Caliper è una soluzione molto più specializzata Hyperledger Caliper. Attualmente, Caliper supporta diversi blockchain appartenenti alla famiglia Hyperledger (Fabric, Sawtooth, Iroha, Burrow, Besu), così come Ethereum e la rete FISCO BCOS.

Con Caliper, puoi definire la topologia della rete blockchain e i contratti per il test, oltre a descrivere la configurazione dei nodi. I nodi della blockchain vengono avviati in contenitori docker su una singola macchina. Successivamente, puoi selezionare le necessarie configurazioni dei test e ricevere un file con il report dei risultati del test al termine dell'esecuzione. Puoi consultare l'elenco completo delle metriche di Caliper e l'approccio al benchmarking qui Hyperledger Blockchain Performance Metrics, è un ottimo articolo se sei interessato al tema del benchmarking delle blockchain. Inoltre, è possibile configurare la raccolta delle metriche in un Prometheus/Grafana separato.

Hyperledger Caliper è uno strumento progettato per sviluppatori e architetti di sistema, poiché garantisce ripetibilità dei test e automazione dei test e del benchmarking. Viene utilizzato nello sviluppo del nucleo delle blockchain: algoritmi di consenso, macchina virtuale per l'elaborazione dei contratti intelligenti, strato peer-to-peer e altri meccanismi di sistema.

Panoramica degli strumenti per il test e il benchmarking delle blockchain

MixBytes Tank — uno strumento nato durante lo sviluppo degli algoritmi di consenso e finalità per reti basate su EOS e nel test delle parachain sulla base di Parity Substrate (Polkadot). Funzionalmente, assomiglia a Hyperledger Caliper, poiché consente di raccogliere metriche importanti dai nodi di qualsiasi sistema distribuito e dalle macchine client su cui girano gli script di test.

MixBytes Tank utilizza diversi servizi cloud (Digital Ocean, Google Cloud Engine, ecc.), in cui è in grado di avviare numerosi nodi, eseguire procedure di configurazione preliminare, avviare contemporaneamente più benchmark su diverse macchine, raccogliere metriche necessarie e spegnere automaticamente la rete.

MixBytes Tank consente di risparmiare sui costi dei server cloud, chiudendo automaticamente le risorse non necessarie dopo l'esecuzione del test. Un'altra caratteristica distintiva è l'uso del pacchetto Molecule, che permette agli sviluppatori di testare localmente il dispiegamento del blockchain desiderato.

MixBytes Tank consente di identificare in anticipo colli di bottiglia e errori negli algoritmi che si verificano in reti reali con un gran numero di server e client geograficamente distribuiti. Il tank ti aiuterà a capire cosa accadrà sui nodi se i client inviano transazioni con un tps specificato in condizioni altamente ripetitive e con un numero reale di nodi distribuiti su diversi continenti, se necessario.

Panoramica degli strumenti per il test e il benchmarking delle blockchain

Whiteblock Genesis è una piattaforma per il test delle blockchain basate su Ethereum. Questo strumento ha un ampio ventaglio di funzionalità: consente di avviare una rete, creare il numero necessario di account, sollevare il numero richiesto di client, configurare la topologia della rete, specificare i parametri di bandwidth, packetloss e avviare il test.

Whiteblock Genesis fornisce risorse proprie per eseguire test. Gli sviluppatori devono solo specificare i parametri dei test, avviarli utilizzando una API predefinita e ricevere risultati tramite un dashboard intuitivo.

Whiteblock Genesis consente di configurare test abbastanza dettagliati che la piattaforma eseguirà automaticamente ad ogni modifica significativa del codice. Questo permetterà di catturare errori nelle fasi iniziali e di valutare immediatamente l'impatto delle modifiche su parametri importanti della rete, come la velocità delle transazioni e le risorse consumate dai nodi.

Madt

Un altro interessante prodotto giovane per testare sistemi distribuiti — madt. È scritto in Python e permette di creare la topologia di rete necessaria e il numero richiesto di server e client tramite uno script di configurazione semplice (un esempio). Dopo di che, il servizio distribuisce la rete su più contenitori docker e attiva un'interfaccia web, dove è possibile osservare i messaggi dai server e dai client della rete. Madt può essere utilizzato per testare blockchain — nel repository del progetto è disponibile un test della rete p2p basato sul protocollo Kademlia, in cui le latenze nella consegna dei dati ai nodi aumentano gradualmente e viene verificato lo stato di questi dati.

Madt è apparso recentemente, ma, considerando l'architettura molto flessibile, può evolversi in un prodotto funzionale.

Altre soluzioni

Praticamente qualsiasi test della parte sistemica delle blockchain richiede l'esecuzione di scenari preliminari, la preparazione di account e condizioni per il test (questo può includere il test degli errori di consenso, che possono generare numerosi fork delle catene, la simulazione di scenari di hard fork, modifiche ai parametri di sistema, ecc.). Tutte queste manipolazioni vengono eseguite in modo diverso nelle varie blockchain, quindi ai team è più semplice adattare gradualmente il test e il benchmarking del prodotto al proprio CI/CD interno e utilizzare i propri approcci, che si complicano progressivamente con lo sviluppo delle funzionalità della blockchain.

Tuttavia, l'uso di soluzioni pronte può ridurre significativamente il tempo di test per questi team, quindi penso che questo software si svilupperà attivamente nei prossimi anni.

Conclusione

Concludendo questa breve panoramica, elenco alcune caratteristiche importanti degli strumenti per il test delle blockchain:

  • Possibilità di distribuzione automatica della rete blockchain in condizioni ripetibili. Questo fattore è importante nello sviluppo delle parti sistemiche delle blockchain: algoritmi di consenso, finalità, smart contract sistemici.
  • Costo di proprietà del sistema, risorse consumate e facilità d'uso per un utilizzo continuo. Questo fattore consente al progetto di ottenere test di alta qualità a un costo contenuto.
  • Flessibilità e semplicità di configurazione dei test. Questo fattore aumenta le probabilità di individuare problemi nel sistema — minore è la probabilità di trascurare qualcosa di importante.
  • Personalizzazione per specifici tipi di blockchain. Sviluppare una soluzione basata su una già esistente può migliorare notevolmente la qualità e ridurre i tempi di sviluppo.
  • La comodità e la reperibilità dei risultati ottenuti e il loro tipo (report, metriche, grafici, log, ecc.). Questo è assolutamente necessario se si desidera monitorare la storia dello sviluppo del prodotto o se è necessaria un'analisi approfondita del comportamento della rete blockchain.

Buona fortuna con i test e che le vostre blockchain siano veloci e resistenti ai guasti!

Fonte: habr.com

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster