Dnes jsou řešení pro testování a benchmarking blockchainů přizpůsobena konkrétnímu blockchainu nebo jeho forkům. Existuje však také několik obecnějších řešení, která se liší funkčností: některá z nich jsou projekty s otevřeným zdrojovým kódem, jiné jsou poskytovány jako SaaS, ale většina jsou interní řešení vytvořená vývojovým týmem blockchainu. Všechny však řeší podobné problémy. V tomto článku jsem se pokusil krátce zhodnotit několik produktů určených speciálně pro testování blockchainů.
Provoz blockchainové sítě připomíná provoz distribuované databáze, takže k testování lze použít podobné nástroje a metody. Chcete-li lépe porozumět tomu, jak se testují distribuované databáze, podívejte se na dobrý výběr zdrojů a článků
Popíšu několik populárních řešení pro testování a benchmarking blockchainů. Budu rád, když v komentářích popíšete další užitečné softwarové produkty pro řešení stejných problémů.
Začnu nástrojem, který, i když není vytvořen speciálně pro blockchainy, umožňuje efektivně testovat jejich fungování za předpokladu, že existuje již spuštěná síť, na které můžete experimentovat. Nejdůležitějším faktorem spolehlivosti distribuovaného systému je schopnost pokračovat v práci v případě problémů se servery a sítí. Mohou to být zpoždění sítě, zaplnění disku, nedostupnost externích služeb (DNS), selhání hardwaru a stovky dalších důvodů. Chcete-li zkontrolovat stabilitu všech systémů pracujících ve shodě na velkém počtu systémových strojů, můžete použít
Pomocí vlastního síťového agenta vytváří Gremlin mnoho různých typů problémů na požadovaném počtu strojů: zpoždění sítě, přetížení jakéhokoli zdroje (CPU, disk, paměť, síť), deaktivace jednotlivých protokolů atd. Pro blockchainy lze Gremlin použít na testovacích serverech, emulovat skutečné problémy a sledovat chování sítě. Díky němu mohou vývojáři a administrátoři v kontrolovaném prostředí pozorovat, co se stane, pokud systém spadne nebo když se aktualizuje kód. V tomto případě musí být síť předem nakonfigurována a nasazena a také nakonfigurována tak, aby shromažďovala potřebné metriky.
Gremlin je pohodlný nástroj pro architekty, vývojáře a bezpečnostní specialisty a univerzální řešení pro testování jakýchkoli hotových a běžících distribuovaných systémů, včetně blockchainů.
Hyperledger Caliper je mnohem specializovanější řešení
Pomocí Caliper můžete nastavit topologii blockchainové sítě a smlouvy pro testování a také popsat konfiguraci uzlu. Blockchainové uzly jsou umístěny v dockerových kontejnerech na jednom počítači. Dále můžete vybrat potřebné
Hyperledger Caliper je nástroj zaměřený na vývojáře a systémové architekty, protože poskytuje opakovatelnost testů a automatizaci testování a benchmarkingu. Používá se při vývoji jádra blockchainů: konsenzuálních algoritmů, virtuálního stroje pro zpracování chytrých kontraktů, peer-to-peer vrstvy a dalších systémových mechanismů.
MixBytes Tank využívá několik cloudových služeb (Digital Ocean, Google Cloud Engine atd.), ve kterých může spouštět mnoho uzlů, provádět předběžné konfigurační procedury, spouštět několik benchmarků paralelně na různých strojích, shromažďovat potřebné metriky a automaticky vypnout síť.
MixBytes Tank vám umožňuje ušetřit peníze na cloudových serverech tím, že po testu automaticky minimalizuje nepotřebné zdroje. Dalším výrazným rysem je použití balíčku Molecule, který vývojáři umožňuje lokálně otestovat nasazení požadovaného blockchainu.
MixBytes Tank vám umožňuje včas odhalit úzká hrdla a chyby v algoritmech, které vznikají v reálných sítích s velkým počtem geograficky distribuovaných serverů a klientů. Tank vám pomůže pochopit, co se na uzlech stane, pokud klienti v případě potřeby pošlou transakce s daným tps ve vysoce opakovatelných podmínkách a s reálným počtem uzlů rozmístěných po různých kontinentech.
Whiteblock Genesis je testovací platforma pro blockchainy založené na Ethereu. Tento nástroj má poměrně širokou funkcionalitu: umožňuje spustit síť, vytvořit v ní požadovaný počet účtů, zvýšit požadovaný počet klientů, nakonfigurovat topologii sítě, zadat parametry šířky pásma a ztráty paketů a spustit test.
Whiteblock Genesis poskytuje vlastní testovací zařízení. Vývojáři stačí zadat parametry testu, spustit je pomocí hotového rozhraní API a získat výsledky pomocí pohodlného řídicího panelu.
Whiteblock Genesis umožňuje nakonfigurovat poměrně podrobný test, který platforma automaticky provede při každé významné změně kódu. To vám umožní zachytit chyby v rané fázi a okamžitě posoudit dopad změn na důležité parametry sítě, jako je rychlost transakcí a zdroje spotřebované uzly.
Madt
Dalším zajímavým mladým produktem pro testování distribuovaných systémů je
Madt se objevil teprve nedávno, ale vzhledem k jeho velmi flexibilní architektuře se může vyvinout ve funkční produkt.
Další řešení
Téměř každé testování systémové části blockchainů vyžaduje spouštění předběžných skriptů, přípravu účtů a podmínek pro test (může se jednat o testování chyb konsenzu, které mohou generovat četné forky řetězců, testování scénářů hard forku, změnu systémových parametrů atd.). Všechny tyto manipulace se v různých blockchainech provádějí různě, takže pro týmy je snazší postupně přizpůsobovat testování a benchmarking produktů internímu CI/CD a využívat vlastní vývoj, který se postupně s rozvojem funkčnosti blockchainu stává složitějším.
Přesto použití hotových řešení může těmto týmům značně zkrátit dobu testování, takže si myslím, že tento software bude v následujících letech aktivně vyvíjen.
Závěr
Na závěr této krátké recenze uvedu několik důležitých charakteristik nástrojů pro testování blockchainu:
- Schopnost automaticky nasadit blockchainovou síť za opakovatelných podmínek. Tento faktor je důležitý při vývoji systémových částí blockchainů: konsenzuální algoritmy, finalita, systémové chytré smlouvy.
- Náklady na vlastnictví systému, spotřebované zdroje a pohodlí při neustálém používání. Tento faktor poskytuje projektu vysoce kvalitní testy za málo peněz.
- Flexibilita a jednoduchost konfigurace testu. Tento faktor zvyšuje šance na identifikaci systémových problémů – je menší šance, že něco důležitého přehlédnete.
- Přizpůsobení pro konkrétní typy blockchainů. Vývoj řešení založeného na existujícím řešení může výrazně zlepšit kvalitu a snížit časové náklady.
- Pohodlí a dostupnost získaných výsledků a jejich typu (přehledy, metriky, grafy, protokoly atd.). To je naprosto nezbytné, pokud chcete sledovat historii vývoje produktu nebo pokud požadujete hlubokou analýzu chování blockchainové sítě.
Hodně štěstí při testování a ať jsou vaše blockchainy rychlé a odolné proti chybám!
Zdroj: www.habr.com