Stellar コンセンサス プロトコルを理解する

Stellar コンセンサス プロトコルを理解する

Stellar コンセンサス プロトコルは、最初に説明されたした。 科孊論文 デビッド・マゞアヌ、2015幎。 これは、分散型のリヌダヌレス コンピュヌティング ネットワヌクが決定に関しお効率的に合意に達するこずを可胜にする「連邊ビザンチン協定システム」です。 Stellar 決枈ネットワヌクは、Stellar Consensus Protocol (SCP) を䜿甚しお、すべおの参加者が閲芧できる䞀貫した取匕履歎を維持したす。

コンセンサスプロトコルは理解するこずが難しいず考えられおいたす。 SCP は他のほずんどのものよりも単玔ですが、䟝然ずしおこの評刀を共有しおいたす。これは、科孊蚘事の前半の䞻題である「連合投祚」が SCP であるずいう誀った考えが原因の XNUMX ぀です。 しかし、それは真実ではありたせん これは、蚘事の埌半で䜜成するために䜿甚する重芁な構成芁玠にすぎたせん。 実際の ステラコンセンサスプロトコル。

この蚘事では、「協定制床」ずは䜕か、それを「ビザンチン」にするもの、そしおビザンチン制床を「連邊」にする理由に぀いお簡単に説明したす。 次に、SCP 蚘事で説明されおいる連合投祚手順に぀いお説明し、最埌に SCP プロトコル自䜓に぀いお説明したす。

協定制床

合意システムを䜿甚するず、参加者のグルヌプが、ランチに䜕を泚文するかなどのトピックに぀いお合意に達するこずができたす。

むンタヌステラヌでは、独自の食事契玄システムを導入しおいたす。぀たり、オペレヌション マネヌゞャヌのゞョンの蚀うずおりに泚文したす。 これはシンプルか぀効果的な契玄システムです。 私たちは皆ゞョンを信頌しおおり、圌が毎日䜕か面癜くお栄逊のあるものを芋぀けおくれるず信じおいたす。

しかし、ゞョンが私たちの信頌を悪甚したらどうなるでしょうか? 圌は私たち党員がノィヌガンになるべきだず独断で決めるこずができたす。 XNUMX、XNUMX週間以内に、我々はおそらく圌を打倒し、゚リザベスに暩力を匕き枡すだろう。 しかし突然、圌女はアンチョビ入りのアボカドが倧奜きになり、誰もがそうあるべきだず考えたした。 暩力は腐敗する。 したがっお、より民䞻的な方法を芋぀けたほうがよいでしょう。タむムリヌで明確な結果を確保しながら、さたざたな奜みが確実に考慮されるようにする方法です。そうすれば、誰もランチを泚文しなくなったり、XNUMX 人が別々の泚文をしたり、議論が終わったりするこずはありたせん。倕方たで長匕く。

解決策は簡単そうに思えたす。投祚を続けるこずです。 しかし、これは誀解を招く印象です。 誰が投祚甚玙を集めお結果を報告するのでしょうか? そしお、なぜ他の人が圌の蚀うこずを信じなければならないのでしょうか おそらくできるでしょう 最初 投祚を䞻導するず信頌できるリヌダヌに投祚する - しかし誰が䞻導するのか первыЌ 投祚するこずで リヌダヌに぀いお合意できない堎合はどうすればよいでしょうか? あるいは、合意には達したものの、このリヌダヌが䌚議に参加できなくなったり、病気䌑暇に入ったりしたらどうなるでしょうか?

同様の問題は分散コンピュヌタ ネットワヌクでも発生したす。 すべおの参加者たたはノヌドは、共有ファむルを曎新する順番や凊理キュヌからタスクを削陀する順番など、䜕らかの決定に同意する必芁がありたす。 暗号通貚ネットワヌクでは、ノヌドは、可胜性のあるいく぀かのバヌゞョンから完党なストヌリヌがどのようになるかを繰り返し遞択する必芁があり、それらは時には矛盟したす。 このネットワヌク契玄は、コむンが (a) 有効である (停造されおいない)、および (b) ただ他の堎所で䜿甚されおいないこずを受信者に保蚌したす。 これにより、新しい受取人も同じ理由で同じ保蚌を受けるため、将来的にコむンを䜿甚できるこずが保蚌されたす。

分散コンピュヌティング ネットワヌク内のコンセンサス システムはフォヌルト トレラントである必芁がありたす。䜎速リンク、応答しないノヌド、䞍正なメッセヌゞ順序などの゚ラヌにもかかわらず、䞀貫した結果を生成する必芁がありたす。 ビザンチン さらに、合意システムは「ビザンチン」゚ラヌ、぀たり゚ラヌによるものであろうず、システムを匱䜓化させたり䜕らかの利点を埗ようずする意図的な詊みによるものであろうず、誀った情報を䞎えるノヌドに察する耐性がありたす。 「ビザンチン」耐障害性 - グルヌプのメンバヌの䞀郚が嘘を぀いたり、意思決定のルヌルに埓わない堎合でも、グルヌプの決定を信頌する胜力 - ず呌ばれたす ビザンツ垝囜の将軍に぀いおの寓話攻撃を調敎しようずした人。 良い説明 アン゜ニヌ・スティヌブンスで。

ボブからおいしいアむスクリヌムを買うか、キャロルの借金を返枈するかの遞択を迫られる暗号通貚の所有者アリスのこずを考えおみたしょう。 おそらくアリスは、同じコむンを䞍正に䜿っお、䞡方を䞀床に支払おうずしおいるのでしょう。 これを行うには、圌女はコむンが決しおキャロルに支払われなかったこずをボブのコンピュヌタに玍埗させ、たた、キャロルのコンピュヌタにコむンがボブに決しお支払われなかったこずを玍埗させなければなりたせん。 ビザンチンの協定システムでは、ず呌ばれる倚数決の圢匏を䜿甚しお、これを事実䞊䞍可胜にしおいたす。 定足数。 このようなネットワヌク内のノヌドは、十分な数のピア (クォヌラム) がそのような移行に同意するこずが確認されるたで、履歎の特定のバヌゞョンぞの移行を拒吊したす。 これが起こるず、残りのネットワヌク ノヌドにその決定ぞの同意を匷制するのに十分な倧きさの投祚ブロックが圢成されたす。 アリスは䞀郚のノヌドに自分に代わっお嘘を぀くよう匷制できたすが、ネットワヌクが十分に倧きい堎合、アリスの詊みは正盎なノヌドの投祚によっお圧倒されおしたいたす。

クォヌラムにはノヌドがいく぀必芁ですか? 少なくずも過半数、あるいは過半数が間違いや䞍正行為ず闘う資栌のある過半数を獲埗する必芁がありたす。 ただし、過半数を数えるには、参加者の総数を知る必芁がありたす。 むンタヌステラヌのオフィスや遞挙区で、これらの数字は簡単に調べられたす。 ただし、グルヌプが、センタヌの承認なしにノヌドが自由に出入りできる、倧たかに定矩されたネットワヌクの堎合は、次のこずが必芁です。 連邊政府 あらかじめ決められたノヌドのリストからではなく、垞に倉化し、必然的に䞍完党になる特定の時点でのノヌドのスナップショットから動的にクォヌラムを決定できるビザンチン協定システム。

広倧なネットワヌク内の単䞀ノヌドの芳点からクォヌラムを䜜成するこずは䞍可胜に思えるかもしれたせんが、それは可胜です。 このような定足数は、分散投祚の結果を保蚌するこずさえできたす。 SCP ホワむトペヌパヌには、ず呌ばれる手順を䜿甚しおこれを行う方法が瀺されおいたす。 連邊投祚による.

蟛抱匷い

この蚘事の残りの郚分では、連合投祚ず Stellar コンセンサス プロトコルに぀いお詳しく説明したす。 詳现に興味がない堎合は、プロセスの抂芁をここで説明したす。

  1. ノヌドは「候補者」に察する連邊投祚を実斜したす。 連邊投祚ラりンドずは次のこずを意味したす。
    • ノヌドは、たずえば「V の倀を提案したす」などのステヌトメントに投祚したす。
    • ノヌドは、「受信」できるピアが芋぀かるたで、ピアの音声を聞きたす。
    • ノヌドは、このアサヌションの「クォヌラム」を探したす。 定足数は候補者を「承認」したす。
  2. ノヌドが XNUMX 人以䞊の候補者を確認できるず、数ラりンドの連合投祚を通じお「投祚」を「準備」しようずしたす。
  3. ノヌドは、投祚甚玙の準備ができおいるこずを確認できるず、さらに倚くのフェデレヌテッド投祚ラりンドを通じお投祚甚玙をコミットしようずしたす。
  4. ノヌドが投祚のコミットを確認できるず、その投祚の䟡倀をコンセンサス結果ずしお䜿甚しお「倖郚化」できたす。

これらのステップには耇数ラりンドの連合投祚が含たれおおり、それらが集合しお XNUMX ぀の SCP ラりンドを圢成したす。 各ステップで䜕が起こるかを詳しく芋おみたしょう。

連合投祚

連合投祚は、ネットワヌクが提案に同意できるかどうかを刀断する手順です。 投祚ラりンドでは、各ノヌドは朜圚的に倚くの可胜な倀の䞭から XNUMX ぀を遞択する必芁がありたす。 ネットワヌク内の他のノヌドが異なる結果を遞択しないずいう確信がない限り、これを行うこずはできたせん。 これを確認するために、ノヌドは倧量のメッセヌゞをやり取りし、すべおのノヌドが 確認されたその 定足数 結び目 受け入れる 同じもの 決定。 このセクションの残りの郚分では、この文の甚語ず手順党䜓がどのように発生するかに぀いお説明したす。

クォヌラムずクォヌラム スラむス

クォヌラムを定矩するこずから始めたしょう。 䞊で説明したように、動的なメンバヌシップを備えた分散型ネットワヌクでは、ノヌドの数を事前に知るこずは䞍可胜であり、したがっお倧倚数に必芁なノヌドの数を知るこずはできたせん。 連合投祚は、新しいアむデアを導入するこずでこの問題を解決したす。 定足数の削枛 (クォヌラム スラむス): ネットワヌクの残りの郚分に投祚ステヌタス情報を䌝達するためにノヌドが信頌するピアの小さなセット。 各ノヌドは独自のクォヌラム スラむス (その事実䞊のメンバヌになりたす) を定矩したす。

定足数の圢成は、定足数の削枛から始たりたす。 各ノヌドに぀いお、そのカット ノヌドが远加されたす。 次にスラむス項が远加されたす これらのノヌド 等々。 続行するず、すでにスラむスに含たれおいるために远加できないノヌドが増えおいきたす。 远加する新しいノヌドがなくなるず、プロセスは停止したす。最初のノヌドのクォヌラム スラむスの「掚移的閉包」によっおクォヌラムが圢成されたした。

Stellar コンセンサス プロトコルを理解する
特定のノヌドからクォヌラムを芋぀けるには...

Stellar コンセンサス プロトコルを理解する
...そのスラむスのメンバヌを远加したす...

Stellar コンセンサス プロトコルを理解する
...次に、これらのノヌドのスラむス メンバヌを远加したす。

Stellar コンセンサス プロトコルを理解する
远加するノヌドがなくなるたで続行したす。

Stellar コンセンサス プロトコルを理解する

Stellar コンセンサス プロトコルを理解する
远加するノヌドはもうありたせん。 これは定足数です。

実際、各ノヌドは耇数のスラむスに出珟する可胜性がありたす。 クォヌラムを圢成するには、スラむスを XNUMX ぀だけ遞択し、メンバヌを远加したす。 次に、各メンバヌの任意のスラむスを遞択し、メンバヌを远加したす この カットなど。 これは、各ノヌドが倚くの可胜なクォヌラムのメンバヌであるこずを意味したす。

Stellar コンセンサス プロトコルを理解する
各ステップでクォヌラム スラむスを XNUMX ぀だけ遞択したす。

Stellar コンセンサス プロトコルを理解する

Stellar コンセンサス プロトコルを理解する

Stellar コンセンサス プロトコルを理解する
可胜な定足数は XNUMX ぀です。 それずも代替案...

Stellar コンセンサス プロトコルを理解する
...他のスラむスを遞択...

Stellar コンセンサス プロトコルを理解する

Stellar コンセンサス プロトコルを理解する
 可胜な堎合 

Stellar コンセンサス プロトコルを理解する
... 別のクォヌラムを䜜成したす。

ノヌドは他のノヌドがどのスラむスに属しおいるかをどのようにしお知るのでしょうか? 他のノヌドに関する他の情報ず同様に、投祚状態が倉化したずきに各ノヌドがネットワヌクにブロヌドキャストする送信から取埗されたす。 各ブロヌドキャストには、送信ノヌドのスラむスに関する情報が含たれたす。 SCP ホワむトペヌパヌでは通信メカニズムに぀いおは芏定されおいたせん。 実装では通垞、 ゎシッププロトコル ネットワヌク党䜓でのメッセヌゞのブロヌドキャストを保蚌したす。

非連邊政府のビザンチン協定システムでは、定足数はすべおのノヌドの過半数ずしお定矩されおいるこずを思い出しおください。 ビザンチン協定システムは、「システムはどれだけの䞍誠実なノヌドを蚱容できるか?」ずいう問題の芳点から蚭蚈されおいたす。 f 個の障害に耐えるように蚭蚈された N ノヌドのシステムでは、そのうちの f 個がダりンしおいる可胜性があるため、ノヌドは N-f 個のピアからフィヌドバックを受信するこずで進歩できるはずです。 しかし、N-f 個のピアから応答を受信したので、すべおの f 個のピア (ノヌドが応答を受信しなかった) が実際に誠実であるず仮定できたす。 したがっお、N-f 個のピア (応答の受信元) のうち f 個は悪意のあるものになりたす。 ノヌドが同じ合意に達するには、残りのノヌドの倧郚分が正盎である必芁がありたす。぀たり、N−f が 2f より倧きいか、N > 3f である必芁がありたす。 したがっお、通垞、f 回の障害に耐えるように蚭蚈されたシステムには、合蚈 N=3f+1 ノヌドず 2f+1 のクォヌラム サむズがありたす。 プロポヌザルがクォヌラムしきい倀を超えるず、ネットワヌクの残りの郚分は、競合するプロポヌザルは倱敗するず確信したす。 これが、ネットワヌクが結果に収束する方法です。

しかし、連邊ビザンチン協定システムでは、過半数が存圚できないだけでなくネットワヌクの合蚈サむズが誰もわからないため、過半数ずいう抂念はたったく圹に立ちたせん。 システム内のメンバヌシップがオヌプンな堎合、誰かがいわゆるシビル攻撃を実行するだけで過半数を獲埗できたす。぀たり、耇数のノヌドにわたっお繰り返しネットワヌクに参加するこずになりたす。 では、なぜ掚移的スラむスクロヌゞャを呌び出すこずができるのでしょうか 定足数、そしお競合する提案をどのようにしお抑制できるのでしょうか?

技術的には無理です XNUMX ぀のトリプレットが互いのクォヌラム スラむス内で分離されおいる XNUMX ぀のノヌドからなるネットワヌクを想像しおください。 最初のサブグルヌプは、XNUMX 番目のサブグルヌプが決しお聞かない決定を䞋す可胜性があり、その逆も同様です。 このネットワヌクが合意に達する方法はありたせん偶然を陀いお。

したがっお、SCP では、連合投祚 (および論文の重芁な定理が適甚されるこず) のために、ネットワヌクに次のプロパティが必芁です。 定足数の亀差点。 この特性を持぀ネットワヌクでは、構築できる XNUMX ぀のクォヌラムは垞に少なくずも XNUMX ぀のノヌドでオヌバヌラップしたす。 ネットワヌクの䞀般的な感情を刀断するには、これは過半数を獲埗するのず同じくらい良いです。 盎芳的には、これは、いずれかのクォヌラムがステヌトメント X に同意した堎合、他のクォヌラムは他の内容に同意できないこずを意味したす。これは、X に既に投祚した最初のクォヌラムの䜕らかのノヌドが必然的に含たれるためです。

Stellar コンセンサス プロトコルを理解する
ネットワヌク内にクォヌラムの亀差がある堎合...

Stellar コンセンサス プロトコルを理解する
...その埌、構築できる任意の XNUMX ぀のクォヌラム...

Stellar コンセンサス プロトコルを理解する
...必ず亀差したす。

Stellar コンセンサス プロトコルを理解する

Stellar コンセンサス プロトコルを理解する

(もちろん、重耇するノヌドがビザンチンに存圚するか、その他の点で問題があるこずが刀明する可胜性がありたす。この堎合、クォヌラム亀差はネットワヌクの䞀臎にたったく圹に立ちたせん。このため、SCP ホワむト ペヌパヌの結果の倚くは、以䞋に基づいおいたす。明瀺的な仮定ネットワヌク クォヌラム超過に䜕が残っおいるかなど 䞍良ノヌドを削陀した埌でも。 話を簡単にするために、これらの仮定はそのたたにしおおきたす 暗黙 蚘事の残りの郚分で説明したす)。

独立したノヌドのネットワヌクで信頌性の高いクォヌラム超過が可胜であるず期埅するのは䞍合理に思えるかもしれたせん。 しかし、これには XNUMX ぀の理由がありたす。

第䞀の理由は、むンタヌネットそのものの存圚です。 むンタヌネットは、亀差するクォヌラムを持぀独立したノヌドのネットワヌクの奜䟋です。 むンタヌネット䞊のほずんどのノヌドは、他の少数のロヌカル ノヌドにのみ接続したすが、これらの小さなセットは十分に重なり合っおいるため、あるルヌトに沿っお他のすべおのノヌドからすべおのノヌドに到達できたす。

XNUMX 番目の理由は、Stellar 支払いネットワヌク (SCP の最も䞀般的な甚途) に特有のものです。 Stellar ネットワヌク䞊のすべおの資産には発行者があり、Stellar のガむドラむンでは、各発行者が匕き換えリク゚ストを凊理するネットワヌク䞊の XNUMX ぀以䞊のノヌドを指定するこずを芁求しおいたす。 関心のある各アセットのクォヌラム スラむスにこれらのノヌドを盎接的たたは間接的に含めるこずが最も有益です。 特定の資産に関心のあるすべおのノヌドのクォヌラムは、少なくずもそれらの償還ノヌドで重耇したす。 耇数の資産に関心のあるノヌドには、それぞれの発行者のすべおの償還ノヌドがクォヌラム スラむスに含たれ、すべおの資産を䞀緒にプヌルしようずしたす。 さらに、この方法でネットワヌク䞊の他の資産にリンクされおいない資産、および 接続しおはいけたせん - これは、このネットワヌクにクォヌラムの重耇がないように蚭蚈されおいたす (たずえば、ドル圏の銀行は、ナヌロ圏の銀行やペ゜圏の銀行ず取匕したい堎合があるため、同じネットワヌク䞊にありたすが、いずれも存圚したせん)圌らのうち、野球カヌドを販売する子䟛たちの別のネットワヌクを気にしおいる人たちです。

もちろん、 ПжОЎаМОе 定足数を超えおいない 保蚌。 他のビザンチン協定システムは、その耇雑さの倚くを定足数の保蚌に負っおいたす。 SCP の重芁な革新は、コンセンサス アルゎリズム自䜓からクォヌラムを䜜成する責任を取り陀き、それをアプリケヌション レベルに持っおくるこずです。 したがっお、連合投祚はあらゆる問題に぀いお投祚できるほど䞀般的ですが、実際にはその信頌性はこれらの意味のより広い意味に決定的に䟝存したす。 䞀郚の仮想的な䜿甚法は、他の䜿甚法ほど適切に接続されたネットワヌクの䜜成に圹立たない堎合がありたす。

投祚、承認、確認

連合投祚ラりンドでは、ノヌドはオプションで倀 V ぞの投祚を開始したす。これは、「私はノヌド N、クォヌラム スラむスは Q、そしお V に投祚したす。」ずいうメッセヌゞをネットワヌクにブロヌドキャストするこずを意味したす。 ノヌドがこの方法で投祚する堎合、ノヌドは V に反察祚を投じたこずはなく、今埌も投祚しないこずを玄束したす。

ピアツヌピア ブロヌドキャストでは、各ノヌドは他のノヌドがどのように投祚するかを確認したす。 ノヌドがこれらのメッセヌゞを十分に収集するず、クォヌラム スラむスを远跡し、クォヌラムの怜玢を詊みるこずができたす。 V に投祚する同僚の定足数を確認した堎合は、次の手順に進むこずができたす。 可決 V を実行し、次の新しいメッセヌゞをネットワヌクにブロヌドキャストしたす。「私はノヌド N、私のクォヌラム スラむスは Q、そしお私は V を受け入れたす。」 承認は、単玔な投祚よりも匷力な保蚌を提䟛したす。 ノヌドが V に投祚する堎合、他のオプションに投祚するこずはできたせん。 しかし、ノヌドが V を受け入れる堎合、ネットワヌク䞊のどのノヌドも他のオプションを受け入れるこずはありたせん (SCP ホワむトペヌパヌの定理 8 がこれを蚌明しおいたす)。

もちろん、V に同意するノヌドの定足数が盎ちに満たされない可胜性が高くなりたす。他のノヌドが他の倀に投祚する可胜性がありたす。 しかし、ノヌドが単玔な投祚から承認に移行する別の方法がありたす。 N は、たずえそれに投祚しなかったずしおも、たたその定足数を満たしおいなかったずしおも、W の別の倀を受け入れるこずができたす。 投祚を倉曎する堎合は、次を参照しおください。 ブロッキングセット W を受け入れたノヌド。ブロッキング セットは、各クォヌラム スラむス N からの XNUMX ぀のノヌドです。名前が瀺すように、次のこずができたす。 ブロックする 他の意味。 そのようなセット内のすべおのノヌドが W を受け入れる堎合、(定理 8 により) 異なる倀を取るクォヌラムを圢成するこずは決しお䞍可胜になるため、N が W を受け入れるこずも安党です。

Stellar コンセンサス プロトコルを理解する
XNUMX ぀のクォヌラム スラむスを持぀ノヌド N。

Stellar コンセンサス プロトコルを理解する
BDF は N のブロッキング セットです。BDF には、N の各スラむスからの XNUMX ぀のノヌドが含たれたす。

Stellar コンセンサス プロトコルを理解する
E は N の XNUMX ぀のスラむスに珟れるため、BE は N のブロッキング セットでもありたす。

ただし、ブロッキング セットはクォヌラムではありたせん。 N の各スラむスの 11 ぀のノヌドだけをハッキングするだけで十分であれば、ノヌド N を隙しお目的の倀を受け入れるように仕向けるのは簡単すぎたす。したがっお、倀を受け入れるだけで投祚が終了するわけではありたせん。 代わりに、N は倀を確認する必芁がありたす。぀たり、その倀を受け入れるノヌドのクォヌラムを確認する必芁がありたす。 そこたで到達するず、SCP ホワむトペヌパヌが蚌明しおいるように (定理 XNUMX で)、ネットワヌクの残りの郚分も最終的に同じ倀を確認するため、N は結果ずしお特定の倀で連合投祚を終了したす。

Stellar コンセンサス プロトコルを理解する
連合投祚。

投祚、承認、確認のプロセスは、連合投祚の XNUMX 回の完党なラりンドを構成したす。 Stellar コンセンサス プロトコルは、これらのラりンドの倚くを組み合わせお、完党なコンセンサス システムを䜜成したす。

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

コンセンサスシステムのXNUMX぀の最も重芁な特性は次のずおりです- セキュリティ О 生存率。 コンセンサスアルゎリズムは、異なる参加者に決しお異なる結果を䞎えるこずがない堎合には「安党」ですボブの歎史のコピヌは決しおキャロルず矛盟したせん。 「生存性」ずは、アルゎリズムが垞に結果を生成するこず、぀たりアルゎリズムが行き詰らないこずを意味したす。

連邊投祚手順の説明 安党 あるノヌドが V の倀を確認するず、他のノヌドは他の倀を確認しないずいう意味です。 しかし、「別の意味を確認しない」ずいうこずは、必ずしも䜕かを確認するずいう意味ではありたせん。 参加者は非垞に倚くの異なる倀に投祚できるため、受け入れしきい倀に達するものはありたせん。 これは、連邊議䌚の投祚には、 生存率.

Stellar コンセンサス プロトコルは、セキュリティず存続可胜性の䞡方を保蚌する方法で連合投祚を䜿甚したす。 (SCP のセキュリティず生存可胜性の保蚌には理論䞊の限界がありたす。蚭蚈では非垞に匷力なセキュリティ保蚌が遞択され、生存可胜性の軜枛がわずかに犠牲になりたすが、十分な時間があれば、合意に達する可胜性が高くなりたす。) 䞀蚀で蚀えば、そのアむデアは、そのうちの XNUMX ぀が以䞋で説明するすべおの SCP 投祚フェヌズを通過するたで、耇数の倀に぀いお耇数の連合投祚を行うこずです。

SCP が合意を求める䟡倀芳は、取匕履歎、ランチの泚文、その他のものである可胜性がありたすが、これらは受け入れられたり確認されたりする䟡倀芳ではないこずに泚意するこずが重芁です。 代わりに、連邊投祚は以䞋に埓っお行われたす。 これらの倀に関するステヌトメント.

連邊投祚の最初のラりンドは次の日に行われたす。 掚薊段階 指名フェヌズでは、おそらく V のさたざたな䟡倀芳に合わせお、「私は V を指名したす」のような䞀連のステヌトメントに぀いお説明したす。指名の目的は、承認ず確認を経た XNUMX ぀以䞊のステヌトメントを芋぀けるこずです。

怜蚌可胜な候補者を芋぀けた埌、SCP は投祚フェヌズに進みたす。そこでの目暙は、特定の候補者を芋぀けるこずです。 速報 (぀たり、提案された倀のコンテナ) ず宣蚀できるクォヌラム 専念 それのためにコミット。 定足数が投祚をコミットするず、その倀がコンセンサスずしお受け入れられたす。 ただし、ノヌドが投祚コミットに投祚できる前に、たず確認する必芁がありたす。 キャンセル より䜎いカりンタヌ倀を持぀すべおの投祚甚玙。 これらの手順 (投祚甚玙をキャンセルしおコミットできる投祚甚玙を芋぀ける) には、耇数の投祚甚玙請求に察する耇数ラりンドの連合投祚が含たれたす。

次のセクションでは、指名ず投祚に぀いお詳しく説明したす。

指名

指名フェヌズの開始時に、各ノヌドは自発的に V の倀を遞択し、「V を指名したす」ずいうステヌトメントに投祚できたす。 この段階の目暙は、連合投祚を通じお䜕らかの䟡倀ある人物の指名を確認するこずです。

おそらく、十分な数のノヌドが十分に異なる提案に投祚し、どの掚薊も受け入れ閟倀に達するこずができないでしょう。 したがっお、ノヌドは自身の指名投祚をブロヌドキャストするだけでなく、ピアの指名を「反映」したす。 ゚コヌずは、ノヌドが候補 V に投祚しおいるが、候補 W に投祚しおいる近隣ノヌドからのメッセヌゞを芋た堎合、そのノヌドは V ず W の䞡方に投祚するこずを意味したす (指名䞭にすべおのピア投祚が゚コヌされるわけではありたせん。これは、投祚数の急増に぀ながる可胜性があるためです)。 SCP には、これらの投祚を芏制するメカニズムが含たれおいたす。぀たり、ノヌドの芳点からピアの「優先床」を決定するための匏があり、優先床の高いノヌドの投祚のみが反映されたす。かかるずしきい倀が䜎くなり、ノヌドは投祚を反映するピアのセットを拡匵したす。優先床の蚈算匏には入力の XNUMX ぀ずしおスロット番号が含たれるため、あるスロットの優先床の高いピアは、スロットの優先床が䜎いピアになる可胜性がありたす。別のもの、たたはその逆)。

抂念的には、指名は平行しおおり、V ず W は䞡方ずも別々の連邊投祚であり、それぞれ個別に承認たたは確認を達成するこずができたす。 実際には、SCP プロトコル メッセヌゞはこれらの個々の投祚をたずめおパッケヌゞ化したす。

V の指名に投祚するこずは、V の指名に決しお反察しないずいう玄束ですが、「反察」が䜕を意味するかはアプリケヌション レベル (この堎合は SCP) で決定されたす。 SCP は、「X を指名する」ずいう投祚に矛盟するステヌトメントを認識したせん。぀たり、「X を指名するこずに反察したす」ずいうメッセヌゞがないため、ノヌドは任意の倀を指名するために投祚できたす。 これらの候補の倚くは無駄になりたすが、最終的にはノヌドは XNUMX ぀以䞊の倀を受け入れるか確認できるようになりたす。 候補者が確認されるず、圌は次のようになりたす。 候補者.

Stellar コンセンサス プロトコルを理解する
連合投祚を䜿甚した SCP の指名。 ピアによっお送信され、ノヌドによっお「反映」される「B」倀が倚数存圚する可胜性がありたす。

掚薊により耇数の候補者が確定する堎合がありたす。 したがっお、SCP では、アプリケヌション局が候補を XNUMX ぀に結合する䜕らかの方法を提䟛する必芁がありたす。 コンポゞット 耇合。 結合方法は䜕でも構いたせん。 重芁なこずは、この方法が決定論的である堎合、各ノヌドは同じ候補を組み合わせるずいうこずです。 ランチ投祚システムでは、「統䞀」ずは単に XNUMX 人の候補者のうちの XNUMX 人を拒吊するこずを意味する堎合がありたす。 (ただし、決定論的な方法で: 各ノヌドはリセットする同じ倀を遞択する必芁がありたす。たずえば、アルファベット順で前の遞択)。 トランザクション履歎が投祚される Stellar 決枈ネットワヌクでは、提案された XNUMX ぀の候補者を統合するには、それらに含たれるトランザクションずその XNUMX ぀のタむムスタンプのうちの最新のものを統合する必芁がありたす。

SCP ホワむトペヌパヌは、拡匵フェヌズの終わりたでにネットワヌクが最終的に単䞀の耇合䜓に収束するこずを蚌明しおいたす (定理 12)。 しかし、問題がありたす。連合投祚は (SCP のような) 非同期プロトコルです。 蚀い換えれば、ノヌドは時間によっお調敎されるのではなく、ノヌドが送信するメッセヌゞによっおのみ調敎されたす。 ノヌドの芳点からは、い぀になるかは䞍明です。 終了したした 延長段階。 たた、すべおのノヌドは最終的には同じコンポゞットに到達したすが、途䞭で異なるルヌトをたどり、途䞭で異なるコンポゞット候補が䜜成される可胜性があり、どれが最終候補であるかを決しお知るこずができたせん。

でも普通だよ。 指名はあくたで準備です。 重芁なこずは、コンセンサスを達成するために候補者の数を制限するこずであり、これはプロセスで発生したす。 ランニング 投祚。

ランニング

速報はカップルですここで、counter は 1 から始たる敎数、value は指名段階からの候補です。 これは、ノヌド自䜓の候補、たたはそのノヌドによっお受け入れられた隣接ノヌドの候補にするこずができたす。 倧たかに蚀えば、投祚には、投祚明现曞に察しお朜圚的に倚くの連合投祚を保持するこずによっお、ネットワヌクが特定の投祚に぀いお特定の候補者に぀いお合意に達するよう匷制する繰り返しの詊みが含たれたす。 投祚甚玙のカりンタヌは行われた詊みを远跡し、カりントの高い投祚甚玙がカりントの䜎い投祚甚玙より優先されたす。 ニュヌスレタヌなら行き詰たった、新しい投祚が始たる、珟圚投祚䞭。

区別するこずが重芁です 意味 (たずえば、ランチの泚文はピザかサラダか)、 ニュヌスレタヌ (カりンタヌ倀のペア) および 文 投祚甚玙に぀いお。 SCP ラりンドには、特に以䞋の声明に関する連邊投祚が数ラりンド含たれおいたす。

  • 「投祚甚玙 B をコミットする準備ができおいたす」および
  • 「投祚甚玙 B のコミットを発衚したす」

特定のノヌドの芳点から芋るず、「私は投祚 B をコミットしたす」ずいうステヌトメントを確認できる (぀たり、受け入れる定足数を芋぀けた) 投祚 B が芋぀かったずきに、コンセンサスが埗られたす。 この時点から、B で指定された倀に基づいお行動しおも安党です。たずえば、ランチにこの泚文をするなどです。 いわゆる 倖郚化 意味。 投祚の受理が確認されるず、ノヌドは、他のノヌドが同じ倀を倖郚化したか、たたは将来倖郚化するであろうこずを確認できたす。

倚くの連合投祚は抂念的にはさたざたな投祚甚玙の請求に基づいお行われたすが、各メッセヌゞが倚数の投祚甚玙をカプセル化するため、それほど倚くのメッセヌゞは亀換されたせん。 したがっお、XNUMX ぀のメッセヌゞは、䞀床に倚くの連合投祚の状態を促進したす。たずえば、「私は以䞋の範囲のコミット投祚を受け入れたす」 前に」

「準備枈み」ず「コミット」ずいう甚語は䜕を意味したすか?

他のノヌドが異なる倀の投祚甚玙をコミットしないず確信しおいる堎合、ノヌドは投祚甚玙をコミットするために投祚したす。 これを玍埗させるこずが申請曞を準備する目的です。 「投祚甚玙 B をコミットする準備ができおいたす」ずいう投祚は、B より小さい投祚甚玙、぀たり少数の投祚甚玙を決しおコミットしないずいう玄束です (SCP では、投祚甚玙の倀が特定の順序である必芁がありたす。したがっお、ニュヌスレタヌ少ない、N1の堎合

「私は投祚甚玙 B をコミットする準備ができおいたす」が「投祚甚玙 B よりも小さい投祚甚玙を決しおコミットしないこずを玄束したす」を意味するのはなぜですか? SCP ではアボヌトがコミットの反察であるず定矩されおいるためです。 投祚甚玙を䜜成するための投祚には、他の投祚甚玙を倱栌にする投祚も含たれたす。先ほど説明したように、ある事柄に投祚するずいうこずは、その事柄には決しお反察しないずいう玄束ずなりたす。

コミットをブロヌドキャストする前に、ノヌドはたず準備枈みであるこずを確認できる通知を芋぀ける必芁がありたす。 蚀い換えれば、定足数を受け入れる投祚甚玙が芋぀かるたで、「投祚甚玙 B をコミットする準備ができおいたす」ずいうテヌマに぀いお、堎合によっおはさたざたな投祚甚玙に察しお連合投祚を実行したす。

投祚を準備するための投祚甚玙はどこから来たすか? たず、ノヌドは <1,C> に投祚する準備をブロヌドキャストしたす。ここで、C は指名段階で生成された耇合候補です。 ただし、投祚の準備が始たった埌でも、指名により远加の候補者が新たな投祚甚玙ずなる可胜性がありたす。 䞀方、ピアは異なる候補者を持぀こずができ、「B2 投祚をコミットする準備ができおいたす」を受け入れるブロッキング セットを圢成するこずができ、これによりノヌドもそれを受け入れるように説埗されたす。 最埌に、珟圚の投祚甚玙が行き詰たった堎合に、より高いカりントの新しい投祚甚玙に察しお新しい連合投祚を生成するタむムアりト メカニズムがありたす。

ノヌドは、準備枈みであるこずを確認できる投祚甚玙 B を芋぀けるずすぐに、新しいメッセヌゞ「投祚甚玙 B をコミットする」をブロヌドキャストしたす。 この投祚は、ノヌドが B を決しお攟棄しないこずをピアに䌝えたす。実際、B が投祚の堎合、次に「投祚をコミットする」 「」は、各投祚甚玙の準備が敎っおいるかどうかに぀いお投祚するこずに無条件で同意するこずを意味したす。 <∞、s>たで。 この远加の倀は、他のピアがただプロトコルの初期段階にある堎合に、コミット ピアに远い぀くのに圹立ちたす。

この段階では、これらが非同期プロトコルであるこずをもう䞀床匷調する䟡倀がありたす。 XNUMX ぀のノヌドがコミットに察しお賛成祚を送信したからずいっお、そのノヌドのピアも賛成祚を送信するずは限りたせん。 圌らの䞭には、投祚の準備でただ声明に投祚しおいる人もいるかもしれないし、すでにその意味を倖圚化しおいる人もいるかもしれない。 SCP は、フェヌズに関係なく、ノヌドが各タむプのピア メッセヌゞをどのように凊理すべきかを説明したす。

「コミットを発衚したした」ずいうメッセヌゞが衚瀺された堎合» 受信たたは確認できない、぀たりメッセヌゞが受け入れられるか確認される可胜性たたは- たたは、いずれの堎合でも、ノヌドは決しおキャンセルしないこずをすでに玄束しおいるため、倀 C を持぀投祚甚玙であり、他の投祚甚玙ではありたせん。 。 ノヌドがコミットぞの投祚をブロヌドキャストするたでに、コンセンサスがどこたで進むかに応じお、C になるか䜕もないこずになりたす。 ただし、これはノヌドが C を倖郚化するにはただ十分ではありたせん。䞀郚のビザンチン ピア (セキュリティの前提に基づくず、クォヌラム未満を構成する) がノヌドに嘘を぀く可胜性がありたす。 䞀郚の投祚甚玙 (たたは投祚甚玙の範囲) を受け入れお確認するこずで、最終的に C を倖郚化する自信がノヌドに䞎えられたす。

Stellar コンセンサス プロトコルを理解する
連合投祚による SCP 投祚。 図瀺されおいない: タむマヌはい぀でも䜜動し、投祚甚玙の数が増加する可胜性がありたす (さらに远加の指名候補者の新しい耇合䜓が生成される可胜性もありたす)。

そしおそれだけです ネットワヌクは䞀床合意に達するず、それを䜕床でも行う準備ができおいたす。 Stellar 決枈ネットワヌクでは、これは玄 5 秒に XNUMX 回発生したす。これは、SCP によっお保蚌されたセキュリティず生存可胜性の䞡方を必芁ずする偉業です。

SCP は、耇数ラりンドの連合投祚に䟝存するこずでこれを達成できたす。 連合投祚は、クォヌラム スラむスの抂念によっお可胜になりたす。クォヌラム スラむスずは、各ノヌドがその (䞻芳的な) クォヌラムの䞀郚ずしお信頌するこずを決定したピアのセットです。 この構成は、オヌプンなメンバヌシップずビザンチンの欺瞞があるネットワヌクでも合意に達するこずができるこずを意味したす。

参考文献

  • オリゞナルの SCP ホワむトペヌパヌはこちらでご芧いただけたす ここでず ここで 実装のための仕様草案。
  • SCP プロトコルの最初の䜜成者である David Mazier は、SCP プロトコルを簡略化された (ただし技術的な) 方法で説明しおいたす。 ここで.
  • この蚘事に「マむニング」や「プルヌフ・オブ・ワヌク」ずいう甚語が芋぀からないこずに驚いたかもしれたせん。 SCP はこれらのメ゜ッドを䜿甚したせんが、他のいく぀かのコンセンサス アルゎリズムは䜿甚したす。 れヌン・りィザヌスプヌンがアクセス可胜に曞いた コンセンサスアルゎリズムの抂芁.
  • ステップバむステップの説明 SCP の XNUMX ラりンドで合意に達する単玔なネットワヌク。
  • SCP の実装に興味のある読者は: を参照しおください。 C++ コヌド、Stellar 決枈ネットワヌクによっお䜿甚される、たたは Goコヌド、SCPをよりよく理解するために曞きたした。

出所 habr.com

コメントを远加したす