Gambaran singkat tentang alat untuk menguji dan membandingkan blockchains


Saat ini, solusi untuk pengujian dan benchmark blockchains dipertajam untuk blockchain tertentu atau fork-forknya. Tetapi ada beberapa solusi yang lebih umum yang berbeda dalam fungsi: beberapa di antaranya adalah proyek open source, yang lain disediakan sebagai SaaS, tetapi kebanyakan dari mereka adalah solusi internal yang dibuat oleh tim pengembangan blockchain. Namun, mereka semua memecahkan masalah yang sama. Pada artikel ini, saya mencoba mempertimbangkan secara singkat beberapa produk yang dirancang khusus untuk menguji blockchain.


Pengoperasian jaringan blockchain menyerupai pekerjaan database terdistribusi, oleh karena itu, untuk pengujian, Anda dapat menerapkan alat dan metode yang serupa. Untuk lebih memahami bagaimana database terdistribusi diuji, lihat pilihan sumber daya dan artikel yang baik dari sini . Misalnya, latensi dipecah dalam artikel ini, dan untuk memahami bagaimana bug dicari dalam algoritma replikasi, saya sarankan Anda membaca artikel ini.


Saya akan menjelaskan beberapa solusi populer untuk pengujian dan pembandingan benchmark. Saya akan senang jika di komentar Anda menggambarkan produk perangkat lunak lain yang bermanfaat untuk memecahkan masalah yang sama.



Saya akan mulai dengan alat, meskipun itu tidak dibuat khusus untuk blockchains, tetapi itu memungkinkan Anda untuk menguji secara efektif pekerjaan mereka asalkan sudah ada jaringan yang berjalan di mana Anda dapat bereksperimen. Faktor terpenting dalam keandalan sistem terdistribusi adalah kemampuan untuk terus bekerja jika terjadi masalah dengan server dan jaringan. Ini dapat berupa keterlambatan jaringan, disk penuh, tidak dapat diaksesnya layanan eksternal (DNS), kegagalan perangkat keras dan ratusan alasan lainnya. Untuk memeriksa stabilitas sistem apa pun yang bekerja bersama dalam sejumlah besar sistem mesin, Anda dapat menggunakan GREMLIN . Ini menggunakan pendekatan yang sangat efektif yang disebut Chaos Engineering.


Menggunakan agen jaringannya sendiri, GREMLIN menciptakan berbagai jenis masalah pada jumlah mesin yang tepat: jaringan tertinggal, kelebihan beban sumber daya apa pun (CPU, disk, memori, jaringan), menonaktifkan protokol individu, dll. Untuk blockchains, GREMLIN dapat digunakan pada server jaringan uji, meniru masalah nyata dan mengamati perilaku jaringan. Dengannya, pengembang dan administrator dalam lingkungan yang terkontrol dapat mengamati apa yang terjadi jika terjadi kerusakan sistem atau saat memperbarui kode. Dalam hal ini, jaringan harus dikonfigurasikan dan digunakan, serta dikonfigurasi untuk mengumpulkan metrik yang diperlukan.


GREMLIN adalah alat yang nyaman untuk arsitek, pengembang dan profesional keamanan dan solusi universal untuk menguji setiap sistem yang siap pakai dan berjalan yang didistribusikan, termasuk blockchains.



Hyperledger Caliper adalah solusi Hyperledger Caliper yang jauh lebih terspesialisasi. Saat ini, Caliper mendukung beberapa blockchain sekaligus - perwakilan keluarga Hyperledger (Fabric, Sawtooth, Iroha, Burrow, Besu), serta Ethereum dan jaringan FISCO BCOS.


Menggunakan Caliper, Anda dapat menentukan topologi jaringan blockchain dan kontrak untuk pengujian, serta mendeskripsikan konfigurasi node. Node Blockchain naik dalam wadah buruh pelabuhan pada mesin yang sama. Selanjutnya, Anda dapat memilih konfigurasi pengujian yang diperlukan dan mendapatkan file dengan laporan hasil pengujian setelah peluncuran. Daftar lengkap metrik Caliper dan pendekatan pembandingan dapat ditemukan di sini Hyperledger Blockchain Performance Metrics , ini adalah artikel yang bagus jika Anda tertarik dengan topik pembandingan blockchain. Anda juga dapat mengonfigurasi koleksi metrik di Prometheus / Grafana yang terpisah.


Hyperledger Caliper adalah alat yang ditujukan untuk pengembang dan arsitek sistem, karena memberikan pengulangan pengujian dan otomatisasi pengujian dan benchmarking. Ini digunakan dalam pengembangan inti blockchain: algoritma konsensus, mesin virtual untuk memproses kontrak pintar, peer-to-peer layer dan mekanisme sistem lainnya.



MixBytes Tank adalah alat yang muncul dalam proses pengembangan konsensus dan algoritma finalitas untuk jaringan berbasis EOS dan pengujian parachains berdasarkan Parity Substrate (Polkadot). Dalam hal fungsionalitas, ini dekat dengan Hyperledger Caliper, karena memungkinkan Anda untuk mengumpulkan metrik penting dari node sistem apa pun dan mesin klien yang menjalankan skrip pengujian.


MixBytes Tank menggunakan beberapa layanan cloud (Digital Ocean, Google Cloud Engine, dll.), Di mana ia dapat meluncurkan banyak node, melakukan prosedur konfigurasi awal, secara bersamaan menjalankan beberapa benchmark-s pada mesin yang berbeda, mengumpulkan metrik yang diperlukan dan memadamkan jaringan secara otomatis.


MixBytes Tank memungkinkan Anda menghemat uang di server cloud, secara otomatis meminimalkan sumber daya yang tidak perlu setelah pengujian. Fitur lain yang membedakan adalah penggunaan paket Molecule, yang memungkinkan pengembang untuk menguji penyebaran blockchain yang diinginkan secara lokal.


MixBytes Tank memungkinkan deteksi dini kemacetan dan kesalahan dalam algoritma yang terjadi di jaringan nyata dengan sejumlah besar server dan klien yang didistribusikan secara geografis. Tangki akan membantu Anda memahami apa yang akan terjadi pada node jika klien mengirim transaksi dengan tps yang diberikan dalam kondisi yang sangat berulang dan dengan jumlah nyata node yang ditempatkan di berbagai benua, jika perlu.



Whiteblock Genesis adalah platform pengujian blockchain berbasis Ethereum. Alat ini memiliki fungsionalitas yang cukup luas: memungkinkan Anda untuk memulai jaringan, membuat jumlah akun yang diperlukan di dalamnya, meningkatkan jumlah klien yang diinginkan, mengkonfigurasi topologi jaringan, menentukan bandwidth, parameter packetloss dan menjalankan tes.


Whiteblock Genesis menyediakan fasilitas tes sendiri. Cukup bagi pengembang untuk menentukan parameter pengujian, menjalankannya menggunakan API yang sudah jadi dan mendapatkan hasil menggunakan dasbor yang nyaman.


Whiteblock Genesis memungkinkan Anda untuk mengonfigurasi tes yang cukup terperinci, yang akan dilakukan platform secara otomatis untuk setiap perubahan kode yang signifikan. Ini akan memungkinkan Anda untuk menangkap kesalahan pada tahap awal dan segera menilai dampak perubahan pada parameter jaringan penting, seperti kecepatan transaksi dan sumber daya yang dikonsumsi oleh node.


Madt


Produk muda lain yang menarik untuk menguji sistem terdistribusi adalah madt . Ini ditulis dalam Python dan memungkinkan Anda untuk membuat topologi jaringan yang diperlukan dan jumlah server dan klien yang diperlukan menggunakan skrip konfigurasi sederhana ( contoh ). Setelah itu, layanan menyebarkan jaringan dalam beberapa wadah buruh pelabuhan dan meningkatkan antarmuka web di mana Anda dapat menonton pesan dari server dan klien jaringan. Madt dapat digunakan untuk menguji blockchains - dalam repositori proyek terdapat uji jaringan p2p berdasarkan protokol Kademlia, di mana keterlambatan pengiriman data ke node secara bertahap ditingkatkan dan status data ini diperiksa.


Madt muncul baru-baru ini, tetapi, mengingat arsitektur yang sangat fleksibel, ia dapat berkembang menjadi produk fungsional.


Solusi lain


Hampir semua pengujian bagian sistem blockchain memerlukan peluncuran skrip pendahuluan, persiapan akun, dan kondisi untuk pengujian (ini dapat berupa pengujian kesalahan konsensus yang dapat menghasilkan banyak rantai garpu, mengerjakan skrip garpu keras, mengerjakan skrip garpu keras, mengubah parameter sistem, dll.). Semua manipulasi dalam blockchain yang berbeda ini dilakukan dengan cara yang berbeda, sehingga lebih mudah bagi tim untuk secara bertahap mengadaptasi pengujian dan benchmarking produk ke CI / CD internal dan menggunakan pengembangan mereka sendiri, yang secara bertahap menjadi lebih rumit dengan pengembangan fungsionalitas blockchain.


Namun demikian, penggunaan solusi siap pakai dapat sangat mengurangi waktu pengujian untuk tim ini, oleh karena itu, saya pikir perangkat lunak ini akan dikembangkan secara aktif di tahun-tahun mendatang.


Kesimpulan


Sebagai penutup ulasan singkat ini, saya akan mencantumkan beberapa karakteristik penting dari alat pengujian blockchain:


  • Kemampuan untuk secara otomatis menggunakan jaringan blockchain dalam kondisi yang berulang. Faktor ini penting ketika mengembangkan bagian-bagian sistem dari blockchains: algoritma konsensus, finalitas, kontrak pintar sistem.
  • Harga kepemilikan sistem, sumber daya yang dikonsumsi, dan kenyamanan untuk penggunaan konstan. Faktor ini memberi proyek tes berkualitas tinggi dengan sedikit uang.
  • Fleksibilitas dan kesederhanaan konfigurasi pengujian. Faktor ini meningkatkan kemungkinan mengidentifikasi masalah sistem - kecil kemungkinannya untuk melewatkan sesuatu yang penting.
  • Kustomisasi untuk tipe tertentu dari blockchains. Mengembangkan solusi berdasarkan yang sudah ada dapat sangat meningkatkan kualitas dan mengurangi biaya waktu.
  • Kenyamanan dan aksesibilitas hasil dan jenisnya (laporan, metrik, grafik, log, dll.). Ini mutlak diperlukan jika Anda ingin melacak sejarah pengembangan produk, atau Anda perlu analisis mendalam tentang perilaku jaringan blockchain.

Semoga berhasil dalam pengujian dan biarkan blockchain Anda cepat dan toleran terhadap kesalahan!

Source: https://habr.com/ru/post/id481150/


All Articles