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
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.
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
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.
Hyperledger Caliper è una soluzione molto più specializzata
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
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.
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.
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 è
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