Saat ini, solusi untuk pengujian dan pembandingan blockchain disesuaikan dengan blockchain tertentu atau cabang-cabangnya. Namun ada juga beberapa solusi umum yang fungsinya berbeda: beberapa di antaranya adalah proyek sumber terbuka, yang lain disediakan sebagai SaaS, namun sebagian besar merupakan solusi internal yang dibuat oleh tim pengembangan blockchain. Namun, semuanya memecahkan masalah serupa. Pada artikel ini, saya mencoba mengulas secara singkat beberapa produk yang dirancang khusus untuk menguji blockchain.
Pengoperasian jaringan blockchain menyerupai pengoperasian database terdistribusi, sehingga alat dan metode serupa dapat digunakan untuk pengujian. Untuk lebih memahami bagaimana database terdistribusi diuji, lihatlah pilihan sumber daya dan artikel yang bagus
Saya akan menjelaskan beberapa solusi populer untuk menguji dan membandingkan blockchain. Saya akan senang jika di komentar Anda menjelaskan produk perangkat lunak lain yang berguna untuk memecahkan masalah yang sama.
Saya akan mulai dengan alat yang, meskipun tidak dibuat khusus untuk blockchain, memungkinkan Anda menguji operasinya secara efektif, 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 pada server dan jaringan. Hal ini dapat disebabkan oleh kelambatan jaringan, kepenuhan disk, tidak tersedianya layanan eksternal (DNS), kegagalan perangkat keras, dan ratusan alasan lainnya. Untuk memeriksa stabilitas sistem apa pun yang beroperasi bersama-sama pada sejumlah besar mesin sistem, Anda dapat menggunakan
Dengan menggunakan agen jaringannya sendiri, Gremlin menciptakan berbagai jenis masalah pada jumlah mesin yang dibutuhkan: kelambatan jaringan, kelebihan sumber daya (CPU, disk, memori, jaringan), menonaktifkan protokol individual, dll. Untuk blockchain, Gremlin dapat digunakan di server testnet, meniru masalah kehidupan nyata dan mengamati perilaku jaringan. Dengan itu, pengembang dan administrator dapat mengamati dalam lingkungan terkendali apa yang akan terjadi jika sistem crash atau ketika kode diperbarui. Dalam hal ini, jaringan harus dikonfigurasi dan disebarkan terlebih dahulu, serta dikonfigurasi untuk mengumpulkan metrik yang diperlukan.
Gremlin adalah alat yang mudah digunakan bagi para arsitek, pengembang, dan spesialis keamanan serta solusi universal untuk menguji sistem terdistribusi yang sudah jadi dan berjalan, termasuk blockchain.
Hyperledger Caliper adalah solusi yang jauh lebih terspesialisasi
Dengan menggunakan Caliper, Anda dapat mengatur topologi jaringan blockchain dan kontrak pengujian, serta menjelaskan konfigurasi node. Node Blockchain dimunculkan dalam wadah buruh pelabuhan di satu mesin. Selanjutnya, Anda dapat memilih yang diperlukan
Hyperledger Caliper adalah alat yang ditujukan untuk pengembang dan arsitek sistem, karena menyediakan pengulangan pengujian dan otomatisasi pengujian dan pembandingan. Ini digunakan dalam pengembangan inti blockchain: algoritma konsensus, mesin virtual untuk memproses kontrak pintar, lapisan peer-to-peer dan mekanisme sistem lainnya.
MixBytes Tank menggunakan beberapa layanan cloud (Digital Ocean, Google Cloud Engine, dll.), yang di dalamnya dapat meluncurkan banyak node, melakukan prosedur konfigurasi awal, menjalankan beberapa benchmark secara paralel pada mesin yang berbeda, mengumpulkan metrik yang diperlukan dan secara otomatis mematikan sistem. jaringan.
MixBytes Tank memungkinkan Anda menghemat uang di server cloud dengan secara otomatis meminimalkan sumber daya yang tidak diperlukan setelah pengujian. Fitur khas lainnya adalah penggunaan paket Molecule, yang memungkinkan pengembang menguji penerapan blockchain yang diinginkan secara lokal.
MixBytes Tank memungkinkan Anda mendeteksi secara dini kemacetan dan kesalahan dalam algoritme yang muncul di jaringan nyata dengan sejumlah besar server dan klien yang tersebar secara geografis. Tangki akan membantu Anda memahami apa yang akan terjadi pada node jika klien mengirim transaksi dengan tps tertentu dalam kondisi yang sangat berulang dan dengan jumlah node sebenarnya yang tersebar di berbagai benua, jika diperlukan.
Whiteblock Genesis adalah platform pengujian untuk blockchain berbasis Ethereum. Alat ini memiliki fungsionalitas yang cukup luas: memungkinkan Anda meluncurkan jaringan, membuat jumlah akun yang diperlukan di dalamnya, meningkatkan jumlah klien yang diperlukan, mengkonfigurasi topologi jaringan, menentukan parameter bandwidth dan packetloss, dan menjalankan pengujian.
Whiteblock Genesis menyediakan fasilitas pengujiannya sendiri. Pengembang hanya perlu menentukan parameter pengujian, menjalankannya menggunakan API yang sudah jadi, dan mendapatkan hasil menggunakan dasbor yang nyaman.
Whiteblock Genesis memungkinkan Anda mengonfigurasi pengujian yang cukup mendetail yang akan dilakukan platform secara otomatis untuk setiap perubahan kode yang signifikan. Hal ini akan memungkinkan Anda mendeteksi kesalahan pada tahap awal dan segera menilai dampak perubahan pada parameter jaringan penting, seperti kecepatan transaksi dan sumber daya yang dikonsumsi oleh node.
Gila
Produk muda lain yang menarik untuk menguji sistem terdistribusi adalah
Madt baru muncul baru-baru ini, namun mengingat arsitekturnya yang sangat fleksibel, ia dapat berkembang menjadi produk fungsional.
Solusi lain
Hampir semua pengujian bagian sistem blockchain memerlukan menjalankan skrip awal, menyiapkan akun dan ketentuan untuk pengujian (ini dapat berupa pengujian kesalahan konsensus yang dapat menghasilkan banyak cabang rantai, pengujian skenario hard fork, mengubah parameter sistem, dll.). Semua manipulasi ini dilakukan secara berbeda di berbagai blockchain, sehingga lebih mudah bagi tim untuk secara bertahap mengadaptasi pengujian produk dan benchmarking ke CI/CD internal dan menggunakan pengembangan mereka sendiri, yang secara bertahap menjadi lebih kompleks seiring dengan berkembangnya fungsi blockchain.
Namun demikian, penggunaan solusi siap pakai dapat sangat mengurangi waktu pengujian untuk tim ini, jadi menurut saya perangkat lunak ini akan dikembangkan secara aktif di tahun-tahun mendatang.
Kesimpulan
Untuk menyimpulkan ulasan singkat ini, saya akan mencantumkan beberapa karakteristik penting dari alat pengujian blockchain:
- Kemampuan untuk menyebarkan jaringan blockchain secara otomatis dalam kondisi yang berulang. Faktor ini penting ketika mengembangkan bagian sistem dari blockchain: algoritma konsensus, finalitas, kontrak pintar sistem.
- Biaya kepemilikan sistem, sumber daya yang dikonsumsi, dan kenyamanan penggunaan terus-menerus. Faktor ini memberi proyek pengujian 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 jenis blockchain tertentu. Mengembangkan solusi berdasarkan solusi yang sudah ada dapat meningkatkan kualitas dan mengurangi biaya waktu.
- Kenyamanan dan aksesibilitas hasil yang diperoleh dan jenisnya (laporan, metrik, grafik, log, dll.). Hal ini mutlak diperlukan jika Anda ingin melacak sejarah perkembangan suatu produk, atau jika Anda memerlukan analisis mendalam tentang perilaku jaringan blockchain.
Semoga berhasil dengan pengujian Anda dan semoga blockchain Anda cepat dan toleran terhadap kesalahan!
Sumber: www.habr.com