It Stellar Consensus Protocol begripe

It Stellar Consensus Protocol begripe

It Stellar konsensusprotokol waard earst beskreaun yn wittenskiplik artikel David Mazier yn 2015. Dit is in "federaal Byzantynsk oerienkomstsysteem" dat desintralisearre, liederleaze kompjûternetwurken mooglik makket om effisjint konsensus te berikken oer in beslút. It Stellar betellingsnetwurk brûkt it Stellar Consensus Protocol (SCP) om in konsekwinte transaksjeskiednis te behâlden dy't sichtber is foar alle dielnimmers.

Konsensusprotokollen wurde beskôge as lestich te begripen. SCP is ienfâldiger as de measten fan har, mar dielt dizze reputaasje dochs - foar in part troch it ferkearde idee dat "federated voting", dat it ûnderwerp is fan 'e earste helte fan it wittenskiplik artikel, SCP is. Mar dat is net wier! Dit is gewoan in wichtich boublok dat de twadde helte fan it artikel brûkt om te meitsjen feitlik Stellar konsensus protokol.

Yn dit artikel sille wy koart útlizze wat in "systeem fan oerienkomsten" is, wat it "Byzantynsk" kin meitsje en wêrom it Byzantynske systeem "federaal" meitsje. Wy sille dan de federearre stimproseduere útlizze beskreaun yn it SCP-artikel, en as lêste sille wy it SCP-protokol sels útlizze.

Oerienkomst systemen

In systeem fan ôfspraken lit in groep dielnimmers ta in konsensus komme oer in ûnderwerp, lykas wat te bestellen foar lunch.

By Interstellar hawwe wy ús eigen dining-oerienkomstsysteem ymplementearre: wy bestelle wat ús operasjonele manager, John, seit. Dit is in ienfâldich en effektyf oerienkomstsysteem. Wy fertrouwe allegear op John en leauwe dat hy elke dei wat nijsgjirrichs en voedzaams sil fine.

Mar wat as Johannes ús fertrouwen misbrûkt? Hy kin sels beslute dat wy allegear vegan wurde moatte. Oer in wike as twa sille wy him nei alle gedachten omkeare en de macht oerjaan oan Elizabeth. Mar ynienen hâldt se fan avokado's mei ansjovis en fynt dat elkenien sa wêze moat. Macht korrupt. Dus it is better om wat mear demokratyske metoade te finen: ien of oare manier om te soargjen dat ferskate foarkarren yn rekken brocht wurde, wylst jo soargje foar in tydlik en ûndûbelsinnich resultaat, sadat gjinien einiget mei it bestellen fan lunch, of fiif minsken pleatse ferskillende oarders, of de diskusje draacht troch yn 'e jûn.

It liket derop dat de oplossing ienfâldich is: stimme! Mar dit is in misliedende yndruk. Wa sil de stimbiljetten sammelje en de resultaten rapportearje? En wêrom soene oaren leauwe wat er seit? Miskien kinne wy earst stimme op in lieder dy't wy fertrouwe om de stimming te lieden - mar dy't it liede sil earst troch te stimmen? Wat as wy it net iens kinne oer in lieder? Of wat as wy in akkoart komme, mar dizze lieder komt fêst yn in gearkomste of giet mei siik?

Soartgelikense problemen komme foar yn ferspraat kompjûternetwurken. Alle dielnimmers of knopen moatte it iens wurde oer wat beslút, lykas waans beurt it is om in dielde bestân te aktualisearjen of in taak út 'e ferwurkingswachtrige te ferwiderjen. Yn in cryptocurrency netwurk moatte knooppunten hieltyd wer kieze hoe't it folsleine ferhaal liket út ferskate mooglike ferzjes, dy't soms konflikt. Dit netwurk oerienkomst jout garânsje oan de ûntfanger dat de munt is (a) jildich (net falskemunterij) en (b) noch net bestege earne oars. Dit soarget der ek foar dat hy de munten yn 'e takomst útjaan kin, om't de nije ûntfanger foar deselde redenen deselde garânsjes hat.

Elk konsensussysteem yn in ferspraat komputernetwurk moat fouttolerant wêze: it moat konsekwinte resultaten produsearje nettsjinsteande flaters lykas trage keppelings, net reagearjende knopen, en ferkearde berjochtbestelling. Byzantynsk It oerienkomstsysteem is boppedat resistint foar "Byzantynske" flaters: knooppunten dy't falske ynformaasje jouwe, itsij troch in flater as yn in opsetlike besykjen om it systeem te ûndergraven of wat foardiel te krijen. "Byzantynske" skuldtolerânsje - de mooglikheid om in groepbeslút te fertrouwen, sels as guon groepsleden lizze kinne of oars net folgje de regels fan beslútfoarming - wurdt neamd gelikenis oer de generaals fan it Byzantynske Rykdy't besocht de oanfal te koördinearjen. Goede beskriuwing by Anthony Stevens.

Beskôgje krypto-munteigner Alice, dy't kieze moat tusken it keapjen fan lekker iis fan Bob en it beteljen fan Carol's skuld. Miskien wol Alice har beide tagelyk betelje troch op frauduleus deselde munt út te jaan. Om dit te dwaan, moat se de komputer fan Bob oertsjûgje dat de munt nea oan Carol betelle is, en de komputer fan Carol oertsjûgje dat de munt nea oan Bob betelle is. De Byzantynske systeem fan oerienkomsten makket dit praktysk ûnmooglik, mei help fan in foarm fan mearderheid regel neamd quorum. In knooppunt yn sa'n netwurk wegeret te ferpleatsen nei in bepaalde ferzje fan de skiednis oant it sjocht dat in foldwaande oantal peers - in kworum - akkoard mei sa'n oergong. Sadree't dit bart, sille se in stimmingsblok foarmje dat grut genôch is om de oerbleaune netwurkknooppunten te twingen om yn te stimmen mei har beslút. Alice kin guon knopen twinge om út har namme te lizzen, mar as it netwurk grut genôch is, sil har besykjen oerweldige wurde troch de stimmen fan earlike knopen.

Hoefolle knooppunten binne nedich foar quorum? Op syn minst in mearderheid, of leaver, in kwalifisearre mearderheid om flaters en fraude te bestriden. Mar om de mearderheid te tellen, moatte jo it totale oantal dielnimmers witte. By it Interstellar-kantoar of by de wykferkiezings binne dizze sifers maklik te finen. Mar as jo groep in los definieare netwurk is wêryn knooppunten nei wille kinne yngean en ferlitte sûnder goedkarring fan it sintrum, dan moatte jo federaal in Byzantynsk oerienkomst systeem by steat om te bepalen kworums net út in foarbeskaaide list fan knopen, mar dynamysk, út in hieltyd feroarjende en ûnûntkomber ûnfolsleine momintopname fan knopen op in bepaald punt yn de tiid.

It liket miskien ûnmooglik om in kworum te meitsjen fanút it perspektyf fan ien knooppunt yn in grut netwurk, mar it is mooglik. Sa'n kworum kin sels de resultaten fan desintralisearre stimmen garandearje. It SCP-wytboek lit sjen hoe't jo dit dwaan kinne mei in proseduere neamd troch federale stimming.

Foar ûngeduldich

De rest fan it artikel beskriuwt federearre stimmen en it Stellar konsensusprotokol yn mear detail. As jo ​​​​net ynteressearre binne yn 'e details, hjir is in algemien oersjoch fan it proses.

  1. De knooppunten fiere rûnten fan federale stimmen oer "nominearren". In federale stimronde betsjut:
    • It knooppunt stimt foar guon útspraak, bygelyks, "Ik stel de wearde fan V";
    • It knooppunt harket nei de stimmen fan 'e peers oant it ien fynt dy't "ûntfange" kin;
    • It knooppunt siket in "quorum" foar dizze bewearing. In kworum "befêstiget" de nominearre.
  2. Sadree't in knooppunt ien of mear nominearren kin befestigje, besiket it de "stimbiljet" te "trieden" troch ferskate rondes fan federearre stimmen.
  3. Sadree't in knooppunt is yn steat om te ferifiearjen dat it stimbriefke klear is, besiket it it te begean troch noch mear rondes fan federearre stimmen.
  4. Sadree't in knooppunt in commit fan in stimbriefke kin befestigje, kin it de wearde fan dat stimbriefke "eksternalisearje" troch it te brûken as konsensusresultaat.

Dizze stappen befetsje meardere rondes fan federearre stimmen, dy't kollektyf ien SCP-ronde foarmje. Litte wy in tichterby besjen wat der bart by elke stap.

Federated stimming

Federated stimming is in proseduere om te bepalen oft it netwurk kin it iens wurde oer in foarstel. Yn 'e stimronde moat elk knooppunt ien kieze fan in protte mooglike wearden. It kin dit net dwaan, útsein as it der wis fan is dat oare knopen yn it netwurk gjin oare útkomst sille kieze. Om der wis fan te wêzen, wikselje knopen in barrage fan berjochten hinne en wer, sadat elkenien befêstige, dat quorum knopen aksepteart deselde ding решение. De rest fan dizze seksje ferklearret de termen yn dizze sin en hoe't de hiele proseduere bart.

Quorums en quorum slices

Litte wy begjinne mei it definiearjen fan in kworum. Lykas wy hjirboppe besprutsen, yn in desintralisearre netwurk mei dynamysk lidmaatskip, is it ûnmooglik om fan tefoaren it oantal knooppunten te witten en dus hoefolle nedich binne foar de mearderheid. Federearre stimmen lost dit probleem op troch in nij idee yn te fieren quorum cut (quorum slice): In lytse set fan leeftydsgenoaten dat in knooppunt fertrout te kommunisearje stim status ynformaasje oan de rest fan it netwurk. Elke knooppunt definiearret syn eigen quorum slice (dêr't it de facto lid fan wurdt).

Quorumfoarming begjint mei in kworumbesuniging. Foar elke knooppunt wurde syn besunige knooppunten tafoege. Dan wurde de slicebetingsten tafoege dizze knopen ensafuorthinne. As jo ​​trochgean, binne d'r mear en mear knopen dy't jo net kinne tafoegje, om't se al binne opnommen yn 'e slice. As d'r gjin nije knooppunten mear binne om ta te foegjen, stopet it proses: wy hawwe in kworum foarme troch "transitive sluting" fan it kworumstik fan 'e earste knooppunt.

It Stellar Consensus Protocol begripe
Om kworum te finen fan in opjûne knooppunt ...

It Stellar Consensus Protocol begripe
... leden fan har diel tafoegje ...

It Stellar Consensus Protocol begripe
...dan foegje wy sliceleden fan dizze knopen ta.

It Stellar Consensus Protocol begripe
Wy geane troch oant der gjin knooppunten mear binne om ta te foegjen.

It Stellar Consensus Protocol begripe

It Stellar Consensus Protocol begripe
D'r binne gjin knopen mear om ta te foegjen. Dit is in kworum.

Yn feite kin elke knoop yn mear dan ien plak ferskine. Om in kworum te foarmjen, selektearje mar ien fan 'e plakjes en foegje leden ta; selektearje dan in stikje foar elk fan 'e leden en foegje leden ta it snije ensafuorthinne. Dit betsjut dat elk knooppunt lid is fan in protte mooglike kworums.

It Stellar Consensus Protocol begripe
Selektearje mar ien quorum slice by elke stap.

It Stellar Consensus Protocol begripe

It Stellar Consensus Protocol begripe

It Stellar Consensus Protocol begripe
Ien mooglik kworum. Of in alternatyf ...

It Stellar Consensus Protocol begripe
...selektearje oare plakjes...

It Stellar Consensus Protocol begripe

It Stellar Consensus Protocol begripe
…(as it mooglik is)…

It Stellar Consensus Protocol begripe
... skept in oar kworum.

Hoe wit in knooppunt yn hokker plakjes oare knooppunten binne? Op deselde manier as oare ynformaasje oer oare knooppunten: fan 'e oerdrachten dy't elke knooppunt útstjoert nei it netwurk as syn stimstatus feroaret. Elke útstjoering omfettet ynformaasje oer de plakjes fan it ferstjoerknooppunt. It SCP-wytboek spesifisearret gjin kommunikaasjemeganisme. Implementaasjes brûke typysk gossip protokol foar garandearre útstjoering fan berjochten yn it hiele netwurk.

Tink derom dat yn it net-federale Byzantynske systeem fan oerienkomsten in quorum wurdt definiearre as in mearderheid fan alle knooppunten. It Byzantynske oerienkomstsysteem is ûntwurpen út it eachpunt fan 'e fraach: hoefolle ûnearlike knopen kin it systeem tolerearje? Yn in systeem fan N knooppunten ûntworpen om f mislearrings te oerlibjen, moat in knooppunt foarútgong kinne meitsje troch feedback te ûntfangen fan N-f-peers, om't f fan har nei ûnderen kin. Mar nei't wy in antwurd krigen hawwe fan N-f-peers, kinne wy ​​​​oannimme dat alle f-peers (dêr't it knooppunt gjin antwurd fan krige) eins earlik binne. Sa binne f fan N-f-peers (wêrfan it antwurd ûntfongen is) kwea-aardich. Foar knooppunten om ta deselde konsensus te kommen, moat de mearderheid fan 'e oerbleaune knooppunten earlik wêze, dat is, wy moatte N-f grutter wêze as 2f of N> 3f. Sa typysk sil in systeem ûntworpen om f mislearrings te oerlibjen in totaal hawwe fan N = 3f + 1 knopen en in quorumgrutte fan 2f + 1. Sadree't in foarstel foarby de quorum drompel, de rest fan it netwurk is oertsjûge dat alle konkurrearjende útstellen sille mislearje. Dit is hoe't it netwurk konvergeet nei it resultaat.

Mar yn in federale Byzantynske oerienkomst systeem, net allinnich kin der net in mearderheid (omdat gjinien wit de totale grutte fan it netwurk), mar it konsept fan in mearderheid is folslein nutteloos! As it lidmaatskip yn it systeem iepen is, dan kin immen in mearderheid krije troch gewoan in saneamde Sybil-oanfal út te fieren: meardere kearen oanslute by it netwurk oer meardere knopen. Dus wêrom kin transitive slice sluting wurde neamd quorum, en hoe is it yn steat om konkurrearjende útstellen te ûnderdrukken?

Technysk, gjin manier! Stel jo in netwurk fan seis knopen foar, wêrby't twa trijelingen isolearre binne yn elkoars quorumplakken. De earste subgroep kin in beslút nimme dêr't de twadde nea oer hearre sil, en oarsom. D'r is gjin manier foar dit netwurk om konsensus te berikken (útsein tafal).

Dêrom fereasket SCP dat foar federearre stimmen (en foar de wichtige stellingen fan it papier om oan te passen), it netwurk in eigenskip moat hawwe neamd krusing fan quorums. Yn in netwurk mei dit pân oerlaapje alle twa quorums dy't kinne wurde oanlein altyd yn op syn minst ien knooppunt. Foar it bepalen fan it hearskjende sentimint fan it netwurk is dit sa goed as in mearderheid hawwe. Yntuïtyf betsjut dit dat as ien kworum ynstimt mei stelling X, gjin oar kworum oait mei wat oars iens kin, om't it needsaaklikerwize ien of oare knooppunt sil befetsje fan it earste kworum dat al foar X stimd hat.

It Stellar Consensus Protocol begripe
As d'r in krusing is fan quorums yn it netwurk ...

It Stellar Consensus Protocol begripe
...dan elke twa quorums dy't jo kinne bouwe ...

It Stellar Consensus Protocol begripe
... sil altyd kruse.

It Stellar Consensus Protocol begripe

It Stellar Consensus Protocol begripe

(Fansels kinne oerlappende knooppunten Byzantynsk-lizzend of oars min blike te wêzen. Yn dit gefal helpt it quorum-krúspunt it netwurk hielendal net iens. Om dizze reden binne in protte fan 'e resultaten yn' e SCP-wytboek basearre op eksplisite oannames, lykas wat is oerbleaun yn it netwurk quorum krusing sels nei it fuortheljen fan minne knopen. Foar ienfâld litte wy dizze oannames ferlitte ymplisyt yn 'e rest fan it artikel).

It kin ûnferstannich lykje te ferwachtsjen dat in betroubere quorum-oergong mooglik is yn in netwurk fan ûnôfhinklike knopen. Mar d'r binne twa redenen wêrom't dit sa is.

De earste reden is it bestean fan it ynternet sels. It ynternet is in perfekt foarbyld fan in netwurk fan ûnôfhinklike knooppunten mei krusende quorums. De measte knooppunten op it ynternet ferbine mei mar in pear oare lokale knooppunten, mar dizze lytse sets oerlappe genôch dat elke knooppunt kin wurde berikt fan elke oare knooppunt lâns in rûte.

De twadde reden is spesifyk foar it Stellar betellingsnetwurk (it meast foarkommende gebrûk fan SCP). Elke asset op it Stellar-netwurk hat in útjouwer, en de rjochtlinen fan Stellar fereaskje dat elke útjouwer ien of mear knopen op it netwurk oanwize om ferlossingsoanfragen te ferwurkjen. It is yn jo bêste belang om dizze knopen direkt of yndirekt op te nimmen yn quorumplakken foar elke asset wêryn jo ynteressearre binne. Kworums foar alle knopen dy't ynteressearre binne yn in opjûne asset sille dan op syn minst by dy ôflossingsknooppunten oerlaapje. Knooppunten dy't ynteressearre binne yn meardere aktiva sille alle ôflossingsknooppunten fan 'e oanbelangjende útjouwers yn har kworumplakken omfetsje, en se sille besykje alle aktiva tegearre te puollen. Dêrneist alle aktiva dy't net keppele yn dizze wize oan oaren op it netwurk, en moat net ferbûn wurde - dit is ûntwurpen sadat d'r gjin quorum oerlaap is foar dit netwurk (bgl, banken út 'e dollarsône wolle soms hannelje mei banken út' e eurosône en banken út 'e pesosône, dus se binne op itselde netwurk, mar gjinien fan harren soargen oer it aparte netwurk fan bern dy't honkbalkaarten ferkeapje).

Fansels, wachtsje quorum crossing is net garandearje. Oare Byzantynske oerienkomstsystemen hawwe in protte fan har kompleksiteit te tankjen oan 'e garânsje fan kworums. In wichtige ynnovaasje fan SCP is dat it de ferantwurdlikens foar it meitsjen fan quorums út it konsensusalgoritme sels ferwideret en it nei it tapassingsnivo bringt. Sa, hoewol't federated stimming is algemien genôch om te stimmen oer elk probleem, de betrouberens dêrfan is eins kritysk ôfhinklik fan de bredere betsjutting fan dizze betsjuttings. Guon hypotetyske gebrûk is miskien net sa befoarderlik foar it meitsjen fan goed ferbûne netwurken as oaren.

Stimme, akseptaasje en befêstiging

Yn in federearre stimronde begjint in knooppunt opsjoneel te stimmen foar wat wearde V. Dit betsjut in berjocht út te stjoeren nei it netwurk: "Ik bin knooppunt N, myn kworumplakken binne Q, en ik stim foar V." As in knooppunt stimt dizze wize, it belooft dat it hat nea stimd tsjin V en nea sil.

Yn peer-to-peer-útstjoerings sjocht elk knooppunt hoe't de oaren stimme. Sadree't in knooppunt hat sammele genôch fan dizze berjochten, it kin track quorum slices en besykje te finen quorums. As hy sjocht in kworum fan leeftydsgenoaten dy't ek stimme foar V, hy kin fierder nei oannimmen V en stjoer dit nije berjocht nei it netwurk: "Ik bin knooppunt N, myn kworumplakken binne Q, en ik akseptearje V." Akseptaasje jout in sterkere garânsje dan ienfâldich stimmen. As in knooppunt stimt foar V, it kin nea stimme foar oare opsjes. Mar as in knooppunt V akseptearret, sil gjin knooppunt op it netwurk ea de oare opsje akseptearje (stelling 8 yn it SCP-wytboek bewiist dit).

Fansels is der in grutte kâns dat der net daliks in kworum fan knopen dy't iens binne mei V. Oare knopen meie stimme foar oare wearden. Mar d'r is in oare manier foar in knooppunt om te gean fan ienfâldige stimmen nei akseptaasje. N mei in oare wearde foar W akseptearje, ek al hat er dêr net foar stimd, en ek al sjocht er dêr gjin kworum foar. Om te besluten om jo stim te feroarjen, sjoch gewoan blokkearjende set knooppunten dy't W akseptearre hawwe. In blokkearjende set is ien knooppunt fan elk fan 'e kworumplakken N. Lykas de namme al fermoeden docht, kin it blokkearje in oare betsjutting. As alle knopen yn sa'n set W akseptearje, dan sil it (troch stelling 8) nea mooglik wêze om in kworum te foarmjen dat in oare wearde nimt, en dêrom is it ek feilich foar N om W te akseptearjen.

It Stellar Consensus Protocol begripe
Node N mei trije quorum slices.

It Stellar Consensus Protocol begripe
BDF is in blokkearjende set foar N: it befettet ien knooppunt fan elk fan 'e plakjes N.

It Stellar Consensus Protocol begripe
BE is ek in blokkearjende set foar N, om't E ferskynt yn twa plakken fan N.

Mar de blokkearjende set is gjin kworum. It soe te maklik wêze om knooppunt N te ferrifeljen om de winske wearde te akseptearjen as it genôch wie om mar ien knooppunt yn elk fan 'e plakjes N te hacken. Dêrom is it akseptearjen fan de wearde net it ein fan it stimmen. Ynstee moat N de wearde befêstigje, dat is, sjoch in kworum fan knopen dy't it akseptearje. As it sa fier komt, dan, sa't it SCP-wytboek bewiist (yn Stelling 11), sil de rest fan it netwurk ek úteinlik deselde wearde befêstigje, sadat N de federearre stimming einiget mei in bepaalde wearde as resultaat.

It Stellar Consensus Protocol begripe
Federated stimming.

It proses fan stimmen, akseptearjen en befêstiging foarmet ien folsleine ronde fan federearre stimmen. It Stellar-konsensusprotokol kombinearret in protte fan dizze rûnten om in folslein konsensussysteem te meitsjen.

Stellar Consensus Protocol

De twa wichtichste eigenskippen fan in konsensussysteem binne - feiligens и survivability. In konsensus algoritme is "feilich" as it kin nea jaan ferskillende resultaten oan ferskillende dielnimmers (Bob syn kopy fan skiednis sil nea tsjinsprekke Carol). "Leefberens" betsjut dat it algoritme altyd in resultaat sil produsearje, dat is, it sil net fêstlizze.

Beskreaun federale stimming proseduere feilich yn 'e sin dat as in knooppunt de wearde fan V befêstiget, sil gjin oare knoop de oare wearde befêstigje. Mar "sil gjin oare betsjutting befêstigje" betsjut net dat it needsaaklik wat befestiget. Dielnimmers kinne stimme op safolle ferskillende wearden dat neat de akseptaasjedrompel sil berikke. Dit betsjut dat by federale stimmen gjin survivability.

It Stellar-konsensusprotokol brûkt federearre stimmen op in manier dy't sawol feiligens as oerlibjen garandearret. (SCP feiligens en survivability garânsjes hawwe in teoretyske limyt. It ûntwerp kiest in tige sterke feiligens garânsje, offerje in lytse survivability mitigation, mar jûn genôch tiid, konsensus is heechstwierskynlik te berikken.) Yn in notedop is it idee om meardere federeare stimmen te hawwen oer meardere wearden oant ien fan har troch alle hjirûnder beskreaune SCP-stimfazen makket.

De wearden dêr't SCP konsensus oer siket, kinne transaksjeskiednis wêze as in lunchoarder of wat oars, mar it is wichtich om te notearjen dat dit net de wearden binne dy't wurde akseptearre of befêstige. Ynstee komt federale stimming neffens útspraken oer dizze wearden.

De earste rondes fan federale stimmen fine plak op nominaasje poadium (nominaasje faze), op in set fan útspraken lykas "Ik nominearje V," miskien foar in protte ferskillende wearden fan V. It doel fan nominaasje is te finen ien of mear útspraken dy't geane troch akseptaasje en befêstiging.

Nei it finen fan kontrolearbere kandidaten giet SCP troch nei de stimmingsfaze, dêr't it doel is om in bepaalde bulletin (dat is, in kontener foar de foarstelde wearde) en in kworum dat kin ferklearje bedriuwe dêrfoar (begjinne). As in kworum in stimbriefke pleitet, wurdt de wearde akseptearre as de konsensus. Mar foardat in knooppunt stimme kin oer in stimbriefke, moat it earst befêstigje cancellation alle stimbiljetten mei in legere tsjinwearde. Dizze stappen - it annulearjen fan stimbiljetten om ien te finen dy't kin wurde begien - omfetsje meardere rondes fan federearre stimmen oer meardere stimbriefkes.

De folgjende seksjes beskriuwe nominaasje en stimmen yn mear detail.

Nominaasje

Oan it begjin fan 'e nominaasjefaze kin elke knooppunt spontaan in wearde kieze foar V en stimme foar de ferklearring "Ik nominearje V." It doel op dit stadium is om de nominaasje fan wat wearde te befêstigjen troch in federearre stimming.

Miskien stimme genôch knooppunten oer foldwaande ferskillende útstellen dat gjin nominaasje de akseptaasjedrompel berikke kin. Dêrom, neist it útstjoeren fan har eigen nominaasjestimmen, "reflektearje" knopen de nominaasjes fan har leeftydsgenoaten. Echo betsjut dat as in knooppunt stimt foar nominaasje V, mar in berjocht sjocht fan in buorman dy't stimt foar nominaasje W, it no stimt foar sawol V as W. ferskillende nominearren. SCP omfettet in meganisme om dizze stimmen te regeljen. Koartsein is d'r in formule foar it bepalen fan 'e "prioriteit" fan in peer út it eachpunt fan in knooppunt, en allinich de stimmen fan knooppunten mei hege prioriteit wurde reflektearre. Hoe langer de nominaasje nimt, hoe leger de drompel, sadat it knooppunt útwreidet set fan leeftydsgenoaten waans stimmen it sil wjerspegelje. De prioriteit formule omfiemet it slot nûmer as ien fan syn ynputs, sadat in hege prioriteit peer foar ien slot kin wêze in lege-prioriteit peer foar in oar, en oarsom).

Konseptueel is de nominaasje parallel, sawol V as W binne aparte federale stimmen, elk yndividueel by steat om akseptaasje of befêstiging te berikken. Yn 'e praktyk pakke SCP-protokolberjochten dizze yndividuele stimmen byinoar.

Hoewol't stimmen foar de nominaasje fan V in tasizzing is om nea tsjin de nominaasje fan V te stimmen, is it op it oanfraachnivo - yn dit gefal SCP - dat bepaald wurdt wat "tsjin" betsjut. SCP sjocht gjin útspraak dy't tsjinsprekt de "Ik nominearje X" stimming, dat is, der is gjin "Ik bin tsjin it nominearjen fan X" berjocht, sadat de knooppunt kin stimme foar it nominearjen fan alle wearden. In protte fan dizze nominaasjes sille nearne gean, mar úteinlik sil it knooppunt ien of mear wearden akseptearje of befêstigje. Sadree't in nominearre is befêstige, hy wurdt kandidaat.

It Stellar Consensus Protocol begripe
SCP nominaasje mei help fan federearre stimmen. D'r kinne in protte "B"-wearden wêze foardroegen troch peers en "reflektearre" troch it knooppunt.

Nominaasjes kinne resultearje yn meardere befêstige kandidaten. Dêrom fereasket SCP dat de oanfraachlaach wat metoade leveret om de kandidaten yn ien te kombinearjen gearstalde (komposite). De oanslutingsmetoade kin alles wêze. It wichtichste is dat as dizze metoade deterministysk is, dan sil elke knoop deselde kandidaten kombinearje. Yn in stimsysteem foar lunch kin "ieniging" gewoan betsjutte dat ien fan twa kandidaten ôfwiisd wurdt. (Mar op in deterministyske wize: elk knooppunt moat selektearje deselde wearde te resetten. Bygelyks, de eardere seleksje yn alfabetyske folchoarder). Yn it Stellar betellingsnetwurk, wêr't oer transaksjeskiednis stimd wurdt, giet it fusearjen fan twa foarstelde nominearren om it gearfoegjen fan de transaksjes dy't se befetsje en de lêste fan har twa tiidstempels.

It SCP-wytboek bewiist (stelling 12) dat oan 'e ein fan' e útwreidingsfaze it netwurk úteinlik konvergeet ta ien komposit. Mar d'r is in probleem: federearre stimmen is in asynchrone protokol (lykas SCP). Mei oare wurden, knopen wurde net koördinearre troch tiid, mar allinich troch de berjochten dy't se stjoere. Ut it eachpunt fan 'e knooppunt is it ûndúdlik wannear einige útwreiding faze. En hoewol alle knooppunten úteinlik op deselde gearstalling komme, kinne se ûnderweis ferskate rûtes nimme, ûnderweis ferskate gearstalde kandidaten meitsje, en kinne se noait fertelle hokker de lêste is.

Mar it is normaal. Nominaasje is gewoan tarieding. It wichtichste is om it oantal kandidaten te beheinen om konsensus te berikken, dy't yn it proses bart rint foar kantoar (stimming).

Te rinnen

Bulletin is in pear , dêr't teller is in hiel getal dat begjint by 1 en wearde is in kandidaat út de nominaasje poadium. Dit kin de eigen kandidaat fan in knooppunt wêze as de kandidaat fan in oanbuorjende knooppunt akseptearre troch dat knooppunt. Rûchwei sprutsen, in stimbriefke omfettet werhelle besykjen om it netwurk te twingen om in konsensus te berikken oer guon kandidaat op ien of oare stimming troch potinsjeel in protte federale stimmen te hâlden op stimbriefkes. Tellers op 'e stimbiljetten hâlde de besocht dien by, en stimbiljetten mei hegere tellen hawwe foarrang op stimbiljetten mei legere tellen. As de nijsbrief komt fêst, in nije stimming begjint, no op 'e stimming .

It is wichtich om te ûnderskieden wearden (bygelyks, wat moat de bestelling foar lunch wêze: pizza of salades), nijsbrieven (counter-wearde pear) en útspraken oer stimbiljetten. De SCP-ronde omfettet ferskate rondes fan federale stimmen, benammen oer de folgjende útspraken:

  • "Ik bin ree om te commit stimbriefke B" en
  • "Ik kundigje it begean fan stimbriefke B oan"

Fanút it perspektyf fan in opjûne knooppunt wurdt konsensus berikt as it in stimbriefke B fynt wêrfoar it kin befêstigje (dat wol sizze, in kworum fine dat akseptearret) de ferklearring "Ik commit stimbriefke B." Fan dit punt ôf is it feilich om te hanneljen op 'e wearde oantsjutte yn B - bygelyks it pleatsen fan dizze bestelling foar lunch. It hjit eksternalisaasje betsjuttings. Sadree't de akseptaasje fan 'e stimming is befêstige, kin in knooppunt der wis fan wêze dat elke oare knoop deselde wearde hat eksternalisearre of dat sil dwaan yn' e takomst.

Hoewol in protte federearre stimmen konseptueel útfierd wurde op oanspraken foar in protte ferskillende stimbiljetten, wikselje se net safolle berjochten út, om't elk berjocht in oantal stimbiljetten omfettet. Ien berjocht befoarderet dus de steat fan in protte federearre stimmen tagelyk, bygelyks: "Ik akseptearje commit stimbiljetten fariearjend fan foar "

Wat betsjutte de termen "tariede" en "begean"?

In knooppunt stimt om in stimbrief te meitsjen as it der wis fan is dat oare knooppunten gjin stimbiljetten mei ferskillende wearden sille begean. It oertsjûgjen fan dit is it doel fan it tarieden fan de oanfraach. In stim dy't seit "Ik bin ree om stimbiljet B te fieren" is in tasizzing om nea in stimbriefke lytser te meitsjen as B, dus mei in lytser oantal (SCP fereasket dat de wearden yn stimbiljetten yn in bepaalde folchoarder binne. Sa, nijsbrief minder as n1

Wêrom betsjut "Ik bin ree om stimbriefke B te begean" betsjut "Ik beloof om nea stimbriefkes dy't lytser binne as B te begean"? Omdat SCP definiearret ôfbrekke as it tsjinoerstelde fan commit. In stimming foar it tarieden fan in stimbriefke omfettet ek in stimming om guon oare stimbiljetten te diskwalifisearje, en, lykas wy earder besprutsen hawwe, is it stimmen foar ien ding in belofte om der noait tsjin te stimmen.

Foardat in commit útstjoerd wurdt, moat in knooppunt earst in bulletin fine dat it kin befestigje as taret. Mei oare wurden, it fiert in federearre stimming oer it ûnderwerp "Ik bin ree om stimbriefke B te begean," mooglik op in protte ferskillende stimbiljetten, oant it ien fynt dy't in kworum akseptearret.

Wêr komme de stimbiljetten wei om de stimming foar te bereiden? Earst stjoert de knoop de tariedings om foar <1,C> te stimmen, wêrby't C de gearstalde kandidaat is produsearre yn 'e nominaasjepoadium. Sels nei't de tariedings foar it stimmen begjinne, kinne nominaasjes lykwols resultearje yn ekstra kandidaten dy't nije stimbiljetten ferskine. Underwilens kinne peers ferskate kandidaten hawwe, en se kinne in blokkearjende set foarmje dy't akseptearret "Ik bin ree om de B2-stimming te begean," wat de knoop sil oertsjûgje om it ek te akseptearjen. Uteinlik is d'r in time-outmeganisme dat nije rondes fan federearre stimmen genereart op nije stimbiljetten mei hegere tellen as de hjoeddeistige stimbiljetten fêst sitte.

Sadree't de knooppunt in stimbriefke B fynt dy't it kin befestigje as taret, stjoert it in nij berjocht út "Stimbriefje B ynsette." Dizze stimming fertelt peers dat it knooppunt sil nea opjaan B. Yn feite, as B is in stimbriefke , dan "Stimje stimme " betsjut de ûnbedoelde tastimming om te stimmen foar de reewilligens fan elke stimbriefke fan oan <∞, s>. Dizze ekstra wearde helpt oare peers yn te heljen mei de commit peer as se noch yn eardere stadia fan it protokol binne.

Op dit stadium is it de muoite wurdich om nochris te beklamjen dat dit asynchrone protokollen binne. Krekt om't ien knooppunt stimmen stjoert foar in commit, betsjut net dat syn peers dat ek dogge. Guon fan harren stimme mooglik noch oer útspraken as tarieding op it stimmen, oaren hawwe de betsjutting al eksternalisearre. SCP leit út hoe't in knooppunt moat ferwurkje elk type peer berjocht nettsjinsteande syn faze.

As it berjocht "Ik haw in commit oankundige » kin net ûntfongen of befêstige wurde, dat is de kâns dat it berjocht wurdt akseptearre of befêstige of - of, yn elts gefal, elke stimbriefke mei de wearde C, en net in oar, om't it knooppunt al tasein hat nea te annulearjen . Tsjin de tiid dat in knooppunt stimmen foar in commit útstjoert, sil it C wêze of neat, ôfhinklik fan hoe fier de konsensus giet. Dit is lykwols noch net genôch foar it knooppunt om C. Guon Byzantynske peers (dy't minder as in kworum foarmje, basearre op ús feiligensoannames) kinne lizze oan 'e knooppunt. It akseptearjen en dan befêstigjen fan guon stimbiljetten (as berik fan stimbiljetten) is wat it knooppunt it fertrouwen jout om C úteinlik ekstern te meitsjen.

It Stellar Consensus Protocol begripe
SCP stimmen troch federearre stimmen. Net toand: De timer kin op elk momint ôfgean, it tellen op 'e stimming ferheegje (en mooglik in nije gearstalling fan ekstra nominearre kandidaten produsearje).

En it is alles! As it netwurk ienris in konsensus hat berikt, is it klear om it wer en wer te dwaan. Op it Stellar betellingsnetwurk bart dit sawat ien kear elke 5 sekonden: in prestaasje dy't sawol de feiligens as survivability fereasket garandearre troch SCP.

SCP kin dit berikke troch te betrouwen op meardere rondes fan federearre stimmen. Federearre stimmen wurdt mooglik makke troch it konsept fan quorum slices: sets fan peers dy't elk knooppunt hat besletten om te fertrouwen as ûnderdiel fan syn (subjektive) quorum. Dizze konfiguraasje betsjut dat konsensus kin wurde berikt sels yn in netwurk mei iepen lidmaatskip en Byzantynske bedrog.

Fierder lêzen

  • It orizjinele SCP-wyt papier is te finen hjiren hjir ûntwerp spesifikaasjes foar de útfiering dêrfan.
  • De oarspronklike skriuwer fan it SCP-protokol, David Mazier, ferklearret it op in ferienfâldige (mar noch technysk) manier. hjir.
  • Jo binne miskien ferrast dat jo de termen "mynbou" of "bewiis fan wurk" net fine yn dit artikel. SCP brûkt dizze metoaden net, mar guon oare konsensusalgoritmen dogge dat. Zane Witherspoon skreau tagonklik oersjoch fan konsensus algoritmen.
  • Stap foar stap beskriuwing in ienfâldich netwurk dat berikt konsensus yn ien folsleine ronde fan SCP.
  • Foar lêzers ynteressearre yn SCP-ymplemintaasjes: sjoch C++ koade, brûkt troch de Stellar betelling netwurk, of Gean koade, dy't ik skreau foar in better begryp fan SCP.

Boarne: www.habr.com

Add a comment