{"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\/lv\/blog\/razbiraemsya-v-protokole-konsensusa-stellar","title":{"rendered":"Izprotam Stellar konsensa protokolu","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Izprotam Stellar konsensa protokolu\" src=\"\/wp-content\/uploads\/2019\/03\/09b61160286ae40c21269e1590fc2b92.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nStellar konsensa protokols pirmo reizi aprakst\u012bts <noindex><a rel=\"nofollow\" href=\"https:\/\/www.stellar.org\/papers\/stellar-consensus-protocol.pdf\">zin\u0101tniskaj\u0101 rakst\u0101<\/a><\/noindex> Deivida Maz\u012bra 2015. gad\u0101. Tas ir \u201efederat\u012bva bizantie\u0161u saska\u0146o\u0161anas sist\u0113ma\u201d, kas \u013cauj decentraliz\u0113t\u0101m datoru t\u012bklam, kuriem nav vad\u012bt\u0101ju, efekt\u012bvi pan\u0101kt konsensu par jebkuru l\u0113mumu. Stellar maks\u0101jumu t\u012bkls izmanto Stellar Consensus Protocol (SCP), lai uztur\u0113tu saska\u0146otu dar\u012bjumu v\u0113sturi, kuru redz visi dal\u012bbnieki.<\/p>\n<p>Uzskata, ka konsensa protokoli ir gr\u016bti saprotami. SCP ir vienk\u0101r\u0161\u0101ks nek\u0101 vairums no tiem, ta\u010du tam ir l\u012bdz\u012bga reput\u0101cija \u2014 da\u013c\u0113ji t\u0101p\u0113c, ka past\u0101v nepareiza ideja, ka \u201efederat\u012bvais balsojums\u201d, kuram velt\u012bta raksta pirm\u0101 puse, ir SCP. Bet t\u0101 nav! Tas ir tikai svar\u012bgs celtniec\u012bbas elements, ko raksta otraj\u0101 pus\u0113 izmanto, lai izveidotu <i>faktisko<\/i> Stellar konsensa protokolu.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\n\u0160aj\u0101 rakst\u0101 \u012bsi past\u0101st\u012bsim, kas ir \u201esaska\u0146as sist\u0113ma\u201d, kas var padar\u012bt to \u201ebizantie\u0161u\u201d un k\u0101p\u0113c federat\u012bvo sist\u0113mu var padar\u012bt \u201efederat\u012bvu\u201d. P\u0113c tam izskaidrosim federat\u012bvo balso\u0161anas proced\u016bru, kas aprakst\u012bta SCP rakst\u0101, un visbeidzot izskaidrosim pa\u0161u SCP protokolu.<\/p>\n<h1>Saska\u0146as sist\u0113mas<\/h1>\n<p>\nSaska\u0146as sist\u0113ma \u013cauj grupai dal\u012bbnieku pan\u0101kt konsensu par k\u0101du t\u0113mu, piem\u0113ram, ko pas\u016bt\u012bt pusdien\u0101m.<\/p>\n<p>M\u0113s uz\u0146\u0113mum\u0101 Interstellar esam ieviesu\u0161i savu pusdienu saska\u0146as sist\u0113mu: pas\u016bt\u0101m to, ko saka m\u016bsu operat\u012bvais vad\u012bt\u0101js D\u017eons. T\u0101 ir vienk\u0101r\u0161a un efekt\u012bva saska\u0146as sist\u0113ma. M\u0113s visi uzticamies D\u017eonam un ticam, ka vi\u0146\u0161 katru dienu atrad\u012bs kaut ko interesantu un uztur\u012bgu.<\/p>\n<p>Bet ko dar\u012bt, ja D\u017eons \u013caunpr\u0101t\u012bgi izmanto m\u016bsu uztic\u012bbu? Vi\u0146\u0161 var patst\u0101v\u012bgi nolemt, ka mums visiem j\u0101b\u016bt veg\u0101niem. Pusstundas laik\u0101 vai div\u0101s, visticam\u0101k, m\u0113s vi\u0146u g\u0101z\u012bsim un pilnvaras nodosim Elizabetei. Bet, iesp\u0113jams, vi\u0146a m\u012bl avokado ar an\u0161oviem un dom\u0101, ka visiem j\u0101b\u016bt t\u0101diem. Varu korump\u0113. T\u0101p\u0113c lab\u0101k atrast k\u0101du demokr\u0101tisk\u0101ku metodi: veidu, k\u0101 p\u0101rliecin\u0101ties, ka tiek \u0146emti v\u0113r\u0101 da\u017e\u0101di preferenc\u0113s, vienlaikus nodro\u0161inot savlaic\u012bgu un nep\u0101rprotamu rezult\u0101tu, lai nenotiktu, ka neviens nepasp\u0113j pas\u016bt\u012bt pusdienas vai pieci cilv\u0113ki izvirza da\u017e\u0101dus pas\u016bt\u012bjumus, vai diskusija var\u0113tu ieilgt l\u012bdz vakaram.<\/p>\n<p>Izskat\u0101s, ka risin\u0101jums ir vienk\u0101r\u0161s: r\u012bkot balsojumu! Bet tas ir maldino\u0161s iespaids. Kas sav\u0101ks bi\u013cetenus un pazi\u0146os rezult\u0101tus? Un k\u0101p\u0113c p\u0101r\u0113jiem vajadz\u0113tu tic\u0113t tam, ko vi\u0146\u0161 teiks? Varb\u016bt m\u0113s varam <i>vispirms<\/i> nobalso par l\u012bderi, kuram uzticamies, lai vad\u012btu balso\u0161anu \u2014 bet kur\u0161 vad\u012bs \u0161o <i>pirmo<\/i> balsojumu? Ko dar\u012bt, ja m\u0113s nevaram vienoties par l\u012bderi? Vai ar\u012b, ja vienosimies, bet \u0161is l\u012bderis iestr\u0113gst sapulc\u0113 vai dodas uz slimn\u012bcu?<\/p>\n<p>L\u012bdz\u012bgas probl\u0113mas past\u0101v izplat\u012btaj\u0101s datoru t\u012bklos. Visiem dal\u012bbniekiem vai mezgliem j\u0101vienojas par k\u0101du risin\u0101jumu, piem\u0113ram, kur\u0161 gatavs atjaunin\u0101t kop\u012bgu failu vai \u0146emt uzdevumu no apstr\u0101des rindas. Kriptoval\u016btu t\u012bkl\u0101 mezgliem vair\u0101kk\u0101rt j\u0101izlemj, k\u0101da ir piln\u012bga v\u0113sture no vair\u0101k\u0101m iesp\u0113j\u0101m, kas da\u017ereiz nesakr\u012bt. \u0160\u012b t\u012bkla vieno\u0161an\u0101s garant\u0113 sa\u0146\u0113m\u0113jam, ka mon\u0113ta ir (a) der\u012bga (neviltojuma) un (b) v\u0113l nav izt\u0113r\u0113ta citur. T\u0101 ar\u012b garant\u0113, ka vi\u0146\u0161 var\u0113s izt\u0113r\u0113t mon\u0113tas n\u0101kotn\u0113, jo jaunajam sa\u0146\u0113m\u0113jam b\u016bs t\u0101s pa\u0161as garantijas to pa\u0161u iemeslu d\u0113\u013c.<\/p>\n<p>Jebkurai vieno\u0161an\u0101s sist\u0113mai izplat\u012btaj\u0101 skait\u013co\u0161anas t\u012bkl\u0101 ir j\u0101b\u016bt k\u013c\u016bdu iztur\u012bgai: tai j\u0101sniedz konsekventi rezult\u0101ti, neskatoties uz k\u013c\u016bd\u0101m, piem\u0113ram, l\u0113n\u0101m sakaru l\u012bnij\u0101m, nere\u0123istr\u0113tiem mezgliem un nepareiziem zi\u0146ojumu sec\u012bb\u0101m. <i>Bizantijas<\/i> vieno\u0161an\u0101s sist\u0113ma ir papildus notur\u012bga pret \"bizantie\u0161u\" k\u013c\u016bd\u0101m: mezgli, kuri sniedz nepatiesu inform\u0101ciju, vai nu k\u013c\u016bdas d\u0113\u013c, vai ar nodomu, lai sagrautu sist\u0113mu vai g\u016btu k\u0101du priek\u0161roc\u012bbu. \"Bizantijas\" k\u013c\u016bdu iztur\u012bba \u2014 sp\u0113ja uztic\u0113ties grupas l\u0113mumam, pat ja da\u017ei grupas dal\u012bbnieki var melo vai cit\u0101di notur\u0113t l\u0113mumu pie\u0146em\u0161anas noteikumus \u2014 ir nosaukta p\u0113c <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\">Bizantijas imp\u0113rijas \u0123ener\u0101\u013cu pasakas<\/a><\/noindex>, kuri m\u0113\u0123in\u0101ja saska\u0146ot uzbrukumu. <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\">Lab\u0101kais apraksts<\/a><\/noindex> ir pie Enthony Stevena.<\/p>\n<p>Apsveriet kriptoval\u016btas \u012bpa\u0161nieku Alisu, kura ir j\u0101izv\u0113las starp gardas sald\u0113juma ieg\u0101di no Boba un par\u0101da apmaksu Kerolai. Iesp\u0113jams, Alisa v\u0113las maks\u0101t abiem uzreiz, kr\u0101pnieciski izt\u0113r\u0113jot to pa\u0161u mon\u0113tu. Lai to izdar\u012btu, vi\u0146ai j\u0101nodro\u0161ina Boba dators, ka mon\u0113ta nekad nav izmaks\u0101ta Kerolai, un j\u0101nodro\u0161ina Kerolas dators, ka mon\u0113ta nekad nav izmaks\u0101ta Bobam. Bizantisk\u0101 vieno\u0161an\u0101s sist\u0113ma faktiski padara to neiesp\u0113jamu, izmantojot vair\u0101kuma principa formu, ko sauc par <i>kvotu<\/i>. Mezgls \u0161\u0101d\u0101 t\u012bkl\u0101 atsak\u0101s pie\u0146emt noteiktu v\u0113stures versiju, kam\u0113r neredz, ka pietiekami liels skaits vien\u0101du mezglu \u2013 kvots \u2013 piekr\u012bt \u0161\u0101dai p\u0101rejai. Kad tas notiks, vi\u0146i izveidos pietiekami lielu v\u0113l\u0113\u0161anu grupu, lai piespiestu p\u0101r\u0113jos t\u012bkla mezglus piekrist vi\u0146u l\u0113mumam. Alisa var piespiest da\u017eus mezglus melot vi\u0146as v\u0101rd\u0101, bet, ja t\u012bkls ir pietiekami liels, vi\u0146as m\u0113\u0123in\u0101jums tiks apspiests ar god\u012bgu mezglu bals\u012bm.<\/p>\n<p>Cik mezglu nepiecie\u0161ams kvotai? Vismaz vairums, prec\u012bz\u0101k, kvalific\u0113ts vair\u0101kums, lai c\u012bn\u012btos ar k\u013c\u016bd\u0101m un kr\u0101pniec\u012bbu. Bet, lai saskait\u012btu vair\u0101kumu, ir j\u0101zina kop\u0113jais dal\u012bbnieku skaits. Interstellar biroj\u0101 vai apgabala v\u0113l\u0113\u0161an\u0101s \u0161ie skait\u013ci ir viegli nosak\u0101mi. Bet, ja j\u016bsu grupa ir v\u0101ji defin\u0113ta t\u012bkls, kur mezgli var ien\u0101kt un izn\u0101kt p\u0113c savas izv\u0113les bez saska\u0146o\u0161anas ar centru, tad nepiecie\u0161ama <i>federat\u012bv\u0101<\/i> bizantisk\u0101 vieno\u0161an\u0101s sist\u0113ma, kas sp\u0113j noteikt kvotas nevis no iepriek\u0161 noteikta mezglu saraksta, bet dinamiski, no past\u0101v\u012bgi main\u012bga un neizb\u0113gami nepiln\u012bga mezglu att\u0113la noteikt\u0101 br\u012bd\u012b.<\/p>\n<p>Var \u0161\u0137ist neiesp\u0113jami izveidot kvotu no viena mezgla viedok\u013ca pla\u0161\u0101 t\u012bkl\u0101, bet tas ir iesp\u0113jams. \u0160\u0101da kvota pat var garant\u0113t decentraliz\u0113tu balso\u0161anas rezult\u0101tu. Tehniskaj\u0101 dokument\u0101 SCP tiek par\u0101d\u012bts, k\u0101 to izdar\u012bt, izmantojot proced\u016bru, ko sauc par <i>federat\u012bvo balso\u0161anu<\/i>.<\/p>\n<h1>Steidz\u012bgiem<\/h1>\n<p>\nP\u0101r\u0113j\u0101 raksta da\u013ca detaliz\u0113ti apraksta federat\u012bvo balso\u0161anu un Stellar konsensa protokolu. Ja jums neinteres\u0113 deta\u013cas, \u0161eit ir visp\u0101r\u0113js procesa p\u0101rskats.<\/p>\n<ol>\n<li>Mikrosh\u0113mas veic feder\u0101l\u0101 balso\u0161anas raunda par \"nominantiem\". Feder\u0101l\u0101 balso\u0161anas raunds noz\u012bm\u0113:\n<ul>\n<li>Mikrosh\u0113ma balso par k\u0101du apstiprin\u0101jumu, piem\u0113ram, \"Es pied\u0101v\u0101ju V v\u0113rt\u012bbu\";\n<\/li>\n<li>Mikrosh\u0113ma klaus\u0101s balsojumus no dal\u012bbniekiem, l\u012bdz atrod to, kur\u0161 var \"apstiprin\u0101t\";\n<\/li>\n<li>Mikrosh\u0113ma mekl\u0113 \"kvorumu\" \u0161im apstiprin\u0101jumam. Kvorums \"apstiprina\" nominantu.<\/li>\n<\/ul>\n<\/li>\n<li>Kad mikrosh\u0113ma var apstiprin\u0101t vienu vai vair\u0101kus nominantus, t\u0101 cen\u0161as \"sagatavot\" \"balsi\" caur vair\u0101kiem feder\u0101l\u0101 balso\u0161anas raundiem.\n<\/li>\n<li>Kad mikrosh\u0113ma sp\u0113j p\u0101rbaud\u012bt, ka balss ir gatava, t\u0101 cen\u0161as to apstiprin\u0101t ar v\u0113l vair\u0101k feder\u0101l\u0101 balso\u0161anas raundiem.\n<\/li>\n<li>Kad mikrosh\u0113ma var apstiprin\u0101t balss apstiprin\u0101jumu, t\u0101 var \"eksternaliz\u0113t\" \u0161\u012bs balss v\u0113rt\u012bbu, izmantojot to k\u0101 konsensa rezult\u0101tu.<\/li>\n<\/ol>\n<p>\n\u0160ie so\u013ci ietver vair\u0101kus feder\u0101l\u0101 balso\u0161anas raundus, kas kopum\u0101 veido vienu SCP raundu. Izskat\u012bsim s\u012bk\u0101k, kas notiek katr\u0101 sol\u012b.<\/p>\n<h1>Feder\u0101l\u0101 balso\u0161ana<\/h1>\n<p>\nFeder\u0101l\u0101 balso\u0161ana ir proced\u016bra, lai noteiktu, vai t\u012bkls var saska\u0146ot priek\u0161likumu. Balso\u0161anas raund\u0101 katrai mikrosh\u0113mai ir j\u0101izv\u0113las viena no potenci\u0101li daudzaj\u0101m iesp\u0113jam\u0101m v\u0113rt\u012bb\u0101m. Vi\u0146\u0161 to nevar izdar\u012bt, kam\u0113r nav p\u0101rliecin\u0101ts, ka citas mikrosh\u0113mas t\u012bkl\u0101 neizv\u0113l\u0113s citu rezult\u0101tu. Lai b\u016btu p\u0101rliecin\u0101tas par to, mikrosh\u0113mas apmain\u0101s ar zi\u0146ojumu spr\u0101dzieniem \u0161urpu turpu, lai katra <i>apstiprin\u0101tu<\/i>, ka <i>kvorums<\/i> mikrosh\u0113mu <i>pie\u0146em<\/i> to pa\u0161u <i>risin\u0101jumu<\/i>. \u0160\u012b sada\u013ca skaidro terminus \u0161aj\u0101 teikum\u0101 un to, k\u0101 norit visa proced\u016bra.<\/p>\n<h1>Kvorumi un kvoruma griezumi<\/h1>\n<p>\nS\u0101ksim ar kvoruma defin\u0113\u0161anu. K\u0101 m\u0113s iepriek\u0161 apspried\u0101m, decentraliz\u0113t\u0101 t\u012bkl\u0101 ar dinamisku dal\u012bbu nav iesp\u0113jams iepriek\u0161 zin\u0101t mikrosh\u0113mu skaitu un, l\u012bdz ar to, cik vajag vair\u0101kumam. Feder\u0101l\u0101 balso\u0161ana risina \u0161o probl\u0113mu, ievie\u0161ot jaunu ideju <i>kvoruma griezuma<\/i> (quorum slice): neliela vienl\u012bdz\u012bgu mikrosh\u0113mu kopums, kuram mikrosh\u0113ma uzticas, lai nodotu inform\u0101ciju par balso\u0161anas st\u0101vokli p\u0101r\u0113jai t\u012bkla da\u013cai. Katr\u0101 mikrosh\u0113m\u0101 ir sava kvoruma griezuma defin\u012bcija (kuram t\u0101 faktiski pieder).<\/p>\n<p>Kvoruma veido\u0161ana s\u0101kas ar kvoruma griezumu. Katram mezglam tiek pievienoti t\u0101 griezuma mezgli. Tad tiek pievienoti griezuma dal\u012bbnieki <i>\u0161o mezglu<\/i> un t\u0101 t\u0101l\u0101k. Turpinoties, tiek sastapti arvien vair\u0101k mezglu, kurus nevar pievienot, jo tie jau ir iek\u013cauti griezum\u0101. Kad vairs nav jaunu mezglu, ko pievienot, process apst\u0101jas: m\u0113s esam izveidoju\u0161i kvorumu, veicot s\u0101kotn\u0113j\u0101 mezgla kvoruma griezuma \u2018transit\u012bvo sl\u0113g\u0161anu\u2019.<\/p>\n<p><img decoding=\"async\" alt=\"Izprotam Stellar konsensa protokolu\" src=\"\/wp-content\/uploads\/2019\/03\/6991e3f9a22d920e4a5e9c161f32dee1.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Lai atrastu kvorumu no dot\u0101 mezgla\u2026<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Izprotam Stellar konsensa protokolu\" src=\"\/wp-content\/uploads\/2019\/03\/52b3d435a8f4a67b56deb43c83fee828.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>\u2026 pievienojam t\u0101 griezuma dal\u012bbniekus\u2026<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Izprotam Stellar konsensa protokolu\" src=\"\/wp-content\/uploads\/2019\/03\/0820e9ca560caf9ebfa92db8e7a1da85.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>\u2026 tad pievienojam \u0161o mezglu griezumu dal\u012bbniekus.<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Izprotam Stellar konsensa protokolu\" src=\"\/wp-content\/uploads\/2019\/03\/539933eb3c279fa7da68fc9049516fc8.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Turpin\u0101m, l\u012bdz nav paliku\u0161i mezgli, ko pievienot.<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Izprotam Stellar konsensa protokolu\" src=\"\/wp-content\/uploads\/2019\/03\/48058639262412514641063a10503a01.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<img decoding=\"async\" alt=\"Izprotam Stellar konsensa protokolu\" src=\"\/wp-content\/uploads\/2019\/03\/d068fb06f35337ae68c35b4606f329ae.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Nav paliku\u0161i mezgli, ko pievienot. Tas ir kvorums.<\/i><\/p>\n<p>Paties\u012bb\u0101 katrs mezgls var b\u016bt vair\u0101k nek\u0101 vien\u0101 griezum\u0101. Lai izveidotu kvorumu, izv\u0113lieties tikai vienu no griezumiem un pievienojiet dal\u012bbniekus; p\u0113c tam izv\u0113lieties jebkuru griezumu katram dal\u012bbniekam un pievienojiet dal\u012bbniekus <i>\u0161ie<\/i> griezums un t\u0101 t\u0101l\u0101k. Tas noz\u012bm\u0113, ka katrs mezgls ir vair\u0101ku iesp\u0113jamo kvorumu dal\u012bbnieks.<\/p>\n<p><img decoding=\"async\" alt=\"Izprotam Stellar konsensa protokolu\" src=\"\/wp-content\/uploads\/2019\/03\/3427406c132cfd1cd174b856a1239908.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Izv\u0113lieties tikai vienu kvoruma griezumu katr\u0101 sol\u012b.<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Izprotam Stellar konsensa protokolu\" src=\"\/wp-content\/uploads\/2019\/03\/79a8728890ecb36b2e127b1b76c44fc8.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<img decoding=\"async\" alt=\"Izprotam Stellar konsensa protokolu\" src=\"\/wp-content\/uploads\/2019\/03\/22fe0422c73cdf5fb5416e389934c5c3.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<img decoding=\"async\" alt=\"Izprotam Stellar konsensa protokolu\" src=\"\/wp-content\/uploads\/2019\/03\/60379efdde3b88fb9c86de6c5b4a0b62.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Viens iesp\u0113jams kvorums. Vai alternat\u012bva versija\u2026<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Izprotam Stellar konsensa protokolu\" src=\"\/wp-content\/uploads\/2019\/03\/341f1e897be1474ee2d67324da2134b1.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>\u2026 izv\u0113lamies citus griezumus\u2026<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Izprotam Stellar konsensa protokolu\" src=\"\/wp-content\/uploads\/2019\/03\/8a6d605050b075bf935e6151bd1cbe2c.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<img decoding=\"async\" alt=\"Izprotam Stellar konsensa protokolu\" src=\"\/wp-content\/uploads\/2019\/03\/865567aa370605b7cf10da3457c3d158.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>...(kad tas ir iesp\u0113jams)...<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Izprotam Stellar konsensa protokolu\" src=\"\/wp-content\/uploads\/2019\/03\/6343f774104454d62e7c8681bf25dbcb.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>\u2026 rada citu kvorumu.<\/i><\/p>\n<p>K\u0101 mezgls uzzina, k\u0101dos griezumos ir citi mezgli? Tie\u0161i t\u0101pat k\u0101 par citu mezglu inform\u0101ciju: no p\u0101rraid\u0113m, kuras katrs mezgls p\u0101rraida t\u012bkl\u0101, kad main\u0101s t\u0101 balso\u0161anas st\u0101voklis. Katrs raid\u012bjums ietver inform\u0101ciju par s\u016bt\u012bt\u0101ja mezgla griezumiem. Tehniskaj\u0101 dokument\u0101 SCP nav nor\u0101d\u012bts komunik\u0101cijas meh\u0101nisms. Realiz\u0101cijas parasti izmanto <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Gossip_protocol\">gossip protokolu<\/a><\/noindex> lai nodro\u0161in\u0101tu zi\u0146ojumu p\u0101rraidi vis\u0101 t\u012bkl\u0101.<\/p>\n<p>J\u0101atg\u0101dina, ka nefedervat\u012bvaj\u0101 Bizantijas vieno\u0161an\u0101s sist\u0113m\u0101 kvorums tiek noteikts k\u0101 visu mezglu vair\u0101kums. Bizantijas vieno\u0161an\u0101s sist\u0113ma ir izstr\u0101d\u0101ta, \u0146emot v\u0113r\u0101 jaut\u0101jumu: cik negod\u012bgu mezglu sist\u0113ma sp\u0113j iztur\u0113t? N mezglu sist\u0113m\u0101, kas projekt\u0113ta izdz\u012bvo\u0161anai pie f k\u013c\u016bd\u0101m (kr\u0101p\u0161an\u0101m), mezglam j\u0101sp\u0113j pan\u0101kt progresu, sa\u0146emot atbildes no N\u2212f dal\u012bbniekiem, jo f no tiem iesp\u0113jams, ka nedarbojas. Ta\u010du, sa\u0146emot atbildi no N\u2212f dal\u012bbniekiem, var pie\u0146emt, ka visi f dal\u012bbnieki (no kuriem mezgls nav sa\u0146\u0113mis atbildi) paties\u012bb\u0101 ir god\u012bgi. T\u0101d\u0113j\u0101di \u013caunpr\u0101t\u012bgi ir f no N\u2212f dal\u012bbniekiem (no kuriem sa\u0146emta atbilde). Lai mezgli non\u0101ktu pie viena konsensa, god\u012bgajiem j\u0101b\u016bt vair\u0101kumam no p\u0101r\u0113jiem mezgliem, tas ir, mums nepiecie\u0161ams, lai N\u2212f b\u016btu liel\u0101ks par 2f vai N &gt; 3f. T\u0101d\u0113\u013c parasti sist\u0113ma, kas paredz\u0113ta izdz\u012bvo\u0161anai pie f k\u013c\u016bd\u0101m, b\u016bs ar kop\u0113jo N=3f+1 mezglu skaitu un kvoruma lielumu 2f+1. Tikl\u012bdz pied\u0101v\u0101jums p\u0101rsniedz kvoruma slieksni, p\u0101r\u0113jie t\u012bkla dal\u012bbnieki ir p\u0101rliecin\u0101ti, ka jebkuri konkur\u0113jo\u0161i pied\u0101v\u0101jumi ciet\u012bs neveiksmi. T\u0101d\u0113j\u0101di t\u012bkls non\u0101k pie rezult\u0101ta.<\/p>\n<p>Ta\u010du federat\u012bvaj\u0101 Bizantijas vieno\u0161an\u0101s sist\u0113m\u0101 ne tikai nevar b\u016bt vair\u0101kuma (jo neviens nezina kop\u0113jo t\u012bkla lielumu), bet ar\u012b vair\u0101kuma j\u0113dziens ir visp\u0101r\u012bgi neizdev\u012bgs! Ja dal\u012bba sist\u0113m\u0101 ir atv\u0113rta, k\u0101ds var izveidot vair\u0101kumu, vienk\u0101r\u0161i veicot t\u0101 saucamo Sivilas uzbrukumu: atk\u0101rtoti pievienojoties t\u012bklam caur vair\u0101kiem mezgliem. T\u0101d\u0113\u013c k\u0101p\u0113c tranzit\u012bv\u0101 sl\u0113g\u0161ana var tikt saukta par <i>kvotu<\/i>, un k\u0101 t\u0101 sp\u0113j nom\u0101kt konkur\u0113jo\u0161us pied\u0101v\u0101jumus?<\/p>\n<p>Tehniski, nek\u0101! Iedom\u0101jieties se\u0161u mezglu t\u012bklu, kur divas tr\u012bsda\u013cas ir izol\u0113tas viena otras kvoruma sl\u0113gumos. Pirmajai apak\u0161grupai var b\u016bt l\u0113mums, par kuru otr\u0101 nekad neuzzin\u0101s, un otr\u0101di. \u0160im t\u012bklam nav veida, k\u0101 pan\u0101kt konsensu (iz\u0146emot nejau\u0161i).<\/p>\n<p>T\u0101d\u0113\u013c SCP prasa, lai federat\u012bvajai balso\u0161anai (un svar\u012bgo panti\u0146u piem\u0113ro\u0161anai) t\u012bkls b\u016btu ar \u012bpa\u0161\u012bbu, ko sauc par <i>kvorumu krustpunkti<\/i>. T\u012bkl\u0101 ar \u0161o \u012bpa\u0161\u012bbu jebkuri divi kv\u014drumi, kurus var izveidot, vienm\u0113r sakr\u012bt vismaz vien\u0101 mezgl\u0101. Lai noteiktu t\u012bkla domin\u0113jo\u0161os noska\u0146ojumus, tas ir tikpat labi, k\u0101 ieg\u016bt vair\u0101kumu. Intuit\u012bvi tas noz\u012bm\u0113, ka, ja k\u0101ds kv\u014drums piekr\u012bt apgalvojumam X, neviens cits kv\u014drums nekad nevar\u0113s piekrist kaut kam citam, jo tam noteikti b\u016bs k\u0101ds mezgls no pirm\u0101 kv\u014druma, kas jau ir balsojis par X.<\/p>\n<p><img decoding=\"async\" alt=\"Izprotam Stellar konsensa protokolu\" src=\"\/wp-content\/uploads\/2019\/03\/5b0aeec99e285b4bbeb92ec5b8dfe69d.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Ja t\u012bkl\u0101 ir kv\u014drumu p\u0101rkl\u0101\u0161an\u0101s\u2026<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Izprotam Stellar konsensa protokolu\" src=\"\/wp-content\/uploads\/2019\/03\/bdb3866cb02fb5991446f0cb0fa5a4fd.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>\u2026tad jebkuri divi kv\u014drumi, kurus j\u016bs varat izveidot\u2026<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Izprotam Stellar konsensa protokolu\" src=\"\/wp-content\/uploads\/2019\/03\/29ee8d1ce9fba6c5c24386ce1c1c639b.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>\u2026vienm\u0113r b\u016bs p\u0101rkl\u0101\u0161an\u0101s.<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Izprotam Stellar konsensa protokolu\" src=\"\/wp-content\/uploads\/2019\/03\/6f1ef2b9896669c10fd19f1acd52db70.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<img decoding=\"async\" alt=\"Izprotam Stellar konsensa protokolu\" src=\"\/wp-content\/uploads\/2019\/03\/6849569e849ac3b5487d31e0bf22a596.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n(Protams, p\u0101rkl\u0101jo\u0161ie mezgli var b\u016bt ar\u012b bizantij\u0101 viltus vai slikti cit\u0101s attiec\u012bb\u0101s. \u0160aj\u0101 gad\u012bjum\u0101 kv\u014drumu p\u0101rkl\u0101\u0161an\u0101s nesniedz t\u012bklam iesp\u0113ju piekrist visp\u0101r. T\u0101d\u0113\u013c daudzi rezult\u0101ti tehniskaj\u0101 dokument\u0101 SCP balst\u0101s uz skaidri izteiktiem pie\u0146\u0113mumiem, piem\u0113ram, ka t\u012bkl\u0101 joproj\u0101m past\u0101v kv\u014drumu p\u0101rkl\u0101\u0161an\u0101s <i>pat p\u0113c slikto mezglu no\u0146em\u0161anas<\/i>. Vienk\u0101r\u0161\u012bbas labad atst\u0101sim \u0161os pie\u0146\u0113mumus <i>neizteiktus<\/i> p\u0101r\u0113j\u0101 raksta da\u013c\u0101).<\/p>\n<p>Var \u0161\u0137ist nelo\u0123iski gaid\u012bt, ka t\u012bkl\u0101 no neatkar\u012bgiem mezgliem ir iesp\u0113jama uzticama kv\u014drumu p\u0101rkl\u0101\u0161an\u0101s. Bet ir divi iemesli, k\u0101p\u0113c tas ir t\u0101.<\/p>\n<p>Pirmais iemesls ir pa\u0161a interneta esam\u012bba. Internets ir ide\u0101ls neatkar\u012bgu mezglu t\u012bkla piem\u0113rs ar kv\u014drumu p\u0101rkl\u0101\u0161anos. Liel\u0101k\u0101 da\u013ca mezglu internet\u0101 savienojas tikai ar da\u017eiem citiem lok\u0101liem mezgliem, bet \u0161ie nelielie kopumi p\u0101rkl\u0101jas pietiekami, lai katrs mezgls b\u016btu pieejams no katra cita mezgla pa vienu vai otru mar\u0161rutu.<\/p>\n<p>Otra iemesls ir specifisks Stellar maks\u0101jumu t\u012bklam (visbie\u017e\u0101k izmanto SCP). Katrai akt\u012bvai Stellar t\u012bkl\u0101 ir emitents, un Stellar ieteikumi prasa, lai katram emitentam tiktu iecelti viens vai vair\u0101ki mezgli t\u012bkl\u0101, lai apstr\u0101d\u0101tu izsnieg\u0161anas piepras\u012bjumus. J\u016bsu interes\u0113s ir tie\u0161i vai netie\u0161i iek\u013caut \u0161os mezglus kvoruma grie\u0161anas grozos katram j\u016bsu interes\u0113jo\u0161am akt\u012bvam. P\u0113c tam kvorumi visiem mezgliem, kas ir ieinteres\u0113ti konkr\u0113taj\u0101 akt\u012bv\u0101, b\u016bs satikti vismaz \u0161ajos izsnieg\u0161anas mezglos. Mezgli, kas ir ieinteres\u0113ti vair\u0101kos akt\u012bvos, iek\u013caus savos kvoruma grie\u0161anas grozos visus attiec\u012bgo emitentu izsnieg\u0161anas mezglus, un vi\u0146i cent\u012bsies apvienot visus akt\u012bvus kop\u0101. Turkl\u0101t jebkuri akt\u012bvi, kas nav savienoti \u0161\u0101d\u0101 veid\u0101 ar citiem t\u012bkl\u0101, un <i>nedr\u012bkst b\u016bt saist\u012bti<\/i> \u2014 tas ir dom\u0101ts, lai \u0161im t\u012bklam neb\u016btu kvoruma p\u0101rkl\u0101\u0161an\u0101s (piem\u0113ram, dol\u0101ra zon\u0101 eso\u0161ie bankas da\u017ereiz v\u0113las tirgoties ar eiro zonas bank\u0101m un peso zonas bank\u0101m, t\u0101p\u0113c t\u0101s ir vien\u0101 t\u012bkl\u0101, bet nevienam no vi\u0146iem nav intereses par atsevi\u0161\u0137u t\u012bklu b\u0113rniem, kas tirgo beisbola kartes).<\/p>\n<p>Protams, <i>gaid\u012b\u0161ana<\/i> kvoruma p\u0101rkl\u0101\u0161an\u0101s nav <i>garantija<\/i>. Citas Bizantijas vieno\u0161an\u0101s sist\u0113mas sava sare\u017e\u0123\u012bt\u012bbas d\u0113\u013c liel\u0101 m\u0113r\u0101 ir atkar\u012bgas no kvorumu garantijas. Svar\u012bgs SCP jaunums ir tas, ka tas no\u0146em atbild\u012bbu par kvorumu veido\u0161anu no pa\u0161a konsensusa algoritma un p\u0101rvada to uz lietojumprogrammu l\u012bmeni. T\u0101d\u0113j\u0101di, lai gan federat\u012bv\u0101 balso\u0161ana ir pietiekami visp\u0101r\u012bga, lai balsotu par jebkuriem jaut\u0101jumiem, t\u0101s uzticam\u012bba faktiski ir kritiski atkar\u012bga no \u0161o v\u0113rt\u012bbu pla\u0161\u0101ka j\u0113ga. Da\u017ei hipot\u0113tiski lieto\u0161anas veidi var izr\u0101d\u012bties ne tik \u0113rti, lai izveidotu labi savienotus t\u012bklus, k\u0101 citi.<\/p>\n<h1>Balso\u0161ana, apstiprin\u0101\u0161ana un apstiprin\u0101jums<\/h1>\n<p>\nFederat\u012bv\u0101s balso\u0161anas k\u0101rt\u0101 mezgls opcionaliz\u0113ti s\u0101k balsot par k\u0101du v\u0113rt\u012bbu V. Tas noz\u012bm\u0113, ka tiek izplat\u012bts t\u012bkl\u0101 zi\u0146ojums: 'Es esmu mezgls N, mani kvoruma sagriezumi Q, un es balsoju par V'. Kad mezgls t\u0101 balsos, vi\u0146\u0161 apsola, ka nekad nav balsojis pret V un nekad neb\u016bs.<\/p>\n<p>Vienu laika, no savstarp\u0113jiem mezgliem katrs mezgls redz, k\u0101 citi balso. Tikl\u012bdz mezgls sav\u0101ks pietiekami daudz \u0161\u0101du zi\u0146ojumu, tas var izsekot kvotu griezumiem un m\u0113\u0123in\u0101t atrast kvot\u0101s. Ja tas redz mezglu kvotu, kas ar\u012b balso par V, tas var p\u0101riet uz <i>pie\u0146em\u0161anu<\/i> V un izplat\u012bt \u0161o jauno zi\u0146ojumu t\u012bkl\u0101: \u00abEs esmu mezgls N, mani kvotu griezumi Q, un es pie\u0146emu V\u00bb. Pie\u0146em\u0161ana nodro\u0161ina sp\u0113c\u012bg\u0101ku garantiju nek\u0101 parasta balso\u0161ana. Kad mezgls balso par V, tas nekad nevar balsot par citiem variantiem. Bet, ja mezgls pie\u0146em V, neviens mezgls t\u012bkl\u0101 nekad nepie\u0146ems citu variantu (teorema 8 SCP tehniskaj\u0101 dokument\u0101 to pier\u0101da).<\/p>\n<p>Protams, ir liela iesp\u0113ja, ka t\u016bl\u012bt neatrad\u012bsies kvota mezglu, kas piekristu V. Citi mezgli var balsot par citiem v\u0113rt\u012bb\u0101m. Bet mezglam ir v\u0113l viens veids, k\u0101 p\u0101riet no parasta balso\u0161anas uz pie\u0146em\u0161anu. N var pie\u0146emt citu v\u0113rt\u012bbu W, pat ja nav balsojis par to, un pat ja tas neredz kvotu tai. Lai main\u012btu savu balsojumu, pietiek redz\u0113t <i>blo\u0137\u0113jo\u0161o kopumu<\/i> mezglu, kas pie\u0146\u0113mu\u0161i W. Blo\u0137\u0113jo\u0161ais kopums ir pa vienam mezglam no katra kvotu griezuma N. K\u0101 nor\u0101d\u012bts nosaukum\u0101, tas sp\u0113j <i>blo\u0137\u0113t<\/i> jebkuru citu v\u0113rt\u012bbu. Ja visi mezgli \u0161\u0101d\u0101 kopum\u0101 pie\u0146em W, tad (saska\u0146\u0101 ar teoremu 8) nekad neb\u016bs iesp\u0113jams izveidot kvotu, kas pie\u0146em cita v\u0113rt\u012bbu, un t\u0101p\u0113c N ir dro\u0161i pie\u0146emt W.<\/p>\n<p><img decoding=\"async\" alt=\"Izprotam Stellar konsensa protokolu\" src=\"\/wp-content\/uploads\/2019\/03\/6dd4ec5595ab863daf684fec670d83a6.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Mezgls N ar trim kvotu griezumiem.<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Izprotam Stellar konsensa protokolu\" src=\"\/wp-content\/uploads\/2019\/03\/b65e32160570af2883eef9990a74e3bd.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>B-D-F ir blo\u0137\u0113jo\u0161ais kopums N: tas ietver pa vienam mezglam no katra griezuma N.<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Izprotam Stellar konsensa protokolu\" src=\"\/wp-content\/uploads\/2019\/03\/7e17b4a9ee83aac7fa2b68b2f9fae066.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>B-E ar\u012b ir blo\u0137\u0113jo\u0161ais kopums N, jo E par\u0101d\u0101s divos N griezumos.<\/i><\/p>\n<p>Bet blo\u0137\u0113jo\u0161ais kopums nav kvota. B\u016btu p\u0101r\u0101k viegli apm\u0101n\u012bt mezglu N, lai tas pie\u0146emtu v\u0113lamo v\u0113rt\u012bbu, ja ir pietiekami uzlauzt viens mezgls katr\u0101 N griezum\u0101. T\u0101p\u0113c v\u0113rt\u012bbas pie\u0146em\u0161ana nav gal\u012bgais balso\u0161anas beigas. T\u0101 viet\u0101 N ir j\u0101apstiprina v\u0113rt\u012bbu, tas ir, redz\u0113t kvotu mezglu, kas to pie\u0146em. Ja tas non\u0101ks l\u012bdz \u0161im, tad, k\u0101 to pier\u0101da SCP tehniskais dokuments (teorema 11), p\u0101r\u0113j\u0101 t\u012bkls ar\u012b visbeidzot apstiprin\u0101s to pa\u0161u v\u0113rt\u012bbu, t\u0101p\u0113c N pabeigs feder\u0101lo balso\u0161anu ar noteiktu v\u0113rt\u012bbu k\u0101 rezult\u0101tu.<\/p>\n<p><img decoding=\"async\" alt=\"Izprotam Stellar konsensa protokolu\" src=\"\/wp-content\/uploads\/2019\/03\/bd68dc5172460c17fa2de54fcc0d9017.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Feder\u0101l\u0101 balso\u0161ana.<\/i><\/p>\n<p>Balso\u0161ana, l\u0113mumu pie\u0146em\u0161ana un apstiprin\u0101\u0161ana ir viens pilns federat\u012bv\u0101s balso\u0161anas aplis. Stellar konsensa protokols apvieno daudzus \u0161\u0101dus ap\u013cus, lai izveidotu piln\u012bgu konsensa sist\u0113mu.<\/p>\n<h1>Stellar konsensa protokols<\/h1>\n<p>\nDivas vissvar\u012bg\u0101k\u0101s konsensa sist\u0113mas \u012bpa\u0161\u012bbas ir <i>dro\u0161\u012bba<\/i> un <i>iztur\u012bba<\/i>. Konsensa algoritms ir \"dro\u0161s\", ja tas nekad nevar sniegt at\u0161\u0137ir\u012bgus rezult\u0101tus da\u017e\u0101diem dal\u012bbniekiem (Boba v\u0113stures kopija nekad neb\u016bs pretrun\u0101 ar K\u0113rolas viedokli). \"Iztur\u012bba\" noz\u012bm\u0113, ka algoritms vienm\u0113r sniegs rezult\u0101tu, tas ir, neiestr\u0113gs.<\/p>\n<p>Aprakst\u012bt\u0101 federat\u012bv\u0101s balso\u0161anas proced\u016bra <i>ir dro\u0161a<\/i> t\u0101d\u0101 noz\u012bm\u0113, ka, ja mezgls apstiprina v\u0113rt\u012bbu V, neviens cits mezgls neapstiprin\u0101s citu v\u0113rt\u012bbu. Ta\u010du \"neapstiprin\u0101t citu v\u0113rt\u012bbu\" nenoz\u012bm\u0113, ka tas oblig\u0101ti apstiprin\u0101s kaut ko. Dal\u012bbnieki var balsot par tik lielu da\u017e\u0101du v\u0113rt\u012bbu skaitu, ka nekas nesasniegs pie\u0146em\u0161anas slieksni. Tas noz\u012bm\u0113, ka federat\u012bvaj\u0101 balso\u0161an\u0101 tr\u016bkst <i>iztur\u012bba<\/i>.<\/p>\n<p>Stellar konsensa protokols izmanto federat\u012bvo balso\u0161anu t\u0101d\u0101 veid\u0101, lai garant\u0113tu gan dro\u0161\u012bbu, gan iztur\u012bbu. (Dro\u0161\u012bbas un iztur\u012bbas garantijas SCP ir teor\u0113tisks limits. Konstrukcija izv\u0113las \u013coti sp\u0113c\u012bgu dro\u0161\u012bbas garantiju, upur\u0113jot nedaudz iztur\u012bbu, bet \u0146emot v\u0113r\u0101 pietiekamu laiku, konsenss ar augstu varb\u016bt\u012bbu tiks sasniegts). Citiem v\u0101rdiem sakot, ideja ir veikt vair\u0101kus federat\u012bvos balsojumus par da\u017e\u0101d\u0101m v\u0113rt\u012bb\u0101m, l\u012bdz viena no t\u0101m piln\u012bb\u0101 iziet cauri vis\u0101m SCP balso\u0161anas f\u0101z\u0113m, kas aprakst\u012btas zem\u0101k.<\/p>\n<p>V\u0113rt\u012bbas, par kur\u0101m SCP tiecas uz konsensu, var b\u016bt dar\u012bjumu v\u0113sture vai pusdienu pas\u016bt\u012bjums vai kas cits, ta\u010du svar\u012bgi atz\u012bm\u0113t, ka t\u0101s nav t\u0101s v\u0113rt\u012bbas, kas tiek pie\u0146emtas vai apstiprin\u0101tas. T\u0101 viet\u0101 federat\u012bv\u0101 balso\u0161ana notiek par <i>apgalvojumiem par \u0161\u012bm v\u0113rt\u012bb\u0101m.<\/i>.<\/p>\n<p>Pirmie federat\u012bv\u0101s balso\u0161anas ap\u013ci notiek <i>izvirz\u012b\u0161anas posm\u0101<\/i> (nomination phase), uz apgalvojumu kopuma veida \"Es izvirzu V\", iesp\u0113jams, par daudz\u0101m da\u017e\u0101d\u0101m v\u0113rt\u012bb\u0101m V. Izvirz\u012b\u0161anas m\u0113r\u0137is ir atrast vienu vai vair\u0101kus apgalvojumus, kas iziet cauri pie\u0146em\u0161anai un apstiprin\u0101\u0161anai.<\/p>\n<p>P\u0113c to verifik\u0113jamo kandid\u0101tu atra\u0161anas SCP p\u0101riet uz balso\u0161anas posmu, kur m\u0113r\u0137is ir atrast k\u0101du <i>bi\u013ceti<\/i> (proti, priek\u0161likuma saturu) un kvorumu, kas var pazi\u0146ot <i>kommitu<\/i> par to (commit). Ja kvorums apstiprina bi\u013cetes ap\u0146em\u0161anos, t\u0101s saturs tiek pie\u0146emts k\u0101 konsenss. Ta\u010du pirms mezgls var balsot par bi\u013cetes ap\u0146em\u0161anu, tam vispirms j\u0101p\u0101rliecina <i>par bi\u013ce\u0161u<\/i> noraid\u012b\u0161anu ar maz\u0101ku skait\u012bt\u0101ja v\u0113rt\u012bbu. \u0160ie so\u013ci \u2014 bi\u013ce\u0161u noraid\u012b\u0161ana, lai atrastu to, par kuru var apstiprin\u0101t ap\u0146em\u0161anos \u2014 ietver vair\u0101kus federat\u012bvos balso\u0161anas ap\u013cus par vair\u0101kiem bi\u013ce\u0161u pazi\u0146ojumiem.<\/p>\n<p>N\u0101kamajos segmentos s\u012bk\u0101k aprakst\u012bts izvirz\u012b\u0161ana un balso\u0161ana.<\/p>\n<h1>Izvirz\u012b\u0161ana<\/h1>\n<p>\nIzvirz\u012b\u0161anas posma s\u0101kum\u0101 katrs mezgls var patst\u0101v\u012bgi izv\u0113l\u0113ties v\u0113rt\u012bbu V un balsot par apstiprin\u0101jumu \"Es izvirzu V\". M\u0113r\u0137is \u0161aj\u0101 posm\u0101 ir apstiprin\u0101t k\u0101das v\u0113rt\u012bbas izvirz\u012b\u0161anu, izmantojot federat\u012bvo balso\u0161anu.<\/p>\n<p>Iesp\u0113jams, pietiekams skaits mezglu balso par pietiekami da\u017e\u0101diem pazi\u0146ojumiem, un nek\u0101ds izvirz\u012bjums nevar sasniegt pie\u0146em\u0161anas slieksni. T\u0101d\u0113\u013c, iz\u0146emot savas nomin\u0101cijas balsis, mezgli \"atspogu\u013co\" savu kaimi\u0146u nomin\u0101cijas. Atspogu\u013co\u0161ana (echo) noz\u012bm\u0113, ka, ja mezgls balso par izvirz\u012bjumu V, bet redz zi\u0146ojumu no kaimi\u0146a, kur\u0161 balso par izvirz\u012bjumu W, tad tas tagad balsos gan par izvirz\u012bjumu V, gan W. (Ne visas kaimi\u0146u balsis tiek atspogu\u013cotas izvirz\u012b\u0161anas laik\u0101, jo tas var novest pie da\u017e\u0101du nominantu plos\u012b\u0161an\u0101s. SCP ietver meh\u0101nismu \u0161\u012bs balsis regul\u0113\u0161anai. \u012asum\u0101, ir formula, lai noteiktu \"priorit\u0101ti\" kaimi\u0146am attiec\u012bb\u0101 uz mezglu, un balsis tiek atspogu\u013cotas tikai augstpr\u0101t\u012bgiem mezgliem. Jo ilg\u0101k notiek izvirz\u012b\u0161ana, jo zem\u0101ks slieksnis, t\u0101d\u0113\u013c mezgls papla\u0161ina kopumu kaimi\u0146u, kuru balsis tas atspogu\u013co. Priorit\u0101tes formula k\u0101 vienu no izejas datiem ietver slotu numuru, t\u0101p\u0113c augstpr\u0101t\u012bgs vienl\u012bdz\u012bgs mezgls vienam slotam var b\u016bt zema priorit\u0101te citam, un otr\u0101di).<\/p>\n<p>Konceptu\u0101li vienlaic\u012bga V un W izvirz\u012b\u0161ana ir atsevi\u0161\u0137i federat\u012bvi balsis, katra sp\u0113j\u012bgi sasniegt akcept\u0113\u0161anu vai apstiprin\u0101jumu. Praks\u0113 SCP protokola zi\u0146ojumi apvieno \u0161\u012bs atsevi\u0161\u0137\u0101s balsis kop\u0101.<\/p>\n<p>Lai gan balso\u0161ana par V izvirz\u012b\u0161anu ir sol\u012bjums nekad nebalsot pret V izvirz\u012b\u0161anu, lietojuma l\u012bmen\u012b \u2013 \u0161aj\u0101 gad\u012bjum\u0101 SCP \u2013 tiek noteikts, ko noz\u012bm\u0113 \"pret\". SCP neredz apstiprin\u0101jumu, kas pretrun\u0101 balsij \"Es izvirzu X\", proti, nav zi\u0146ojuma \"Es esmu pret X izvirz\u012b\u0161anu\", t\u0101p\u0113c mezgls var balsot par jebkuru v\u0113rt\u012bbu izvirz\u012b\u0161anu. Daudzas no \u0161\u012bm nomin\u0101cij\u0101m neizdosies, bet, galu gal\u0101, mezgls sp\u0113s pie\u0146emt vai apstiprin\u0101t vienu vai vair\u0101kas v\u0113rt\u012bbas. Kad nominants ir apstiprin\u0101ts, vi\u0146\u0161 k\u013c\u016bst <i>par kandid\u0101tu<\/i>.<\/p>\n<p><img decoding=\"async\" alt=\"Izprotam Stellar konsensa protokolu\" src=\"\/wp-content\/uploads\/2019\/03\/794f55d076ec3e1773c49d32e29c084d.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>SCP izvirz\u012b\u0161ana, izmantojot federat\u012bvo balso\u0161anu. Var b\u016bt daudz \"B\" v\u0113rt\u012bbu, kuras izvirza vienl\u012bdz\u012bgi mezgli un \"atspogu\u013co\" mezgls.<\/i> <\/p>\n<p>Kandid\u0101tu izvirz\u012b\u0161ana var novest pie vair\u0101ku apstiprin\u0101mu kandid\u0101tu par\u0101d\u012b\u0161an\u0101s. T\u0101p\u0113c SCP prasa, lai lietojuma l\u012bmenis nodro\u0161in\u0101tu k\u0101du metodi, lai apvienotu kandid\u0101tus vien\u0101 <i>kompoz\u012bt\u0101<\/i> (composite). Apvieno\u0161anas metode var b\u016bt jebkura. Galvenais ir tas, ka, ja \u0161\u012b metode ir noteikta, tad katrs mezgls apvienos tos pa\u0161us kandid\u0101tus. V\u0113l\u0113\u0161anu sist\u0113m\u0101 par pusdien\u0101m \"apvieno\u0161ana\" var noz\u012bm\u0113t vienk\u0101r\u0161i atteik\u0161anos no viena no diviem kandid\u0101tiem. (Bet noteikt\u0101 veid\u0101: katram mezglam j\u0101izv\u0113las tas pats v\u0113rt\u0113jums piln\u012bgai noraid\u012b\u0161anai. Piem\u0113ram, iepriek\u0161\u0113j\u0101 izv\u0113le alfab\u0113tisk\u0101 sec\u012bb\u0101). Stellar maks\u0101jumu t\u012bkl\u0101, kur notiek balso\u0161ana par dar\u012bjumu v\u0113sturi, divu pied\u0101v\u0101to nominantu apvieno\u0161ana noz\u012bm\u0113 apvienot dar\u012bjumus, kuri tajos iek\u013cauti, un p\u0113d\u0113j\u0101s no vi\u0146u div\u0101m laika z\u012bm\u0113m.<\/p>\n<p>Tehniskais apraksts SCP pier\u0101da (teorema 12), ka l\u012bdz izvirz\u012b\u0161anas f\u0101zes beig\u0101m t\u012bkls galu gal\u0101 sasniedz vienu kompoz\u012btu. Ta\u010du ir probl\u0113ma: federat\u012bvais balsojums ir asimetrisks protokols (k\u0101 ar\u012b SCP). Citiem v\u0101rdiem sakot, mezgli nav saska\u0146oti laik\u0101, bet tikai zi\u0146ojumos, kurus vi\u0146i nos\u016bta. No mezgla viedok\u013ca nav skaidrs, kad <i>ir pabeigta<\/i> iz\u0146em\u0161anas f\u0101ze. Un, kaut ar\u012b visi mezgli galu gal\u0101 sasniegs to pa\u0161u kompoz\u012btu, tie var izv\u0113l\u0113ties da\u017e\u0101dus mar\u0161rutus \u0161aj\u0101 ce\u013c\u0101, radot pa ce\u013cam da\u017e\u0101dus kandid\u0101tus, un nekad nevar pateikt, kur\u0161 no tiem ir gal\u012bgais.<\/p>\n<p>Bet tas ir k\u0101rt\u012bb\u0101. Iz\u0146em\u0161ana ir tikai sagatavo\u0161an\u0101s. Galvenais ir ierobe\u017eot kandid\u0101tu skaitu, lai sasniegtu konsensu, kas notiek proces\u0101. <i>balso\u0161ana<\/i> (balloting).<\/p>\n<h1>Balsosana<\/h1>\n<p>\nBalsu lapa ir p\u0101ris , kur counter ir vesels skaitlis, kas s\u0101kas ar 1, un value ir kandid\u0101ts no iz\u0146em\u0161anas posma. Tas var b\u016bt mezga pielaikots kandid\u0101ts vai kaimi\u0161a mezga kandid\u0101ts, ko ir pie\u0146\u0113mis \u0161is mezgls. Aptuveni sakot, balso\u0161anas proces\u0101 notiek atk\u0101rtotas centieni pan\u0101kt, lai t\u012bkls sasniegtu konsensu par k\u0101du kandid\u0101tu k\u0101d\u0101 balsojum\u0101, veicot potenci\u0101li daudzas federat\u012bvas balso\u0161anas par balsojuma pazi\u0146ojumiem. Skait\u012bt\u0101ji balsu lap\u0101s seko izdar\u012btajiem m\u0113\u0123in\u0101jumiem, un balsu lapas ar augst\u0101kiem skait\u012bt\u0101jiem ir priorit\u0101ras p\u0101r balsu lap\u0101m ar zem\u0101kiem skait\u012bt\u0101jiem. Ja balsu lapa  iespr\u016bdina, s\u0101kas jauna balso\u0161ana, tagad balsu lap\u0101 .<\/p>\n<p>Ir svar\u012bgi no\u0161\u0137irt <i>v\u0113rt\u012bbas<\/i> (piem\u0113ram, k\u0101ds j\u0101b\u016bt pusdienu pas\u016bt\u012bjumam: pica vai sal\u0101ti), <i>balsu lapas<\/i> (p\u0101ris counter-value) un <i>statements<\/i> par balsu lap\u0101m. SCP k\u0101rta ietver vair\u0101kas federat\u012bvas balso\u0161anas k\u0101rtas, \u012bpa\u0161i par \u0161\u0101d\u0101m pazi\u0146ojumiem:<\/p>\n<ul>\n<li>\u00abEs esmu gatavs pazi\u0146ot balsu lapu B\u00bb un\n<\/li>\n<li>\u00abEs pazi\u0146oju par balsu lapas B apstiprin\u0101\u0161anu\u00bb<\/li>\n<\/ul>\n<p>\nNo \u0161\u012b mezga skata punkta konsenss tiek sasniegts, kad tas atrod balsojumu B, kuru var apstiprin\u0101t (proti, atrast kvorumu, kur\u0161 pie\u0146em) pazi\u0146ojumu \u00abEs pazi\u0146oju par balsu lapas B apstiprin\u0101\u0161anu\u00bb. No \u0161\u012b br\u012b\u017ea var dro\u0161i r\u012bkoties saska\u0146\u0101 ar V nor\u0101d\u012bto v\u0113rt\u012bbu - piem\u0113ram, veikt \u0161o pusdienu pas\u016bt\u012bjumu. To sauc par <i>eksternaliz\u0101ciju<\/i> v\u0113rt\u012bbas. Tikl\u012bdz tiek apstiprin\u0101ta balsu lapas pie\u0146em\u0161ana, mezgls var b\u016bt dro\u0161s, ka jebkur\u0161 cits mezgls ir veikusi eksteranliz\u0101ciju par \u0161o pa\u0161u v\u0113rt\u012bbu vai oblig\u0101ti to veiks n\u0101kotn\u0113.<\/p>\n<p>Lai gan konceptu\u0101li daudzas federat\u012bv\u0101s balso\u0161anas tiek veiktas par pazi\u0146ojumiem par daudziem da\u017e\u0101diem bi\u013ceteniem, t\u0101s apmain\u0101s ar ne tik lielu zi\u0146ojumu skaitu, jo katrs zi\u0146ojums ietver vair\u0101kus bi\u013cetenus. T\u0101d\u0113j\u0101di viens zi\u0146ojums veicina daudzu federat\u012bvo balsojumu st\u0101vokli, piem\u0113ram: \"Es pie\u0146emu bi\u013cetenu komit\u0113\u0161anu diapazon\u0101 no  l\u012bdz \".<\/p>\n<p>Ko noz\u012bm\u0113 termini \"sagatavots\" (prepared) un \"komit\u0113t\" (commit)?<\/p>\n<p>Me\u017es balso par bi\u013cetena komit\u0113\u0161anu, kad tas ir p\u0101rliecin\u0101ts, ka citi me\u017ei neveiks bi\u013cetenu komit\u0113\u0161anu ar citiem v\u0113rt\u012bb\u0101m. P\u0101rliecin\u0101t\u012bba par to ir sagatavo\u0161anas pazi\u0146ojuma m\u0113r\u0137is. Balso\u0161ana, kur\u0101 teikts: \"Es esmu gatavs bi\u013cetena B komit\u0113\u0161anai\", ir sol\u012bjums nekad nekomit\u0113t bi\u013cetu, kas ir maz\u0101ks par B, t.i., ar maz\u0101ku skait\u012bt\u0101ju (SCP prasa, lai bi\u013cetenu v\u0113rt\u012bbas b\u016btu noteikt\u0101 sec\u012bb\u0101. T\u0101d\u0113j\u0101di bi\u013cetens  ir maz\u0101ks par , ja N1&lt;N2, k\u0101 ar\u012b ja N1=N2 un V1&lt;V2). \u0160ie maz\u0101kie bi\u013ceteni &quot;atcelti&quot; (aborted) sagatavo\u0161anas balso\u0161anas gait\u0101, kam\u0113r B tiek uzskat\u012bts par &quot;sagatavotu&quot;.<\/p>\n<p>K\u0101p\u0113c \"Es esmu gatavs bi\u013cetena B komit\u0113\u0161anai\" noz\u012bm\u0113 \"Es sol\u012bju nekad nekomit\u0113t bi\u013cetenus, kas ir maz\u0101ki par B\"? T\u0101p\u0113c, ka SCP defin\u0113 abortu k\u0101 pretstatu komit\u0113\u0161anai. Balso\u0161ana par bi\u013cetena sagatavo\u0161anu noz\u012bm\u0113 ar\u012b balso\u0161anu par citu bi\u013cetenu atcel\u0161anu, un, k\u0101 m\u0113s iepriek\u0161 apspried\u0101m, balso\u0161ana par kaut ko vienu ir sol\u012bjums nekad nebalsot pret to.<\/p>\n<p>Pirms transformat\u012bv\u0101 komit\u0113\u0161ana, me\u017eam vispirms j\u0101dod bi\u013cetens, kuru tas var apstiprin\u0101t k\u0101 sagatavotu. Citiem v\u0101rdiem sakot, tas veic federat\u012bvo balso\u0161anu par t\u0113mu \"Es esmu gatavs bi\u013cetena B komit\u0113\u0161anai\", iesp\u0113jams, par daudziem da\u017e\u0101diem bi\u013ceteniem, l\u012bdz tas atrod to, kuru pie\u0146em kvorums.<\/p>\n<p>Noz\u012bm\u0113, k\u0101 tiek ieg\u016bti bi\u013ceteni balso\u0161anai? S\u0101kum\u0101 mezgls translat\u0113 sagatavi balso\u0161anai par , kur C ir kompoz\u012btkandid\u0101ts, izstr\u0101d\u0101ts izvirz\u012b\u0161anas stadij\u0101. Tom\u0113r pat p\u0113c balso\u0161anas sagataves uzs\u0101k\u0161anas izvirz\u012b\u0161ana var novest pie jaunu kandid\u0101tu par\u0101d\u012b\u0161an\u0101s, kuri k\u013c\u016bs par jaunajiem bi\u013ceteniem. Turkl\u0101t dal\u012bbniekiem var b\u016bt da\u017e\u0101di kandid\u0101ti, un vi\u0146i var izveidot blo\u0137\u0113jo\u0161u kopumu, kas pie\u0146em \"Es esmu gatavs apstiprin\u0101t bi\u013cetenu B2\", kas p\u0101rliecin\u0101s mezglu to pie\u0146emt. Beig\u0101s ir laika ierobe\u017eojuma meh\u0101nisms, kas \u0123ener\u0113 jaunus feder\u0101lo balso\u0161anas ap\u013cus ar jaunajiem bi\u013ceteniem ar augst\u0101kiem skait\u012bt\u0101jiem, ja pa\u0161reiz\u0113jie bi\u013ceteni ir iestr\u0113gu\u0161i.<\/p>\n<p>Kad mezgls atrod bi\u013cetenu V, kuru var apstiprin\u0101t k\u0101 sagatavotu, tas translat\u0113 jaunu zi\u0146u \"Apstiprin\u0101t bi\u013cetenu V\". \u0160is balsojums inform\u0113 dal\u012bbniekus, ka mezgls nekad neatteiksies no V. Paties\u012bb\u0101, ja V ir bi\u013cetens , tad \"Apstiprin\u0101t bi\u013cetenu \" noz\u012bm\u0113 beznosac\u012bjuma piekri\u0161anu balsot par katra bi\u013cetena gatav\u012bbu no  l\u012bdz . \u0160\u012b papildu noz\u012bme pal\u012bdz citiem mezgliem no\u0146emt dal\u012bbnieku ar apstiprin\u0101\u0161anu, ja tie v\u0113l ir agr\u0101kajos protokola posmos.<\/p>\n<p>\u0160aj\u0101 posm\u0101 joproj\u0101m ir svar\u012bgi uzsv\u0113rt, ka t\u0101s ir asinkronie protokoli. Tikai t\u0101p\u0113c, ka viens mezgls nos\u016bta balsis par apstiprin\u0101\u0161anu, nenoz\u012bm\u0113, ka ar\u012b vi\u0146a kol\u0113\u0123i to dara. Da\u017ei no vi\u0146iem joproj\u0101m var balsot par pazi\u0146ojumiem sagatavo\u0161anai balso\u0161anai, citi, iesp\u0113jams, jau ir \u0101r\u0113jo\u0161i noteiku\u0161i v\u0113rt\u012bbu. SCP izskaidro, k\u0101 mezglam j\u0101apstr\u0101d\u0101 katra veida vien\u0101d\u0101s zi\u0146as neatkar\u012bgi no t\u0101s f\u0101zes.<\/p>\n<p>Ja, ja m\u0113s sa\u0146emsim zi\u0146ojumu \"Es pazi\u0146oju par apstiprin\u0101jumu &lt;N,C&gt;\", tam var neb\u016bt pie\u0146emts vai apstiprin\u0101ts, tad ir iesp\u0113ja pie\u0146emt vai apstiprin\u0101t zi\u0146ojumu &lt;N+1,C&gt; vai &lt;N+2,C&gt; \u2014 vai, jebkur\u0101 gad\u012bjum\u0101, jebkuru bi\u013ceti ar C v\u0113rt\u012bbu, nevis jebkuru citu, jo mezgls jau ir apsol\u012bjis nekad neatcelt &lt;N,C&gt;. Kad mezgls p\u0101rs\u016bta balsis par apstiprin\u0101jumu, tas b\u016bs C vai nekas, atkar\u012bb\u0101 no t\u0101, cik t\u0101lu konsensuss ir non\u0101cis. Tom\u0113r \u0161obr\u012bd tam nav pietiekami, lai \u0101r\u0113ji apstiprin\u0101tu C. Da\u017ei bizantiskie v\u0113st\u012bjumi (kas veido maz\u0101k par kvorumu, pamatojoties uz m\u016bsu dro\u0161\u012bbas pie\u0146\u0113mumiem) var melot mezglam. Apstiprin\u0101\u0161ana, tad apstiprin\u0101\u0161ana k\u0101dam bi\u013cet\u0113m (vai bi\u013ce\u0161u diapazonam) \u2014 tie\u0161i tas dod mezglam p\u0101rliec\u012bbu, beidzot apstiprin\u0101t C.<\/p>\n<p><img decoding=\"async\" alt=\"Izprotam Stellar konsensa protokolu\" src=\"\/wp-content\/uploads\/2019\/03\/c59f036bb8aa189bb3d4540f54121391.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Balsu v\u0101k\u0161ana SCP caur federat\u012bvo balso\u0161anu. Nav par\u0101d\u012bts: jebkur\u0101 br\u012bd\u012b var darboties taimeris, palielinot skait\u012bt\u0101ju bi\u013cet\u0113 (un, iesp\u0113jams, radot jaunu kompoz\u012btu no papildu izvirz\u012btajiem kandid\u0101tiem).<\/i> <\/p>\n<p>Un tas ir viss! Tikl\u012bdz t\u012bkls non\u0101k pie konsensusa, tas ir gatavs to dar\u012bt atkal un atkal. Stellar maks\u0101jumu t\u012bkl\u0101 tas notiek apm\u0113ram reizi 5 sekund\u0113s: sasniegums, kas prasa gan dro\u0161\u012bbu, gan iztur\u012bbu, ko garant\u0113 SCP.<\/p>\n<p>SCP var sasniegt to, balstoties uz vair\u0101k\u0101m federat\u012bv\u0101 balsojuma k\u0101rt\u0101m. Federat\u012bvais balsojums ir k\u013cuvis iesp\u0113jams pateicoties kvoruma griezuma koncepcijai: vien\u0101du mezglu kop\u0101m, kur\u0101m katrs mezgls ir nol\u0113mis uztic\u0113ties k\u0101 savam (subjekt\u012bvam) kvorumam. \u0160\u012b konfigur\u0101cija noz\u012bm\u0113, ka ir iesp\u0113jams sasniegt konsensusu pat atv\u0113rt\u0101s dal\u012bbas t\u012bkl\u0101 ar bizantiskais kr\u0101p\u0161anas gad\u012bjumiem.<\/p>\n<h1>T\u0101l\u0101k\u0101 las\u012b\u0161ana<\/h1>\n<p><\/p>\n<ul>\n<li>Ori\u0123in\u0101lo tehnisko dokumentu par SCP var atrast <noindex><a rel=\"nofollow\" href=\"https:\/\/www.stellar.org\/papers\/stellar-consensus-protocol.pdf\">\u0161eit<\/a><\/noindex>, bet <noindex><a rel=\"nofollow\" href=\"https:\/\/datatracker.ietf.org\/doc\/draft-mazieres-dinrg-scp\/\">\u0161eit<\/a><\/noindex> specifik\u0101ciju projekts t\u0101s \u012bsteno\u0161anai.\n<\/li>\n<li>Protokola SCP ori\u0123in\u0101lais autors Deivids Maziers vienk\u0101r\u0161oti (bet tom\u0113r tehniski) skaidro to <noindex><a rel=\"nofollow\" href=\"http:\/\/www.scs.stanford.edu\/~dm\/blog\/simplified-scp.html\">\u0161eit<\/a><\/noindex>.\n<\/li>\n<li>Iesp\u0113jams, j\u016bs bij\u0101t p\u0101rsteigti, neredzot \u0161aj\u0101 rakst\u0101 terminus \"ieguve\" vai \"darba pier\u0101d\u012bjums\". SCP neizmanto \u0161\u012bs metodes, ta\u010du da\u017e\u0101di citi konsensusa algoritmi to izmanto. Zeins V\u012bzerspr\u016bns ir uzrakst\u012bjis pieejamu <noindex><a rel=\"nofollow\" href=\"https:\/\/hackernoon.com\/a-hitchhikers-guide-to-consensus-algorithms-d81aae3eb0e3\">konsensusa algoritmu apskatu<\/a><\/noindex>.\n<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/bobg\/scp\/blob\/master\/Lunch.md\">Solis pa solim apraksts<\/a><\/noindex> vienk\u0101r\u0161\u0101 t\u012bkl\u0101, kas sasniedz konsensusu viena pilna SCP k\u0101rt\u0101.\n<\/li>\n<li>Las\u012bt\u0101jiem, kuri ir ieinteres\u0113ti SCP \u012bstenojumos: skatiet <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/stellar\/stellar-core\/tree\/master\/src\/scp\">C++ kodu<\/a><\/noindex>, ko izmanto Stellar maks\u0101jumu t\u012bkls, vai <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/bobg\/scp\">Go kods<\/a><\/noindex>, ko es uzrakst\u012bju lab\u0101kai SCP izpratnei.<\/li>\n<\/ul>\n<p>Avots: <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.4 - 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\/lv\/blog\/razbiraemsya-v-protokole-konsensusa-stellar\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.4\" \/>\n\t\t<meta property=\"og:locale\" content=\"lv_LV\" \/>\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\/lv\/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\udd47Izprotam Stellar konsensa protokolu | ProHoster","description":"Stellar konsensa protokols pirmo reizi aprakst\u012bts.","canonical_url":"https:\/\/prohoster.info\/lv\/blog\/razbiraemsya-v-protokole-konsensusa-stellar","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"lv_LV","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\/lv\/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\/lv\/wp-json\/wp\/v2\/posts\/30047","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/comments?post=30047"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/posts\/30047\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/media?parent=30047"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/categories?post=30047"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/tags?post=30047"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}