Isang Maikling Pangkalahatang-ideya ng Blockchain Testing at Benchmarking Tools

Isang Maikling Pangkalahatang-ideya ng Blockchain Testing at Benchmarking Tools

Ngayon, ang mga solusyon para sa pagsubok at pag-benchmark ng mga blockchain ay iniangkop sa isang partikular na blockchain o mga tinidor nito. Ngunit mayroon ding ilang mas pangkalahatang solusyon na naiiba sa pag-andar: ang ilan sa mga ito ay mga open source na proyekto, ang iba ay ibinibigay bilang SaaS, ngunit karamihan ay mga panloob na solusyon na nilikha ng blockchain development team. Gayunpaman, lahat sila ay malulutas ang magkatulad na mga problema. Sa artikulong ito, sinubukan kong suriin sa madaling sabi ang ilang mga produkto na partikular na idinisenyo para sa pagsubok ng mga blockchain.

Ang operasyon ng isang blockchain network ay kahawig ng operasyon ng isang distributed database, kaya ang mga katulad na tool at pamamaraan ay maaaring gamitin para sa pagsubok. Upang mas maunawaan kung paano sinusubok ang mga distributed database, tingnan ang isang mahusay na seleksyon ng mga mapagkukunan at artikulo kaya. Halimbawa, ang latency ay pinagsunod-sunod sa mga piraso dito Artikulo, at upang maunawaan kung paano sila naghahanap ng mga bug sa mga algorithm ng pagtitiklop, inirerekomenda kong basahin ito mga artikulo.

Ilalarawan ko ang ilang sikat na solusyon para sa pagsubok at pag-benchmark ng mga blockchain. Natutuwa ako kung sa mga komento ay inilalarawan mo ang iba pang mga kapaki-pakinabang na produkto ng software para sa paglutas ng parehong mga problema.

Isang Maikling Pangkalahatang-ideya ng Blockchain Testing at Benchmarking Tools

Magsisimula ako sa isang tool na, kahit na hindi partikular na nilikha para sa mga blockchain, ay nagbibigay-daan sa iyong epektibong subukan ang kanilang operasyon, sa kondisyon na mayroon nang tumatakbong network kung saan maaari kang mag-eksperimento. Ang pinakamahalagang salik sa pagiging maaasahan ng isang distributed system ay ang kakayahang magpatuloy sa pagtatrabaho sa kaganapan ng mga problema sa mga server at network. Ito ay maaaring mga network lags, disk fullness, unavailability of external services (DNS), hardware failures at daan-daang iba pang dahilan. Upang suriin ang katatagan ng anumang mga system na tumatakbo sa konsyerto sa isang malaking bilang ng mga system machine, maaari mong gamitin Gremlin. Gumagamit ito ng napakabisang diskarte na tinatawag na Chaos Engineering.

Gamit ang sarili nitong ahente sa network, ang Gremlin ay lumilikha ng maraming iba't ibang uri ng mga problema sa kinakailangang bilang ng mga makina: network lags, labis na karga ng anumang mapagkukunan (CPU, disk, memorya, network), hindi pinapagana ang mga indibidwal na protocol, atbp. Para sa mga blockchain, maaaring gamitin ang Gremlin sa mga testnet server, tinutulad ang mga problema sa totoong buhay at pagmamasid sa gawi ng network. Gamit nito, maaaring maobserbahan ng mga developer at administrator sa isang kinokontrol na kapaligiran kung ano ang mangyayari kung mag-crash ang system o kapag na-update ang code. Sa kasong ito, dapat na i-configure at i-deploy nang maaga ang network, pati na rin i-configure upang mangolekta ng mga kinakailangang sukatan.

Ang Gremlin ay isang maginhawang tool para sa mga arkitekto, devops, at mga espesyalista sa seguridad at isang unibersal na solusyon para sa pagsubok ng anumang handa at tumatakbong mga distributed system, kabilang ang mga blockchain.

Isang Maikling Pangkalahatang-ideya ng Blockchain Testing at Benchmarking Tools

Ang Hyperledger Caliper ay isang mas espesyal na solusyon Hyperledger Caliper. Sa ngayon, sinusuportahan ng Caliper ang ilang mga blockchain nang sabay-sabay - mga kinatawan ng pamilyang Hyperledger (Fabric, Sawtooth, Iroha, Burrow, Besu), pati na rin ang Ethereum at ang FISCO BCOS network.

Gamit ang Caliper, maaari mong itakda ang topology ng blockchain network at mga kontrata para sa pagsubok, pati na rin ilarawan ang configuration ng node. Ang mga blockchain node ay itinataas sa mga docker container sa isang makina. Susunod, maaari mong piliin ang kinakailangan mga pagsasaayos ng pagsubok at makatanggap ng file na may ulat sa mga resulta ng pagsubok pagkatapos ng paglunsad. Ang isang buong listahan ng mga sukatan ng Caliper at diskarte sa pag-benchmark ay matatagpuan dito Mga Sukatan ng Pagganap ng Hyperledger Blockchain, ito ay isang mahusay na artikulo kung ikaw ay interesado sa paksa ng blockchain benchmarking. Maaari ka ring mag-set up ng pagkolekta ng mga sukatan sa isang hiwalay na Prometheus/Grafana.

Ang Hyperledger Caliper ay isang tool na naglalayon sa mga developer at system architect, dahil nagbibigay ito ng test repeatability at automation ng pagsubok at benchmarking. Ginagamit ito sa pagbuo ng core ng blockchains: consensus algorithm, isang virtual machine para sa pagproseso ng mga smart contract, isang peer-to-peer na layer at iba pang mekanismo ng system.

Isang Maikling Pangkalahatang-ideya ng Blockchain Testing at Benchmarking Tools

MixBytes Tank ay isang tool na lumitaw sa proseso ng pagbuo ng consensus at finality algorithm para sa mga EOS-based na network at pagsubok ng mga parachain batay sa Parity Substrate (Polkadot). Sa mga tuntunin ng pag-andar, malapit ito sa Hyperledger Caliper, dahil pinapayagan ka nitong mangolekta ng mahahalagang sukatan mula sa mga node ng anumang distributed system at client machine kung saan tumatakbo ang mga script ng pagsubok.

Gumagamit ang MixBytes Tank ng ilang serbisyo sa cloud (Digital Ocean, Google Cloud Engine, atbp.), kung saan maaari itong maglunsad ng maraming node, magsagawa ng mga paunang pamamaraan ng pagsasaayos, magpatakbo ng ilang mga benchmark nang magkatulad sa iba't ibang mga makina, kolektahin ang mga kinakailangang sukatan at awtomatikong isara ang network.

Binibigyang-daan ka ng MixBytes Tank na makatipid ng pera sa mga cloud server sa pamamagitan ng awtomatikong pag-minimize ng mga hindi kinakailangang mapagkukunan pagkatapos ng pagsubok. Ang isa pang natatanging tampok ay ang paggamit ng Molecule package, na nagpapahintulot sa developer na subukan ang deployment ng nais na blockchain sa lokal.

Binibigyang-daan ka ng MixBytes Tank na maagang matukoy ang mga bottleneck at mga error sa mga algorithm na lumitaw sa mga totoong network na may malaking bilang ng mga server at kliyente na ipinamamahagi sa heograpiya. Tutulungan ka ng tangke na maunawaan kung ano ang mangyayari sa mga node kung ang mga kliyente ay magpapadala ng mga transaksyon na may ibinigay na tps sa mga kondisyon na maaaring paulit-ulit at may tunay na bilang ng mga node na kumalat sa iba't ibang kontinente, kung kinakailangan.

Isang Maikling Pangkalahatang-ideya ng Blockchain Testing at Benchmarking Tools

Ang Whiteblock Genesis ay isang testing platform para sa Ethereum-based blockchains. Ang tool na ito ay may malawak na pag-andar: pinapayagan ka nitong maglunsad ng isang network, lumikha ng kinakailangang bilang ng mga account sa loob nito, itaas ang kinakailangang bilang ng mga kliyente, i-configure ang topology ng network, tukuyin ang mga parameter ng bandwidth at packetloss at magpatakbo ng pagsubok.

Nagbibigay ang Whiteblock Genesis ng sarili nitong mga pasilidad sa pagsubok. Kailangan lang ng mga developer na tukuyin ang mga parameter ng pagsubok, patakbuhin ang mga ito gamit ang isang handa na API, at makakuha ng mga resulta gamit ang isang maginhawang dashboard.

Binibigyang-daan ka ng Whiteblock Genesis na mag-configure ng medyo detalyadong pagsubok na awtomatikong isasagawa ng platform para sa bawat makabuluhang pagbabago ng code. Ito ay magbibigay-daan sa iyong mahuli ang mga error sa maagang yugto at agad na masuri ang epekto ng mga pagbabago sa mahahalagang parameter ng network, tulad ng bilis ng transaksyon at mga mapagkukunang natupok ng mga node.

Madt

Ang isa pang kawili-wiling batang produkto para sa pagsubok ng mga ipinamamahaging sistema ay baliw. Ito ay nakasulat sa Python at pinapayagan kang lumikha ng kinakailangang topology ng network at ang kinakailangang bilang ng mga server at kliyente gamit ang isang simpleng configuration script (halimbawa). Pagkatapos nito, i-deploy ng serbisyo ang network sa ilang mga container ng Docker at magbubukas ng web interface kung saan maaari mong obserbahan ang mga mensahe mula sa mga server at kliyente ng network. Maaaring gamitin ang Madt para sa pagsubok ng mga blockchain - ang repositoryo ng proyekto ay may p2p network test batay sa protocol ng Kademlia, kung saan ang mga pagkaantala sa paghahatid ng data sa mga node ay unti-unting nadaragdagan at ang katayuan ng data na ito ay sinusuri.

Kamakailan lamang ay lumitaw ang Madt, ngunit dahil sa napaka-flexible na arkitektura nito, maaari itong maging isang functional na produkto.

Iba pang mga solusyon

Halos anumang pagsubok sa bahagi ng system ng mga blockchain ay nangangailangan ng pagpapatakbo ng mga paunang script, paghahanda ng mga account at kundisyon para sa pagsubok (maaaring ito ay pagsubok ng mga error sa pinagkasunduan na maaaring makabuo ng maraming tinidor ng mga chain, pagsubok ng mga hard fork scenario, pagbabago ng mga parameter ng system, atbp.). Ang lahat ng mga manipulasyong ito ay isinasagawa sa iba't ibang mga blockchain, kaya mas madali para sa mga koponan na unti-unting iakma ang pagsubok ng produkto at pag-benchmark sa panloob na CI/CD at gamitin ang kanilang sariling mga pag-unlad, na unti-unting nagiging mas kumplikado habang ang pag-andar ng blockchain ay nabubuo.

Gayunpaman, ang paggamit ng mga handa na solusyon ay maaaring lubos na mabawasan ang oras ng pagsubok para sa mga pangkat na ito, kaya sa palagay ko ang software na ito ay aktibong bubuo sa mga darating na taon.

Konklusyon

Upang tapusin ang maikling pagsusuri na ito, ililista ko ang ilang mahahalagang katangian ng mga tool sa pagsubok ng blockchain:

  • Ang kakayahang awtomatikong mag-deploy ng blockchain network sa ilalim ng mga nauulit na kondisyon. Ang salik na ito ay mahalaga sa pagbuo ng mga bahagi ng system ng mga blockchain: consensus algorithm, finality, system smart contracts.
  • Ang halaga ng pagmamay-ari ng system, ang mga mapagkukunang natupok at ang kaginhawahan para sa patuloy na paggamit. Ang kadahilanan na ito ay nagbibigay sa proyekto ng mataas na kalidad na mga pagsubok para sa maliit na pera.
  • Kakayahang umangkop at pagiging simple ng pagsasaayos ng pagsubok. Ang kadahilanan na ito ay nagpapataas ng mga pagkakataong matukoy ang mga problema sa system - may mas kaunting pagkakataon na nawawala ang isang bagay na mahalaga.
  • Pag-customize para sa mga partikular na uri ng blockchain. Ang pagbuo ng isang solusyon batay sa isang umiiral na ay maaaring lubos na mapabuti ang kalidad at mabawasan ang mga gastos sa oras.
  • Kaginhawaan at accessibility ng mga resultang nakuha at ang uri nito (mga ulat, sukatan, graph, log, atbp.). Ito ay talagang kinakailangan kung gusto mong subaybayan ang kasaysayan ng pag-unlad ng isang produkto, o kung kailangan mo ng malalim na pagsusuri ng pag-uugali ng blockchain network.

Good luck sa iyong pagsubok at nawa'y maging mabilis at fault-tolerant ang iyong mga blockchain!

Pinagmulan: www.habr.com

Magdagdag ng komento