Una breve panoramica sugli strumenti di test e benchmarking della Blockchain

Una breve panoramica sugli strumenti di test e benchmarking della Blockchain

Oggi, le soluzioni per testare e confrontare le blockchain sono adattate a una blockchain specifica o ai suoi fork. Ma esistono anche diverse soluzioni più generali che differiscono per funzionalità: alcune sono progetti open source, altre sono fornite come SaaS, ma la maggior parte sono soluzioni interne create dal team di sviluppo blockchain. Tuttavia, risolvono tutti problemi simili. In questo articolo ho provato a recensire brevemente diversi prodotti pensati appositamente per testare le blockchain.

Il funzionamento di una rete blockchain assomiglia al funzionamento di un database distribuito, quindi è possibile utilizzare strumenti e metodi simili per i test. Per comprendere meglio come vengono testati i database distribuiti, dai un'occhiata a una buona selezione di risorse e articoli quindi. Ad esempio, la latenza viene suddivisa in parti in questo Articolo, e per capire come cercano i bug negli algoritmi di replica, consiglio di leggere questo articolo.

Descriverò diverse soluzioni popolari per testare e confrontare blockchain. Mi farebbe piacere se nei commenti descrivessi altri prodotti software utili per risolvere gli stessi problemi.

Una breve panoramica sugli strumenti di test e benchmarking della Blockchain

Inizierò con uno strumento che, pur non essendo creato appositamente per le blockchain, permette di testarne efficacemente il funzionamento, a patto che esista una rete già funzionante su cui sperimentare. Il fattore più importante per l'affidabilità di un sistema distribuito è la capacità di continuare a lavorare in caso di problemi con i server e la rete. Potrebbero essere ritardi di rete, disco pieno, indisponibilità di servizi esterni (DNS), guasti hardware e centinaia di altri motivi. Per verificare la stabilità di qualsiasi sistema che opera insieme su un gran numero di macchine di sistema, è possibile utilizzare folletto. Utilizza un approccio estremamente efficace chiamato Chaos Engineering.

Utilizzando il proprio agente di rete, Gremlin crea molti diversi tipi di problemi sul numero richiesto di macchine: ritardi di rete, sovraccarico di qualsiasi risorsa (CPU, disco, memoria, rete), disabilitazione dei singoli protocolli, ecc. Per le blockchain, Gremlin può essere utilizzato su server testnet, emulando problemi della vita reale e osservando il comportamento della rete. Con esso, gli sviluppatori e gli amministratori possono osservare in un ambiente controllato cosa accadrà se il sistema va in crash o quando il codice viene aggiornato. In questo caso, la rete deve essere configurata e distribuita in anticipo, nonché configurata per raccogliere le metriche necessarie.

Gremlin è uno strumento utile per architetti, sviluppatori e specialisti della sicurezza e una soluzione universale per testare qualsiasi sistema distribuito già pronto e funzionante, comprese le blockchain.

Una breve panoramica sugli strumenti di test e benchmarking della Blockchain

Hyperledger Caliper è una soluzione molto più specializzata Calibro Hyperledger. Al momento, Caliper supporta diverse blockchain contemporaneamente: rappresentanti della famiglia Hyperledger (Fabric, Sawtooth, Iroha, Burrow, Besu), nonché Ethereum e la rete FISCO BCOS.

Utilizzando Caliper, puoi impostare la topologia della rete blockchain e i contratti per i test, nonché descrivere la configurazione del nodo. I nodi blockchain vengono generati in contenitori docker su una macchina. Successivamente, puoi selezionare il necessario configurazioni di prova e ricevere un file con un rapporto sui risultati del test dopo il lancio. Un elenco completo delle metriche e dell'approccio di benchmarking di Caliper è disponibile qui Metriche delle prestazioni della blockchain Hyperledger, questo è un ottimo articolo se sei interessato all'argomento del benchmarking blockchain. Puoi anche impostare la raccolta di metriche in un Prometheus/Grafana separato.

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

Una breve panoramica sugli strumenti di test e benchmarking della Blockchain

Serbatoio MixBytes è uno strumento emerso nel processo di sviluppo di algoritmi di consenso e finalità per reti basate su EOS e di test di parachain basate su Parity Substrate (Polkadot). In termini di funzionalità, è vicino a Hyperledger Caliper, poiché consente di raccogliere parametri importanti dai nodi di qualsiasi sistema distribuito e macchine client su cui sono in esecuzione gli script di test.

MixBytes Tank utilizza diversi servizi cloud (Digital Ocean, Google Cloud Engine, ecc.), in cui può avviare molti nodi, eseguire procedure di configurazione preliminare, eseguire diversi benchmark in parallelo su macchine diverse, raccogliere le metriche necessarie e spegnere automaticamente il rete.

MixBytes Tank ti consente di risparmiare denaro sui server cloud riducendo automaticamente al minimo le risorse non necessarie dopo un test. Un’altra caratteristica distintiva è l’utilizzo del pacchetto Molecule, che consente allo sviluppatore di testare localmente l’implementazione della blockchain desiderata.

MixBytes Tank consente di rilevare tempestivamente colli di bottiglia ed errori negli algoritmi che si verificano in reti reali con un gran numero di server e client distribuiti geograficamente. Il serbatoio ti aiuterà a capire cosa accadrà sui nodi se i clienti inviano transazioni con un dato tps in condizioni altamente ripetibili e con un numero reale di nodi sparsi in diversi continenti, se necessario.

Una breve panoramica sugli strumenti di test e benchmarking della Blockchain

Whiteblock Genesis è una piattaforma di test per blockchain basate su Ethereum. Questo strumento ha una funzionalità piuttosto ampia: consente di avviare una rete, creare il numero richiesto di account al suo interno, aumentare il numero richiesto di client, configurare la topologia della rete, specificare i parametri di larghezza di banda e perdita di pacchetti ed eseguire un test.

Whiteblock Genesis fornisce le proprie strutture di test. Gli sviluppatori devono solo specificare i parametri di test, eseguirli utilizzando un'API già pronta e ottenere risultati utilizzando una comoda dashboard.

Whiteblock Genesis ti consente di configurare un test abbastanza dettagliato che la piattaforma condurrà automaticamente per ogni modifica significativa del codice. Ciò ti consentirà di individuare gli errori in una fase iniziale e di valutare immediatamente l'impatto delle modifiche su importanti parametri di rete, come la velocità delle transazioni e le risorse consumate dai nodi.

Pazzo

Un altro giovane prodotto interessante per testare i sistemi distribuiti è matta. È scritto in Python e consente di creare la topologia di rete richiesta e il numero richiesto di server e client utilizzando un semplice script di configurazione (esempio). Successivamente il servizio distribuisce la rete in diversi contenitori Docker e apre un'interfaccia web in cui è possibile osservare i messaggi provenienti dai server e dai client della rete. Madt può essere utilizzato per testare le blockchain: il repository del progetto dispone di un test di rete p2p basato sul protocollo Kademlia, in cui i ritardi nella consegna dei dati ai nodi vengono gradualmente aumentati e lo stato di questi dati viene controllato.

Madt è apparso solo di recente, ma data la sua architettura molto flessibile, può trasformarsi in un prodotto funzionale.

Altre soluzioni

Quasi tutti i test della parte di sistema delle blockchain richiedono l'esecuzione di script preliminari, la preparazione di account e condizioni per il test (questo può essere il test di errori di consenso che possono generare numerose fork di catene, il test di scenari di hard fork, la modifica dei parametri di sistema, ecc.). Tutte queste manipolazioni vengono eseguite in modo diverso nelle diverse blockchain, quindi è più facile per i team adattare gradualmente i test e il benchmarking dei prodotti al CI/CD interno e utilizzare i propri sviluppi, che diventano gradualmente più complessi man mano che la funzionalità della blockchain si sviluppa.

Tuttavia, l'uso di soluzioni già pronte può ridurre notevolmente i tempi di test per questi team, quindi penso che questo software verrà sviluppato attivamente nei prossimi anni.

conclusione

Per concludere questa breve recensione, elencherò diverse caratteristiche importanti degli strumenti di test blockchain:

  • La capacità di implementare automaticamente una rete blockchain in condizioni ripetibili. Questo fattore è importante quando si sviluppano parti di sistema di blockchain: algoritmi di consenso, finalità, contratti intelligenti di sistema.
  • Il costo di proprietà del sistema, le risorse consumate e la comodità di un utilizzo costante. Questo fattore fornisce al progetto test di alta qualità con pochi soldi.
  • Flessibilità e semplicità della configurazione del test. Questo fattore aumenta le possibilità di identificare i problemi del sistema: ci sono meno possibilità di perdere qualcosa di importante.
  • Personalizzazione per tipi specifici di blockchain. Lo sviluppo di una soluzione basata su una esistente può migliorare notevolmente la qualità e ridurre i costi in termini di tempo.
  • Comodità e accessibilità dei risultati ottenuti e della loro tipologia (report, metriche, grafici, log, ecc.). Ciò è assolutamente necessario se desideri tenere traccia della cronologia dello sviluppo di un prodotto o se hai bisogno di un'analisi approfondita del comportamento della rete blockchain.

Buona fortuna con i tuoi test e che le tue blockchain siano veloci e tolleranti agli errori!

Fonte: habr.com

Aggiungi un commento