{"id":30047,"date":"2019-10-31T21:33:25","date_gmt":"2019-10-31T18:33:25","guid":{"rendered":"https:\/\/prohoster.info\/blog\/razbiraemsya-v-protokole-konsensusa-stellar\/"},"modified":"2019-10-31T21:33:25","modified_gmt":"2019-10-31T18:33:25","slug":"razbiraemsya-v-protokole-konsensusa-stellar","status":"publish","type":"post","link":"https:\/\/prohoster.info\/et\/blog\/razbiraemsya-v-protokole-konsensusa-stellar","title":{"rendered":"Uurime Stellar'i konsensusprotokolli","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Uurime Stellar&#039;i konsensusprotokolli\" src=\"\/wp-content\/uploads\/2019\/03\/09b61160286ae40c21269e1590fc2b92.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nStellar'i konsensusprotokoll kirjeldati esmakordselt <noindex><a rel=\"nofollow\" href=\"https:\/\/www.stellar.org\/papers\/stellar-consensus-protocol.pdf\">teadusartiklis<\/a><\/noindex> David Mazier'i poolt 2015. aastal. See on \"f\u00f6deratiivne b\u00fctsantsi konsensus\", mis v\u00f5imaldab detsentraliseeritud arvutusv\u00f5rkudel ilma liidriteta t\u00f5husalt j\u00f5uda konsensuseni mis tahes otsuse osas. Stellar'i maksev\u00f5rk kasutab Stellar Consensus Protocol (SCP) koosseisuliste tehingute ajaloos, mida k\u00f5ik osalised n\u00e4evad.<\/p>\n<p>Peetakse, et konsensusprotokollid on keerulised arusaamiseks. SCP on lihtsam kui enamik neist, kuid jagab siiski seda mainet \u2013 osaliselt vale arusaama t\u00f5ttu, et \"f\u00f6deratiivne h\u00e4\u00e4letamine\", millele teadusartikli esimene pool keskendub, on SCP. Kuid see pole t\u00f5si! See on vaid oluline ehituskivi, mida teises osas artiklit kasutatakse Stellar'i konsensusprotokolli loomisel. <i>reaalne<\/i> Stellar'i konsensusprotokoll.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nSelles artiklis anname l\u00fchikese \u00fclevaate sellest, mis on \"kokkuleppete s\u00fcsteem\", mis v\u00f5ib muuta selle \"b\u00fctsantsi\" ja miks muuta b\u00fctsantsi s\u00fcsteem \"f\u00f6deratiivseks\". Seej\u00e4rel selgitame f\u00f6deratiivset h\u00e4\u00e4letusprotsessi, mis on kirjeldatud SCP artiklis, ja l\u00f5puks selgitame SCP protokolli ennast.<\/p>\n<h1>Kokkuleppete s\u00fcsteemid<\/h1>\n<p>\nKokkuleppete s\u00fcsteem v\u00f5imaldab grupil osaleda konsensusel mingis k\u00fcsimuses, n\u00e4iteks selle \u00fcle, mida l\u00f5unaks tellida.<\/p>\n<p>Meie ettev\u00f5ttes Interstellar oleme rakendanud oma l\u00f5unas\u00f6\u00f6gi kokkuleppete s\u00fcsteemi: tellime seda, mida \u00fctleb meie operatsioonijuht John. See on lihtne ja t\u00f5hus kokkuleppete s\u00fcsteem. Me k\u00f5ik usaldame Johni ja usume, et ta igal p\u00e4eval leiab midagi huvitavat ja toitvat.<\/p>\n<p>Aga mis siis, kui John v\u00e4\u00e4rkasutab meie usaldust? Ta v\u00f5ib \u00fcksi otsustada, et meil k\u00f5igil peaks olema vegan dieedile. N\u00e4dala v\u00f5i kahe p\u00e4rast t\u00f5en\u00e4oliselt kukutame ta ja anname volitused Elizabethile. Kuid \u00e4kki talle meeldivad avokaadod an\u0161oovistega ja ta arvab, et k\u00f5ik peaksid olema sellised. V\u00f5im rikub. Seet\u00f5ttu on parem leida m\u00f5ni demokraatlikum meetod: mingi viis, et tagada erinevate eelistuste arvestamine, samas tagades \u00f5igeaegne ja \u00fchem\u00f5tteline tulemus, et ei juhtuks, et keegi ei telli l\u00f5unat v\u00f5i viis inimest esitavad erinevaid tellimusi v\u00f5i arutelu venib \u00f5htuni.<\/p>\n<p>Tundub, et lahendus on lihtne: korraldada h\u00e4\u00e4letus! Kuid see on petlik mulje. Kes hakkab h\u00e4\u00e4li koguma ja tulemusi teatama? Ja miks peaksid teised uskuma seda, mida ta \u00fctleb? V\u00f5ib-olla saame <i>esiteks<\/i> h\u00e4\u00e4letada liidri poolt, kellele usaldame h\u00e4\u00e4letamise juhtimise - aga kes juhib seda <i>esimest<\/i> h\u00e4\u00e4letust? Mis juhtub, kui me ei leia liidrit? V\u00f5i kui leppime kokku, aga see liider j\u00e4\u00e4b koosolekule v\u00f5i j\u00e4\u00e4b haigeks?<\/p>\n<p>Sarnased probleemid esinevad jaotatud arvutiv\u00f5rkudes. K\u00f5ik osalised v\u00f5i s\u00f5lmed peavad kokku leppima mingisuguses lahenduses, n\u00e4iteks kelle kord on \u00fchist faili uuendada v\u00f5i v\u00f5tta \u00fclesanne t\u00f6\u00f6tlemise j\u00e4rjekorrast. Kr\u00fcptovaluuta v\u00f5rgus peavad s\u00f5lmed korduvalt valima, milline tundub t\u00e4iuslik ajalugu, erinevate v\u00f5imalike versioonide hulgast, mis m\u00f5nikord konfliktivad. See v\u00f5rguleping tagab vastuv\u00f5tjale, et m\u00fcnt on (a) kehtiv (mitte vale) ja (b) pole veel kuskil mujal kasutatud. See tagab ka, et ta saab m\u00f5nes tulevikus m\u00fcnti kasutada, kuna uuel vastuv\u00f5tjal on samad garantiid samadel p\u00f5hjustel.<\/p>\n<p>Igap\u00e4evane konsensusv\u00f5ime jaotatud arvutiv\u00f5rgus peab olema rikkevastupidine: see peab andma j\u00e4rjepidevaid tulemusi, hoolimata vigadest, nagu aeglased sidekanalid, mitte reageerivad s\u00f5lmed ja vale s\u00f5numite j\u00e4rjekord. <i>B\u00fctsantsi<\/i> konsensus s\u00fcsteem on t\u00e4iendavalt vastupidav 'b\u00fctsantsi' vigadele: s\u00f5lmed, mis annavad vale teavet, olgu see siis vea t\u00f5ttu v\u00f5i tahtlikul katsel s\u00fcsteemi kahjustada v\u00f5i mingit eelist saada. 'B\u00fctsantsi' t\u00f5rkedetaolek - v\u00f5ime usaldada grupi otsust, isegi kui m\u00f5ned grupi liikmed v\u00f5ivad valetada v\u00f5i muul viisil reegleid rikkuda - on saanud nime <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%97%D0%B0%D0%B4%D0%B0%D1%87%D0%B0_%D0%B2%D0%B8%D0%B7%D0%B0%D0%BD%D1%82%D0%B8%D0%B9%D1%81%D0%BA%D0%B8%D1%85_%D0%B3%D0%B5%D0%BD%D0%B5%D1%80%D0%B0%D0%BB%D0%BE%D0%B2\">B\u00fctsantsi imperaatorite kindralite jutustusest<\/a><\/noindex>, kes \u00fcritasid r\u00fcnnakut koordineerida. <noindex><a rel=\"nofollow\" href=\"https:\/\/medium.com\/coinmonks\/a-note-from-anthony-if-you-havent-already-please-read-the-article-gaining-clarity-on-key-787989107969\">Hea kirjeldus<\/a><\/noindex> on Anthony Stevenilt.<\/p>\n<p>Kujutame ette kr\u00fcptom\u00fcndi omanikku Alice'it, kes peab valima Bobilt maitsva j\u00e4\u00e4tise ostmise ja Carolile v\u00f5la tasumise vahel. V\u00f5ib-olla tahab Alice m\u00f5lemale korraga maksta, petturlikult kulutades sama m\u00fcnti. Selleks peab ta veenma Bobi arvutit, et m\u00fcnt ei ole kunagi Carolile makstud, ning veenma Caroli arvutit, et m\u00fcnt ei ole kunagi Bobile makstud. Bytsantsi kokkuleppe s\u00fcsteem muudab selle tegelikult v\u00f5imatuks, rakendades enamusreegel, mida nimetatakse <i>kvorumiks<\/i>. Selles jaringanis keeldub s\u00f5lm sellest, et liikuda kindla ajalooversiooni suunas, kuni nad ei n\u00e4e, et piisavalt palju v\u00f5rdsete liikmete s\u00f5lmi \u2014 kvorum \u2014 on sellise muutuse suhtes n\u00f5us. Kui see juhtub, moodustavad nad piisavalt suure valijabloki, et sundida \u00fclej\u00e4\u00e4nud v\u00f5rgu s\u00f5lmi nende otsusega n\u00f5ustuma. Alice v\u00f5ib sundida m\u00f5nda s\u00f5lme valetama tema nimel, kuid kui v\u00f5rk on piisavalt suur, siis tema katse purustatakse ausate s\u00f5lmede h\u00e4\u00e4ltega.<\/p>\n<p>Kui palju s\u00f5lmi on vajalik kvorumi saavutamiseks? V\u00e4hemalt enamus, t\u00e4psemalt kvalifitseeritud enamus kahjustuste ja pettuste vastu v\u00f5itlemiseks. Kuid enama arvutamiseks on vajalik teada osalejate koguarv. Interstellar kontoris v\u00f5i ringh\u00e4\u00e4letustel on need numbrid kergesti teada. Kuid kui teie r\u00fchm on halvasti m\u00e4\u00e4ratletud v\u00f5rk, kuhu s\u00f5lmed v\u00f5ivad vabalt siseneda ja lahkuda ilma keskusega koosk\u00f5lastamata, siis on vajalik <i>federatiivne<\/i> bytsantsi leppimise s\u00fcsteem, mis suudab kvorumeid m\u00e4\u00e4rata mitte eelnevalt m\u00e4\u00e4ratletud s\u00f5lmede loendist, vaid d\u00fcnaamiliselt, pidevalt muutuva ja paratamatult mittet\u00e4ieliku s\u00f5lmede hetkeseisust.<\/p>\n<p>V\u00f5ib tunduda v\u00f5imatu luua kvorum \u00fcksiku s\u00f5lme vaatepunktist ulatuslikus v\u00f5rgus, kuid see on v\u00f5imalik. Selline kvorum v\u00f5ib isegi tagada detsentraliseeritud h\u00e4\u00e4letamise tulemusi. Tehniline dokument SCP n\u00e4itab, kuidas seda teha protseduuri kaudu, mida nimetatakse <i>federatiivseks h\u00e4\u00e4letamiseks<\/i>.<\/p>\n<h1>Patsientide jaoks<\/h1>\n<p>\nArtiklis on \u00fcksikasjalikumalt k\u00e4sitletud federatiivset h\u00e4\u00e4letamist ja Stellar konsensuse protokolli. Kui te ei ole huvitatud detailidest, siis siin on protsessi \u00fcldine \u00fclevaade.<\/p>\n<ol>\n<li>S\u00f5lm teostab f\u00f6deraalse h\u00e4\u00e4letamise voorusid \u00abnomineeritud\u00bb \u00fcle. F\u00f6deraalne h\u00e4\u00e4letamine t\u00e4hendab:\n<ul>\n<li>S\u00f5lm h\u00e4\u00e4letab mingi ettepaneku poolt, n\u00e4iteks \u00abMa pakun v\u00e4lja V v\u00e4\u00e4rtuse\u00bb;\n<\/li>\n<li>S\u00f5lm kuulab h\u00e4\u00e4li, kuni leiab sellise, mis suudab \u00abvastu v\u00f5tta\u00bb;\n<\/li>\n<li>S\u00f5lm otsib selle ettepaneku jaoks \u00abkvoraumi\u00bb. Kvoraum \u00abkinnitab\u00bb kandidaati.<\/li>\n<\/ul>\n<\/li>\n<li>Kui s\u00f5lm suudab kinnitada \u00fcht v\u00f5i mitut kandidaati, proovib ta \u00abvalimisse\u00bb viia l\u00e4bi mitu vooru f\u00f6deraalsest h\u00e4\u00e4letamisest.\n<\/li>\n<li>Kui s\u00f5lm suudab kontrollida valimise valmidust, proovib ta seda kinnitada veelgi rohkemate f\u00f6deraalse h\u00e4\u00e4letamise voorude abil.\n<\/li>\n<li>Kui s\u00f5lm suudab kinnitada valimise kommitti, saab ta \u00abeksternaliseerida\u00bb selle h\u00e4\u00e4letuse v\u00e4\u00e4rtuse, kasutades seda konsensuse tulemuseks.<\/li>\n<\/ol>\n<p>\nNeed sammud h\u00f5lmavad mitmeid f\u00f6deraalse h\u00e4\u00e4letamise voorusid, mis tervikuna moodustavad \u00fche SCP vooru. Uurime l\u00e4hemalt, mis toimub igal sammul.<\/p>\n<h1>F\u00f6deraalne h\u00e4\u00e4letamine<\/h1>\n<p>\nF\u00f6deraalne h\u00e4\u00e4letamine on protseduur, millega m\u00e4\u00e4ratakse, kas v\u00f5rk suudab kokku leppida ettepanekus. H\u00e4\u00e4letamisvoorus peab iga s\u00f5lm valima \u00fche potentsiaalselt paljusid v\u00e4\u00e4rtusi. Ta ei saa seda teha, kuni ei ole kindel, et teised v\u00f5rgu s\u00f5lmed ei vali teistsugust tulemust. Selle kinnitamiseks vahetavad s\u00f5lmed eemal ja tagasi hulk s\u00f5numeid, et iga\u00fcks <i>kinnitaks<\/i>, et <i>kvoraum<\/i> s\u00f5lmed <i>vastuv\u00f5tavad<\/i> sama <i>otsuse<\/i>. Selle jaotise \u00fclej\u00e4\u00e4nud osa selgitab selles lauses esinevaid m\u00f5isteid ja kuidas kogu protseduur toimub.<\/p>\n<h1>Kvoraumid ja kvoraumi l\u00f5igud<\/h1>\n<p>\nAlustame kvoraumi m\u00e4\u00e4ratlemisest. Nagu me eespool arutasime, ei ole detsentraliseeritud v\u00f5rgus, millel on d\u00fcnaamiline liikmelisus, v\u00f5imalik ette teada s\u00f5lmede arvu ja seega, kui palju on vajalik enamuse jaoks. F\u00f6deraalne h\u00e4\u00e4letamine lahendab selle probleemi, esitades uue idee <i>kvoraumi l\u00f5ik (quorum slice): v\u00e4ike r\u00fchm v\u00f5rdv\u00e4\u00e4rseid s\u00f5lmi, kellele s\u00f5lm usaldab teabe edastamise h\u00e4\u00e4letamise seisundi kohta \u00fclej\u00e4\u00e4nud v\u00f5rgus. Iga s\u00f5lm m\u00e4\u00e4ratleb oma kvoraumi l\u00f5igu (mille liikmeks ta tegelikult saab).<\/i> (quorum slice): v\u00e4ike r\u00fchm v\u00f5rdsest s\u00f5lmedest, kellele s\u00f5lm usaldab teabe edastamise h\u00e4\u00e4lte oleku kohta \u00fclej\u00e4\u00e4nud v\u00f5rgustikule. Iga s\u00f5lm m\u00e4\u00e4ratleb oma kvorumi l\u00f5ike (mille liikmeks ta tegelikult saab).<\/p>\n<p>Kvorumi kujundamine algab kvorumi l\u00f5ikest. Iga s\u00f5lm lisab oma l\u00f5ike s\u00f5lmed. Seej\u00e4rel lisatakse l\u00f5ikede liikmed. <i>nende s\u00f5lmede<\/i> ja nii edasi. Protsessi j\u00e4tkudes satub j\u00e4rjest rohkem s\u00f5lmi, mida te ei saa lisada, kuna nad on juba l\u00f5ikes. Kui uusi s\u00f5lmi lisamiseks enam ei ole, katkeb protsess: oleme kujundanud kvorumi algsest s\u00f5lmest 'transitiivne sulgemine' (transitive closure) kvorumi l\u00f5ike kaudu.<\/p>\n<p><img decoding=\"async\" alt=\"Uurime Stellar&#039;i konsensusprotokolli\" src=\"\/wp-content\/uploads\/2019\/03\/6991e3f9a22d920e4a5e9c161f32dee1.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Kuidas leida kvorum antud s\u00f5lmest\u2026<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Uurime Stellar&#039;i konsensusprotokolli\" src=\"\/wp-content\/uploads\/2019\/03\/52b3d435a8f4a67b56deb43c83fee828.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>\u2026 lisame tema l\u00f5ike liikmed\u2026<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Uurime Stellar&#039;i konsensusprotokolli\" src=\"\/wp-content\/uploads\/2019\/03\/0820e9ca560caf9ebfa92db8e7a1da85.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>\u2026 seej\u00e4rel lisame nende s\u00f5lmede l\u00f5ikede liikmed.<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Uurime Stellar&#039;i konsensusprotokolli\" src=\"\/wp-content\/uploads\/2019\/03\/539933eb3c279fa7da68fc9049516fc8.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>J\u00e4tkame, kuni ei j\u00e4\u00e4 enam s\u00f5lmi lisamiseks.<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Uurime Stellar&#039;i konsensusprotokolli\" src=\"\/wp-content\/uploads\/2019\/03\/48058639262412514641063a10503a01.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<img decoding=\"async\" alt=\"Uurime Stellar&#039;i konsensusprotokolli\" src=\"\/wp-content\/uploads\/2019\/03\/d068fb06f35337ae68c35b4606f329ae.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>S\u00f5lmi lisamiseks ei ole. See on kvorum.<\/i><\/p>\n<p>Tegelikult v\u00f5ib iga s\u00f5lm kuuluda rohkem kui \u00fchte l\u00f5ikesse. Kvorumi kujundamiseks valige ainult \u00fcks l\u00f5ige ja lisage liikmed; seej\u00e4rel valige iga liikme jaoks \u00fcksk\u00f5ik milline l\u00f5ige ja lisage liikmed. <i>selle<\/i> l\u00f5ike jne. See t\u00e4hendab, et iga s\u00f5lm on osa paljusid v\u00f5imalikke kvorumeid.<\/p>\n<p><img decoding=\"async\" alt=\"Uurime Stellar&#039;i konsensusprotokolli\" src=\"\/wp-content\/uploads\/2019\/03\/3427406c132cfd1cd174b856a1239908.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Valige igal sammul ainult \u00fcks kvorumi l\u00f5ike.<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Uurime Stellar&#039;i konsensusprotokolli\" src=\"\/wp-content\/uploads\/2019\/03\/79a8728890ecb36b2e127b1b76c44fc8.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<img decoding=\"async\" alt=\"Uurime Stellar&#039;i konsensusprotokolli\" src=\"\/wp-content\/uploads\/2019\/03\/22fe0422c73cdf5fb5416e389934c5c3.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<img decoding=\"async\" alt=\"Uurime Stellar&#039;i konsensusprotokolli\" src=\"\/wp-content\/uploads\/2019\/03\/60379efdde3b88fb9c86de6c5b4a0b62.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>\u00dcks v\u00f5imalik kvorum. V\u00f5i alternatiivne variant\u2026<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Uurime Stellar&#039;i konsensusprotokolli\" src=\"\/wp-content\/uploads\/2019\/03\/341f1e897be1474ee2d67324da2134b1.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>\u2026 valime teised l\u00f5iked\u2026<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Uurime Stellar&#039;i konsensusprotokolli\" src=\"\/wp-content\/uploads\/2019\/03\/8a6d605050b075bf935e6151bd1cbe2c.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<img decoding=\"async\" alt=\"Uurime Stellar&#039;i konsensusprotokolli\" src=\"\/wp-content\/uploads\/2019\/03\/865567aa370605b7cf10da3457c3d158.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>...(kui see on v\u00f5imalik)...<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Uurime Stellar&#039;i konsensusprotokolli\" src=\"\/wp-content\/uploads\/2019\/03\/6343f774104454d62e7c8681bf25dbcb.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>\u2026 loob teise kvorumi.<\/i><\/p>\n<p>Kuidas s\u00f5lm saab teada, millistes l\u00f5ikedes teised s\u00f5lmed on? Samamoodi nagu muud teavet teiste s\u00f5lmede kohta: edastustest, mida iga s\u00f5lm edastab v\u00f5rgus, kui tema h\u00e4\u00e4lteenindus muutub. Iga edastus sisaldab teavet saatva s\u00f5lme l\u00f5ikede kohta. Tehnilises dokumendis SCP ei ole m\u00e4\u00e4ratud suhtlemismehhanismi. Tavalised rakendused kasutavad tavaliselt <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Gossip_protocol\">Gossip-protokolli<\/a><\/noindex> teadete usaldusv\u00e4\u00e4rseks edastamiseks kogu v\u00f5rgus.<\/p>\n<p>Tulet meelde, et mittefederatiivses B\u00fctsantsi konsensus-s\u00fcsteemis m\u00e4\u00e4ratakse kvoorum k\u00f5ikide s\u00f5lmede enamuse j\u00e4rgi. B\u00fctsantsi konsensus-s\u00fcsteem on v\u00e4lja t\u00f6\u00f6tatud k\u00fcsimuse osas: kui palju ebaausaid s\u00f5lmi suudab s\u00fcsteem taluda? N s\u00f5lmest koosnevas s\u00fcsteemis, mis on projekteeritud taluma f riket (petmist), peab s\u00f5lm olema suuteline saavutama edusamme, saades vastuse N\u2212f peerilt, kuna f neist ei pruugi funktsioneerida. Kuid kui saadakse vastus N\u2212f peerilt, v\u00f5ib eeldada, et k\u00f5ik f peerid (kellest s\u00f5lm vastust ei saanud) on tegelikult ausad. Seega on pahatahtlikud f N\u2212f peerist (kellest vastus on saadud). Selleks, et s\u00f5lmed j\u00f5uaksid \u00fche konsensuse, peab aus olema enamus \u00fclej\u00e4\u00e4nud s\u00f5lmedest, st meil on vaja, et N\u2212f oleks suurem kui 2f v\u00f5i N &gt; 3f. Seega on tavaliselt s\u00fcsteem, mis on kavandatud taluma f riket, kokku N=3f+1 s\u00f5lme ja kvoorumi suurus 2f+1. Kui ettepanek \u00fcletab kvoorumi l\u00e4ve, on \u00fclej\u00e4\u00e4nud v\u00f5rgu liikmed veendunud, et k\u00f5ik konkurentsiv\u00f5imelised ettepanekud eba\u00f5nnestuvad. Nii et v\u00f5rk j\u00f5uab tulemuseni.<\/p>\n<p>Kuid federatiivses B\u00fctsantsi konsensus-s\u00fcsteemis ei saa mitte ainult olla enamus (kuna keegi ei tea v\u00f5rgu \u00fcldsuuret), vaid enesestm\u00f5istetav enamus kontseptsioon on t\u00e4iesti kasutu! Kui s\u00fcsteemis on liikmelisus avatud, v\u00f5ib keegi saavutada enamus, l\u00e4bides nii \u00f6elda Sivilia r\u00fcnnaku: korduvalt liitudes v\u00f5rku l\u00e4bi mitme s\u00f5lme. Nii et miks v\u00f5ib transitiivne sulgemine l\u00f5iget nimetada <i>kvorumiks<\/i>, ja kuidas see suudab summutada konkurentsiv\u00f5imelisi ettepanekuid?<\/p>\n<p>Tehniliselt, mitte kuidagi! Kujutage ette kuue s\u00f5lmega v\u00f5rku, kus kaks kolmikest on teineteise kvoorumi l\u00f5igetes isoleeritud. Esimene alagrupp v\u00f5ib teha otsuse, millest teine kunagi ei kuule, ja vastupidi. Selle v\u00f5rgu jaoks ei ole v\u00f5imalik konsensusele j\u00f5uda (kui mitte juhuslikult).<\/p>\n<p>Seet\u00f5ttu n\u00f5uab SCP, et federatiivse h\u00e4\u00e4letamise puhul (ja oluliste teoreemide rakendamiseks) peaks v\u00f5rgus olema omadus, mida nimetatakse <i>kvoorumite \u00fchiseks olemiseks<\/i>. V\u00f5rgus, millel on see omadus, kattuvad alati v\u00e4hemalt \u00fches s\u00f5lmes igasugused kaks kvoorumi, mida saab koostada. \u00dclevaatlikult t\u00e4hendab see, et kui m\u00f5ni kvoorum n\u00f5ustub v\u00e4itega X, ei saa \u00fckski teine kvoorum kunagi n\u00f5ustuda millegi muuga, kuna see peab kindlasti sisaldama m\u00f5nda s\u00f5lme esimesest kvoorumist, mis on juba h\u00e4\u00e4letanud X poolt.<\/p>\n<p><img decoding=\"async\" alt=\"Uurime Stellar&#039;i konsensusprotokolli\" src=\"\/wp-content\/uploads\/2019\/03\/5b0aeec99e285b4bbeb92ec5b8dfe69d.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Kui v\u00f5rgus on kvoorumite \u00fchisosa\u2026<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Uurime Stellar&#039;i konsensusprotokolli\" src=\"\/wp-content\/uploads\/2019\/03\/bdb3866cb02fb5991446f0cb0fa5a4fd.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>\u2026siis kattuvad alati igasugused kaks kvoorumi, mida saate koostada\u2026<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Uurime Stellar&#039;i konsensusprotokolli\" src=\"\/wp-content\/uploads\/2019\/03\/29ee8d1ce9fba6c5c24386ce1c1c639b.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>\u2026kattuvad alati.<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Uurime Stellar&#039;i konsensusprotokolli\" src=\"\/wp-content\/uploads\/2019\/03\/6f1ef2b9896669c10fd19f1acd52db70.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<img decoding=\"async\" alt=\"Uurime Stellar&#039;i konsensusprotokolli\" src=\"\/wp-content\/uploads\/2019\/03\/6849569e849ac3b5487d31e0bf22a596.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n(Loomulikult v\u00f5ivad kattuvad s\u00f5lmed olla viinapatsiv\u00f5rgud v\u00f5i muul viisil halvad. Sel juhul ei aita kvoorumite \u00fchinemine v\u00f5rgu n\u00f5usoleku saamiseks \u00fcldse. Seet\u00f5ttu p\u00f5hinevad paljud tulemused tehnilises dokumendis SCP selgelt v\u00e4ljendatud oletustel, et v\u00f5rgu sees on kvoorumite \u00fchisosa, <i>isegi p\u00e4rast halbadest s\u00f5lmedest vabanemist<\/i>. Lihtsuse huvides j\u00e4tame need oletused <i>viidatud<\/i> artikli \u00fclej\u00e4\u00e4nud osas).<\/p>\n<p>V\u00f5ib tunduda ebamugav oodata, et s\u00f5ltumatute s\u00f5lmede v\u00f5rgus on v\u00f5imalik usaldusv\u00e4\u00e4rne kvoorumite \u00fchinemine. Kuid selleks on kaks p\u00f5hjust.<\/p>\n<p>Esimene p\u00f5hjus on interneti olemasolu. Internet on ideaalne n\u00e4ide s\u00f5ltumatute s\u00f5lmede v\u00f5rgust, kus on kvoorumite \u00fchinemine. Enamik interneti s\u00f5lmedest on \u00fchendatud ainult m\u00f5ne teiste kohaliku s\u00f5lmega, kuid need v\u00e4ikesed kogud kattuvad piisavalt, et iga s\u00f5lm oleks ligip\u00e4\u00e4setav igast teisest s\u00f5lmest igasuguste marsruutide kaudu.<\/p>\n<p>Teine p\u00f5hjus on spetsiifiline Stellar maksev\u00f5rgu jaoks (k\u00f5ige levinum rakendus SCP). Igal varal Stellar v\u00f5rgus on emitent ja Stellar'i soovitused n\u00f5uavad, et iga emitent m\u00e4\u00e4raks \u00fche v\u00f5i mitu s\u00f5lme, mis k\u00e4sitlevad lunastamisettepanekute t\u00f6\u00f6tlemist. Teie huvides on otse v\u00f5i kaudselt kaasata need s\u00f5lmed iga huvipakkuva vara kvoorumitesse. Seel\u00e4bi kattuvad k\u00f5ikide s\u00f5lmede kvoorumid, mis on huvitatud konkreetsest varast, v\u00e4hemalt nendes lunastuss\u00f5lmedes. S\u00f5lmed, mis on huvitatud mitmest varast, kaasavad oma kvoorumisse k\u00f5ik vastavate emitentide lunastuss\u00f5lmed, ning nad p\u00fc\u00fcdlevad kokku liita k\u00f5ik varad. Lisaks ei tohi k\u00f5ik varad, mis pole omavahel seotud, v\u00f5rgu sees <i>olla seotud<\/i> \u2014 see on m\u00f5eldud nii, et selle v\u00f5rgu kvoorumid ei kattuks (n\u00e4iteks dollari piirkonna pangad soovivad m\u00f5nikord kaubelda euro piirkonna ja pesotoo pangandussektoriga, seega on nad samas v\u00f5rgus, kuid keegi neist ei huvita eraldi v\u00f5rku, kus kaupleb lastetooteid, nagu n\u00e4iteks pesapallikaardid).<\/p>\n<p>Muidugi, <i>oodates<\/i> kvoorumite kattumist ei ole <i>garantii<\/i>. Teised byzantium'i kokkuleppe s\u00fcsteemid oma keerukuses on suures osas s\u00f5ltuvad kvoorumite garantii olemasolust. SCP oluline uuendus on see, et see vabastab kvoorumite loomise vastutuse konsensusalgoritmist ja viib selle rakenduse tasandile. Seega, kuigi f\u00f6deraalne h\u00e4\u00e4letamine on piisavalt tavaline igasuguste k\u00fcsimuste h\u00e4\u00e4letamiseks, s\u00f5ltub selle usaldusv\u00e4\u00e4rsus kriitiliselt nende t\u00e4henduste laiemast kontekstist. M\u00f5ned h\u00fcpoteetilised kasutusv\u00f5imalused v\u00f5ivad osutuda mitte nii mugavaks h\u00e4sti seotud v\u00f5rkude loomisel kui teised.<\/p>\n<h1>H\u00e4\u00e4letamine, vastuv\u00f5tmine ja kinnitamine<\/h1>\n<p>\nF\u00f6deraalse h\u00e4\u00e4letamise voorus hakkab s\u00f5lm valikuliselt h\u00e4\u00e4letama mingi v\u00e4\u00e4rtuse V poolt. See t\u00e4hendab, et see edastab v\u00f5rgus s\u00f5numi: \u201eMina olen s\u00f5lm N, minu kvoorumid Q ja ma h\u00e4\u00e4letan V poolt.\u201d Kui s\u00f5lm h\u00e4\u00e4letab sellisel viisil, lubab ta, et ei ole kunagi h\u00e4\u00e4letanud V vastu ja ei h\u00e4\u00e4leta kunagi.<\/p>\n<p>Peer nodes see how others vote in broadcasts. Once a node gathers enough of these messages, it can track quorum slices and attempt to find quorums. If it sees a quorum of peers also voting for V, it can proceed to <i>acceptance<\/i> of V and broadcast this new message to the network: \"I am node N, my quorum slice is Q, and I accept V.\" Acceptance provides a stronger guarantee than simple voting. When a node votes for V, it can never vote for other options. But if a node accepts V, no node in the network will ever accept another option (Theorem 8 in the SCP technical document proves this).<\/p>\n<p>Of course, there is a high likelihood that a quorum of nodes agreeing on V won\u2019t be found right away. Other nodes might vote for other values. But there is another way for the node to move from simple voting to acceptance. N can accept another value W, even if it did not vote for it, and even if it does not see a quorum for it. To change its vote, it is enough to see <i>a blocking set<\/i> of nodes that have accepted W. A blocking set consists of one node from each of the quorum slices of N. As the name suggests, it is capable of <i>blocking<\/i> any other value. If all nodes in such a set accept W, then (by Theorem 8) it will never be possible to form a quorum that accepts any other value, and therefore it is also safe for N to accept W.<\/p>\n<p><img decoding=\"async\" alt=\"Uurime Stellar&#039;i konsensusprotokolli\" src=\"\/wp-content\/uploads\/2019\/03\/6dd4ec5595ab863daf684fec670d83a6.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Node N with three quorum slices.<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Uurime Stellar&#039;i konsensusprotokolli\" src=\"\/wp-content\/uploads\/2019\/03\/b65e32160570af2883eef9990a74e3bd.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>B-D-F is a blocking set for N: it includes one node from each slice of N.<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Uurime Stellar&#039;i konsensusprotokolli\" src=\"\/wp-content\/uploads\/2019\/03\/7e17b4a9ee83aac7fa2b68b2f9fae066.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>B-E is also a blocking set for N because E appears in two slices of N.<\/i><\/p>\n<p>But a blocking set is not a quorum. It would be too easy to trick node N into accepting a desired value if it were sufficient to compromise just one node in each of the slices of N. Therefore, accepting a value is not the end of voting. Instead, N must confirm the value, meaning it must see a quorum of nodes accepting it. If it goes that far, then, as the SCP technical document proves (in Theorem 11), the rest of the network will also ultimately confirm the same value, thus N will conclude the federated voting with a determined value as the result.<\/p>\n<p><img decoding=\"async\" alt=\"Uurime Stellar&#039;i konsensusprotokolli\" src=\"\/wp-content\/uploads\/2019\/03\/bd68dc5172460c17fa2de54fcc0d9017.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Federated voting.<\/i><\/p>\n<p>H\u00e4\u00e4letusprotsess ja kinnitamine moodustab \u00fche t\u00e4isk\u00e4igu f\u00f6deratiivse h\u00e4\u00e4letuse raames. Stellar konsensuse protokoll \u00fchendab palju selliseid k\u00e4ike, et luua t\u00e4iuslik konsensus s\u00fcsteem.<\/p>\n<h1>Stellar konsensuse protokoll<\/h1>\n<p>\nKaks k\u00f5ige olulisemat omadust konsensus s\u00fcsteemis\u00a0\u2014 <i>turvalisus<\/i> ja <i>vastupidavus<\/i>. Konsensusalgoritm on 'turvaline', kui see ei saa kunagi anda erinevaid tulemusi erinevatele osalejatele (Bob'i ajalugu ei saa kunagi olla vastuolus Caroliga). 'Vastupidavus' t\u00e4hendab, et algoritm annab alati tulemuse, s.t ei j\u00e4\u00e4 kinni.<\/p>\n<p>Kirjeldatud f\u00f6deratiivse h\u00e4\u00e4letuse protseduur <i>on turvaline<\/i> selles m\u00f5ttes, et kui s\u00f5lm kinnitab v\u00e4\u00e4rtuse V, siis ei kinnita \u00fckski teine s\u00f5lm teist v\u00e4\u00e4rtust. Kuid 'ei kinnita teist v\u00e4\u00e4rtust' ei t\u00e4henda, et see peab tingimata midagi kinnitama. Osalejad v\u00f5ivad h\u00e4\u00e4letada nii palju erinevate v\u00e4\u00e4rtuste \u00fcle, et miski ei saavuta n\u00f5usoleku l\u00e4ve. See t\u00e4hendab, et f\u00f6deratiivses h\u00e4\u00e4letuses puudub <i>vastupidavus<\/i>.<\/p>\n<p>Stellar konsensuse protokoll kasutab f\u00f6deratiivset h\u00e4\u00e4letust nii, et tagab nii turvalisuse kui ka vastupidavuse. (Turvalisuse ja vastupidavuse garantiidel on teoreetiline piir. Konstruktsioon valib v\u00e4ga tugeva turvalisuse garanteerimise, ohverdades veidi vastupidavuse, kuid arvestades piisavalt pika aja jooksul saab konsensus v\u00e4ga t\u00f5en\u00e4oliselt saavutatud). L\u00fchidalt \u00f6eldes seisneb idee selles, et korraldatakse mitu f\u00f6deratiivset h\u00e4\u00e4letust mitmete v\u00e4\u00e4rtuste \u00fcle, kuni \u00fcks neist l\u00e4bib t\u00e4ielikult k\u00f5ik allpool kirjeldatud SCP h\u00e4\u00e4letamise etapid.<\/p>\n<p>V\u00e4\u00e4rtused, mille \u00fcle SCP konsensust peab saavutama, v\u00f5ivad olla tehingute ajalugu v\u00f5i l\u00f5unatellimus v\u00f5i miski muu, kuid oluline on m\u00e4rkida, et need ei ole v\u00e4\u00e4rtused, mis on aktsepteeritud v\u00f5i kinnitatud. Selle asemel toimub f\u00f6deratiivne h\u00e4\u00e4letus <i>v\u00e4idete \u00fcle nende v\u00e4\u00e4rtuste kohta<\/i>.<\/p>\n<p>Esimesed f\u00f6deratiivse h\u00e4\u00e4letuse k\u00e4igud toimuvad <i>nimetamise etapis<\/i> (nomination phase), koos komplekti v\u00e4idete t\u00fc\u00fcbiga 'Mina esitan V', v\u00f5imalusel paljude erinevate v\u00e4\u00e4rtuste V jaoks. Nimetamise eesm\u00e4rk on leida \u00fcks v\u00f5i mitu v\u00e4idet, mis l\u00e4bivad aktsepteerimise ja kinnitamise.<\/p>\n<p>P\u00e4rast kinnitatud kandidaatide leidmist liigub SCP h\u00e4\u00e4letamise etappi, kus eesm\u00e4rk on leida teatud <i>h\u00e4\u00e4lteprotsess<\/i> (st ettepaneku v\u00e4\u00e4rtuse konteiner) ja kvoorum, mis v\u00f5ib v\u00e4ljendada <i>komiteed<\/i> selle jaoks (commit). Kui kvoorum teeb komitee h\u00e4\u00e4letamise, aktsepteeritakse selle v\u00e4\u00e4rtus konsensuseks. Kuid enne, kui s\u00f5lm saab h\u00e4\u00e4letada komitee \u00fcle, peab ta enne kinnitama <i>k\u00f5igi madalama v\u00e4\u00e4rtuse h\u00e4\u00e4letuste t\u00fchistamise. Need sammud - h\u00e4\u00e4letuste t\u00fchistamine, et leida see, millele saab komiteed kinnitada - h\u00f5lmavad mitmeid ringe f\u00f6deratiivset h\u00e4\u00e4letamist mitmete h\u00e4\u00e4letuste avalduste \u00fcle.<\/i> J\u00e4rgmistes osades kirjeldatakse l\u00e4hemalt esitamist ja h\u00e4\u00e4letamist.<\/p>\n<p>Esitamine<\/p>\n<h1>Esitamise etapi alguses saab iga s\u00f5lm vabatahtlikult valida v\u00e4\u00e4rtuse V ja h\u00e4\u00e4letada selle kinnitamise eest \"Mina esitan V\". Selles etapis on eesm\u00e4rk kinnitada teatud v\u00e4\u00e4rtuse esitamine f\u00f6deratiivse h\u00e4\u00e4letamise teel.<\/h1>\n<p>\nV\u00f5ib-olla h\u00e4\u00e4letab piisav arv s\u00f5lmi piisavalt erinevate avalduste \u00fcle, ja \u00fckski esitus ei saavuta vastuv\u00f5tmise k\u00fcnnist. Seet\u00f5ttu, lisaks enda nominatsioonih\u00e4\u00e4lte edastamisele, \"peegeldavad\" s\u00f5lmed oma naabrite nominatsioone. Peegeldamine (echo) t\u00e4hendab, et kui s\u00f5lm h\u00e4\u00e4letab V esitamise poolt, kuid n\u00e4eb naabri h\u00e4\u00e4letust W esitamise poolt, siis h\u00e4\u00e4letab ta n\u00fc\u00fcd nii V kui ka W esitamise poolt. (K\u00f5ik naabrite h\u00e4\u00e4led ei kajastu esitamise ajal, kuna see v\u00f5ib p\u00f5hjustada erinevate nominantide plahvatuse. SCP sisaldab nende h\u00e4\u00e4lte reguleerimise mehhanismi. L\u00fchidalt \u00f6eldes, on olemas valem \"prioriteedi\" m\u00e4\u00e4ramiseks s\u00f5lme vaatenurgast, ning peegeldatakse ainult k\u00f5rge prioriteediga s\u00f5lmede h\u00e4\u00e4li. Mida kauem esitamine kestab, seda madalam on k\u00fcnnis, seet\u00f5ttu laiendab s\u00f5lm naabrite kogumit, kelle h\u00e4\u00e4li ta peegeldab. Prioriteedi valem sisaldab \u00fche sisendina sloti numbrit, seega v\u00f5ib k\u00f5rge prioriteediga peer \u00fche sloti puhul olla madala prioriteediga teisel, ja vastupidi).<\/p>\n<p>V\u00f5ib juhtuda, et piisav arv s\u00f5lmi h\u00e4\u00e4letab piisavalt erinevate ettepanekute eest, ja \u00fckski ettepanek ei suuda saavutada vastuv\u00f5tmise k\u00fcnnist. Seet\u00f5ttu peegeldavad s\u00f5lmed oma naabrite ettepanekute h\u00e4\u00e4li lisaks oma nomineerimish\u00e4\u00e4lte edastamisele. Peegeldamine t\u00e4hendab, et kui s\u00f5lm h\u00e4\u00e4letab ettepaneku V poolt, kuid n\u00e4eb s\u00f5numit naabrilt, kes h\u00e4\u00e4letab ettepaneku W poolt, siis hakkab see n\u00fc\u00fcd h\u00e4\u00e4letama nii V kui ka W ettepaneku poolt. (K\u00f5ik naabri h\u00e4\u00e4led ei pruugi peegelduda h\u00e4\u00e4letamise ajal, kuna see v\u00f5ib p\u00f5hjustada erinevate nominentide plahvatuse. SCP h\u00f5lmab nende h\u00e4\u00e4lte reguleerimise mehhanismi. L\u00fchidalt \u00f6eldes on olemas valem, mis m\u00e4\u00e4rab \u201eprioriteedi\u201d naabri suhtes s\u00f5lme vaatepunktist, ja peegeldatakse vaid k\u00f5rgprioriteediliste s\u00f5lmede h\u00e4\u00e4li. Mida pikemalt h\u00e4\u00e4letamine kestab, seda madalam on k\u00fcnnis, seega laiendab s\u00f5lm naabrite komplekti, kelle h\u00e4\u00e4li ta peegeldab. Prioriteedi valem sisaldab \u00fche sisenemise andmena ka ajakonverentsi numbrit, seega v\u00f5ib k\u00f5rge prioriteediga v\u00f5rgu s\u00f5lm \u00fche ajakonverentsi jaoks olla madala prioriteediga teise jaoks ja vastupidi).<\/p>\n<p>Konceptsiooniliselt on nii V kui W esitlemine eraldi f\u00f6deratiivsed h\u00e4\u00e4led, mis iga\u00fchega eraldi suudavad saavutada aktsepteerimise v\u00f5i kinnitamise. Praktikas pakivad SCP protokolli s\u00f5numid need eraldi h\u00e4\u00e4led kokku.<\/p>\n<p>Kuigi h\u00e4\u00e4letamine V esitlemise poolt t\u00e4hendab, et ei tohi kunagi h\u00e4\u00e4letada V esitlemise vastu, m\u00e4\u00e4ratletakse rakendustasandil \u2013 antud juhul SCP \u2013 see, mida t\u00e4hendab 'vastu'. SCP ei n\u00e4e kinnitust, mis oleks vastuolus h\u00e4\u00e4letusega 'Ma esitan X', st ei ole s\u00f5numit 'Ma olen X esitlemise vastu', seet\u00f5ttu saab s\u00f5lm h\u00e4\u00e4letada mis tahes v\u00e4\u00e4rtuste esitlemise poolt. Paljusid neist nominatsioonidest ei viida kuigi kaugele, kuid l\u00f5ppkokkuv\u00f5ttes suudab s\u00f5lm aktsepteerida v\u00f5i kinnitada \u00fchte v\u00f5i mitut v\u00e4\u00e4rtust. Kui nominant on kinnitatud, siis ta saab <i>kandidaadiks<\/i>.<\/p>\n<p><img decoding=\"async\" alt=\"Uurime Stellar&#039;i konsensusprotokolli\" src=\"\/wp-content\/uploads\/2019\/03\/794f55d076ec3e1773c49d32e29c084d.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>SCP esitlemine f\u00f6deratiivse h\u00e4\u00e4letuse kaudu. V\u00f5ib esitada palju v\u00e4\u00e4rtusi \u201cB\u201d, mille on esitanud v\u00f5rdsete \u00f5igustega s\u00f5lmed ja mis on 'peegeldatud' s\u00f5lme kaudu.<\/i> <\/p>\n<p>Kandidaatide esitamine v\u00f5ib viia mitme kinnitatava kandidaadi tekkimiseni. Seet\u00f5ttu n\u00f5uab SCP, et rakendustasand pakuks mingit meetodit kandidaatide \u00fchendamiseks \u00fchte <i>komposiiti<\/i> (composite). \u00dchendamismeetod v\u00f5ib olla mis tahes. Peaasi on see, et kui see meetod on m\u00e4\u00e4ratletud, siis \u00fchendavad k\u00f5ik s\u00f5lmed samu kandidaate. Toitlustuss\u00fcsteemi h\u00e4\u00e4letamisel v\u00f5ib '\u00fchendamine' t\u00e4hendada lihtsalt \u00fche kahest kandidaadist loobumist. (Kuid m\u00e4\u00e4ratletud viisil: iga s\u00f5lm peab valima sama v\u00e4\u00e4rtuse t\u00fchistamiseks. N\u00e4iteks varasem valik t\u00e4hestikulises j\u00e4rjekorras). Stellar'i maksev\u00f5rgus, kus toimub tehingute ajaloo h\u00e4\u00e4letamine, t\u00e4hendab kahe esitatud nominandi \u00fchendamine tehingute \u00fchendamist, mida nad sisaldavad, ja nende kahe viimase aja tempot.<\/p>\n<p>Tehniline kirjeldus SCP t\u00f5estab (teoreem 12), et esitlemise faasi l\u00f5puks j\u00f5uab v\u00f5rk l\u00f5puks \u00fche komposiidi poole. Kuid probleem on: f\u00f6deratiivne h\u00e4\u00e4letamine on as\u00fcnkroonne protokoll (nagu ka SCP). Teisis\u00f5nu, s\u00f5lmed ei koordineeru ajaliselt, vaid ainult saatmise kaudu saadud s\u00f5numite kaudu. S\u00f5lme seisukohalt ei ole selge, millal <i>protsess l\u00f5ppes<\/i> ettepanekufaas. Ja kuigi k\u00f5ik s\u00f5lmed j\u00f5uavad l\u00f5puks sama komposiitini, v\u00f5ivad nad selle tee jooksul valida erinevaid marsruute, luues erinevaid koostisosade kandidaate, ning ei suuda kunagi \u00f6elda, kumb neist on l\u00f5plik.<\/p>\n<p>Aga see on okei. Ettepanek on vaid ettevalmistus. Peamine on piirduda kandidaatide arvuga, et saavutada konsensus, mis toimub protsessi k\u00e4igus. <i>h\u00e4\u00e4letamine<\/i> (balloting).<\/p>\n<h1>H\u00e4\u00e4letamine<\/h1>\n<p>\nH\u00e4\u00e4letus on paar &lt;counter,value&gt;, kus counter on t\u00e4isarv, mis algab numbrist 1, ja value on kandidaat ettepanekufaasist. See v\u00f5ib olla kas s\u00f5lme enda kandidaat v\u00f5i naaber s\u00f5lme kandidaat, mille see s\u00f5lm on aktsepteerinud. \u00dcldiselt ettev\u00f5etakse h\u00e4\u00e4letamisel mitmeid katseid, et j\u00f5uda konsensusele mingi kandidaadi \u00fcle teatud h\u00e4\u00e4letuses, viies l\u00e4bi potentsiaalselt paljusid f\u00f6deraalseid h\u00e4\u00e4letusi h\u00e4\u00e4letuse avalduste \u00fcle. H\u00e4\u00e4letuse arvutid j\u00e4lgivad tehtud katseid, ja suuremate arvu v\u00e4\u00e4rtustega h\u00e4\u00e4letused eelistavad v\u00e4iksema arvu v\u00e4\u00e4rtusi. Kui h\u00e4\u00e4letus &lt;counter,value&gt; takerdub, algab uus h\u00e4\u00e4letamine, n\u00fc\u00fcd h\u00e4\u00e4letusel &lt;counter+1,value&gt;.<\/p>\n<p>On oluline eristada <i>m\u00f5isted<\/i> (n\u00e4iteks, kuidas peaks l\u00f5unaks tellima: pitsat v\u00f5i salateid), <i>h\u00e4\u00e4letusi<\/i> (paar counter-value) ja <i>h\u00e4lbed<\/i> h\u00e4\u00e4letuste kohta. SCP voor sisaldab mitmeid ringe f\u00f6deraalses h\u00e4\u00e4letamises, sealhulgas selliste v\u00e4idete osas:<\/p>\n<ul>\n<li>\u201eOlen valmis h\u00e4\u00e4letuse B kinnitamiseks\u201c ja\n<\/li>\n<li>\u201eKannan ette h\u00e4\u00e4letust B\u201c<\/li>\n<\/ul>\n<p>\nAntud s\u00f5lme vaatenurgast saavutatakse konsensus, kui see leiab h\u00e4\u00e4letuse B, mille osas ta v\u00f5ib kinnitada (st leida kvoorumi, mis aktsepteerib) v\u00e4idet \u201eKannan ette h\u00e4\u00e4letust B\u201c. Sellest hetkest alates on ohutu tegutseda v\u00e4\u00e4rtuse p\u00f5hjal, mis on m\u00e4\u00e4ratud B-sse \u2014 n\u00e4iteks esitada see l\u00f5unatellimus. Seda nimetatakse <i>eksternaliseerimiseks<\/i> v\u00e4\u00e4rtuseks. Kui h\u00e4\u00e4letuse aktsepteerimine on kinnitatud, v\u00f5ib s\u00f5lm olla kindel, et iga teine s\u00f5lm on eksternaliseerinud sama v\u00e4\u00e4rtuse v\u00f5i kindlasti teeb seda tulevikus.<\/p>\n<p>Kuigi kontseptuaalselt viiakse paljusid f\u00f6deratiivseid h\u00e4\u00e4letusi l\u00e4bi mitmete erinevate valimiste avalduste alusel, vahetatakse neid mitte nii suure hulga s\u00f5numitega, kuna iga s\u00f5num kapseldab mitmeid valimisi. \u00dcks s\u00f5num edastab seega korraga paljude f\u00f6deratiivsete h\u00e4\u00e4letuste oleku, n\u00e4iteks: \u201eMa aktsepteerin valimiste kommitte vahemikus &lt;min,V&gt; kuni &lt;max,V&gt;.\u201d<\/p>\n<p>Mida t\u00e4hendavad terminid \u201evalmistatud\u201d (prepared) ja \u201ekommit\u201d (commit)?<\/p>\n<p>S\u00f5lm h\u00e4\u00e4letab valimiste kommiti poolt, kui ta on veendunud, et teised s\u00f5lmed ei tee valimiste kommitte teiste v\u00e4\u00e4rtustega. Veendumine selles on avalduse ettevalmistamise eesm\u00e4rk. H\u00e4\u00e4letamine, milles \u00f6eldakse: \u201eMa olen valmis valimiste kommitiks B,\u201d on lubadus, et kunagi ei toimu valimiste kommitit, mille v\u00e4\u00e4rtus on v\u00e4iksem kui B, st v\u00e4iksema loenduri (SCP n\u00f5uab, et valimistel oleks kindel j\u00e4rjekord. Seega on valimine &lt;N1,V1&gt; v\u00e4iksem kui &lt;N2,V2&gt;, kui N1&lt;N2, samuti kui N1=N2 ja V1&lt;V2). Need v\u00e4iksemad valimised \u201et\u00fchistatakse\u201d (aborted) ettevalmistava h\u00e4\u00e4letuse k\u00e4igus, samas kui B loetakse \u201evalmistatud\u201d.<\/p>\n<p>Miks t\u00e4hendab \u201eMa olen valmis valimiste kommitiks B\u201d \u201eLuban, et kunagi ei luba valimiste kommitte, mille v\u00e4\u00e4rtus on v\u00e4iksem kui B\u201d? Sest SCP m\u00e4\u00e4ratleb t\u00fchistamise (abort) kommiti vastandina. H\u00e4\u00e4letamine valimiste ettevalmistamise \u00fcle eeldab samuti h\u00e4\u00e4letamist m\u00f5nede teiste valimiste t\u00fchistamise \u00fcle ja nagu me varem arutasime, on h\u00e4\u00e4letamine \u00fche asja \u00fcle lubadus, et kunagi ei h\u00e4\u00e4letata selle vastu.<\/p>\n<p>Enne kui s\u00f5lm edastab kommiti, peab ta esmalt leidma valimise, mille ta saab kinnitada kui ettevalmistatud. Teisis\u00f5nu h\u00e4\u00e4letab ta f\u00f6deratiivse h\u00e4\u00e4letuse teemal \u201eMa olen valmis valimiste kommitiks B\u201d, v\u00f5ib-olla paljude erinevate valimiste puhul, kuni leiab sellise, mis aktsepteerib kvoorumi.<\/p>\n<p>Kust tulevad h\u00e4\u00e4letamiseks ettevalmistatavad v\u00e4ljaanded? Esiteks edastab s\u00f5lm ettevalmistuse h\u00e4\u00e4letamiseks , kus C on kandideeriv komplekt, mis on loodud kandidaate esitamise etapil. Siiski v\u00f5ib isegi p\u00e4rast h\u00e4\u00e4letamiseks ettevalmistuse algust kandidaadi esitamine tuua juurde uusi kandidaate, kes muutuvad uueks v\u00e4ljaanneteks. Samuti v\u00f5ivad osalistel olla erinevad kandidaatid ja nad v\u00f5ivad luua blokeeriva komplekti, mis aktsepteerib \"Olen valmis h\u00e4\u00e4letama v\u00e4ljaande B2\", mis veenab s\u00f5lme ka selle aktsepteerima. L\u00f5puks on olemas ajav\u00e4lja mehhanism, mis genereerib uusi ringe f\u00f6deraalse h\u00e4\u00e4letamise jaoks uute v\u00e4ljaannetega, millel on k\u00f5rgemad loendurid, kui praegused v\u00e4ljaanded on kinni j\u00e4\u00e4nud.<\/p>\n<p>Niipea kui s\u00f5lm leiab v\u00e4ljaande B, mille v\u00f5ib kinnitada kui ettevalmistatud, edastab ta uue s\u00f5numi \"Kinnita v\u00e4ljaanne B\". See h\u00e4\u00e4letamine \u00fctleb osalistele, et s\u00f5lm ei loobu kunagi B-st. Tegelikult, kui B esindab v\u00e4ljaannet , siis \"Kinnita v\u00e4ljaanne \" t\u00e4hendab tingimusteta n\u00f5usolekut h\u00e4\u00e4letada k\u00f5igi v\u00e4ljaannete ettevalmistuse eest alates  kuni . See lisav\u00e4\u00e4rtus aitab teistel s\u00f5lmedel osalistega sammu pidada, kui nad on veel protokolli varasemates etappides.<\/p>\n<p>Selles etapis on oluline r\u00f5hutada, et tegemist on as\u00fcnkroonsete protokollidega. Ainult sellep\u00e4rast, et \u00fcks s\u00f5lm saadab h\u00e4\u00e4li kinnitamiseks, ei t\u00e4henda, et tema eakaaslased seda ka teevad. M\u00f5ned neist v\u00f5ivad endiselt h\u00e4\u00e4letada ettepanekute seadmiseks, teised on v\u00f5ib-olla juba v\u00e4\u00e4rtuse eksternaaliseerinud. SCP selgitab, kuidas s\u00f5lm peab iga t\u00fc\u00fcpi omavahelise s\u00f5numi t\u00f6\u00f6tlemisega tegema s\u00f5ltumata selle faasist.<\/p>\n<p>Kui s\u00f5num \"Ma kuulutan v\u00e4lja commit &lt;N,C&gt;\" ei saa olla aktsepteeritud v\u00f5i kinnitatud, siis on t\u00f5en\u00e4osus aktsepteerida v\u00f5i kinnitada s\u00f5numit &lt;N+1, C&gt; v\u00f5i &lt;N+2, C&gt; \u2014 v\u00f5i igal juhul mis tahes bulleti, mille v\u00e4\u00e4rtus on C, mitte miski muu, kuna s\u00f5lme on juba lubanud kunagi mitte t\u00fchistada &lt;N,C&gt;. Siis kui s\u00f5lm edastab h\u00e4\u00e4li commit'i jaoks, on see C v\u00f5i mitte midagi, s\u00f5ltuvalt sellest, kui kaugele konsensus j\u00f5uab. Siiski on sellest s\u00f5lm veel liiga v\u00e4he, et C-d v\u00e4ljastada. M\u00f5ned b\u00fctsantsi parteid (moodustades v\u00e4hem kui kvoorumi, tuginedes meie ohutuse eeldustele) v\u00f5ivad s\u00f5lme petta. Miski teatud bulleti (v\u00f5i bulletite vahemiku) aktsepteerimine ja seej\u00e4rel kinnitamine \u2014 see annab s\u00f5lmele l\u00f5puks kindluse C v\u00e4ljastamiseks.<\/p>\n<p><img decoding=\"async\" alt=\"Uurime Stellar&#039;i konsensusprotokolli\" src=\"\/wp-content\/uploads\/2019\/03\/c59f036bb8aa189bb3d4540f54121391.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>SCP h\u00e4\u00e4letamine f\u00f6deraalse h\u00e4\u00e4letamise kaudu. Mitte kuvatud: igal ajal v\u00f5ib sisse l\u00fclituda taimer, suurendades h\u00e4\u00e4letuse arvu (ja v\u00f5imalusel luues uusi komposiite t\u00e4iendavatest kandidaatidest).<\/i> <\/p>\n<p>Ja see on k\u00f5ik! Kui v\u00f5rk on j\u00f5udnud konsensusele, on see valmis seda tegema j\u00e4lle ja j\u00e4lle. Stellar maksev\u00f5rgus toimub see umbes iga 5 sekundi j\u00e4rel: saavutus, mis n\u00f5uab nii turvalisust kui ka vastupidavust, mida SCP tagab.<\/p>\n<p>SCP v\u00f5ib seda saavutada, tuginedes mitmele f\u00f6deraalsele h\u00e4\u00e4letamise ringile. F\u00f6deraalne h\u00e4\u00e4letamine sai v\u00f5imalikuks t\u00e4nu kvoorumi l\u00f5ike kontseptsioonile: r\u00fchmadesse kuuluvad v\u00f5rdsed s\u00f5lmed, kellele iga s\u00f5lmotsustas usaldada kui osa oma (subjektiivsest) kvoorumist. See konfiguratsioon t\u00e4hendab, et isegi avatud liikmelisusega ja b\u00fctsantsi petmisega v\u00f5rgus on v\u00f5imalik saavutada konsensus.<\/p>\n<h1>Edasi lugemiseks<\/h1>\n<p><\/p>\n<ul>\n<li>Algset tehnilist dokumenti SCP kohta v\u00f5ib leida <noindex><a rel=\"nofollow\" href=\"https:\/\/www.stellar.org\/papers\/stellar-consensus-protocol.pdf\">siin<\/a><\/noindex>, vaid <noindex><a rel=\"nofollow\" href=\"https:\/\/datatracker.ietf.org\/doc\/draft-mazieres-dinrg-scp\/\">siit<\/a><\/noindex> projekti spetsifikatsioonide jaoks selle rakendamiseks.\n<\/li>\n<li>Protokolli SCP originaalautor David Mazieres selgitab seda lihtsustatud (kuid siiski tehniliselt) viisil <noindex><a rel=\"nofollow\" href=\"http:\/\/www.scs.stanford.edu\/~dm\/blog\/simplified-scp.html\">siin<\/a><\/noindex>.\n<\/li>\n<li>V\u00f5ib-olla \u00fcllatas teid see, et te ei leidnud seda artiklit otsinguterminite \"kaevandamine\" v\u00f5i \"t\u00f6\u00f6 t\u00f5endamine\". SCP ei kasuta neid meetodeid, kuid m\u00f5ned teised konsensuse algoritmid kasutavad. Zane Wizerspoon kirjutas ligip\u00e4\u00e4setava <noindex><a rel=\"nofollow\" href=\"https:\/\/hackernoon.com\/a-hitchhikers-guide-to-consensus-algorithms-d81aae3eb0e3\">\u00fclevaate konsensuse algoritmidest<\/a><\/noindex>.\n<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/bobg\/scp\/blob\/master\/Lunch.md\">Samm-sammult kirjeldus<\/a><\/noindex> lihtsast v\u00f5rgust, mis saavutab konsensuse SCP \u00fches t\u00e4isringis.\n<\/li>\n<li>SCP rakenduste vastu huvituvatele lugejatele: vt. <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/stellar\/stellar-core\/tree\/master\/src\/scp\">C++ kood<\/a><\/noindex>, mida Stellar maksev\u00f5rk kasutab, v\u00f5i <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/bobg\/scp\">Go kood<\/a><\/noindex>, mille ma kirjutasin SCP parema m\u00f5istmise jaoks.<\/li>\n<\/ul>\n<p>Allikas: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/444710\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0440\u043e\u0442\u043e\u043a\u043e\u043b \u043a\u043e\u043d\u0441\u0435\u043d\u0441\u0443\u0441\u0430 Stellar \u0432\u043f\u0435\u0440\u0432\u044b\u0435 \u043e\u043f\u0438\u0441\u0430\u043d \u0432 \u043d\u0430\u0443\u0447\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u0414\u044d\u0432\u0438\u0434\u0430 \u041c\u0430\u0437\u044c\u0435\u0440\u0430 \u0432 2015 \u0433\u043e\u0434\u0443. \u042d\u0442\u043e \u00ab\u0444\u0435\u0434\u0435\u0440\u0430\u0442\u0438\u0432\u043d\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0432\u0438\u0437\u0430\u043d\u0442\u0438\u0439\u0441\u043a\u043e\u0433\u043e \u0441\u043e\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u044f\u00bb, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0434\u0435\u0446\u0435\u043d\u0442\u0440\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u043c \u0432\u044b\u0447\u0438\u0441\u043b\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c \u0441\u0435\u0442\u044f\u043c \u0431\u0435\u0437 \u043b\u0438\u0434\u0435\u0440\u043e\u0432 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e \u0434\u043e\u0441\u0442\u0438\u0433\u0430\u0442\u044c \u043a\u043e\u043d\u0441\u0435\u043d\u0441\u0443\u0441\u0430 \u043f\u043e \u043a\u0430\u043a\u043e\u043c\u0443-\u043b\u0438\u0431\u043e \u0440\u0435\u0448\u0435\u043d\u0438\u044e. \u041f\u043b\u0430\u0442\u0451\u0436\u043d\u0430\u044f \u0441\u0435\u0442\u044c Stellar \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 Stellar Consensus Protocol (SCP) \u0434\u043b\u044f \u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0441\u043e\u0433\u043b\u0430\u0441\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u0438\u0441\u0442\u043e\u0440\u0438\u0438 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0432\u0438\u0434\u044f\u0442 \u0432\u0441\u0435 \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0438. \u0421\u0447\u0438\u0442\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u044b \u043a\u043e\u043d\u0441\u0435\u043d\u0441\u0443\u0441\u0430 \u0442\u0440\u0443\u0434\u043d\u044b \u0434\u043b\u044f \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u044f. [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-30047","post","type-post","status-publish","format-standard","hentry"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041f\u0440\u043e\u0442\u043e\u043a\u043e\u043b \u043a\u043e\u043d\u0441\u0435\u043d\u0441\u0443\u0441\u0430 Stellar \u0432\u043f\u0435\u0440\u0432\u044b\u0435 \u043e\u043f\u0438\u0441\u0430\u043d \u0432.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/et\/blog\/razbiraemsya-v-protokole-konsensusa-stellar\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"et_EE\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0420\u0430\u0437\u0431\u0438\u0440\u0430\u0435\u043c\u0441\u044f \u0432 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0435 \u043a\u043e\u043d\u0441\u0435\u043d\u0441\u0443\u0441\u0430 Stellar | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u0440\u043e\u0442\u043e\u043a\u043e\u043b \u043a\u043e\u043d\u0441\u0435\u043d\u0441\u0443\u0441\u0430 Stellar \u0432\u043f\u0435\u0440\u0432\u044b\u0435 \u043e\u043f\u0438\u0441\u0430\u043d \u0432.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/et\/blog\/razbiraemsya-v-protokole-konsensusa-stellar\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T18:33:25+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T18:33:25+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Uurime Stellari konsensuse protokolli | ProHoster","description":"Stellari konsensuse protokoll on esmakordselt kirjeldatud.","canonical_url":"https:\/\/prohoster.info\/et\/blog\/razbiraemsya-v-protokole-konsensusa-stellar","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"et_EE","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0420\u0430\u0437\u0431\u0438\u0440\u0430\u0435\u043c\u0441\u044f \u0432 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0435 \u043a\u043e\u043d\u0441\u0435\u043d\u0441\u0443\u0441\u0430 Stellar | ProHoster","og:description":"\u041f\u0440\u043e\u0442\u043e\u043a\u043e\u043b \u043a\u043e\u043d\u0441\u0435\u043d\u0441\u0443\u0441\u0430 Stellar \u0432\u043f\u0435\u0440\u0432\u044b\u0435 \u043e\u043f\u0438\u0441\u0430\u043d \u0432.","og:url":"https:\/\/prohoster.info\/et\/blog\/razbiraemsya-v-protokole-konsensusa-stellar","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T18:33:25+00:00","article:modified_time":"2019-10-31T18:33:25+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"30047","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"Article","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-20 23:34:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 03:43:15","updated":"2026-01-20 23:34:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/30047","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/comments?post=30047"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/30047\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media?parent=30047"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/categories?post=30047"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/tags?post=30047"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}