Blockchain Test ve Karşılaştırma Araçlarına Kısa Bir Bakış

Blockchain Test ve Karşılaştırma Araçlarına Kısa Bir Bakış

Bugün, blok zincirlerini test etmeye ve kıyaslamaya yönelik çözümler, belirli bir blok zincirine veya onun çatallarına göre uyarlanmıştır. Ancak işlevsellik açısından farklılık gösteren birkaç genel çözüm daha var: bunlardan bazıları açık kaynaklı projeler, diğerleri SaaS olarak sağlanıyor, ancak çoğu blockchain geliştirme ekibi tarafından oluşturulan dahili çözümler. Ancak hepsi benzer sorunları çözüyor. Bu yazımda özellikle blockchain testlerine yönelik tasarlanmış birkaç ürünü kısaca incelemeye çalıştım.

Bir blockchain ağının işleyişi, dağıtılmış bir veritabanının işleyişine benzer, dolayısıyla test için benzer araçlar ve yöntemler kullanılabilir. Dağıtılmış veritabanlarının nasıl test edildiğini daha iyi anlamak için iyi bir kaynak ve makale seçimine göz atın bundan dolayı. Örneğin, gecikme bunda parçalara ayrılmıştır Makaleve çoğaltma algoritmalarındaki hataları nasıl aradıklarını anlamak için bunu okumanızı öneririm makale.

Blok zincirlerini test etmek ve kıyaslamak için birkaç popüler çözümü anlatacağım. Yorumlarda aynı sorunları çözmek için diğer faydalı yazılım ürünlerini anlatırsanız sevinirim.

Blockchain Test ve Karşılaştırma Araçlarına Kısa Bir Bakış

Blockchain'ler için özel olarak yaratılmamış olsa da, deneyebileceğiniz halihazırda çalışan bir ağ olması koşuluyla, blockchain'lerin çalışmasını etkili bir şekilde test etmenize olanak tanıyan bir araçla başlayacağım. Dağıtık bir sistemin güvenilirliğindeki en önemli faktör, sunucularda ve ağda sorun olması durumunda çalışmaya devam edebilme yeteneğidir. Bu, ağ gecikmeleri, disk doluluğu, harici hizmetlerin (DNS) kullanılamaması, donanım arızaları ve diğer yüzlerce neden olabilir. Çok sayıda sistem makinesinde uyum içinde çalışan herhangi bir sistemin kararlılığını kontrol etmek için şunları kullanabilirsiniz: cin. Kaos Mühendisliği adı verilen son derece etkili bir yaklaşım kullanıyor.

Gremlin, kendi ağ aracısını kullanarak gerekli sayıda makinede birçok farklı türde sorun yaratır: ağ gecikmeleri, herhangi bir kaynağın aşırı yüklenmesi (CPU, disk, bellek, ağ), bireysel protokollerin devre dışı bırakılması vb. Blok zincirleri için Gremlin, gerçek hayattaki sorunları taklit ederek ve ağın davranışını gözlemleyerek test ağı sunucularında kullanılabilir. Bu sayede geliştiriciler ve yöneticiler kontrollü bir ortamda sistem çökerse veya kod güncellenirse ne olacağını gözlemleyebilir. Bu durumda ağın önceden yapılandırılıp dağıtılmasının yanı sıra gerekli ölçümleri toplayacak şekilde yapılandırılması gerekir.

Gremlin, mimarlar, geliştiriciler ve güvenlik uzmanları için kullanışlı bir araçtır ve blok zincirler de dahil olmak üzere hazır ve çalışır durumdaki dağıtılmış sistemleri test etmek için evrensel bir çözümdür.

Blockchain Test ve Karşılaştırma Araçlarına Kısa Bir Bakış

Hyperledger Caliper çok daha özel bir çözümdür Hyperledger Kaliper. Şu anda Caliper aynı anda birden fazla blok zincirini destekliyor - Hyperledger ailesinin temsilcileri (Fabric, Sawtooth, Iroha, Burrow, Besu), Ethereum ve FISCO BCOS ağı.

Caliper'ı kullanarak blockchain ağının topolojisini ve test sözleşmelerini ayarlayabilir, ayrıca düğümün yapılandırmasını tanımlayabilirsiniz. Blockchain düğümleri bir makinedeki docker konteynerlerinde yükseltilir. Daha sonra gerekli olanı seçebilirsiniz test konfigürasyonları ve lansmandan sonra test sonuçlarına ilişkin bir rapor içeren bir dosya alırsınız. Caliper metriklerinin ve kıyaslama yaklaşımının tam listesini burada bulabilirsiniz Hyperledger Blockchain Performans MetrikleriBlockchain kıyaslama konusuyla ilgileniyorsanız bu harika bir makale. Metrik koleksiyonunu ayrı bir Prometheus/Grafana'da da ayarlayabilirsiniz.

Hyperledger Caliper, test tekrarlanabilirliği ve test ile kıyaslama otomasyonu sağladığı için geliştiricilere ve sistem mimarlarına yönelik bir araçtır. Blok zincirlerinin çekirdeğinin geliştirilmesinde kullanılır: fikir birliği algoritmaları, akıllı sözleşmelerin işlenmesi için sanal bir makine, eşler arası katman ve diğer sistem mekanizmaları.

Blockchain Test ve Karşılaştırma Araçlarına Kısa Bir Bakış

MixBytes Tankı EOS tabanlı ağlar için fikir birliği ve kesinlik algoritmaları geliştirme ve Parity Substrate (Polkadot) tabanlı parachainleri test etme sürecinde ortaya çıkan bir araçtır. İşlevsellik açısından Hyperledger Caliper'e yakındır, çünkü herhangi bir dağıtılmış sistemin düğümlerinden ve test komut dosyalarının çalıştığı istemci makinelerinden önemli ölçümler toplamanıza olanak tanır.

MixBytes Tank, birçok düğümü başlatabildiği, ön yapılandırma prosedürlerini gerçekleştirebildiği, farklı makinelerde paralel olarak birkaç kıyaslama çalıştırabildiği, gerekli ölçümleri toplayabildiği ve otomatik olarak kapatabildiği çeşitli bulut hizmetlerini (Digital Ocean, Google Cloud Engine, vb.) kullanır. ağ.

MixBytes Tank, test sonrasında gereksiz kaynakları otomatik olarak en aza indirerek bulut sunucularda tasarruf etmenizi sağlar. Bir diğer ayırt edici özellik, geliştiricinin istenen blok zincirinin dağıtımını yerel olarak test etmesine olanak tanıyan Molecule paketinin kullanılmasıdır.

MixBytes Tank, çok sayıda coğrafi olarak dağıtılmış sunucu ve istemcinin bulunduğu gerçek ağlarda ortaya çıkan algoritmalardaki darboğazları ve hataları erken tespit etmenize olanak tanır. Tank, müşterilerin yüksek düzeyde tekrarlanabilir koşullarda belirli bir TPS ile ve gerekirse farklı kıtalara yayılmış gerçek sayıda düğümle işlem göndermesi durumunda düğümlerde ne olacağını anlamanıza yardımcı olacaktır.

Blockchain Test ve Karşılaştırma Araçlarına Kısa Bir Bakış

Whiteblock Genesis, Ethereum tabanlı blok zincirleri için bir test platformudur. Bu araç oldukça geniş bir işlevselliğe sahiptir: bir ağ başlatmanıza, içinde gerekli sayıda hesap oluşturmanıza, gerekli istemci sayısını artırmanıza, ağ topolojisini yapılandırmanıza, bant genişliği ve paket kaybı parametrelerini belirlemenize ve bir test çalıştırmanıza olanak tanır.

Whiteblock Genesis kendi test olanaklarını sağlar. Geliştiricilerin yalnızca test parametrelerini belirtmeleri, bunları hazır bir API kullanarak çalıştırmaları ve kullanışlı bir kontrol panelini kullanarak sonuçları almaları yeterlidir.

Whiteblock Genesis, platformun her önemli kod değişikliğinde otomatik olarak yürüteceği oldukça ayrıntılı bir testi yapılandırmanıza olanak tanır. Bu, hataları erken bir aşamada yakalamanıza ve değişikliklerin işlem hızı ve düğümler tarafından tüketilen kaynaklar gibi önemli ağ parametreleri üzerindeki etkisini anında değerlendirmenize olanak tanır.

madt

Dağıtılmış sistemleri test etmek için bir başka ilginç genç ürün ise deli. Python'da yazılmıştır ve basit bir yapılandırma komut dosyası kullanarak gerekli ağ topolojisini ve gerekli sayıda sunucu ve istemciyi oluşturmanıza olanak tanır (örnek). Bundan sonra hizmet, ağı birkaç Docker konteynerine dağıtır ve ağın sunucularından ve istemcilerinden gelen mesajları gözlemleyebileceğiniz bir web arayüzü açar. Madt, blok zincirlerini test etmek için kullanılabilir - proje deposunda, düğümlere veri teslimindeki gecikmelerin kademeli olarak artırıldığı ve bu verilerin durumunun kontrol edildiği Kademlia protokolünü temel alan bir p2p ağ testi vardır.

Madt daha yeni ortaya çıktı, ancak çok esnek mimarisi göz önüne alındığında işlevsel bir ürüne dönüşebilir.

Diğer çözümler

Blok zincirlerinin sistem kısmının hemen hemen her testi, ön komut dosyalarının çalıştırılmasını, hesapların ve test koşullarının hazırlanmasını gerektirir (bu, çok sayıda zincir çatalı oluşturabilen fikir birliği hatalarının test edilmesi, sert çatal senaryolarının test edilmesi, sistem parametrelerinin değiştirilmesi vb. olabilir). Tüm bu manipülasyonlar farklı blok zincirlerinde farklı şekilde gerçekleştirilir, bu nedenle ekiplerin ürün testini ve kıyaslamayı kademeli olarak dahili CI/CD'ye uyarlaması ve blok zincirinin işlevselliği geliştikçe giderek daha karmaşık hale gelen kendi geliştirmelerini kullanması daha kolaydır.

Yine de hazır çözümlerin kullanılması bu ekiplerin test süresini büyük ölçüde azaltabilir, dolayısıyla bu yazılımın önümüzdeki yıllarda aktif olarak geliştirileceğini düşünüyorum.

Sonuç

Bu kısa incelemeyi sonuçlandırmak için blockchain test araçlarının birkaç önemli özelliğini listeleyeceğim:

  • Tekrarlanabilir koşullar altında bir blockchain ağını otomatik olarak dağıtma yeteneği. Bu faktör, blok zincirlerin sistem parçalarını geliştirirken önemlidir: fikir birliği algoritmaları, kesinlik, sistem akıllı sözleşmeleri.
  • Sisteme sahip olmanın maliyeti, tüketilen kaynaklar ve sürekli kullanım kolaylığı. Bu faktör, projeye az para karşılığında yüksek kaliteli testler sağlar.
  • Test konfigürasyonunun esnekliği ve basitliği. Bu faktör, sistem sorunlarının tespit edilme şansını artırır; önemli bir şeyin gözden kaçırılma olasılığı daha azdır.
  • Belirli blockchain türleri için özelleştirme. Mevcut olanı temel alan bir çözüm geliştirmek, kaliteyi büyük ölçüde artırabilir ve zaman maliyetlerini azaltabilir.
  • Elde edilen sonuçların ve bunların türünün (raporlar, metrikler, grafikler, günlükler vb.) kolaylığı ve erişilebilirliği. Bir ürünün gelişim geçmişini takip etmek istiyorsanız veya blockchain ağının davranışının derinlemesine analizine ihtiyaç duyuyorsanız bu kesinlikle gereklidir.

Testlerinizde iyi şanslar, blok zincirlerinizin hızlı ve hataya dayanıklı olmasını dilerim!

Kaynak: habr.com

Yorum ekle