ステラコンセンサスプロトコル

Stellar Consensus Protocol(SCP)は、Stellar Networkの基盤となるコンセンサスアルゴリズムであり、Federated Byzantine Agreement(FBA)の安全性が証明された構造として機能します。 Stellarのネットワークは、いくつかの明確なバリエーションを持つ他の暗号通貨と同様に、金融ネットワーク全体に分散フォールトトレランスのための多くの同様のメカニズムを実装しています.

ステラコンセンサスプロトコル

SCPは、ビザンチン協定(BA)の概念から派生し、クォーラムとクォーラムスライスを使用した分散型の許可のないネットワーク向けに調整されています。 SCPを理解するには、BAの簡単な履歴と、BAとFBAの比較、クォーラムとクォーラムスライスの説明、フェデレーション投票モデル、最後にSCPプロトコル自体のコミット/アボート投票システムが必要です。.

ビザンチン協定および連合ビザンチン協定

ビザンチン協定は ビザンチンフォールトトレランス ネットワーク内のノードの一部からの任意の動作にもかかわらず、それらがコンセンサスに達することを可能にする分散コンピューティングシステムの。 BAコンセンサスは、システム内のノードの動作について何も想定していません。実用的なビザンチンフォールトトレランス(pBFT)は、ビザンチン合意の典型的なモデルであり、コンセンサスをリソースから切り離しながら、迅速かつ効率的にコンセンサスに到達できます(つまり、PoSの金銭的利害関係またはPoWの電力).

実用的なビザンチンフォールトトレランス

読む:実用的なビザンチンフォールトトレランスとは?

ただし、BA(pBFT)は適切に拡張できず、参加しているすべてのノード間に大きな通信オーバーヘッドが必要です。さらに、システムは、軽減するためにネットワークのメンバーシップに関する全会一致の合意を必要とします シビル攻撃.

連合ビザンチン協定はによって導入されました SCPホワイトペーパー そして、以下を保証するコンセンサスプロトコルを促進することにより、BAの制限に明示的に対処します。

  • 分散制御
  • 柔軟な信頼
  • 低遅延
  • 漸近的セキュリティ

BAと比較したFBAの主な結果の1つは、FBAシステムが、閉じた(許可された)メンバーシップリストではなく、許可のない設定で参加しているノードに対して開かれていることです。.

FBAは、独自の方法を使用して状態の更新について合意します スロット ここで、ノード間の更新の依存関係が推測されます。ノードは、コンセンサスの各ラウンドでスロットの更新に同意する必要があります。ただし、システムはネットワークに自由に参加および離脱するノードに対してオープンであるため、過半数ベースのクォーラムコンセンサスメカニズムは機能しません。代わりに、SCPのFBAは クォーラムスライス 合意の特定のノードを説得することができるクォーラムのサブセットです.

ステラによると ブログ

「ビザンチン合意システムとフェデレーションビザンチン合意システム(FBAS)の主な違いは、FBAでは各ノードが独自のクォーラムスライスを選択することです。」

クォーラムとクォーラムスライスについては、以下で詳しく説明しますが、ここでの主なポイントは、個々のノードが、情報を信頼する他のノード(参加者)を個別に決定できることです。したがって、SCPは、各参加者に信頼できる人を選択する際の最大限の自由を与える最初のBAプロトコルです。.

クォーラムとクォーラムスライス

A 定足数 分散システムで合意に達するために必要なノードのセットとして定義されます。ノードが合意に到達しようとすると、ノードは相互に通信し(メッセージが偽造されていないことを前提としています。ここに暗号化が入ります)、合意にあるノードの特定のしきい値に達すると、状態の更新が有効になることに同意します。.

クォーラムスライス は、合意の特定のノードを説得することができるクォーラムのサブセットです。つまり、ノードは、ステートメントをアサートするノードの複数のセットに依存できます。ノードは情報を多数のスライスに依存する可能性があり、この信頼はシステム外部からの情報に基づく可能性があります。特に、信頼が設定されています 以内に ノードの 設定 ファイル、クォーラムスライスの動的な形成とその後の分散化を可能にします.

例として:

ノードAは、銀行を信頼していないと判断できるため、ノードAが信頼する別のクォーラムスライスが銀行との合意に達する必要があります。合意に達すると、定足数が形成されます。以下の図は、この例をよりよく理解するのに最適です。ノード7(および8)は、銀行を信頼しないノードAを表します。.

画像クレジット– David Mazieres プレゼンテーション Googleで

従来のBAでは、信頼できる情報のソースを自分で識別するのではなく、すべてのノードが同じスライスを受け入れる必要があります。そのため、スライスとクォーラムを区別する方法はなく、ネットワークへの閉じた許可されたメンバーアクセスが必要です。.

FBAモデルは、個々のノードに依存して独自のクォーラムスライスのセットを選択し、個々の決定に依存するクォーラムの有機的でより分散化された形成を効果的に可能にするため、「フェデレーション」という名前が付けられています。議論する中で 安全性 そして 活気 FBAプロトコルでは、評価する必要があります クォーラム交差点 そして 互いに素なクォーラム.

SCPホワイトペーパーによると:

「プロトコルは、関数Qで表されるクォーラムスライスがクォーラム交差と呼ばれる有効性プロパティを満たしている場合にのみ、一致を保証できます。」

クォーラムは、ノードを共有する場合に交差します。優れたクォーラムはノードを共有し、クォーラムの重複につながります。ノードは、クォーラムスライスの選択がクォーラムの交差に違反しないようにする責任があり、通常、ノードが保守的で大きなクォーラムにつながるスライスを選択する必要があります。.

クォーラムが交差しない場合、それらは次のように知られています。 互いに素なクォーラム. ばらばらのクォーラムは、コンセンサスを損なう矛盾したステートメントにつながる可能性のある悪いクォーラムです。適切なスライス選択プロセスを確実にするために、ノードはバランスを取る必要があります 安全性 そして 活気.

他のノードと矛盾する値を外部化すると、ノードは安全性に欠けます。合意への途中でブロックされると、ノードは活気に欠けます。連合投票モデルは、ステートメントで合意するノードで重要な役割を果たします.

連合投票

連合投票は、SCPが参加者の発言に同意する方法です。全体として、ノード間で交換されるメッセージのセットは2つあり、2つのメッセージラウンドは次の合意状態に細分できます。 わからない, 受け入れられました, そして 確認済み. 特に、フェデレーション環境での投票はオープンメンバーシップに対応する必要があるため、クローズドシステムよりもプロセスが複雑になります。.

連合投票プロセスは、次の4つのフェーズで構成されます。

  1. 最初の投票
  2. 受け入れ
  3. 批准
  4. 確認

最初の投票 ノードが有効であると主張する特定のステートメントに投票し、矛盾するステートメントに投票しない場所です。ただし、これにより、ノードが信頼する他の参加ノードの十分な数が別の有効なメッセージに投票した場合、ノードが投票を変更する可能性が残ります。この段階での投票は技術的に予備投票です.

受け入れ 特定のノードが矛盾するステートメントを受け入れたかどうかに基づいて、ノードがステートメントを受け入れる段階です。 vブロッキング そのノード(クォーラム交差)とクォーラムスライスにあるノードのセットは、ステートメントを受け入れます。ノードが矛盾するステートメントを受け入れなかった場合、またはノードのvブロッキングセットがステートメントを受け入れることに投票した場合、そのステートメントはノードによって受け入れられます。.

批准 クォーラムのすべてのメンバーがステートメントを受け入れるために投票する場所です。もしそうなら、ステートメントはノードによって承認されます。銀行を信頼しないノードAに戻ると、ノードAがクォーラムスライスを共有するノードに加えて、信頼する他のノードがステートメントを受け入れるための投票を行うと、ノードAによって承認されます。.

確認 声明に関するシステム全体の合意です。メッセージの十分なしきい値がネットワーク全体で処理されると、システムは特定のステートメントに同意します。ノードは、クォーラム内のノードからネットワーク全体に受け入れメッセージを伝播します。これらのメッセージは、別の初期メッセージを受け入れた場合でも、他のノードがメッセージを受け入れるように影響を与える可能性があります。最後に、メッセージを確認するための確認メッセージのラウンドがブロードキャストされ、投票のラウンドが終了します。.

投票メカニズムは複雑ですが、Stellarは、投票をより効果的にマッピングする方法に関する優れたリソースをいくつか提供しています。彼らは「銀河のコンセンサス」の図は、より広い概要と、を使用した便利なブログ投稿を示しています。 ランチタイムの例. 技術的な詳細については、の「連合投票」セクションを読むことができます。 SCPペーパー.

ステラコンセンサスプロトコル

SCPは、ブロックされた合意のインスタンスを最小限に抑え、投票システムを通じてそれらを無力化するように設計された連合ビザンチン合意プロトコルの実装です。 SCPプロトコルは、2つの主要なサブプロトコル、指名プロトコル、および投票プロトコルで構成されています。.

コンセンサススロットごとに、指名プロトコルが候補値を生成します。最終的に、すべてのノードは、各スロットの収束値を決定論的に生成できます。しかし、彼らはできません 知っている コンバージェンスが発生し、悪意のあるノードが指名プロセスをリセットできる可能性がある場合.

投票プロトコルは、指名プロトコルが収束したことにノードが同意すると実行されます。投票プロトコルでは、投票は候補値に関連付けられており、ノードは コミット または アボート その投票に関連付けられた値。合意のブロックを回避するために、ノードは特定の投票を中止して別の投票に進むことができます。逆に、ノードは投票を行うために投票できます。これにより、その投票に関連付けられた値がコンセンサススロットに外部化されます。.

大まかに言えば、SCPが各スロットを個別に処理する方法は、の単一スロットのコンセンサスに似ています。 パクソス, 多くの個別のインスタンスだけで.

クォーラム交差のあるSCPにはブロックされた状態はありません。ファウルされたノード(不良ノードに大きく依存するノード)は、ファウルされたノードの協力なしに、良好なノードがステートメントを承認できる不要なセットメカニズムを介してバイパスすることもできます。汚れたノードもコンセンサスを損なうことはできません.

指名プロトコルと投票プロトコルの両方に、分割投票などの特定のシナリオに関する非常に複雑な詳細が含まれています。これらの詳細はSCPペーパーでも入手できます.

SCPの制限の1つは、ノードが適切なクォーラムスライスを選択した場合にのみ安全性を保証できることです。さらに、非倫理的な利点のためにそれらの位置を活用する広く信頼されているノードなどの連合システムのセキュリティ問題が発生する可能性があります。たとえば、銀行が膨大な数のノードに依存している場合、ネットワーク内の他のノードでは利用できない情報上の利点がある可能性があります。.

結論

全体として、SCPは、分散制御、低遅延、柔軟な信頼、および漸近的なセキュリティを提供できる、最初の証明可能な安全なコンセンサスプロトコルです。さまざまな形式のコンセンサスにはすべてトレードオフが伴いますが、SCPは、安全性を犠牲にすることなく、分散された許可のないネットワークでコンセンサスにすばやく到達するための高レベルの有効性を維持します.

Mike Owergreen Administrator
Sorry! The Author has not filled his profile.
follow me