Uurime Stellar konsensusprotokolli

Uurime Stellar konsensusprotokolli

Stellar konsensusprotokoll on esmakordselt kirjeldatud teadusartiklis David Mazieri poolt 2015. aastal. See on 'föderatiivne bĂŒtsantsi kokkulepe', mis vĂ”imaldab juhtideta detsentraliseeritud arvutivĂ”rkudel efektiivselt saavutada konsensust mis tahes otsuse osas. Stellar maksevĂ”rk kasutab Stellar Consensus Protocol (SCP) sĂŒsteemi, et hoida kooskĂ”lastatud tehingute ajalugu, mida nĂ€evad kĂ”ik osalejad.

Peetakse, et konsensusprotokollid on keerulised arusaada. SCP on lihtsam kui enamik neist, kuid jagab siiski seda mainet — osaliselt vale arusaama tĂ”ttu, et 'föderatiivne hÀÀletamine', millele pĂŒhendatakse teadusartikli esimene pool, on SCP. Kuid see pole tĂ”si! See on lihtsalt oluline ehitusplokk, mida artikli teises pooles kasutatakse tĂ”elise Stellar konsensusprotokolli loomiseks.

Selles artiklis kĂ€sitleme lĂŒhidalt, mis on „kokkuleppete sĂŒsteem”, mis vĂ”ib muuta selle „bĂŒrokraatlikuks”, ja miks muuta bĂŒrokraatlik sĂŒsteem „föderaalseks”. SeejĂ€rel selgitame föderaalse hÀÀletamisprotseduuri, millest rÀÀgitakse SCP artiklis, ja lĂ”puks tutvustame SCP protokolli.

Kokkuleppete sĂŒsteemid

Kokkuleppete sĂŒsteem vĂ”imaldab osalejate grupil saavutada konsensuse mingi teema ĂŒle, nĂ€iteks selle ĂŒle, mida lĂ”unaks tellida.

Meie ettevĂ”ttes Interstellar oleme rakendanud oma söögikokkuleppe sĂŒsteemi: me tellime seda, mida ĂŒtleb meie operatsioonijuht John. See on lihtne ja tĂ”hus kokkuleppete sĂŒsteem. Me kĂ”ik usaldame Johni ja usume, et ta leiab iga pĂ€ev midagi huvitavat ja toitevat.

Aga mis siis, kui John kuritarvitab meie usaldust? Ta vĂ”ib ĂŒksi otsustada, et me kĂ”ik peame veganiteks saama. NĂ€dala vĂ”i kahe pĂ€rast kukutame tĂ”enĂ€oliselt ta ja anname vĂ”imu Elizabethile. Aga Ă€kki talle meeldivad avokaadod anĆĄoovistega ja ta arvab, et kĂ”ik peavad olema nagu tema. VĂ”im rikub. SeetĂ”ttu on parem leida mĂ”ni demokraatlikum meetod: mingi viis, et tagada, et erinevad eelistused on arvesse vĂ”etud, samal ajal tagades Ă”igeaegse ja ĂŒheselt mĂ”istetava tulemuse, et vĂ€ltida olukorda, kus keegi ei telli lĂ”unat vĂ”i viis inimest esitavad erinevaid tellimusi vĂ”i arutelu venib Ă”htuni.

Tundub, et lahendus on lihtne: korraldada hÀÀletus! Aga see on petlik mulje. Kes kogub hÀÀletussed ja teatab tulemustest? Ja miks peaksid teised uskuma seda, mida tema ĂŒtleb? VĂ”ib-olla saame eesmĂ€rkide kohaselt hÀÀletada juhtimise usaldusvÀÀrse juhi poolt — aga kes juhib seda esimest hÀÀletust? Mis siis, kui me ei suuda kokku leppida juhis? VĂ”i kui saame kokku lepitud, aga see juht jÀÀb koosolekule vĂ”i lĂ€heb haiglasse?

Sarnased probleemid esinevad jaotatud arvutivĂ”rkudes. KĂ”ik osalised vĂ”i sĂ”lmed peavad kokku leppima mingisuguses lahenduses, nĂ€iteks kelle kord on ajakohastada ĂŒhist faili vĂ”i vĂ”tta ĂŒlesanne töötlemise jĂ€rjekorrast. KrĂŒptovaluuta vĂ”rgus on sĂ”lmedel korduvalt vaja valida, milline tĂ€ielik ajalugu vĂ€lja nĂ€eb, mitmest vĂ”imalikust versioonist, mis mĂ”nikord konfliktivad. See vĂ”rguleping tagab saajale, et mĂŒnt on (a) kehtiv (mitte vale) ja (b) veel mitte kulutatud teises kohas. See tagab ka, et ta saab tulevikus mĂŒndi kulutada, sest uuel saajal on samad garantiid samadel pĂ”hjustel.

Igas jaotatud arvutusvĂ”rgus peab konsensus sĂŒsteem olema tĂ”rkekindel: see peab andma jĂ€rjepidevaid tulemusi, hoolimata vigadest, nagu aeglased sidekanalid, mitte reageerivad sĂ”lmed ja vale sĂ”numite jĂ€rjekord. Byzantine kokkulepete sĂŒsteem on lisaks vastupidav «bĂŒtsantsi» vigadele: sĂ”lmedele, mis annavad valeinfot, olgu need siis eksimuse tĂ”ttu vĂ”i teadlikust katsest sĂŒsteemi ÔÔnestada vĂ”i mingit eelist saada. «BĂŒtsantslik» talitlushĂ€iretaluvus — usaldus grupi otsusele, isegi kui mĂ”ned grupiliikmed vĂ”ivad vale anda vĂ”i muul viisil otsuste tegemise reegleid rikkuda — sai oma nime BĂŒtsantsi impeeriumi kindralite allegooriast, kes pĂŒĂŒdsid korraldada rĂŒnnakut. Hea kirjeldus Anthony Stevensilt.

Vaatleme krĂŒptoraha omanikku Alice'i, kes peab valima maitsva jÀÀtise ostmise Bobile ja Carolile oma vĂ”la tasumise vahel. VĂ”ib-olla tahab Alice mĂ”lemale korraga maksta, petlikult kulutades sama mĂŒndi. Selleks peab ta veenma Bobi arvutit, et mĂŒnt polnud kunagi Carolile makstud, ja veenma Carol'i arvutit, et mĂŒnt polnud kunagi Bobile makstud. BĂŒtsantsi kokkulepete sĂŒsteem muudab selle tegelikult vĂ”imatuks, kasutades enamusreeglist tuntud kvoorumi. Sellises vĂ”rgus keeldub sĂ”lmimast teatud ajalooversiooni, kuni piisav hulk vĂ”rdsete sĂ”lmede — kvoorum — on nĂ”us selle ĂŒleminekuga. Kui see juhtub, moodustavad nad piisavalt suure valimibloki, et sundida ĂŒlejÀÀnud vĂ”rgu sĂ”lmi nende otsusega nĂ”ustuma. Alissa vĂ”ib sundida mĂ”ningaid sĂ”lmi valetama tema nimel, kuid kui vĂ”rk on piisavalt suur, siis tema katse summutatakse ausate sĂ”lmede hÀÀltega.

Kui palju sĂ”lmi on kvoorumi saavutamiseks vajalik? VĂ€hemalt enamus, tĂ€psemalt kvalifitseeritud enamus veaparandamiseks ja pettuse vastu. Kuid enamat arvestamiseks on vajalik teada ĂŒldine osalejate arv. Interstellar'i kontoris vĂ”i ringkonnavalimistel saab need numbrid kergesti teada. Kuid kui teie grupp on halvasti mÀÀratletud vĂ”rk, kuhu sĂ”lmed saavad vabalt siseneda ja vĂ€ljuda ilma keskuseta kokkuleppimata, siis on vajalik föderatiivne Byzantine lepingusĂŒsteem, mis suudab mÀÀrata kvoorumeid mitte ette mÀÀratud sĂ”lmede loendist, vaid dĂŒnaamiliselt pidevalt muutuva ja paratamatult mittetĂ€ieliku sĂ”lmede vĂ€ljavĂ”tte pĂ”hjal kindlal hetkel.

Ühe sĂ”lme vaatenurgast vĂ”ib tunduda vĂ”imatu luua kvoorumit ulatuslikus vĂ”rgustikus, kuid see on siiski vĂ”imalik. Selline kvoorum vĂ”ib isegi tagada detsentraliseeritud hÀÀletamise tulemused. Tehniline dokument SCP nĂ€itab, kuidas seda teha protseduuri kaudu, mida nimetatakse föderatiivne hÀÀletamine.

Kauakestev kÀitumine

Artikli ĂŒlejÀÀnud osa kirjeldab pĂ”hjalikumalt föderatiivset hÀÀletamist ja Stellar'i konsensuse protokolli. Kui Teil ei ole huvi ĂŒksikasjade vastu, siis siin on ĂŒldine ĂŒlevaade protsessist.

  1. SĂ”lmed viivad lĂ€bi föderatiivse hÀÀletamise voorud «nomineeritud» ĂŒle. Föderatiivse hÀÀletamise voor tĂ€hendab:
    • SĂ”lm hÀÀletab mingi kinnituse ĂŒle, nĂ€iteks: «Ma soovitan vÀÀrtust V»;
    • SĂ”lm kuulab osaliste hÀÀli, kuni leiab sellise, kes suudab «aktsepteerida»;
    • SĂ”lm otsib «kvoorumi» selle kinnituse jaoks. Kvoorum «kinnitab» nomineeritud.
  2. Kui sĂ”lm suudab kinnitada ĂŒht vĂ”i mitut kandidaati, proovib ta "valimis" ette valmistada mitmete föderatiivsete hÀÀlte ringide kaudu.
  3. Kui sĂ”lm on vĂ”imeline kontrollima valimis valmistumist, pĂŒĂŒab ta seda kinnitada veelgi suuremate föderatiivsete hÀÀlte ringide kaudu.
  4. Kui sÔlm suudab kinnitada valimise, vÔib ta selle valimise vÀÀrtust "vÀljastada", kasutades seda konsensuse tulemuseks.

Need sammud sisaldavad mitmeid föderatiivsete hÀÀlte ringe, mis kokku moodustavad ĂŒhe SCP ringi. Uurime lĂ€hemalt, mis igas sammus toimub.

Föderatiivne hÀÀletamine

Föderatiivne hÀÀletamine on protseduur, et mÀÀrata, kas vĂ”rk suudab kokku leppida ettepanekus. HÀÀlte ringis peab iga sĂ”lm valima ĂŒhe paljusid vĂ”imalikke vÀÀrtusi, kuid ta ei saa seda teha, enne kui ei ole kindel, et teised sĂ”lmed ei vali erinevat tulemust. Selleks, et selles veenduda, vahetavad sĂ”lmed massiliselt sĂ”numeid edasi-tagasi. kinnitas, et kvorum sĂ”lmed vastu vĂ”tma ĂŒks ja sama lahendus. JĂ€rgmised osad selgitavad selles lauses kasutatud termineid ja kogu protseduuri.

Kvoorumeid ja kvoorumi jagunemisi

Alustame kvoorumi mÀÀratlemisest. Nagu eespool arutasime, on hajutatud vĂ”rkus, kus liikmed muudavad pidevalt oma koosseisu, vĂ”imatu ette teada sĂ”lmede arvu ning seega, kui palju on vaja enamuse saavutamiseks. Föderaalsed hÀÀletused lahendavad selle probleemi, esitades uue idee kvoorumi jagunemisest (quorum slice): vĂ€ike hulk vĂ”rdselt omavahel ĂŒhendatud sĂ”lmi, kellele sĂ”lm usaldab teabe edastamise hÀÀletamise oleku kohta ĂŒlejÀÀnud vĂ”rgus. Iga sĂ”lm mÀÀrab oma kvoorumi jagunemise (millega ta tegelikult liitub).

Kvoorumi moodustamine algab kvoorumi jagunemisest. Iga sĂ”lme juurde lisatakse tema jagunemise sĂ”lmed. SeejĂ€rel lisatakse nende sĂ”lmede jagunemise liikmed ja nii edasi. Aja jooksul satub ĂŒha rohkem sĂ”lmi, mida te ei saa lisada, kuna nad on juba jagunemises. Kui uusi sĂ”lmi enam pole, lĂ”ppeb protsess: oleme moodustanud kvoorumi algse sĂ”lme kvoorumi jagunemise kaudu 'transitiivse sulgemisega'. ja nii edasi. Protsessi kĂ€igus satute jĂ€rjest rohkemate sĂ”lmedega, mida ei saa lisada, kuna need on juba kvoodis. Kui uusi sĂ”lmi enam pole, peatutakse: oleme loonud kvoori „transitiivse sulgemise” abil (transitive closure) algse sĂ”lme kvoorist.

Uurime Stellar konsensusprotokolli
Ette leida antud sÔlmest kvorumit...

Uurime Stellar konsensusprotokolli
...lisame tema lÔike liikmeid...

Uurime Stellar konsensusprotokolli
...siis lisame nende sÔlmede lÔikude liikmeid.

Uurime Stellar konsensusprotokolli
JÀtkame, kuni lisamiseks pole enam sÔlmi.

Uurime Stellar konsensusprotokolli

Uurime Stellar konsensusprotokolli
Lisamiseks pole sÔlmi jÀÀnud. See on kvorum.

Tegelikult vĂ”ib iga sĂ”lm kuuluda rohkem kui ĂŒhte lĂ”iku. Kvorumi moodustamiseks valige ainult ĂŒks lĂ”ik ja lisage liikmed; seejĂ€rel valige iga liikme jaoks mĂ”ni muu lĂ”ik ja lisage liikmed sellest lĂ”ik ja nii edasi. See tĂ€hendab, et iga sĂ”lm on osa mitmest vĂ”imalikust kvorumist.

Uurime Stellar konsensusprotokolli
Valige igal sammul vaid ĂŒks kvorumi lĂ”ik.

Uurime Stellar konsensusprotokolli

Uurime Stellar konsensusprotokolli

Uurime Stellar konsensusprotokolli
Üks vĂ”imalik kvorum. VĂ”i alternatiivne variant...

Uurime Stellar konsensusprotokolli
...valime teisi lÔike...

Uurime Stellar konsensusprotokolli

Uurime Stellar konsensusprotokolli
...(kui see on vÔimalik)...

Uurime Stellar konsensusprotokolli
...moodustab teise kvorumi.

Kuidas sÔlm teab, millistes lÔikudes teised sÔlmed on? Just nagu teavet teiste sÔlmede kohta: edastustest, mida iga sÔlm vÔrku edastab, kui tema hÀÀletamise olek muutub. Iga edastus sisaldab teavet edastava sÔlme lÔikude kohta. Tehnilises dokumendis SCP ei ole suhtlemismehhanismi mÀÀratletud. Teostustes kasutatakse tavaliselt gossip protokolli Ôigustatud sÔnumite edastamiseks kogu vÔrgus.

Tuletame meelde, et mittefederatiivses BĂŒtsantsi konsensuse sĂŒsteemis mÀÀratakse kvoorum kui enamus kĂ”igist sĂ”lmpunktidest. BĂŒtsantsi konsensuse sĂŒsteem on vĂ€lja töötatud kĂŒsimuse seisukohalt: kui palju ebaausaid sĂ”lmpunkte suudab sĂŒsteem taluda? N sĂ”lmpunktiga sĂŒsteemis, mis on projekteeritud taluma f riket (pettuseid), peab sĂ”lm suutma saavutada edusamme, saades vastuse N−f osalejalt, kuna f neist ei pruugi töötada. Kuid vastuse saades N−f osalejalt, vĂ”ib eeldada, et kĂ”ik f osalejat (kellest sĂ”lm vastust ei saanud) on tegelikult ausad. Seega on pahatahtlikud f N−f osalejast (kellest saadi vastus). Et sĂ”lmed jĂ”uaksid ĂŒhisele konsensusele, peab aus olema enamus ĂŒlejÀÀnud sĂ”lmpunktidest, s.t. meil on vajalik, et N−f oleks suurem kui 2f vĂ”i N > 3f. Seega on tavaliselt sĂŒsteem, mis on projekteeritud taluma f riket, kokku N=3f+1 sĂ”lmpunkti ja kvoorumi suurus on 2f+1. Kui ettepanek ĂŒletab kvoorumi piiri, on ĂŒlejÀÀnud vĂ”rgu liikmed veendunud, et kĂ”ik konkurentsivĂ”imelised ettepanekud ebaĂ”nnestuvad. Nii jĂ”uab vĂ”rk tulemusele.

Kuid föderatiivses BĂŒtsantsi lepingute sĂŒsteemis ei saa mitte ainult olla enamus (sest keegi ei tea vĂ”rgu ĂŒldist suurust), vaid enamuse mĂ”isted on tĂ€ielikult kasutud! Kui liitumine sĂŒsteemiga on avatud, vĂ”ib keegi saavutada enamuse, tehes nn Sybilli rĂŒnnaku: liitudes mitmeid kordi vĂ”rku eri sĂ”lmede kaudu. Miks siis vĂ”ib ĂŒlemineku sulgemist lĂ”igata nimetada kvoorumi, ja kuidas see suudab maha suruda konkurentide ettepanekuid?

Tehniliselt ei suuda! Kujutage ette vĂ”rgustikku, kus on kuus sĂ”lme, kus kaks kolmikute rĂŒhma on ĂŒksteise kvorumis lĂ”igatud. Esimene alagrupp vĂ”ib teha otsuse, millest teine kunagi kuulda ei saa ja vastupidi. Selle vĂ”rgu jaoks ei ole mingit vĂ”imalust konsensuse saavutamiseks (vĂ€lja arvatud juhuslikult).

SeetĂ”ttu nĂ”uab SCP, et föderatiivse hÀÀletamise jaoks (ja artikli oluliste teoreemide kohaldamiseks) peab vĂ”rgul olema omadus, mida nimetatakse kvorumite ristumiseks. Selle omadusega vĂ”rgus kattuvad alati vĂ€hemalt ĂŒhes sĂ”lmes kĂ”ik kaks kvroomi, mille saate koostada. Selleks, et mÀÀratleda vĂ”rgu valitsevad meeleolud, on see sama hea kui omada enamust. Intuitiivselt tĂ€hendab see, et kui mĂ”ni kvroom nĂ”ustub vĂ€itega X, siis ei saa ĂŒkski teine kvroom kunagi nĂ”ustuda millegi muuga, sest see peab tingimata sisaldama mĂ”nda sĂ”lme esimesest kvroomist, mis on juba hÀÀletanud X-i poolt.

Uurime Stellar konsensusprotokolli
Kui vÔrgus on kvroomide kattuvus...

Uurime Stellar konsensusprotokolli
...siis kÔik kaks kvroomi, mida saate koostada...

Uurime Stellar konsensusprotokolli
...kattuvad alati.

Uurime Stellar konsensusprotokolli

Uurime Stellar konsensusprotokolli

(Muidugi vĂ”ivad kattuvad sĂ”lmed osutuda bijantsiete-lahkudeks vĂ”i halbades aspektides nĂ”rkadeks. Sel juhul ei aita kvroomide kattumine ĂŒldse vĂ”rku kokku leppida. SeetĂ”ttu pĂ”hinevad paljud tulemused tehnilises dokumendis SCP avalikult vĂ€ljendatud eeldustel, nĂ€iteks et vĂ”rgu kvroomide kattuvus jÀÀb alles... ...isegi pĂ€rast halbade sĂ”lmede eemaldamist.. Lihtsuse huvides jĂ€tame need eeldused... ...varjatuks. ...artikli ĂŒlejÀÀnud osas).

MĂ”nikord vĂ”ib tunduda mĂ”istlik, et sĂ”ltumatute sĂ”lmede vĂ”rgus on usaldusvÀÀrne kvoorumi ĂŒletamine vĂ”imalik. Kuid on kaks pĂ”hjust, miks see nii on.

Esimene pĂ”hjus on interneti olemasolu. Internet on ideaalne nĂ€ide sĂ”ltumatute sĂ”lmede vĂ”rgust, millel on kvoorumi ĂŒletamine. Enamik interneti sĂ”lmi on ĂŒhendatud ainult mĂ”ne teise kohaliku sĂ”lmega, kuid need vĂ€ikesed kogumid kattuvad piisavalt, et iga sĂ”lm oleks kergesti kĂ€tte saadav mistahes muust sĂ”lmest mingi marsruudi kaudu.

Teine pĂ”hjus on spetsiifiline Stellar maksevĂ”rgustikule (SCP kĂ”ige levinum rakendus). Igal varal Stellar vĂ”rgus on emitter ning Stellar soovitused nĂ”uavad, et igal emitteril oleks mÀÀratud ĂŒks vĂ”i mitu sĂ”lme, mis töötlevad lunamispĂ€ringud. On teie huvides kaasata otse vĂ”i kaudselt need sĂ”lmed iga teid huvitava vara kvora lĂ”ikes. Siis kattuvad kĂ”ikide sĂ”lmede kvora, mis on huvitatud antud varast, vĂ€hemalt nende lunamisĂ”lmedega. SĂ”lmed, mis on huvitatud mitmest varast, kaasavad oma kvora lĂ”ikesse kĂ”ik vastava emitentide lunamisĂ”lmed ja pĂŒĂŒavad ĂŒhendada kĂ”ik varad kokku. Lisaks, igasuguseid varasid, mis ei ole omavahel seotud, ja ei tohiks olla omavahel seotud — on see planeeritud, et sellel vĂ”rgul ei oleks kvora kattuvust (nĂ€iteks dollaritsooni pangad tahavad mĂ”nikord kaubelda eurotsooni pankade ja peso tsooni pankadega, mistĂ”ttu nad on ĂŒhes vĂ”rgus, kuid neil ei ole mingit huvi eraldi laste vĂ”rgustiku, mis kaupleb pesapallikaartidega, vastu).

Muidugi, ootamine kvorumite ristumised ei ole garantii. Teised bĂŒtsantsi lepingusĂŒsteemid on oma keerukuses suuresti tĂ€nu kvorumite garantiile. Oluline uuendus SCP-s on see, et see vabastab kvorumite loomise vastutusest konsensuse algoritmi ning toob selle rakendustasemele. Seega, kuigi föderatiivne hÀÀletamine on piisavalt ĂŒldine igasuguste kĂŒsimuste hÀÀletamiseks, sĂ”ltub selle usaldusvÀÀrsus tegelikult kriitiliselt nende tĂ€henduste laiemast mĂ”ttest. MĂ”ned hĂŒpoteetilised kasutusmood vĂ”ivad osutuda vĂ€hem mugavaks hĂ€sti seotud vĂ”rkude loomisel kui teised.

HÀÀletamine, vastuvÔtt ja kinnitamine

Föderatiivse hÀÀletamise voorus hakkab sĂ”lm n-ö valima mingit vÀÀrtust V. See tĂ€hendab sĂ”numi: „Mina olen sĂ”lm N, minu kvorumite lĂ”iked Q ja ma hÀÀletan V poolt.” Kui sĂ”lm hÀÀletab selliselt, lubab ta, et ta ei ole kunagi V vastu hÀÀletanud ja ei tee seda kunagi.

Üksus nĂ€eb, kuidas teised hÀÀletavad ĂŒhtse vĂ”rguĂŒlekande kaudu. Kui ĂŒksus kogub piisavalt selliseid sĂ”numeid, suudab ta jĂ€lgida kvoorumite lĂ”ike ja proovida leida kvoorume. Kui ta nĂ€eb kvoorumit, mis hÀÀletab V poolt, vĂ”ib ta edasi liikuda vastuvĂ”tmiseni V ja edastada selle uue sĂ”numi vĂ”rku: «Mina olen ĂŒksus N, minu kvoorumi lĂ”iked Q ja ma vĂ”tan vastu V». VastuvĂ”tt tagab tugevama garantii kui lihtsalt hÀÀletamine. Kui ĂŒksus hÀÀletab V poolt, ei vĂ”i ta kunagi hÀÀletada teiste valikute poolt. Kuid kui ĂŒksus vĂ”tab vastu V, siis ei vĂ”ta ĂŒkski vĂ”rgu ĂŒksus kunagi vastu teisi valikuid (teoreem 8 SCP tehnilises dokumendis tĂ”estab seda).

Muidugi, on suur tĂ”enĂ€osus, et kohe ei leita kvoorumit, mis nĂ”ustuks V-ga. Teised ĂŒksused vĂ”ivad hÀÀletada teiste vÀÀrtuste eest. Kuid ĂŒksusel on veel ĂŒks vĂ”imalus liikuda lihtsast hÀÀletamisest vastuvĂ”tmiseni. N vĂ”ib vĂ”tta vastu teise vÀÀrtuse W, isegi kui ta ei ole selle jaoks hÀÀletanud, ja isegi kui ta ei nĂ€e selle jaoks kvoorumit. Selleks, et muuta oma hÀÀlt, piisab nĂ€gemisest blokeeriv komplekt sĂ”lmed, mis on vastu vĂ”tnud W. Blokeeriv hulk — see koosneb ĂŒhest sĂ”lmest iga kvoorumi lĂ”igust N. Nimi viitab sellele, et see suudab blokeerida iga muud vÀÀrtust. Kui kĂ”ik selles hulgas olevad sĂ”lmed vĂ”tavad vastu W, siis (teoreem 8) ei Ă”nnestu kunagi moodustada kvoorumit, mis vĂ”taks vastu muud vÀÀrtust, ja seega on N-i jaoks ka W vastuvĂ”tmine ohutu.

Uurime Stellar konsensusprotokolli
SÔlm N, millel on kolm kvoorumi lÔiku.

Uurime Stellar konsensusprotokolli
B-D-F — blokeeriv hulk N jaoks: see sisaldab ĂŒhte sĂ”lme iga N-i lĂ”igu kohta.

Uurime Stellar konsensusprotokolli
B-E on samuti blokeeriv hulk N jaoks, kuna E esindab kahes N-i lÔigus.

Kuid blokeeriv hulk ei ole kvoorum. Oleks liiga lihtne petta sĂ”lme N, et see aktsepteeriks vajalikku vÀÀrtust, kui on piisav, et hĂ€kkida ĂŒks ainus sĂ”lm igas N lĂ”ikes. SeetĂ”ttu ei tĂ€henda vÀÀrtuse aktsepteerimine veel hÀÀletamise lĂ”ppu. Selle asemel peab N vÀÀrtust kinnitama, see tĂ€hendab nĂ€gema kvoorumit sĂ”lmedest, mis selle aktsepteerivad. Kui ta jĂ”uab selleni, tĂ”estab tehniline dokument SCP (teoreem 11), et ĂŒlejÀÀnud vĂ”rgu osa kinnitab samuti sama vÀÀrtust, seega lĂ”petab N föderatiivse hÀÀletamise kindla vÀÀrtuse tulemusega.

Uurime Stellar konsensusprotokolli
Föderatiivne hÀÀletamine.

HÀÀletamise, aktsepteerimise ja kinnitamise protsess moodustab ĂŒhe tĂ€ispika föderatiivse hÀÀletamise ringi. Stellar konsensusprotokoll kogub palju selliseid ringe, et luua tĂ€iskonsensuslik sĂŒsteem.

Stellar konsensusprotokoll

Kaks kĂ”ige olulisemat omadust konsensuslikust sĂŒsteemist on turvalisus ja elujĂ”ud. Konsensusalgotitm on "turvaline", kui see ei saa kunagi anda erinevaid tulemusi erinevatele osalejatele (Bob'i ajalugu ei ole kunagi vastuolus Caroliga). "ElujĂ”ud" tĂ€hendab, et algoritm annab alati tulemuse, st ei jÀÀ kinni.

KĂ€esolev föderaalne hÀÀletamisprotseduur on turvaline selle tĂ€henduses, et kui sĂ”lm kinnitab vÀÀrtust V, ei tohi ĂŒkski teine sĂ”lm kinnitada teist vÀÀrtust. Kuid "mitte kinnitada teist vÀÀrtust" ei tĂ€henda, et see peab tingimata midagi kinnitama. Osalejad vĂ”ivad hÀÀletada nii paljude erinevate vÀÀrtuste ĂŒle, et ĂŒkski ei jĂ”ua vastuvĂ”tu kĂŒnniseni. See tĂ€hendab, et föderaalsetes hÀÀletustes puudub elujĂ”ud.

Stellar konsensusprotokoll kasutab föderatiivset hÀÀletamist, et tagada nii turvalisus kui ka elujĂ”ud. (SCP turvalisuse ja elujĂ”udluse garantiil on teoreetiline piir. Konstruktsioon valib vĂ€ga tugeva turvalisuse garanteerimise, ohverdades veidi elujĂ”udlust, kuid arvestades piisavat aega, saavutatakse kĂ”rge tĂ”enĂ€osusega konsensus.) Üldiselt seisneb idee selles, et korraldatakse mitmeid föderatiivseid hÀÀletusi mitmete vÀÀrtuste ĂŒle, kuni ĂŒks neist lĂ€bib tĂ€ielikult kĂ”ik SCP hÀÀletamisfaasid, nagu allpool kirjeldatud.

VÀÀrtused, mille ĂŒle SCP konsensusele pĂŒĂŒab, vĂ”ivad olla tehingute ajalugu, lĂ”unaeine tellimus vĂ”i midagi muud, kuid oluline on mĂ€rkida, et need ei ole vÀÀrtused, mis on vastu vĂ”etud vĂ”i kinnitatud. Selle asemel toimub föderatiivne hÀÀletamine nende vÀÀrtuste vĂ€idete ĂŒle.

Esimesed föderatiivse hÀÀletamise voorud toimuvad esitamisseerval (nomination phase), avalike selgituste kogumisel, mis on mÀÀratud vormingule «Ma esitan V», on vĂ”imalik paljude erinevate vÀÀrtuste V jaoks. Esitamise eesmĂ€rk on leida ĂŒks vĂ”i mitu selgitust, mis lĂ€hevad edasi vastuvĂ”tmise ja kinnitamise protsessi.

Kinnitatavate kandidaatide leidmisel liigub SCP hÀÀletamise etappi, kus eesmĂ€rk on leida teatud hÀÀletus (st ettepaneku vÀÀrtuse anum) ja kvoorum, mis suudab kuulutada kommitt selle jaoks (commit). Kui kvoorum teeb hÀÀletuse kommitti, vĂ”etakse selle vÀÀrtus konsensuse pĂ”hjal vastu. Kuid enne, kui sĂ”lm saab kommitti hÀÀletada, peab ta kĂ”igepealt kinnitama tĂŒhistuse kĂ”igi madalama arvu hÀÀletuste puhul. Need sammud — hÀÀletuste tĂŒhistamine, et leida see, mille jaoks saab kommitti kinnitada — hĂ”lmavad mitmeid ringe föderaalset hÀÀletamist mitmete hÀÀletuste deklaratsioonide ĂŒle.

JÀrgnevates osades kÀsitletakse lÀhemalt esitamise ja hÀÀletamise protsesse.

Esitamine

Etapi alguses vĂ”ib iga sĂ”lm spontaanselt valida vÀÀrtuse V ja hÀÀletada kinnituse ĂŒle, et "Ma esitan V". Selle etapi eesmĂ€rk on kinnitada mĂ”ne vÀÀrtuse esitamine föderatiivse hÀÀletamise kaudu.

VĂ”imalik, et piisav arv sĂ”lmi hÀÀletab piisavalt erinevate ettepanekute poolt ja ĂŒkski esitamine ei saavuta vastuvĂ”tu piiri. SeetĂ”ttu, peale oma nomineerimise hÀÀlte edastamise, "peegeldavad" sĂ”lmed oma vĂ”rgustiku nomineerimisi. Peegeldamine (echo) tĂ€hendab, et kui sĂ”lm hÀÀletab ettepaneku V poolt, aga nĂ€eb naabri sĂ”numit, kes hÀÀletab ettepaneku W poolt, hÀÀletab ta nĂŒĂŒd nii ettepaneku V kui ka W poolt. (KĂ”iki vĂ”rgustiku hÀÀlte peegeldusi ei saa hÀÀletamisel kajastada, kuna see vĂ”ib viia erinevate nominentide plahvatuseni. SCP sisaldab nende hÀÀlte reguleerimise mehhanismi. LĂŒhidalt öeldes, on olemas valem, et mÀÀrata „prioriteet” vĂ”rgu vaates, ja peegeldatakse ainult kĂ”rge prioriteediga sĂ”lmede hÀÀli. Mida kauem ettepanek kestab, seda madalam on piir, seega laiendab sĂ”lm seeria sĂ”lmi, kelle hÀÀli ta peegeldab. Prioriteedi valem sisaldab ĂŒhe sisendidena slotinumbrit, seega vĂ”ib kĂ”rge prioriteediga vĂ”rgu sĂ”lm ĂŒhe sloti jaoks olla madala prioriteediga teise jaoks ja vastupidi).

Kontseptuaalselt on samaaegne esitlemine nii V kui ka W eraldi föderatiivsed hÀÀled, millest igaĂŒks on vĂ”imeline jĂ”udma vastu vĂ”tmiseni vĂ”i heakskiitmiseni. Praktiliselt pakivad SCP protokolli sĂ”numid need eraldi hÀÀled kokku.

Kuigi hÀÀletamine V esitlemise poolt on lubadus mitte hÀÀletada V esitlemise vastu, mÀÀratleb rakenduse tasand — antud juhul SCP —, mida tĂ€hendab „vastu”. SCP ei nĂ€e vĂ€idet, mis on vastuolus hÀÀltega „Ma esitan X”, see tĂ€hendab, et ei ole sĂ”numit „Ma olen vastu X esitlemisele”, seega vĂ”ib sĂ”lm hÀÀletada ĂŒkskĂ”ik milliste vÀÀrtuste esitlemise poolt. Paljud neist kandidaatidest ei vii kuhugi, kuid lĂ”ppkokkuvĂ”ttes suudab sĂ”lm heaks kiita vĂ”i kinnitada ĂŒhe vĂ”i mitu vÀÀrtust. Kui kandidaat on kinnitatud, siis ta muutub kandidaadiks.

Uurime Stellar konsensusprotokolli
SCP esitlemine föderatiivse hÀÀletamisega. Ühtselt pingereas olevate sĂ”lmede poolt vĂ”ib olla palju vÀÀrtusi 'B', mis on esitatud ja 'peegelduvad' sĂ”lme.

Kandidaatide esitlemine vĂ”ib viia mitme kinnitatava kandidaadi tekkimiseni. SeetĂ”ttu nĂ”uab SCP, et rakendustase pakuks mingisugust meetodit kandidaatide ĂŒhtsesse andmesse ĂŒhendamiseks. komposiit (composite). Ühendamise meetod vĂ”ib olla ĂŒkskĂ”ik milline. Peaasi, et kui see meetod on mÀÀratletud, ĂŒhendab iga sĂ”lm samu kandidaate. Toitlustamise hÀÀletussĂŒsteemis vĂ”ib Â«ĂŒhendamine» tĂ€hendada lihtsalt ĂŒhe kandidaadi tagasilĂŒkkamist. (Aga mÀÀratletud viisil: iga sĂ”lm peab valima sama vÀÀrtuse lĂ€htestamiseks. NĂ€iteks varasema valiku pĂ”hjal tĂ€hestikulises jĂ€rjekorras). Stellar'i maksevĂ”rgus, kus toimub tehingute ajaloo hÀÀletamine, eeldab kahe esitatud kandidaadi ĂŒhendamine tehingute ĂŒhendamist, mida nad sisaldavad, ja nende kahe ajatempli viimast.

SCP-i tehniline kirjeldus tĂ”estab (teoreem 12), et esitlemise faasi lĂ”puks jĂ”uab vĂ”rk lĂ”puks ĂŒhte komposiiti. Kuid probleem on jĂ€rgmine: föderaalne hÀÀletamine on asĂŒnkrooniline protokoll (nagu ka SCP). TeisisĂ”nu, sĂ”lmed ei koordineeru ajaliselt, vaid ainult sĂ”numite kaudu, mida nad saadavad. SĂ”lme vaatenurgast pole selge, millal lĂ”ppes esitlemise faas. Ja kuigi kĂ”ik sĂ”lmed jĂ”uavad lĂ”puks samasse komposiiti, vĂ”ivad nad sellel teel valida erinevaid marsruute, luues erinevaid kandidaate, ja kunagi ei saa nad öelda, milline neist on lĂ”plik.

Aga see pole probleem. Esitlemine on vaid ettevalmistus. Peamine on piirata kandidaatide arvu konsensuse saavutamiseks, mis toimub hÀÀletamise (hÀÀletamine).

HÀÀletamine

BĂŒletten on paar , kus counter on tĂ€isarv, mis algab numbrist 1, ja value on esitatud kandidaat. See vĂ”ib olla node'i oma kandidaat vĂ”i naabernode'i kandidaat, mille see node on vastu vĂ”tnud. Üldiselt, kui hÀÀletatakse, on eesmĂ€rgiks ĂŒritada korduvalt saavutada ĂŒksmeelt vĂ”rgu poolt mingi kandidaadi ĂŒle teatud bĂŒletis kaudu, vĂ”imaldades potentsiaalselt mitmeid föderaalseid hÀÀletusi bĂŒletise avalduste ĂŒle. BĂŒlettenites olevad loendurid jĂ€lgivad tehtud katseid, ja suurema loenduriga bĂŒletendid on eelistatud vĂ€iksema loenduriga bĂŒletistest. Kui bĂŒletten jÀÀb seisma, algab uus hÀÀletus, nĂŒĂŒd bĂŒletisel .

Oluline on eristada vÀÀrtusi (nĂ€iteks mis peaks olema lĂ”unasöögi tellimus: pitsat vĂ”i salateid), bĂŒlette (paar counter-value) ja bĂŒlette avaldusi. SCP voor hĂ”lmab mitmeid voorusid föderaalsest hÀÀletamisest, sealhulgas jĂ€rgmiste avalduste osas: bĂŒlletÀÀnidest. SCP voor sisaldab mitmeid voorude föderaalse hÀÀletamise ringe, mille kĂ€igus arutatakse jĂ€rgmisi avaldusi:

  • „Olen valmis bĂŒletise B komiteeks“ ja
  • „Ma kuulutan vĂ€lja bĂŒletise B komitee“

Selle sĂ”lme vaatenurgast saavutatakse konsensus, kui see leiab B-bĂŒletĂ€i, mille jaoks suudetakse kinnitada (st leida kvoot, mis aktsepteerib) avaldust „Ma kuulutan vĂ€lja B-bĂŒleti komitee“. Sellest hetkest alates saab ohutult tegutseda, tuginedes B-s mĂ€rgitud tĂ€hendusele — nĂ€iteks esitada selle lĂ”unasöögi tellimuse. Seda nimetatakse eksternaliseerimiseks tĂ€henduseks. Kui bĂŒletslĂ€te on kinnitatud, vĂ”ib sĂ”lm olla kindel, et mis tahes muu sĂ”lm on sama tĂ€henduse eksternaliseerinud vĂ”i kindlasti teeb seda tulevikus.

Kuigi kontseptuaalselt toimub paljusid föderaalseid hÀÀletusi erinevate bĂŒlettide avalduste osas, vahetatakse neid siiski mitte vĂ€ga suure hulga sĂ”numite kaudu, sest iga sĂ”num kapseldab hulga bĂŒlette. Üks sĂ”num edendab seega samaaegselt paljusid föderaalseid hÀÀletusi, nĂ€iteks: „Ma aktsepteerin bĂŒlettide komiteed vahemikus kuni “.

Mida tĂ€hendavad terminid „valmistatud“ (prepared) ja „komitee“ (commit)?

SĂ”lm hÀÀletab valimisnimekirja kinnitamise poolt, kui ta on veendunud, et teised sĂ”lmed ei tee valimisnimekirja kinnitamisega teisi vÀÀrtusi. Selle veendumise saavutamine on avalduse ettevalmistamise eesmĂ€rk. HÀÀletamine, kus öeldakse: "Olen valmis kinnitama valimisnimekirja B", on lubadus mitte kunagi kinnitada valimisnimekirja vĂ€iksemas osas kui B, st vĂ€iksema loenduri kohaselt (SCP nĂ”uab, et valimisnimekirjades oleksid vÀÀrtused kindlas jĂ€rjekorras. Niisiis, valimisnimekiri on vĂ€iksem kui , kui N1<N2, ja samuti kui N1=N2 ja V1<V2). Need vĂ€iksemad valimisnimekirjad „tĂŒhistatakse” (aborted) ettevalmistava hÀÀletamise kĂ€igus, samal ajal kui B loetakse „valmis” seremooniad.

Miks tĂ€hendab „Olen valmis kinnitama valimisnimekirja B” „Lubadus mitte kunagi lubada valimisnimekirju, mis on vĂ€iksemad kui B”? SellepĂ€rast, et SCP mÀÀratleb tĂŒhistamise vastandina kinnitamisele. Valimisnimekirja ettevalmistamisel tĂ€hendab hÀÀletamine ka teiste valimisnimekirjade tĂŒhistamise hÀÀletamist ja nagu me varem arutasime, on hÀÀletamine millegi poolt lubadus mitte kunagi hÀÀletada selle vastu.

Enne kui sĂ”num vĂ€ljastatakse, peab sĂ”lm esmalt leidma hÀÀletuse, mille ta vĂ”ib kinnitada kui koostatud. TeisisĂ”nu, ta viib lĂ€bi föderatiivse hÀÀletuse teema "Olen valmis hÀÀletama B hÀÀletuse ĂŒle", mis vĂ”ib kehtida paljude erinevate hÀÀletuste kohta, kuni ta leiab selle, mis saavutab kvoorumi.

Kust tulevad hÀÀletused hÀÀletamiseks? Esmalt edastab sĂ”lm ettevalmistuse hÀÀletuseks <1,C>, kus C on kandidaat-komposiit, mis luuakse kandidaatide esitamise etapis. Kuid isegi pĂ€rast hÀÀletamise ettevalmistamise algust vĂ”ivad kandidaadid, kes on ĂŒles seatud, tuua esile uusi kandidaate, mis muutuvad valikute hÀÀletusteks. Samal ajal vĂ”ivad osalistel olla erinevad kandidaadid ning nad vĂ”ivad moodustada blokimeeriva hulga, mis aktsepteerib "Olen valmis hÀÀletama B2 hÀÀletuse ĂŒle", veenides sĂ”lme seda samuti aktsepteerima. LĂ”puks on olemas ajamisseade, mis genereerib uusi föderatiivse hÀÀletuse vooru kĂ”rgemate loenduritega, kui praegused hÀÀletused on kinni jÀÀnud.

Kui sĂ”lm leiab B-bĂŒlletÀÀni, mida saab kinnitada kui ettevalmistatud, edastab ta uue sĂ”numi "B bĂŒlletÀÀni kinnitamine". See hÀÀlteandmise protsess ĂŒtleb piramidele, et sĂ”lm ei loobu kunagi B-st. Tegelikult, kui B on bĂŒlletÀÀn , siis "B bĂŒlletÀÀni kinnitamine " tĂ€hendab tingimusteta nĂ”usolekut hÀÀletada iga bĂŒlletÀÀni eest kuni . See lisamine aitab teistel sĂ”lmedel piramidele kinnitada, kui nad on endiselt protokollis varasematel etappidel.

Sellel etapil on oluline rĂ”hutada, et tegu on asĂŒnkroonsete protokollidega. Ainult seetĂ”ttu, et ĂŒks sĂ”lm saadab hÀÀlte kinnitamiseks, ei tĂ€henda see, et tema eakaaslased teevad sama. MĂ”ned neist vĂ”ivad ikka veel hÀÀletada ettepanekute kinnitamiseks, teised vĂ”ivad juba vÀÀrtuse eksternaliseerida. SCP selgitab, kuidas sĂ”lm peaks iga tĂŒĂŒpi peer-to-peer sĂ”numit sĂ”ltumata selle faasist kĂ€sitlema.

Kui teade "Ma kuulutan vĂ€lja komitee <N,C>" ei saa olla aktsepteeritud ega kinnitatud, siis on tĂ”enĂ€osus, et teade <N+1,C> vĂ”i <N+2,C> — vĂ”i igal juhul mĂ”ni teade vÀÀrtusega C, mitte miski muu, kuna sĂ”lm on juba lubanud kunagi mitte tĂŒhistada <N,C>. kui sĂ”lm edastab hÀÀli komiteele, siis on see C vĂ”i mitte midagi, sĂ”ltuvalt sellest, kui kaugele konsensus lĂ€heb. Kuid selleks ei ole sĂ”lmele veel piisavalt, et vĂ€ljastada C. MĂ”ned bĂŒtsantsi peod (mis on vĂ€hem kui kvoorum, tuginedes meie turvalisuse oletustele) vĂ”ivad sĂ”lmele vale anda. Teatud teate (vĂ”i teate vahemiku) vastuvĂ”tmine ja seejĂ€rel kinnitamine on see, mis annab sĂ”lmele lĂ”puks kindluse, et vĂ€ljastada C.

Uurime Stellar konsensusprotokolli
SCP hÀÀletamine föderatiivse hÀÀletamise kaudu. Ei nÀidata: igal hetkel vÔib töösse minna taimer, suurendades hÀÀletuse arvestit (ja vÔib-olla luua uusi komposiitkandidaate).

Ja see ongi kÔik! Niipea kui vÔrgu konsensus saavutatakse, on see valmis seda uuesti ja uuesti tegema. Stellar'i maksevÔrgus juhtub see umbes iga 5 sekundi jÀrel: saavutus, mis nÔuab nii turvalisust kui ka vastupidavust, mida garanteerib SCP.

SCP saavutab selle, tuginedes mitmele voorule föderatiivsetest hÀÀletustest. Föderatiivne hÀÀletus on vĂ”imalik tĂ€nu kvora lĂ”ike mĂ”istele: rikkaid, vĂ”rdselt usaldatavaid sĂ”lmed, millele iga sĂ”lm otsustas toetuda oma (subjektiivse) kvora osana. See konfiguratsioon tĂ€hendab, et konsensuseni on vĂ”imalik jĂ”uda isegi avatud liikmelisuse ja bĂŒtsantsi petetega vĂ”rgu keskkonnas.

Edasi lugemine

  • SCP algne tehniline dokument on saadaval siit, ja siin rakendamise projektispetsiifikatsioonides.
  • Protokolli SCP originaalautor David Mazier selgitab seda lihtsustatult (kuid siiski tehniliselt) siit.
  • VĂ”ib-olla olite ĂŒllatunud, et ei leidnud artiklis termineid „kaevandamine” vĂ”i „töö tĂ”end”. SCP ei kasuta neid meetodeid, kuid mĂ”ned teised konsensuse algoritmid kasutavad. Zane Witherspoon on kirjutanud saadaval koondĂŒlevaate konsensusalgoritmidest.
  • Samm-sammult kirjeldus lihtne vĂ”rgu, mis saavutab konsensuse ĂŒhe tĂ€ieliku SCP-ringiga.
  • Lugejatele, keda huvitavad SCP-lahendused: vt. C++ kood, mida Stellari maksevĂ”rk kasutab, vĂ”i Go kood, mille ma kirjutasin SCP parema mĂ”istmise jaoks.

Allikas: habr.com

Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster