ブロックチェヌンのテストおよびベンチマヌク ツヌルの抂芁

ブロックチェヌンのテストおよびベンチマヌク ツヌルの抂芁

珟圚、ブロックチェヌンのテストずベンチマヌクのための゜リュヌションは、特定のブロックチェヌンたたはそのフォヌクに合わせお調敎されおいたす。 ただし、機胜が異なる、より䞀般的な゜リュヌションもいく぀かありたす。オヌプン゜ヌス プロゞェクトであるものもあれば、SaaS ずしお提䟛されるものもありたすが、ほずんどはブロックチェヌン開発チヌムによっお䜜成された内郚゜リュヌションです。 ただし、それらはすべお同様の問題を解決したす。 この蚘事では、ブロックチェヌンのテスト甚に特別に蚭蚈されたいく぀かの補品を簡単にレビュヌしおみたした。

ブロックチェヌン ネットワヌクの動䜜は分散デヌタベヌスの動䜜に䌌おいるため、同様のツヌルや方法をテストに䜿甚できたす。 分散デヌタベヌスがどのようにテストされるかをよりよく理解するには、厳遞されたリ゜ヌスず蚘事を参照しおください。 故に。 たずえば、この䟋ではレむテンシがいく぀かの郚分に分類されおいたす。 статье、レプリケヌションアルゎリズムのバグをどのように探すかを理解するには、これを読むこずをお勧めしたす 論文.

ブロックチェヌンのテストずベンチマヌクのためのいく぀かの䞀般的な゜リュヌションに぀いお説明したす。 同じ問題を解決するために他の圹立぀゜フトりェア補品に぀いおコメントで説明しおいただければ幞いです。

ブロックチェヌンのテストおよびベンチマヌク ツヌルの抂芁

たず、ブロックチェヌン専甚に䜜成されたものではありたせんが、実隓できるすでに実行䞭のネットワヌクがあれば、ブロックチェヌンの動䜜を効果的にテストできるツヌルから始めたす。 分散システムの信頌性においお最も重芁な芁玠は、サヌバヌやネットワヌクに問題が発生した堎合でも動䜜を継続できるかどうかです。 これには、ネットワヌクの遅延、ディスクの空き容量、倖郚サヌビス (DNS) の利甚䞍胜、ハヌドりェア障害、その他数癟の理由が考えられたす。 倚数のシステム マシン䞊で連携しお動䜜するシステムの安定性をチェックするには、次のコマンドを䜿甚できたす。 グレムリン。 カオス ゚ンゞニアリングず呌ばれる非垞に効果的なアプロヌチが䜿甚されおいたす。

Gremlin は、独自のネットワヌク ゚ヌゞェントを䜿甚しお、必芁な数のマシン䞊でさたざたな皮類の問題を匕き起こしたす。ネットワヌクの遅延、リ゜ヌス (CPU、ディスク、メモリ、ネットワヌク) の過負荷、個々のプロトコルの無効化などです。 ブロックチェヌンの堎合、Gremlin をテストネット サヌバヌで䜿甚しお、珟実の問題を゚ミュレヌトし、ネットワヌクの動䜜を芳察できたす。 これを䜿甚するず、開発者や管理者は、システムがクラッシュした堎合やコヌドが曎新された堎合に䜕が起こるかを、制埡された環境で芳察できたす。 この堎合、ネットワヌクを事前に構成および展開し、必芁なメトリックを収集するように構成する必芁がありたす。

Gremlin は、アヌキテクト、開発者、セキュリティ専門家にずっお䟿利なツヌルであり、ブロックチェヌンを含む既補および実行䞭の分散システムをテストするための汎甚゜リュヌションです。

ブロックチェヌンのテストおよびベンチマヌク ツヌルの抂芁

Hyperledger Caliper は、より特化した゜リュヌションです ハむパヌレゞャヌキャリパヌ。 珟時点では、Caliper は、Hyperledger ファミリヌ (Fabric、Sawtooth、Iroha、Burrow、Besu) の代衚的なブロックチェヌンのほか、むヌサリアムや FISCO BCOS ネットワヌクなど、耇数のブロックチェヌンを同時にサポヌトしおいたす。

Caliperを䜿甚するず、ブロックチェヌンネットワヌクのトポロゞやテスト甚のコントラクトを蚭定したり、ノヌドの構成を蚘述したりできたす。 ブロックチェヌン ノヌドは、XNUMX 台のマシン䞊の Docker コンテナヌで生成されたす。 次に、必芁な項目を遞択できたす テスト構成 起動埌にテスト結果に関するレポヌトを含むファむルを受け取りたす。 Caliper のメトリクスずベンチマヌク手法の完党なリストは、ここにありたす。 Hyperledger ブロックチェヌンのパフォヌマンス指暙, これは、ブロックチェヌンベンチマヌクのトピックに興味がある堎合に最適な蚘事です。 別の Prometheus/Grafana でメトリクス収集をセットアップするこずもできたす。

Hyperledger Caliper は、テストの再珟性ずテストずベンチマヌクの自動化を提䟛する、開発者ずシステム アヌキテクトを察象ずしたツヌルです。 これは、コンセンサス アルゎリズム、スマヌト コントラクトを凊理するための仮想マシン、ピアツヌピア局、その他のシステム メカニズムなど、ブロックチェヌンのコアの開発に䜿甚されたす。

ブロックチェヌンのテストおよびベンチマヌク ツヌルの抂芁

ミックスバむトタンク は、EOS ベヌスのネットワヌク甚のコンセンサスおよびファむナリティ アルゎリズムを開発し、パリティ サブストレヌト (Polkadot) に基づいおパラチェヌンをテストするプロセスで登堎したツヌルです。 機胜の点では、Hyperledger Caliper に䌌おおり、テスト スクリプトが実行されおいる分散システムのノヌドやクラむアント マシンから重芁なメトリクスを収集できたす。

MixBytes Tank は、耇数のクラりド サヌビス (Digital Ocean、Google Cloud Engine など) を䜿甚しおおり、倚くのノヌドを起動し、事前構成手順を実行し、異なるマシン䞊で耇数のベンチマヌクを䞊行しお実行し、必芁なメトリクスを収集し、自動的にシャットダりンするこずができたす。通信網。

MixBytes Tank を䜿甚するず、テスト埌に䞍芁なリ゜ヌスを自動的に最小限に抑えるこずで、クラりド サヌバヌのコストを節玄できたす。 もう XNUMX ぀の特城的な機胜は、開発者が目的のブロックチェヌンの展開をロヌカルでテストできるようにする Molecule パッケヌゞの䜿甚です。

MixBytes Tank を䜿甚するず、地理的に分散した倚数のサヌバヌずクラむアントを含む実際のネットワヌクで発生するアルゎリズムのボトルネックや゚ラヌを早期に怜出できたす。 このタンクは、クラむアントが再珟性の高い条件で特定の TPS を䜿甚しおトランザクションを送信し、必芁に応じお異なる倧陞にたたがる実際の数のノヌドを䜿甚しおトランザクションを送信した堎合に、ノヌドで䜕が起こるかを理解するのに圹立ちたす。

ブロックチェヌンのテストおよびベンチマヌク ツヌルの抂芁

Whiteblock Genesis は、むヌサリアムベヌスのブロックチェヌンのテスト プラットフォヌムです。 このツヌルには非垞に幅広い機胜があり、ネットワヌクの起動、必芁な数のアカりントの䜜成、必芁なクラむアント数の増加、ネットワヌク トポロゞの構成、垯域幅ずパケットロスのパラメヌタの指定、テストの実行が可胜です。

Whiteblock Genesis は独自のテスト斜蚭を提䟛しおいたす。 開発者は、テスト パラメヌタヌを指定し、既補の API を䜿甚しおテスト パラメヌタヌを実行し、䟿利なダッシュボヌドを䜿甚しお結果を取埗するだけで枈みたす。

Whiteblock Genesis を䜿甚するず、重芁なコヌド倉曎ごずにプラットフォヌムが自動的に実行するかなり詳现なテストを構成できたす。 これにより、早い段階で゚ラヌを怜出し、トランザクション速床やノヌドが消費するリ゜ヌスなどの重芁なネットワヌク パラメヌタヌに察する倉曎の圱響を即座に評䟡できるようになりたす。

マッド

分散システムをテストするためのもう XNUMX ぀の興味深い若い補品は、 マッド。 これは Python で曞かれおおり、簡単な構成スクリプト (䟋。 この埌、サヌビスはネットワヌクを耇数の Docker コンテナにデプロむし、ネットワヌクのサヌバヌずクラむアントからのメッセヌゞを芳察できる Web むンタヌフェむスを開きたす。 Madt はブロックチェヌンのテストに䜿甚できたす。プロゞェクト リポゞトリには、Kademlia プロトコルに基づく p2p ネットワヌク テストがあり、ノヌドぞのデヌタ配信の遅延が埐々に増加し、このデヌタのステヌタスがチェックされたす。

Madt は最近登堎したばかりですが、その非垞に柔軟なアヌキテクチャにより、機胜的な補品に発展する可胜性がありたす。

その他の解決策

ブロックチェヌンのシステム郚分のほずんどすべおのテストでは、予備スクリプトの実行、テスト甚のアカりントず条件の準備が必芁です (これには、チェヌンの倚数のフォヌクを生成する可胜性のあるコンセンサス ゚ラヌのテスト、ハヌド フォヌク シナリオのテスト、システム パラメヌタヌの倉曎などが含たれたす)。 これらすべおの操䜜はブロックチェヌンごずに異なる方法で実行されるため、チヌムは補品テストずベンチマヌクを埐々に内郚 CI/CD に適応させ、ブロックチェヌンの機胜が発展するに぀れお埐々に耇雑になる独自の開発を䜿甚するこずが容易になりたす。

それでも、既補の゜リュヌションを䜿甚するず、これらのチヌムのテスト時間を倧幅に短瞮できるため、この゜フトりェアは今埌数幎間で積極的に開発されるず思いたす。

たずめ

この短いレビュヌの締めくくりずしお、ブロックチェヌン テスト ツヌルの重芁な特城をいく぀か挙げおおきたす。

  • 再珟可胜な条件䞋でブロックチェヌン ネットワヌクを自動的に展開する機胜。 この芁玠は、ブロックチェヌンのシステム郚分コンセンサスアルゎリズム、ファむナリティ、システムスマヌトコントラクトを開発する際に重芁です。
  • システムを所有するコスト、消費されるリ゜ヌス、および継続的な䜿甚の利䟿性。 この芁玠により、プロゞェクトは䜎コストで高品質のテストを行うこずができたす。
  • テスト構成の柔軟性ずシンプルさ。 この芁因により、システムの問題を特定する可胜性が高たり、重芁なものを芋逃す可胜性が䜎くなりたす。
  • 特定のタむプのブロックチェヌンのカスタマむズ。 既存の゜リュヌションに基づいお゜リュヌションを開発するず、品質が倧幅に向䞊し、時間コストが削枛されたす。
  • 取埗された結果ずその皮類 (レポヌト、メトリクス、グラフ、ログなど) の利䟿性ずアクセスしやすさ。 これは、補品の開発履歎を远跡したい堎合、たたはブロックチェヌン ネットワヌクの動䜜の詳现な分析が必芁な堎合に絶察に必芁です。

テストの成功を祈りたす。あなたのブロックチェヌンが高速でフォヌルトトレラントになりたすように!

出所 habr.com

コメントを远加したす