ブロックチェヌン䞊には TPS がいく぀ありたすか?

非技術者からの分散システムに関するよくある質問は、「ブロックチェヌン䞊の TPS は䜕個ですか?」です。 しかし、答えずしお䞎えられた数字は、質問者が聞きたいこずずほずんど共通点がありたせん。 実際、圌は「あなたのブロックチェヌンは私のビゞネス芁件に適合したすか?」ず尋ねたかったのですが、これらの芁件は XNUMX ぀の数字ではなく、倚くの条件です。ネットワヌクのフォヌルト トレランス、ファむナリティ芁件、サむズ、トランザクションの性質、その他倚くのパラメヌタヌが含たれたす。 したがっお、「tps は䜕秒か」ずいう質問に察する答えは簡単ではなく、完党に答えられるこずはほずんどありたせん。 非垞に耇雑な蚈算を実行する数十たたは数癟のノヌドを備えた分散システムは、ネットワヌクの状態、ブロックチェヌンの内容、技術的障害、経枈的問題、ネットワヌクぞの攻撃、その他倚くの理由に関連しお、膚倧な数の異なる状態になる可胜性がありたす。 。 パフォヌマンスの問題が発生する可胜性がある段階は埓来のサヌビスずは異なり、ブロックチェヌン ネットワヌク サヌバヌはデヌタベヌス、Web サヌバヌ、トレント クラむアントの機胜を組み合わせたネットワヌク サヌビスであるため、すべおのサブシステムの負荷プロファむルの点で非垞に耇雑になりたす。 : プロセッサ、メモリ、ネットワヌク、ストレヌゞ

たたたた、分散型ネットワヌクずブロックチェヌンは、集䞭型゜フトりェア開発者にずっお非垞に特殊で珍しい゜フトりェアです。 したがっお、分散型ネットワヌクのパフォヌマンスず持続可胜性の重芁な偎面、それらを枬定しボトルネックを芋぀けるアプロヌチに぀いお匷調したいず思いたす。 ブロックチェヌン ナヌザヌぞのサヌビス提䟛速床を制限するさたざたなパフォヌマンスの問題を怜蚎し、このタむプの゜フトりェアの特城に泚目したす。

ブロックチェヌンクラむアントによるサヌビスリク゚ストの段階

倚かれ少なかれ耇雑なサヌビスの品質に぀いお正盎に語るには、平均倀だけでなく、最倧/最小、䞭倮倀、パヌセンタむルも考慮する必芁がありたす。 理論的には、䞀郚のブロックチェヌンでは 1000 tps に぀いお話すこずができたすが、900 件のトランザクションが非垞に高速に完了し、100 件が数秒間「停止」した堎合、すべおのトランザクションにわたっお収集された平均時間は、クラむアントにずっお完党に公平な指暙ずは蚀えたせん。数秒以内に取匕を完了できたせんでした。 コンセンサスラりンドの逃しやネットワヌクの分割によっお䞀時的な「穎」が生じるず、テストベンチで優れたパフォヌマンスを瀺したサヌビスが倧幅に台無しになる可胜性がありたす。

このようなボトルネックを特定するには、実際のブロックチェヌンがナヌザヌぞのサヌビスを提䟛するこずが困難になる可胜性がある段階をよく理解する必芁がありたす。 トランザクションの配信ず凊理、およびブロックチェヌンの新しい状態の取埗のサむクルを説明したしょう。クラむアントはそこから、トランザクションが凊理され、説明されたこずを確認できたす。

  1. トランザクションはクラむアント䞊で圢成されたす
  2. トランザクションはクラむアント䞊で眲名されたす
  3. クラむアントはノヌドの XNUMX ぀を遞択し、そこにトランザクションを送信したす。
  4. クラむアントはノヌドの状態デヌタベヌスの曎新をサブスクラむブし、トランザクションの結果が衚瀺されるのを埅ちたす。
  5. ノヌドはトランザクションを p2p ネットワヌク䞊に分散したす。
  6. 耇数たたは XNUMX ぀の BP (ブロックプロデュヌサヌ) が蓄積されたトランザクションを凊理し、状態デヌタベヌスを曎新したす
  7. BP は必芁な数のトランザクションを凊理した埌、新しいブロックを圢成したす
  8. BP は p2p ネットワヌク経由で新しいブロックを配垃したす
  9. 新しいブロックはクラむアントがアクセスしおいるノヌドに配信されたす
  10. ノヌドが状態デヌタベヌスを曎新する
  11. ノヌドはクラむアントに関する曎新を確認し、トランザクション通知を送信したす。

ここで、これらの段階を詳しく芋お、各段階で朜圚的なパフォヌマンスの問題に぀いお説明したす。 集䞭型システムずは異なり、ネットワヌク クラむアントでのコヌドの実行も考慮したす。 倚くの堎合、TPS を枬定する堎合、トランザクション凊理時間はクラむアントからではなくノヌドから収集されたす。これは完党に公平ではありたせん。 クラむアントは、ノヌドが自分のトランザクションをどれだけ速く凊理したかは気にしたせん; クラむアントにずっお最も重芁なこずは、ブロックチェヌンに含たれるこのトランザクションに関する信頌できる情報が利甚可胜になる瞬間です。 このメトリクスは、本質的にはトランザクションの実行時間です。 これは、異なるクラむアントは、同じトランザクションを送信したずしおも、チャネル、負荷、ノヌドの近さなどに応じお、たったく異なる時間を受信する可胜性があるこずを意味したす。 したがっお、これは最適化する必芁があるパラメヌタであるため、クラむアント䞊でこの時間を枬定するこずが絶察に必芁です。

クラむアント偎でのトランザクションの準備

最初の XNUMX ぀のポむントから始めたしょう。トランザクションはクラむアントによっお圢成され、眲名されたす。 奇劙なこずに、これはクラむアントの芳点からはブロックチェヌンのパフォヌマンスのボトルネックになる可胜性もありたす。 これは、すべおの蚈算ず操䜜をデヌタで匕き継ぐ集䞭型サヌビスでは異䟋であり、クラむアントは倧量のデヌタたたは蚈算を芁求できる短いリク゚ストを準備するだけで、既補の結果が埗られたす。 ブロックチェヌンでは、クラむアント コヌドはたすたす匷力になり、ブロックチェヌン コアはたすたす軜量になり、通垞、倧芏暡なコンピュヌティング タスクはクラむアント ゜フトりェアに転送されたす。 ブロックチェヌンでは、XNUMX ぀のトランザクションを非垞に長い間準備できるクラむアントが存圚したす (ここで話しおいるのは、クラむアント偎でのさたざたなマヌクル蚌明、簡朔な蚌明、しきい倀眲名、その他の耇雑な操䜜に぀いおです)。 簡単なオンチェヌン怜蚌ずクラむアントでのトランザクションの綿密な準備の良い䟋は、マヌクル ツリヌに基づくリストのメンバヌシップの蚌明です (ここ)。 蚘事.

たた、クラむアント コヌドは単にトランザクションをブロックチェヌンに送信するのではなく、最初にブロックチェヌンの状態をク゚リするこずを忘れないでください。このアクティビティはネットワヌクずブロックチェヌン ノヌドの茻茳に圱響を䞎える可胜性がありたす。 したがっお、枬定を行うずきは、クラむアント コヌドの動䜜を可胜な限り完党に゚ミュレヌトするこずが合理的です。 ブロックチェヌン内に、資産を転送するための最も単玔なトランザクションに通垞のデゞタル眲名を付ける通垞のラむト クラむアントが存圚するずしおも、クラむアント䞊では幎々さらに倧芏暡な蚈算が行われ、暗号アルゎリズムは匷化されおおり、この郚分の凊理は将来的に倧きなボトルネックになる可胜性がありたす。 したがっお、3.5 秒続くトランザクションで、トランザクションの準備ず眲名に 2.5 秒が費やされ、ネットワヌクぞの送信ず応答の埅機に 1.0 秒が費やされるずいう状況を芋逃さないように泚意しおください。 このボトルネックのリスクを評䟡するには、ブロックチェヌン ノヌドだけでなく、クラむアント マシンからもメトリクスを収集する必芁がありたす。

トランザクションの送信ずそのステヌタスの監芖

次のステップでは、遞択したブロックチェヌン ノヌドにトランザクションを送信し、トランザクション プヌルぞの受け入れステヌタスを受け取りたす。 この段階は通垞のデヌタベヌス アクセスに䌌おおり、ノヌドはプヌル内のトランザクションを蚘録し、p2p ネットワヌクを通じおトランザクションに関する情報の配信を開始する必芁がありたす。 ここでのパフォヌマンスを評䟡するアプロヌチは、埓来の Web API マむクロサヌビスのパフォヌマンスを評䟡するこずに䌌おおり、ブロックチェヌン内のトランザクション自䜓は曎新され、そのステヌタスをアクティブに倉曎できたす。 䞀般に、䞀郚のブロックチェヌン䞊のトランザクション情報の曎新は、チェヌン フォヌク間の切り替え時や BP がブロックにトランザクションを含める意図を発衚するずきなど、耇数回発生する可胜性がありたす。 このプヌルのサむズずその䞭のトランザクション数の制限は、ブロックチェヌンのパフォヌマンスに圱響を䞎える可胜性がありたす。 トランザクション プヌルが可胜な最倧サむズたで満たされおいる堎合、たたは RAM に収たらない堎合、ネットワヌク パフォヌマンスが急激に䜎䞋する可胜性がありたす。 ブロックチェヌンには、倧量のゞャンク メッセヌゞから保護する䞀元的な手段がありたせん。たた、ブロックチェヌンが倧量のトランザクションず䜎料金をサポヌトしおいる堎合、トランザクション プヌルがオヌバヌフロヌする可胜性があり、これがもう XNUMX ぀の朜圚的なパフォヌマンスのボトルネックになりたす。

ブロックチェヌンでは、クラむアントは任意のブロックチェヌン ノヌドにトランザクションを送信したす。通垞、トランザクションのハッシュは送信前にクラむアントに知られおいるため、接続を確立し、送信埌はブロックチェヌンが倉曎されるのを埅぀だけで枈みたす。その状態により、トランザクションが可胜になりたす。 「tps」を枬定するず、ブロックチェヌン ノヌドぞの接続方法が異なるずたったく異なる結果が埗られるこずに泚意しおください。 これは、通垞の HTTP RPC たたは「サブスクラむブ」パタヌンの実装を可胜にする WebSocket です。 XNUMX 番目のケヌスでは、クラむアントはより早く通知を受信し、ノヌドはトランザクション ステヌタスに関する応答に費やすリ゜ヌス (䞻にメモリずトラフィック) が少なくなりたす。 したがっお、「tps」を枬定するずきは、クラむアントがノヌドに接続する方法を考慮する必芁がありたす。 したがっお、このボトルネックのリスクを評䟡するには、ベンチマヌク ブロックチェヌンが、実際のネットワヌクに察応する割合で WebSocket ず HTTP RPC リク゚ストの䞡方でクラむアントを゚ミュレヌトでき、トランザクションの性質ずそのサむズを倉曎できなければなりたせん。

このボトルネックのリスクを評䟡するには、ブロックチェヌン ノヌドだけでなく、クラむアント マシンからもメトリクスを収集する必芁がありたす。

p2pネットワヌクを介したトランザクションずブロックの送信

ブロックチェヌンでは、参加者間でトランザクションずブロックを転送するためにピアツヌピア (p2p) ネットワヌキングが䜿甚されたす。 トランザクションは、ノヌドの 2 ぀から始たり、ピア ブロック プロデュヌサヌに到達するたでネットワヌク党䜓に広がりたす。ピア ブロック プロデュヌサヌはトランザクションをブロックにパックし、同じ p2p を䜿甚しお新しいブロックをすべおのネットワヌク ノヌドに配垃したす。 最新の pXNUMXp ネットワヌクの基瀎は、Kademlia プロトコルのさたざたな修正です。 ここで このプロトコルの適切な芁玄、および ここで - BitTorrent ネットワヌクのさたざたな枬定結果を蚘茉した蚘事。このタむプのネットワヌクは、集䞭型サヌビスの厳密に構成されたネットワヌクよりも耇雑で予枬しにくいこずがわかりたす。 たた、 ここで むヌサリアムノヌドのさたざたな興味深いメトリクスの枬定に関する蚘事。

぀たり、そのようなネットワヌク内の各ピアは、コンテンツによっおアドレス指定される情報のブロックを芁求する他のピアの独自の動的リストを維持したす。 ピアがリク゚ストを受信するず、必芁な情報を提䟛するか、リスト内の次の疑䌌ランダム ピアにリク゚ストを枡し、応答を受信するず、それをリク゚スタに枡し、しばらくキャッシュしたす。次回はもっず早く情報ブロックを。 このように、人気のある情報は倚数のピアの倚数のキャッシュに残り、人気のない情報は埐々に眮き換えられたす。 ピアは、誰が誰にどれだけの情報を転送したかを蚘録しおおり、ネットワヌクは、評䟡を䞊げおより高いレベルのサヌビスを提䟛するこずで、アクティブなディストリビュヌタを刺激し、非アクティブな参加者をピア リストから自動的に排陀したす。

したがっお、ブロックプロデュヌサヌがトランザクションを確認しおブロックに含めるこずができるように、トランザクションをネットワヌク党䜓に分散する必芁がありたす。 ノヌドは新しいトランザクションを党員に積極的に「配垃」し、ネットワヌクをリッスンしお、埅機䞭のクラむアントに通知するために、必芁なトランザクションが出珟するブロックがむンデックス内に珟れるのを埅ちたす。 p2p ネットワヌク内でネットワヌクが新しいトランザクションずブロックに関する情報を盞互に転送するのにかかる時間は、非垞に倚くの芁因に䟝存したす。たずえば、近くで動䜜する正盎なノヌドの数 (ネットワヌクの芳点から)、「りォヌム ノヌドの数」などです。これらのノヌドのキャッシュ、ブロックのサむズ、トランザクション、倉曎の性質、ネットワヌクの地理、ノヌドの数、およびその他の倚くの芁因。 このようなネットワヌクにおけるパフォヌマンス指暙の耇雑な枬定は耇雑な問題であり、クラむアントずピア (ブロックチェヌン ノヌド) の䞡方でリク゚ストの凊理時間を同時に評䟡する必芁がありたす。 P2P メカニズムのいずれかの問題、䞍正なデヌタの削陀ずキャッシュ、アクティブなピアのリストの非効果的な管理、およびその他の倚くの芁因により、ネットワヌク党䜓の効率に圱響を䞎える遅延が発生する可胜性があり、このボトルネックは分析が最も困難です。 、テストず結果の解釈。

ブロックチェヌン凊理ず状態デヌタベヌスの曎新

ブロックチェヌンの最も重芁な郚分は、コンセンサス アルゎリズム、ネットワヌクから受信した新しいブロックぞのその適甚、および結果を状態デヌタベヌスに蚘録するトランザクションの凊理です。 新しいブロックをチェヌンに远加しおからメむン チェヌンを遞択するず、できるだけ早く機胜するはずです。 ただし、珟実の生掻では、「すべき」は「機胜する」ずいう意味ではなく、たずえば、2 ぀の長い競合チェヌンが垞に盞互に切り替わり、各スむッチでプヌル内の䜕千ものトランザクションのメタデヌタが倉曎される状況を想像するこずができたす。 、状態デヌタベヌスを垞にロヌルバックしたす。 ボトルネックを定矩するずいう点では、この段階は pXNUMXp ネットワヌク局よりも単玔です。 トランザクションの実行ずコンセンサスアルゎリズムは厳密に決定的であり、ここで䜕かを枬定する方が簡単です。
重芁なこずは、このステヌゞのパフォヌマンスのランダムな䜎䞋ずネットワヌクの問題を混同しないこずです。ノヌドはメむンチェヌンに関するブロックや情報を配信するのが遅く、倖郚クラむアントにずっおはこれが遅いネットワヌクのように芋えるかもしれたせんが、問題は次の点にありたす。党く違う堎所。

この段階でパフォヌマンスを最適化するには、ノヌド自䜓からメトリクスを収集しお監芖し、ノヌド䞊で凊理されたブロックの数、サむズ、トランザクションの数など、状態デヌタベヌスの曎新に関連するメトリクスをメトリクスに含めるこずが圹立ちたす。チェヌンフォヌク間のスむッチの数、無効なブロックの数、仮想マシンの動䜜時間、デヌタコミット時間など。 これにより、ネットワヌクの問題がチェヌン凊理アルゎリズムの゚ラヌず混同されるのを防ぐこずができたす。

トランザクションを凊理する仮想マシンは、ブロックチェヌンの動䜜を最適化できる有甚な情報源ずなり埗たす。 メモリ割り圓おの数、読み取り/曞き蟌み呜什の数、およびコントラクト コヌド実行の効率に関連するその他の指暙は、開発者に倚くの有益な情報を提䟛したす。 同時に、スマヌト コントラクトはプログラムであるため、理論的には CPU、メモリ、ネットワヌク、ストレヌゞなどのリ゜ヌスを消費する可胜性があるため、トランザクション凊理はかなり䞍確実な段階であり、さらにバヌゞョン間を移動するず倧きく倉化したす。契玄コヌドを倉曎する堎合。 したがっお、ブロックチェヌンのパフォヌマンスを効果的に最適化するには、トランザクション凊理に関連するメトリクスも必芁です。

ブロックチェヌンぞのトランザクションの包含に関する通知をクラむアントが受信する

これは、ブロックチェヌン クラむアントがサヌビスを受け取る最終段階です。他の段階ず比范しお倧きなオヌバヌヘッド コストはありたせんが、クラむアントがノヌドから倧量の応答を受け取る可胜性 (スマヌト コントラクトなど) を考慮する䟡倀はありたす。デヌタの配列を返したす)。 いずれにしおも、「ブロックチェヌンには TPS がいく぀ありたすか?」ずいう質問をした人にずっお、この点が最も重芁です。 このずき、サヌビスを受けた時間が蚘録されたす。

この堎所では、クラむアントがブロックチェヌンからの応答を埅぀ために費やさなければならなかった党時間が垞に送信されたす。ナヌザヌがアプリケヌションでの確認を埅぀のはこの時間であり、その最適化こそが重芁です。開発者の䞻なタスク。

たずめ

その結果、ブロックチェヌン䞊で実行される操䜜の皮類を説明し、それらをいく぀かのカテゎリに分類するこずができたす。

  1. 暗号倉換、蚌明構築
  2. ピアツヌピア ネットワヌキング、トランザクションおよびブロック レプリケヌション
  3. トランザクション凊理、スマヌトコントラクトの実行
  4. ブロックチェヌンの倉曎を状態デヌタベヌスに適甚し、トランザクションずブロックのデヌタを曎新する
  5. 状態デヌタベヌス、ブロックチェヌン ノヌド API、サブスクリプション サヌビスぞの読み取り専甚リク゚スト

䞀般に、最新のブロックチェヌン ノヌドの技術芁件は非垞に深刻です。暗号化甚の高速 CPU、状態デヌタベヌスを保存しお迅速にアクセスするための倧量の RAM、同時に開いおいる倚数の接続を䜿甚したネットワヌク むンタラクション、および倧容量のストレヌゞです。 このような高い芁件ず豊富な皮類の操䜜により、必然的にノヌドに十分なリ゜ヌスが䞍足する可胜性があり、䞊で説明したいずれかの段階がネットワヌク党䜓のパフォヌマンスの別のボトルネックになる可胜性がありたす。

ブロックチェヌンのパフォヌマンスを蚭蚈および評䟡するずきは、これらすべおの点を考慮する必芁がありたす。 これを行うには、クラむアントずネットワヌク ノヌドからメトリクスを同時に収集しお分析し、それらの間の盞関関係を調べ、クラむアントにサヌビスを提䟛するのにかかる時間を芋積もり、すべおの䞻芁リ゜ヌス (CPU/メモリ/ネットワヌク/ストレヌゞ) を考慮する必芁がありたす。 、それらがどのように䜿甚され、盞互に圱響を䞎えるかを理解したす。 これらすべおにより、膚倧な数の異なる構成ず状態があるため、「TPS の数」ずいう圢匏でさたざたなブロックチェヌンの速床を比范するこずは、非垞にありがたい䜜業になりたす。 倧芏暡な集䞭型システム、数癟台のサヌバヌのクラスタヌでは、これらの問題も耇雑であり、倚数の異なるメトリクスの収集も必芁になりたすが、ブロックチェヌンでは、P2P ネットワヌク、仮想マシンの凊理契玄、内郚経枈、孊䜍の数などにより、自由床がはるかに倧きいため、耇数のサヌバヌでテストを行うこずができたすが、これは指暙ではなく、珟実ずほずんど関係のない非垞に近䌌的な倀のみを瀺したす。

したがっお、ブロックチェヌンコアで開発する堎合、パフォヌマンスを評䟡しお「前回ず比べお改善されたしたか?」ずいう質問に答えるために、数十のノヌドでブロックチェヌンの起動を調敎し、自動的にベンチマヌクを起動しおメトリクスを収集する非垞に耇雑な゜フトりェアを䜿甚したす。 ; この情報がなければ、耇数の参加者で動䜜するプロトコルをデバッグするこずは非垞に困難です。

したがっお、「あなたのブロックチェヌンには TPS がいく぀ありたすか?」ずいう質問を受けたずきは、察話者にお茶を出し、XNUMX 個のグラフを芋お、ブロックチェヌンのパフォヌマンスの問題に関する XNUMX ぀のボックスすべおずその提案に耳を傟ける準備ができおいるかどうかを尋ねおください。それらを解決しお...

出所 habr.com

コメントを远加したす