{"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\/cs\/blog\/razbiraemsya-v-protokole-konsensusa-stellar","title":{"rendered":"Zkoum\u00e1me konsenzu\u00e1ln\u00ed protokol Stellar","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Zkoum\u00e1me konsenzu\u00e1ln\u00ed protokol Stellar\" src=\"\/wp-content\/uploads\/2019\/03\/09b61160286ae40c21269e1590fc2b92.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nProtokol konsensu Stellar byl poprv\u00e9 pops\u00e1n v <noindex><a rel=\"nofollow\" href=\"https:\/\/www.stellar.org\/papers\/stellar-consensus-protocol.pdf\">ve v\u011bdeck\u00e9m \u010dl\u00e1nku<\/a><\/noindex> Davidem Mazierem v roce 2015. Je to \u201efederativn\u00ed syst\u00e9m byzantsk\u00e9ho konsensu\u201c, kter\u00fd umo\u017e\u0148uje decentralizovan\u00fdm v\u00fdpo\u010detn\u00edm s\u00edt\u00edm bez v\u016fdc\u016f efektivn\u011b dosahovat konsensu o jak\u00e9mkoli rozhodnut\u00ed. Platebn\u00ed s\u00ed\u0165 Stellar vyu\u017e\u00edv\u00e1 Stellar Consensus Protocol (SCP) pro veden\u00ed konzistentn\u00ed historie transakc\u00ed, kterou vid\u00ed v\u0161ichni \u00fa\u010dastn\u00edci.<\/p>\n<p>P\u0159edpokl\u00e1d\u00e1 se, \u017ee protokoly konsensu jsou obt\u00ed\u017en\u00e9 k pochopen\u00ed. SCP je jednodu\u0161\u0161\u00ed ne\u017e v\u011bt\u0161ina z nich, ale st\u00e1le sd\u00edl\u00ed tuto pov\u011bst \u2013 \u010d\u00e1ste\u010dn\u011b kv\u016fli myln\u00e9 p\u0159edstav\u011b, \u017ee \u201efederativn\u00ed hlasov\u00e1n\u00ed\u201c, kter\u00e9 je v\u011bnov\u00e1no prvn\u00ed polovin\u011b v\u011bdeck\u00e9ho \u010dl\u00e1nku, je SCP. Ale to nen\u00ed pravda! Je to pouze d\u016fle\u017eit\u00fd stavebn\u00ed blok, kter\u00fd je ve druh\u00e9 polovin\u011b \u010dl\u00e1nku pou\u017eit k vytvo\u0159en\u00ed <i>skute\u010dn\u00e9ho<\/i> protokolu konsensu Stellar.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nV tomto \u010dl\u00e1nku stru\u010dn\u011b vysv\u011btl\u00edme, co je to \u201esyst\u00e9m dohod\u201c, co m\u016f\u017ee ud\u011blat, aby byl \u201ebyzantsk\u00fd\u201c, a pro\u010d ud\u011blat byzantsk\u00fd syst\u00e9m \u201efederativn\u00edm\u201c. Pot\u00e9 vysv\u011btl\u00edme federativn\u00ed hlasovac\u00ed proceduru popsanou v \u010dl\u00e1nku o SCP a nakonec vysv\u011btl\u00edme samotn\u00fd protokol SCP.<\/p>\n<h1>Syst\u00e9my dohod<\/h1>\n<p>\nSyst\u00e9m dohod umo\u017e\u0148uje skupin\u011b \u00fa\u010dastn\u00edk\u016f dos\u00e1hnout konsensu o n\u011bjak\u00e9m t\u00e9matu, nap\u0159\u00edklad co objednat k ob\u011bdu.<\/p>\n<p>My v Interstellar jsme zavedli vlastn\u00ed syst\u00e9m ob\u011bdov\u00fdch dohod: objedn\u00e1v\u00e1me to, co \u0159\u00edk\u00e1 n\u00e1\u0161 opera\u010dn\u00ed mana\u017eer John. Je to jednoduch\u00fd a efektivn\u00ed syst\u00e9m dohod. V\u0161ichni d\u016fv\u011b\u0159ujeme Johnovi a v\u011b\u0159\u00edme, \u017ee ka\u017ed\u00fd den najde n\u011bco zaj\u00edmav\u00e9ho a v\u00fd\u017eivn\u00e9ho.<\/p>\n<p>Ale co kdy\u017e John zneu\u017eije na\u0161i d\u016fv\u011bru? M\u016f\u017ee jednostrann\u011b rozhodnout, \u017ee bychom se m\u011bli v\u0161ichni st\u00e1t vegany. Za t\u00fdden nebo dva n\u00e1s pravd\u011bpodobn\u011b svrhneme a p\u0159ed\u00e1me pravomoci Elizabeth. Ale co kdy\u017e m\u00e1 r\u00e1da avok\u00e1do s an\u010dovi\u010dkami a mysl\u00ed si, \u017ee bychom se m\u011bli v\u0161ichni st\u00e1t takov\u00fdmi? Moc kaz\u00ed. Proto je lep\u0161\u00ed naj\u00edt n\u011bjakou demokratick\u011bj\u0161\u00ed metodu: n\u011bjak\u00fd zp\u016fsob, jak zajistit, aby byly zohledn\u011bny r\u016fzn\u00e9 preference, a z\u00e1rove\u0148 zajistit v\u010dasn\u00fd a jednozna\u010dn\u00fd v\u00fdsledek, aby se nestalo, \u017ee nikdo neobjedn\u00e1 ob\u011bd nebo p\u011bt lid\u00ed zad\u00e1 r\u016fzn\u00e9 objedn\u00e1vky, nebo \u017ee diskuze potrv\u00e1 a\u017e do ve\u010dera.<\/p>\n<p>Na prvn\u00ed pohled se zd\u00e1, \u017ee \u0159e\u0161en\u00ed je jednoduch\u00e9: uspo\u0159\u00e1dat hlasov\u00e1n\u00ed! Ale to je klamn\u00fd dojem. Kdo bude shroma\u017e\u010fovat hlasy a oznamovat v\u00fdsledky? A pro\u010d by ostatn\u00ed m\u011bli v\u011b\u0159it tomu, co \u0159ekne? Mo\u017en\u00e1 nejd\u0159\u00edve m\u016f\u017eeme <i>v prvn\u00ed \u0159ad\u011b<\/i> hlasovat pro l\u00eddra, kter\u00e9mu d\u016fv\u011b\u0159ujeme, aby vedl hlasov\u00e1n\u00ed \u2013 ale kdo povede toto <i>je prvn\u00ed<\/i> hlasov\u00e1n\u00ed? Co kdy\u017e se nedok\u00e1\u017eeme shodnout na l\u00eddrovi? Nebo se shodneme, ale tento l\u00eddr z\u016fstane zadr\u017een na sch\u016fzce nebo onemocn\u00ed?<\/p>\n<p>Podobn\u00e9 probl\u00e9my se vyskytuj\u00ed v distribuovan\u00fdch po\u010d\u00edta\u010dov\u00fdch s\u00edt\u00edch. V\u0161ichni \u00fa\u010dastn\u00edci nebo uzly mus\u00ed schv\u00e1lit ur\u010dit\u00e9 rozhodnut\u00ed, nap\u0159\u00edklad kdo m\u00e1 aktualizovat sd\u00edlen\u00fd soubor nebo vyzvednout \u00fakol z fronty zpracov\u00e1n\u00ed. V s\u00edti kryptom\u011bn musej\u00ed uzly opakovan\u011b vyb\u00edrat, jak\u00e1 je kompletn\u00ed historie, z n\u011bkolika mo\u017en\u00fdch verz\u00ed, kter\u00e9 n\u011bkdy konfliktuj\u00ed. Toto s\u00ed\u0165ov\u00e9 schv\u00e1len\u00ed zaru\u010duje p\u0159\u00edjemci, \u017ee mince je (a) platn\u00e1 (ne fale\u0161n\u00e1) a (b) je\u0161t\u011b nebyla utracena jinde. Tak\u00e9 zaru\u010duje, \u017ee je bude mo\u017en\u00e9 v budoucnu utratit, proto\u017ee nov\u00fd p\u0159\u00edjemce bude m\u00edt stejn\u00e9 z\u00e1ruky ze stejn\u00fdch d\u016fvod\u016f.<\/p>\n<p>Jak\u00fdkoliv konsenzu\u00e1ln\u00ed syst\u00e9m v distribuovan\u00e9 v\u00fdpo\u010detn\u00ed s\u00edti mus\u00ed b\u00fdt odoln\u00fd proti chyb\u00e1m: mus\u00ed d\u00e1vat konzistentn\u00ed v\u00fdsledky navzdory chyb\u00e1m, jako jsou pomal\u00e9 komunika\u010dn\u00ed linky, nereaguj\u00edc\u00ed uzly a nespr\u00e1vn\u00e9 po\u0159ad\u00ed zpr\u00e1v. <i>Byzantsk\u00fd<\/i> konsenzu\u00e1ln\u00ed syst\u00e9m je nav\u00edc odoln\u00fd v\u016f\u010di \u201ebyzantsk\u00fdm\u201c chyb\u00e1m: uzl\u016fm, kter\u00e9 poskytuj\u00ed fale\u0161n\u00e9 informace, a\u0165 u\u017e vinou chyby nebo s \u00famyslem podkopat syst\u00e9m nebo z\u00edskat n\u011bjakou v\u00fdhodu. \u201eByzantsk\u00e1\u201c odolnost v\u016f\u010di chyb\u00e1m \u2013 schopnost d\u016fv\u011b\u0159ovat skupinov\u00e9mu rozhodnut\u00ed, i kdy\u017e n\u011bkte\u0159\u00ed \u010dlenov\u00e9 skupiny mohou lh\u00e1t nebo jinak nesplnit pravidla rozhodov\u00e1n\u00ed \u2013 dostala sv\u016fj n\u00e1zev podle <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\">poh\u00e1dky o gener\u00e1lech Byzantsk\u00e9 \u0159\u00ed\u0161e<\/a><\/noindex>, kte\u0159\u00ed se sna\u017eili koordinovat \u00fatok. <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\">Dobr\u00e9 vysv\u011btlen\u00ed<\/a><\/noindex> u Anthonyho Stevense.<\/p>\n<p>Zva\u017eujme vlastn\u00edka kryptom\u011bny Alisu, kter\u00e1 si mus\u00ed vybrat mezi koup\u00ed chutn\u00e9 zmrzliny od Boba a spl\u00e1cen\u00edm dluhu Carol. Mo\u017en\u00e1 chce Alisa zaplatit ob\u011bma najednou, podvodn\u011b utratit stejnou minci. K tomu mus\u00ed p\u0159esv\u011bd\u010dit po\u010d\u00edta\u010d Boba, \u017ee mince nikdy nebyla vyplacena Carol, a p\u0159esv\u011bd\u010dit po\u010d\u00edta\u010d Carol, \u017ee mince nikdy nebyla vyplacena Bobovi. Byzantsk\u00fd syst\u00e9m dohod to \u010din\u00ed ve skute\u010dnosti nemo\u017en\u00fdm pomoc\u00ed formy pravidla v\u011bt\u0161iny, zn\u00e1m\u00e9ho jako <i>kv\u00f3rum<\/i>. Uzlu v takov\u00e9 s\u00edti se odm\u00edt\u00e1 p\u0159ej\u00edt k ur\u010dit\u00e9 verzi historie, dokud nevid\u00ed, \u017ee dostate\u010dn\u00fd po\u010det rovnocenn\u00fdch uzl\u016f \u2014 kv\u00f3rum \u2014 souhlas\u00ed s t\u00edmto p\u0159echodem. Jakmile k tomu dojde, vytvo\u0159\u00ed dostate\u010dn\u011b velk\u00fd volebn\u00ed blok, aby donutil zb\u00fdvaj\u00edc\u00ed uzly s\u00edt\u011b souhlasit s jejich rozhodnut\u00edm. Alisa m\u016f\u017ee donutit n\u011bkter\u00e9 uzly lh\u00e1t jej\u00edm jm\u00e9nem, ale pokud je s\u00ed\u0165 dostate\u010dn\u011b velk\u00e1, jej\u00ed pokus bude potla\u010den hlasy \u010destn\u00fdch uzl\u016f.<\/p>\n<p>Kolik uzl\u016f je pot\u0159eba pro kv\u00f3rum? Minim\u00e1ln\u011b v\u011bt\u0161inu, p\u0159esn\u011bji kvalifikovanou v\u011bt\u0161inu pro boj s chybami a podvody. Ale k tomu, abychom spo\u010d\u00edtali v\u011bt\u0161inu, je t\u0159eba zn\u00e1t celkov\u00fd po\u010det \u00fa\u010dastn\u00edk\u016f. V kancel\u00e1\u0159i Interstellar nebo na obvodn\u00edch volb\u00e1ch jsou tato \u010d\u00edsla snadno zjistiteln\u00e1. Ale pokud je va\u0161e skupina slab\u011b definovan\u00e1 s\u00ed\u0165, do n\u00ed\u017e uzly mohou vstupovat a vystupovat podle sv\u00e9ho uv\u00e1\u017een\u00ed bez souhlasu centr\u00e1ly, pak je pot\u0159eba <i>federativn\u00ed<\/i> syst\u00e9m byzantsk\u00e9ho dohodov\u00e1n\u00ed, schopn\u00fd ur\u010dovat kv\u00f3ra nejen z p\u0159edem dan\u00e9ho seznamu uzl\u016f, ale dynamicky, z neust\u00e1le se m\u011bn\u00edc\u00edho a nevyhnuteln\u011b ne\u00fapln\u00e9ho sn\u00edmku uzl\u016f v ur\u010dit\u00e9m okam\u017eiku.<\/p>\n<p>M\u016f\u017ee se zd\u00e1t nemo\u017en\u00e9 vytvo\u0159it kv\u00f3rum z pohledu jednoho uzlu v rozs\u00e1hl\u00e9 s\u00edti, ale je to mo\u017en\u00e9. Takov\u00e9 kv\u00f3rum m\u016f\u017ee dokonce zaru\u010dit v\u00fdsledky decentralizovan\u00e9ho hlasov\u00e1n\u00ed. Technick\u00e1 dokumentace SCP ukazuje, jak to prov\u00e9st pomoc\u00ed procedury nazvan\u00e9 <i>federativn\u00ed hlasov\u00e1n\u00ed<\/i>.<\/p>\n<h1>Pro netrp\u011bliv\u00e9<\/h1>\n<p>\nZbytek \u010dl\u00e1nku podrobn\u011b popisuje federativn\u00ed hlasov\u00e1n\u00ed a protokol konsensu Stellar. Pokud v\u00e1s nezaj\u00edmaj\u00ed podrobnosti, zde je obecn\u00fd p\u0159ehled procesu.<\/p>\n<ol>\n<li>Uzly prov\u00e1d\u011bj\u00ed kola feder\u00e1ln\u00edho hlasov\u00e1n\u00ed o \u201enominantech\u201c. Kolo feder\u00e1ln\u00edho hlasov\u00e1n\u00ed znamen\u00e1:\n<ul>\n<li>Uzly hlasuj\u00ed pro n\u011bjak\u00e9 tvrzen\u00ed, nap\u0159\u00edklad \u201eNavrhuji hodnotu V\u201c;\n<\/li>\n<li>Uzly naslouchaj\u00ed hlas\u016fm pir\u00e1t\u016f, dokud nenajdou n\u011bkoho, kdo m\u016f\u017ee \u201ep\u0159ijmout\u201c;\n<\/li>\n<li>Uzly hledaj\u00ed \u201ekv\u00f3rum\u201c pro toto tvrzen\u00ed. Kv\u00f3rum \u201epotvrzuje\u201c nominanta.<\/li>\n<\/ul>\n<\/li>\n<li>Jakmile m\u016f\u017ee uzel potvrdit jednoho nebo v\u00edce nominant\u016f, sna\u017e\u00ed se \u201ep\u0159ipravit\u201c \u201ehlasovac\u00ed l\u00edstek\u201c b\u011bhem n\u011bkolika kol feder\u00e1ln\u00edho hlasov\u00e1n\u00ed.\n<\/li>\n<li>Jakmile je uzel schopen zkontrolovat p\u0159ipravenost hlasovac\u00edho l\u00edstku, sna\u017e\u00ed se ho commitnout pomoc\u00ed je\u0161t\u011b v\u00edce kol feder\u00e1ln\u00edho hlasov\u00e1n\u00ed.\n<\/li>\n<li>Jakmile m\u016f\u017ee uzel potvrdit commit hlasovac\u00edho l\u00edstku, m\u016f\u017ee \u201eexternealizovat\u201c hodnotu tohoto hlasovac\u00edho l\u00edstku pou\u017eit\u00edm jej jako v\u00fdsledek konsensu.<\/li>\n<\/ol>\n<p>\nTyto kroky zahrnuj\u00ed n\u011bkolik kol feder\u00e1ln\u00edho hlasov\u00e1n\u00ed, kter\u00e1 dohromady tvo\u0159\u00ed jedno kolo SCP. Poj\u010fme se pod\u00edvat bl\u00ed\u017ee na to, co se d\u011bje v ka\u017ed\u00e9m kroku.<\/p>\n<h1>Feder\u00e1ln\u00ed hlasov\u00e1n\u00ed<\/h1>\n<p>\nFeder\u00e1ln\u00ed hlasov\u00e1n\u00ed je proces ur\u010dov\u00e1n\u00ed, zda m\u016f\u017ee s\u00ed\u0165 souhlasit s n\u00e1vrhem. V kole hlasov\u00e1n\u00ed mus\u00ed ka\u017ed\u00fd uzel vybrat jednu z potenci\u00e1ln\u011b mnoha mo\u017en\u00fdch hodnot. To nem\u016f\u017ee ud\u011blat, dokud nen\u00ed si jist\u00fd, \u017ee ostatn\u00ed uzly v s\u00edti nevyberou jin\u00fd v\u00fdsledek. Aby si t\u00edm byly jist\u00e9, uzly si vym\u011b\u0148uj\u00ed z\u00e1plavu zpr\u00e1v tam a zp\u011bt, aby ka\u017ed\u00fd <i>potvrdil<\/i>, \u017ee <i>kv\u00f3rum<\/i> uzel <i>p\u0159ij\u00edm\u00e1<\/i> to sam\u00e9 <i>rozhodnut\u00ed<\/i>. Zbytek t\u00e9to \u010d\u00e1sti vysv\u011btluje term\u00edny v tomto tvrzen\u00ed a jak prob\u00edh\u00e1 cel\u00fd proces.<\/p>\n<h1>Kv\u00f3rum a kv\u00f3rum slice<\/h1>\n<p>\nZa\u010dn\u011bme definic\u00ed kv\u00f3ra. Jak jsme ji\u017e uvedli v\u00fd\u0161e, v decentralizovan\u00e9 s\u00edti s dynamick\u00fdm \u010dlenstv\u00edm nen\u00ed mo\u017en\u00e9 p\u0159edem zn\u00e1t po\u010det uzl\u016f a tedy kolik je pot\u0159eba pro v\u011bt\u0161inu. Feder\u00e1ln\u00ed hlasov\u00e1n\u00ed \u0159e\u0161\u00ed tento probl\u00e9m zaveden\u00edm nov\u00e9 my\u0161lenky <i>kv\u00f3rum slice<\/i> (quorum slice): mal\u00e1 sada rovnocenn\u00fdch uzl\u016f, kter\u00fdm uzel d\u016fv\u011b\u0159uje, aby p\u0159en\u00e1\u0161ely informace o stavu hlasov\u00e1n\u00ed v ostatn\u00edch \u010d\u00e1stech s\u00edt\u011b. Ka\u017ed\u00fd uzel si definuje sv\u016fj vlastn\u00ed kv\u00f3rum slice (\u010dlena kter\u00e9ho se st\u00e1v\u00e1 de facto).<\/p>\n<p>Tvorba kv\u00f3ra za\u010d\u00edn\u00e1 se slice kv\u00f3ra. Pro ka\u017ed\u00fd uzel se p\u0159id\u00e1vaj\u00ed uzly jeho kv\u00f3rum slice. Pot\u00e9 se p\u0159id\u00e1vaj\u00ed \u010dlenov\u00e9 slice <i>t\u011bchto uzl\u016f<\/i> a tak d\u00e1le. Jak se proces pokra\u010duje, objevuje se st\u00e1le v\u00edce uzl\u016f, kter\u00e9 nem\u016f\u017eete p\u0159idat, proto\u017ee jsou ji\u017e zahrnuty v podmno\u017ein\u011b. Kdy\u017e u\u017e nejsou \u017e\u00e1dn\u00e9 nov\u00e9 uzly k p\u0159id\u00e1n\u00ed, proces se zastav\u00ed: vytvo\u0159ili jsme kv\u00f3rum prost\u0159ednictv\u00edm \u201etransitivn\u00edho uz\u00e1v\u011bru\u201c (transitive closure) podmno\u017einy po\u010d\u00e1te\u010dn\u00edho uzlu.<\/p>\n<p><img decoding=\"async\" alt=\"Zkoum\u00e1me konsenzu\u00e1ln\u00ed protokol Stellar\" src=\"\/wp-content\/uploads\/2019\/03\/6991e3f9a22d920e4a5e9c161f32dee1.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Abychom na\u0161li kv\u00f3rum z dan\u00e9ho uzlu\u2026<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Zkoum\u00e1me konsenzu\u00e1ln\u00ed protokol Stellar\" src=\"\/wp-content\/uploads\/2019\/03\/52b3d435a8f4a67b56deb43c83fee828.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>\u2026 p\u0159id\u00e1v\u00e1me \u010dleny jeho podmno\u017einy\u2026<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Zkoum\u00e1me konsenzu\u00e1ln\u00ed protokol Stellar\" src=\"\/wp-content\/uploads\/2019\/03\/0820e9ca560caf9ebfa92db8e7a1da85.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>\u2026 pak p\u0159id\u00e1v\u00e1me \u010dleny podmno\u017ein t\u011bchto uzl\u016f.<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Zkoum\u00e1me konsenzu\u00e1ln\u00ed protokol Stellar\" src=\"\/wp-content\/uploads\/2019\/03\/539933eb3c279fa7da68fc9049516fc8.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Pokra\u010dujeme, dokud nez\u016fstane \u017e\u00e1dn\u00fd uzel k p\u0159id\u00e1n\u00ed.<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Zkoum\u00e1me konsenzu\u00e1ln\u00ed protokol Stellar\" src=\"\/wp-content\/uploads\/2019\/03\/48058639262412514641063a10503a01.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<img decoding=\"async\" alt=\"Zkoum\u00e1me konsenzu\u00e1ln\u00ed protokol Stellar\" src=\"\/wp-content\/uploads\/2019\/03\/d068fb06f35337ae68c35b4606f329ae.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Uzl\u016f k p\u0159id\u00e1n\u00ed u\u017e nen\u00ed. To je kv\u00f3rum.<\/i><\/p>\n<p>Ve skute\u010dnosti m\u016f\u017ee ka\u017ed\u00fd uzel pat\u0159it v\u00edce ne\u017e do jedn\u00e9 podmno\u017einy. Abychom vytvo\u0159ili kv\u00f3rum, vyberte pouze jednu z podmno\u017ein a p\u0159idejte \u010dleny; pot\u00e9 vyberte jakoukoli podmno\u017einu pro ka\u017ed\u00e9ho z \u010dlen\u016f a p\u0159idejte \u010dleny <i>tohoto<\/i> podmno\u017einy a tak d\u00e1le. To znamen\u00e1, \u017ee ka\u017ed\u00fd uzel je \u010dlenem mnoha mo\u017en\u00fdch kv\u00f3rum.<\/p>\n<p><img decoding=\"async\" alt=\"Zkoum\u00e1me konsenzu\u00e1ln\u00ed protokol Stellar\" src=\"\/wp-content\/uploads\/2019\/03\/3427406c132cfd1cd174b856a1239908.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Vyberte pouze jednu podmno\u017einu kv\u00f3rum v ka\u017ed\u00e9m kroku.<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Zkoum\u00e1me konsenzu\u00e1ln\u00ed protokol Stellar\" src=\"\/wp-content\/uploads\/2019\/03\/79a8728890ecb36b2e127b1b76c44fc8.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<img decoding=\"async\" alt=\"Zkoum\u00e1me konsenzu\u00e1ln\u00ed protokol Stellar\" src=\"\/wp-content\/uploads\/2019\/03\/22fe0422c73cdf5fb5416e389934c5c3.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<img decoding=\"async\" alt=\"Zkoum\u00e1me konsenzu\u00e1ln\u00ed protokol Stellar\" src=\"\/wp-content\/uploads\/2019\/03\/60379efdde3b88fb9c86de6c5b4a0b62.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Jedno mo\u017en\u00e9 kv\u00f3rum. Nebo alternativn\u00ed mo\u017enost\u2026<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Zkoum\u00e1me konsenzu\u00e1ln\u00ed protokol Stellar\" src=\"\/wp-content\/uploads\/2019\/03\/341f1e897be1474ee2d67324da2134b1.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>\u2026 vyb\u00edr\u00e1me jin\u00e9 podmno\u017einy\u2026<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Zkoum\u00e1me konsenzu\u00e1ln\u00ed protokol Stellar\" src=\"\/wp-content\/uploads\/2019\/03\/8a6d605050b075bf935e6151bd1cbe2c.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<img decoding=\"async\" alt=\"Zkoum\u00e1me konsenzu\u00e1ln\u00ed protokol Stellar\" src=\"\/wp-content\/uploads\/2019\/03\/865567aa370605b7cf10da3457c3d158.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>\u2026(kdy\u017e je to mo\u017en\u00e9)\u2026<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Zkoum\u00e1me konsenzu\u00e1ln\u00ed protokol Stellar\" src=\"\/wp-content\/uploads\/2019\/03\/6343f774104454d62e7c8681bf25dbcb.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>\u2026 vytv\u00e1\u0159\u00ed jin\u00e9 kv\u00f3rum.<\/i><\/p>\n<p>Jak se uzel dozv\u00ed, v jak\u00fdch podmno\u017ein\u00e1ch jsou ostatn\u00ed uzly? Stejn\u011b jako dal\u0161\u00ed informace o ostatn\u00edch uzlech: z p\u0159enos\u016f, kter\u00e9 ka\u017ed\u00fd uzel vys\u00edl\u00e1 do s\u00edt\u011b, kdy\u017e se m\u011bn\u00ed jeho hlasovac\u00ed stav. Ka\u017ed\u00e9 vys\u00edl\u00e1n\u00ed obsahuje informace o podmno\u017ein\u00e1ch odes\u00edlaj\u00edc\u00edho uzlu. V technick\u00e9 dokumentaci SCP nen\u00ed uveden mechanismus komunikace. Implementace obvykle pou\u017e\u00edvaj\u00ed <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Gossip_protocol\">gossip protokol<\/a><\/noindex> pro zaru\u010den\u00e9 vys\u00edl\u00e1n\u00ed zpr\u00e1v po cel\u00e9 s\u00edti.<\/p>\n<p>P\u0159ipome\u0148me, \u017ee v nefederativn\u00edm byzantsk\u00e9m syst\u00e9mu dohod se kv\u00f3rum ur\u010duje jako v\u011bt\u0161ina v\u0161ech uzl\u016f. Byzantsk\u00fd syst\u00e9m dohod byl navr\u017een z hlediska ot\u00e1zky: kolik ne\u010destn\u00fdch uzl\u016f je syst\u00e9m schopen sn\u00e9st? V syst\u00e9mu s N uzly, navr\u017een\u00e9m na p\u0159e\u017eit\u00ed p\u0159i f selh\u00e1n\u00edch (podvodech), mus\u00ed uzel b\u00fdt schopen dos\u00e1hnout pokroku t\u00edm, \u017ee obdr\u017e\u00ed odpov\u011b\u010f od N\u2212f peering\u016f, proto\u017ee f z nich nemus\u00ed fungovat. Ale kdy\u017e dostane odpov\u011b\u010f od N\u2212f peering\u016f, lze p\u0159edpokl\u00e1dat, \u017ee v\u0161echna f peer\u016f (od kter\u00fdch uzel neobdr\u017eel odpov\u011b\u010f) jsou ve skute\u010dnosti \u010destn\u00e1. Tak\u017ee \u0161kodliv\u00fdch je f z N\u2212f peering\u016f (od kter\u00fdch byla obdr\u017eena odpov\u011b\u010f). Aby uzly dosp\u011bly k jednomu konsensu, mus\u00ed b\u00fdt v\u011bt\u0161ina zbyl\u00fdch uzl\u016f \u010destn\u00e1, tedy pot\u0159ebujeme, aby N\u2212f bylo v\u011bt\u0161\u00ed ne\u017e 2f, nebo N &gt; 3f. Tak\u017ee obvykle syst\u00e9m, navr\u017een\u00fd na p\u0159e\u017eit\u00ed p\u0159i f selh\u00e1n\u00edch, bude m\u00edt celkem N=3f+1 uzl\u016f a velikost kv\u00f3ra 2f+1. Jakmile n\u00e1vrh p\u0159ekro\u010d\u00ed pr\u00e1h kv\u00f3ra, ostatn\u00ed \u010dlenov\u00e9 s\u00edt\u011b jsou p\u0159esv\u011bd\u010deni, \u017ee jak\u00e9koli konkuren\u010dn\u00ed n\u00e1vrhy sel\u017eou. Tak se s\u00ed\u0165 sbli\u017euje k v\u00fdsledku.<\/p>\n<p>Ale v federativn\u00edm byzantsk\u00e9m syst\u00e9mu dohod nemus\u00ed b\u00fdt pouze v\u011bt\u0161ina (proto\u017ee nikdo nezn\u00e1 celkovou velikost s\u00edt\u011b), ale koncept v\u011bt\u0161iny je zcela neu\u017eite\u010dn\u00fd! Pokud je \u010dlenstv\u00ed v syst\u00e9mu otev\u0159en\u00e9, m\u016f\u017ee n\u011bkdo z\u00edskat v\u011bt\u0161inu prost\u011b proveden\u00edm takzvan\u00e9ho \u00fatoku Sybila: opakovan\u00fdm p\u0159ipojen\u00edm k s\u00edti prost\u0159ednictv\u00edm n\u011bkolika uzl\u016f. Tak pro\u010d lze tranzitivn\u00ed uzav\u0159en\u00ed \u0159ezu nazvat <i>kv\u00f3rum<\/i>, a jak m\u00e1 schopnost potla\u010dit konkuren\u010dn\u00ed n\u00e1vrhy?<\/p>\n<p>Technicky, nijak! P\u0159edstavte si s\u00ed\u0165 \u0161esti uzl\u016f, kde jsou dv\u011b trojice izolov\u00e1ny v \u0159ezech kv\u00f3ra jeden od druh\u00e9ho. Prvn\u00ed podskupina m\u016f\u017ee p\u0159ijmout rozhodnut\u00ed, o kter\u00e9m se druh\u00e1 nikdy nedozv\u00ed, a naopak. Pro tuto s\u00ed\u0165 neexistuje zp\u016fsob, jak dos\u00e1hnout konsensu (krom\u011b n\u00e1hody).<\/p>\n<p>Proto SCP vy\u017eaduje, aby pro federativn\u00ed hlasov\u00e1n\u00ed (a pro uplatn\u011bn\u00ed d\u016fle\u017eit\u00fdch v\u011bt v \u010dl\u00e1nku) s\u00ed\u0165 m\u011bla vlastnost zvanou <i>pr\u016fnik kv\u00f3r.<\/i>. V s\u00edti s touto vlastnost\u00ed se jak\u00e9koli dva kv\u00f3ra, kter\u00e1 lze vytvo\u0159it, v\u017edy p\u0159ekr\u00fdvaj\u00ed alespo\u0148 v jednom uzlu. Pro ur\u010den\u00ed p\u0159evl\u00e1daj\u00edc\u00edch n\u00e1lad v s\u00edti je to stejn\u011b dobr\u00e9, jako m\u00edt v\u011bt\u0161inu. Intuitivn\u011b to znamen\u00e1, \u017ee pokud jak\u00e9koli kv\u00f3rum souhlas\u00ed s tvrzen\u00edm X, \u017e\u00e1dn\u00e9 jin\u00e9 kv\u00f3rum nikdy nem\u016f\u017ee souhlasit s n\u011b\u010d\u00edm jin\u00fdm, proto\u017ee nutn\u011b zahrnuje n\u011bjak\u00fd uzel z prvn\u00edho kv\u00f3ra, kter\u00fd ji\u017e hlasoval pro X.<\/p>\n<p><img decoding=\"async\" alt=\"Zkoum\u00e1me konsenzu\u00e1ln\u00ed protokol Stellar\" src=\"\/wp-content\/uploads\/2019\/03\/5b0aeec99e285b4bbeb92ec5b8dfe69d.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Pokud v s\u00edti existuje p\u0159ekryt\u00ed kv\u00f3r.<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Zkoum\u00e1me konsenzu\u00e1ln\u00ed protokol Stellar\" src=\"\/wp-content\/uploads\/2019\/03\/bdb3866cb02fb5991446f0cb0fa5a4fd.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>\u2026 pak jak\u00e9koli dv\u011b kv\u00f3ra, kter\u00e1 m\u016f\u017eete vytvo\u0159it\u2026<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Zkoum\u00e1me konsenzu\u00e1ln\u00ed protokol Stellar\" src=\"\/wp-content\/uploads\/2019\/03\/29ee8d1ce9fba6c5c24386ce1c1c639b.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>\u2026 se v\u017edy p\u0159ekr\u00fdvaj\u00ed.<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Zkoum\u00e1me konsenzu\u00e1ln\u00ed protokol Stellar\" src=\"\/wp-content\/uploads\/2019\/03\/6f1ef2b9896669c10fd19f1acd52db70.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<img decoding=\"async\" alt=\"Zkoum\u00e1me konsenzu\u00e1ln\u00ed protokol Stellar\" src=\"\/wp-content\/uploads\/2019\/03\/6849569e849ac3b5487d31e0bf22a596.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n(Samoz\u0159ejm\u011b, p\u0159ekr\u00fdvaj\u00edc\u00ed se uzly mohou b\u00fdt byzantsky podvodn\u00e9 nebo v jin\u00fdch ohledech \u0161patn\u00e9. V takov\u00e9m p\u0159\u00edpad\u011b p\u0159ekryt\u00ed kv\u00f3r nepom\u00e1h\u00e1 s\u00edti dos\u00e1hnout shody v\u016fbec. Proto jsou mnoh\u00e9 v\u00fdsledky v technick\u00e9m dokumentu SCP zalo\u017eeny na v\u00fdslovn\u011b vyj\u00e1d\u0159en\u00fdch p\u0159edpokladech, jako je to, \u017ee v s\u00edti z\u016fst\u00e1v\u00e1 p\u0159ekryt\u00ed kv\u00f3r. <i>i po odstran\u011bn\u00ed \u0161patn\u00fdch uzl\u016f.<\/i>Pro zjednodu\u0161en\u00ed nech\u00e1me tyto p\u0159edpoklady <i>nevyj\u00e1d\u0159en\u00e9<\/i> ve zbytku \u010dl\u00e1nku).<\/p>\n<p>M\u016f\u017ee se zd\u00e1t nerozumn\u00e9 o\u010dek\u00e1vat, \u017ee v s\u00edti nez\u00e1visl\u00fdch uzl\u016f je mo\u017en\u00e9 spolehliv\u00e9 p\u0159ekryt\u00ed kv\u00f3r. Ale jsou zde dva d\u016fvody, pro\u010d je tomu tak.<\/p>\n<p>Prvn\u00ed d\u016fvod spo\u010d\u00edv\u00e1 v existenci samotn\u00e9ho internetu. Internet je ide\u00e1ln\u00ed p\u0159\u00edkladem s\u00edt\u011b nez\u00e1visl\u00fdch uzl\u016f s p\u0159ekryt\u00edm kv\u00f3r. V\u011bt\u0161ina uzl\u016f na internetu se propojuje pouze s n\u011bkolika dal\u0161\u00edmi m\u00edstn\u00edmi uzly, ale tyto mal\u00e9 mno\u017einy se p\u0159ekr\u00fdvaj\u00ed dostate\u010dn\u011b, aby ka\u017ed\u00fd uzel byl dostupn\u00fd z ka\u017ed\u00e9ho jin\u00e9ho uzlu n\u011bjakou cestou.<\/p>\n<p>Druh\u00fd d\u016fvod je specifick\u00fd pro platebn\u00ed s\u00ed\u0165 Stellar (nejb\u011b\u017en\u011bj\u0161\u00ed pou\u017eit\u00ed SCP). Ka\u017ed\u00fd aktivum v s\u00edti Stellar m\u00e1 emitenta, a doporu\u010den\u00ed Stellar po\u017eaduje, aby ka\u017ed\u00fd emitent jmenoval jeden nebo v\u00edce uzl\u016f v s\u00edti ke zpracov\u00e1n\u00ed \u017e\u00e1dost\u00ed o spl\u00e1cen\u00ed. Je ve va\u0161em z\u00e1jmu zahrnout tyto uzly p\u0159\u00edmo nebo nep\u0159\u00edmo do kv\u00f3rum pro ka\u017ed\u00e9 aktivum, o kter\u00e9 m\u00e1te z\u00e1jem. Pot\u00e9 se kv\u00f3ra pro v\u0161echny uzly, kter\u00e9 maj\u00ed z\u00e1jem o dan\u00e9 aktivum, budou p\u0159ekr\u00fdvat alespo\u0148 v t\u011bchto uzlech spl\u00e1cen\u00ed. Uzly, kter\u00e9 maj\u00ed z\u00e1jem o v\u00edce aktiv, zahrnou do sv\u00fdch kv\u00f3rum v\u0161echny uzly spl\u00e1cen\u00ed p\u0159\u00edslu\u0161n\u00fdch emitent\u016f a budou se sna\u017eit spojit v\u0161echna aktiva dohromady. Krom\u011b toho jak\u00e1koli aktiva, kter\u00e1 nejsou takto spojena s jin\u00fdmi v s\u00edti, a <i>nem\u011bla by b\u00fdt spojena<\/i> \u2014 je navr\u017eeno tak, aby v t\u00e9to s\u00edti nebylo p\u0159ekr\u00fdv\u00e1n\u00ed kv\u00f3rum (nap\u0159\u00edklad banky v dolarov\u00e9 z\u00f3n\u011b n\u011bkdy cht\u011bj\u00ed obchodovat s bankami v euroz\u00f3n\u011b a bankami v peso, tak\u017ee jsou v jedn\u00e9 s\u00edti, ale nikdo z nich se nezaj\u00edm\u00e1 o jinou s\u00ed\u0165 d\u011bt\u00ed, kter\u00e9 obchoduj\u00ed s baseballov\u00fdmi karti\u010dkami).<\/p>\n<p>Samoz\u0159ejm\u011b, <i>o\u010dek\u00e1v\u00e1n\u00ed<\/i> p\u0159ekr\u00fdv\u00e1n\u00ed kv\u00f3rum nen\u00ed <i>z\u00e1rukou<\/i>. Jin\u00e9 byzantsk\u00e9 syst\u00e9my dohod sv\u00fdmi slo\u017eitostmi mnohokr\u00e1t vd\u011b\u010d\u00ed z\u00e1ruk\u00e1m kv\u00f3rum. D\u016fle\u017eit\u00fdm nov\u00fdm prvkem SCP je to, \u017ee p\u0159en\u00e1\u0161\u00ed zodpov\u011bdnost za vytv\u00e1\u0159en\u00ed kv\u00f3rum z algoritmu konsensu na \u00farove\u0148 aplikace. Tak\u017ee, i kdy\u017e federativn\u00ed hlasov\u00e1n\u00ed je dostate\u010dn\u011b obecn\u00e9 pro hlasov\u00e1n\u00ed o jak\u00fdchkoli ot\u00e1zk\u00e1ch, jeho spolehlivost kriticky z\u00e1vis\u00ed na \u0161ir\u0161\u00edm smyslu t\u011bchto hodnot. N\u011bkter\u00e9 hypotetick\u00e9 p\u0159\u00edpady pou\u017eit\u00ed se mohou uk\u00e1zat jako m\u00e9n\u011b p\u0159\u00edzniv\u00e9 pro vytv\u00e1\u0159en\u00ed dob\u0159e propojen\u00fdch s\u00edt\u00ed ne\u017e jin\u00e9.<\/p>\n<h1>Hlasov\u00e1n\u00ed, p\u0159ijet\u00ed a potvrzen\u00ed<\/h1>\n<p>\nV kole federativn\u00edho hlasov\u00e1n\u00ed uzel voliteln\u011b za\u010d\u00edn\u00e1 hlasovat pro n\u011bjakou hodnotu V. To znamen\u00e1, \u017ee vys\u00edl\u00e1 do s\u00edt\u011b zpr\u00e1vu: \u201eJ\u00e1 jsem uzel N, m\u00e9 kv\u00f3rum Q, a hlasuji pro V\u201c. Kdy\u017e uzel hlasuje t\u00edmto zp\u016fsobem, slibuje, \u017ee nikdy nehlasoval proti V a nikdy nebude.<\/p>\n<p>V p\u0159enosu od rovnocenn\u00fdch uzl\u016f ka\u017ed\u00fd uzel vid\u00ed, jak hlasuj\u00ed ostatn\u00ed. Jakmile uzel shrom\u00e1\u017ed\u00ed dostate\u010dn\u00fd po\u010det t\u011bchto zpr\u00e1v, m\u016f\u017ee sledovat pr\u016f\u0159ezy kv\u00f3r a pokusit se naj\u00edt kv\u00f3ra. Pokud vid\u00ed kv\u00f3r peer\u016f, kte\u0159\u00ed tak\u00e9 hlasuj\u00ed pro V, m\u016f\u017ee p\u0159ej\u00edt k <i>p\u0159ijet\u00ed<\/i> V a vys\u00edlat tuto novou zpr\u00e1vu do s\u00edt\u011b: \u201eJsem uzel N, m\u00e9 pr\u016f\u0159ezy kv\u00f3r Q a p\u0159ij\u00edm\u00e1m V\u201c. P\u0159ijet\u00ed zaji\u0161\u0165uje siln\u011bj\u0161\u00ed z\u00e1ruku ne\u017e pouh\u00e9 hlasov\u00e1n\u00ed. Kdy\u017e uzel hlasuje pro V, nikdy nem\u016f\u017ee hlasovat pro jin\u00e9 mo\u017enosti. Ale pokud uzel p\u0159ijme V, \u017e\u00e1dn\u00fd uzel v s\u00edti nikdy nep\u0159ijme jinou mo\u017enost (v\u011bta 8 v technick\u00e9m dokumentu SCP to dokazuje).<\/p>\n<p>Samoz\u0159ejm\u011b je vysok\u00e1 pravd\u011bpodobnost, \u017ee okam\u017eit\u011b nenajde kv\u00f3r uzl\u016f, kter\u00e9 souhlas\u00ed s V. Ostatn\u00ed uzly mohou hlasovat pro jin\u00e9 hodnoty. Ale pro uzel existuje je\u0161t\u011b jeden zp\u016fsob, jak p\u0159ej\u00edt od jednoduch\u00e9ho hlasov\u00e1n\u00ed k p\u0159ijet\u00ed. N m\u016f\u017ee p\u0159ijmout jinou hodnotu W, i kdy\u017e pro ni nehlasoval, a dokonce ani pokud pro ni nevid\u00ed kv\u00f3rum. Pro rozhodnut\u00ed zm\u011bnit sv\u016fj hlas sta\u010d\u00ed vid\u011bt <i>blokuj\u00edc\u00ed mno\u017einu<\/i> uzl\u016f, kter\u00e9 p\u0159ijaly W. Blokuj\u00edc\u00ed mno\u017eina je po jednom uzlu z ka\u017ed\u00e9ho z pr\u016f\u0159ez\u016f kv\u00f3r N. Jak n\u00e1zev napov\u00edd\u00e1, je schopn\u00e1 <i>blokovat<\/i> jakoukoliv jinou hodnotu. Pokud v\u0161echny uzly v takov\u00e9 mno\u017ein\u011b p\u0159ijmou W, pak (podle v\u011bty 8) nikdy nebude mo\u017en\u00e9 vytvo\u0159it kv\u00f3rum p\u0159ij\u00edmaj\u00edc\u00ed jinou hodnotu, a proto je pro N tak\u00e9 bezpe\u010dn\u00e9 p\u0159ijmout W.<\/p>\n<p><img decoding=\"async\" alt=\"Zkoum\u00e1me konsenzu\u00e1ln\u00ed protokol Stellar\" src=\"\/wp-content\/uploads\/2019\/03\/6dd4ec5595ab863daf684fec670d83a6.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Uzel N se t\u0159emi pr\u016f\u0159ezy kv\u00f3r.<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Zkoum\u00e1me konsenzu\u00e1ln\u00ed protokol Stellar\" src=\"\/wp-content\/uploads\/2019\/03\/b65e32160570af2883eef9990a74e3bd.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>B-D-F je blokuj\u00edc\u00ed mno\u017eina pro N: zahrnuje po jednom uzlu z ka\u017ed\u00e9ho z pr\u016f\u0159ez\u016f N.<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Zkoum\u00e1me konsenzu\u00e1ln\u00ed protokol Stellar\" src=\"\/wp-content\/uploads\/2019\/03\/7e17b4a9ee83aac7fa2b68b2f9fae066.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>B-E je tak\u00e9 blokuj\u00edc\u00ed mno\u017eina pro N, proto\u017ee E se objevuje ve dvou pr\u016f\u0159ezech N.<\/i><\/p>\n<p>Ale blokuj\u00edc\u00ed mno\u017eina nen\u00ed kv\u00f3rum. Bylo by p\u0159\u00edli\u0161 snadn\u00e9 podv\u00e9st uzel N, aby p\u0159ijal po\u017eadovanou hodnotu, pokud by sta\u010dilo hacknout pouze jeden uzel v ka\u017ed\u00e9m pr\u016f\u0159ezu N. Proto p\u0159ijet\u00ed hodnoty nen\u00ed je\u0161t\u011b konec hlasov\u00e1n\u00ed. M\u00edsto toho mus\u00ed N potvrdit hodnotu, to znamen\u00e1 vid\u011bt kv\u00f3rum uzl\u016f, kter\u00e9 ji p\u0159ij\u00edmaj\u00ed. Pokud se dostane tak daleko, pak, jak dokazuje technick\u00fd dokument SCP (ve v\u011bt\u011b 11), zbytek s\u00edt\u011b tak\u00e9 nakonec potvrd\u00ed stejnou hodnotu, tak\u017ee N dokon\u010d\u00ed federativn\u00ed hlasov\u00e1n\u00ed s ur\u010ditou hodnotou jako v\u00fdsledkem.<\/p>\n<p><img decoding=\"async\" alt=\"Zkoum\u00e1me konsenzu\u00e1ln\u00ed protokol Stellar\" src=\"\/wp-content\/uploads\/2019\/03\/bd68dc5172460c17fa2de54fcc0d9017.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Federativn\u00ed hlasov\u00e1n\u00ed.<\/i><\/p>\n<p>Hlasovac\u00ed proces, p\u0159ij\u00edm\u00e1n\u00ed a potvrzov\u00e1n\u00ed tvo\u0159\u00ed jeden \u00fapln\u00fd kolo federativn\u00edho hlasov\u00e1n\u00ed. Konsensu\u00e1ln\u00ed protokol Stellar kombinuje mnoho takov\u00fdch kol k vytvo\u0159en\u00ed pln\u011b konsensu\u00e1ln\u00edho syst\u00e9mu.<\/p>\n<h1>Konsensu\u00e1ln\u00ed protokol Stellar<\/h1>\n<p>\nDv\u011b nejd\u016fle\u017eit\u011bj\u0161\u00ed vlastnosti konsensu\u00e1ln\u00edho syst\u00e9mu \u2013 <i>bezpe\u010dnost<\/i> a <i>odolnost<\/i>. Konsensu\u00e1ln\u00ed algoritmus je \"bezpe\u010dn\u00fd\", pokud nikdy nem\u016f\u017ee poskytnout r\u016fzn\u00e9 v\u00fdsledky r\u016fzn\u00fdm \u00fa\u010dastn\u00edk\u016fm (kopie historie Boba nikdy nebude v rozporu s K\u00e1jou). \"Odolnost\" znamen\u00e1, \u017ee algoritmus v\u017edy vyprodukuje v\u00fdsledek, tedy nezasekne se.<\/p>\n<p>Popisovan\u00fd postup federativn\u00edho hlasov\u00e1n\u00ed <i>je bezpe\u010dn\u00fd<\/i> v tom smyslu, \u017ee pokud uzel potvrd\u00ed hodnotu V, \u017e\u00e1dn\u00fd jin\u00fd uzel nepotvrd\u00ed jinou hodnotu. Ale \"nepotvrd\u00ed jinou hodnotu\" neznamen\u00e1, \u017ee nutn\u011b n\u011bco potvrd\u00ed. \u00da\u010dastn\u00edci mohou hlasovat pro tak velk\u00e9 mno\u017estv\u00ed r\u016fzn\u00fdch hodnot, \u017ee nic nedos\u00e1hne prahu p\u0159ijet\u00ed. To znamen\u00e1, \u017ee v federativn\u00edm hlasov\u00e1n\u00ed chyb\u00ed <i>odolnost<\/i>.<\/p>\n<p>Konsensu\u00e1ln\u00ed protokol Stellar pou\u017e\u00edv\u00e1 federativn\u00ed hlasov\u00e1n\u00ed tak, aby zaru\u010dil jak bezpe\u010dnost, tak odolnost. (Z\u00e1ruky bezpe\u010dnosti a odolnosti SCP maj\u00ed teoretick\u00fd limit. Konstrukce vyb\u00edr\u00e1 velmi silnou z\u00e1ruku bezpe\u010dnosti, ob\u011btov\u00e1n\u00edm m\u00edrn\u00fdm oslaben\u00edm odolnosti, ale s ohledem na dostate\u010dn\u00fd \u010das, konsensus s vysokou pravd\u011bpodobnost\u00ed bude dosa\u017een). Jin\u00fdmi slovy, my\u0161lenka spo\u010d\u00edv\u00e1 v tom, \u017ee se provede n\u011bkolik federativn\u00edch hlasov\u00e1n\u00ed o n\u011bkolika hodnot\u00e1ch, dokud jedna z nich neprojde \u00fapln\u011b v\u0161emi f\u00e1zemi hlasov\u00e1n\u00ed SCP, popsan\u00fdmi n\u00ed\u017ee.<\/p>\n<p>Hodnoty, o kter\u00e9 SCP usiluje o konsensus, mohou b\u00fdt histori\u00ed transakc\u00ed nebo objedn\u00e1vkou ob\u011bda, \u010di \u010d\u00edmkoli jin\u00fdm, ale je d\u016fle\u017eit\u00e9 poznamenat, \u017ee to nejsou hodnoty, kter\u00e9 jsou p\u0159ij\u00edm\u00e1ny nebo potvrzov\u00e1ny. M\u00edsto toho federativn\u00ed hlasov\u00e1n\u00ed prob\u00edh\u00e1 o <i>prohl\u00e1\u0161en\u00edch o t\u011bchto hodnot\u00e1ch<\/i>.<\/p>\n<p>Prvn\u00ed kola federativn\u00edho hlasov\u00e1n\u00ed prob\u00edhaj\u00ed na <i>f\u00e1zi nominace<\/i> (nominacn\u00ed f\u00e1ze), na skupin\u011b prohl\u00e1\u0161en\u00ed typu \u201eNavrhuji V\u201c, mo\u017en\u00e9 pro mnoho r\u016fzn\u00fdch hodnot V. C\u00edlem nominace je naj\u00edt jedno nebo v\u00edce prohl\u00e1\u0161en\u00ed, kter\u00e1 projdou schv\u00e1len\u00edm a potvrzen\u00edm.<\/p>\n<p>Po nalezen\u00ed ov\u011b\u0159iteln\u00fdch kandid\u00e1t\u016f p\u0159ech\u00e1z\u00ed SCP k rozhodovac\u00ed f\u00e1zi, jej\u00edm\u017e c\u00edlem je nal\u00e9zt ur\u010dit\u00fd <i>hlasovac\u00ed l\u00edstek<\/i> (tj. kontejner pro navrhovanou hodnotu) a kv\u00f3rum, kter\u00e9 m\u016f\u017ee vyhl\u00e1sit <i>commit<\/i> pro n\u011bj (commit). Pokud kv\u00f3rum provede commit hlasovac\u00edho l\u00edstku, jeho hodnota se p\u0159ij\u00edm\u00e1 jako konsensus. Ale ne\u017e m\u016f\u017ee uzel hlasovat pro commit hlasovac\u00edho l\u00edstku, mus\u00ed nejprve potvrdit <i>zru\u0161en\u00ed<\/i> v\u0161ech hlasovac\u00edch l\u00edstk\u016f s ni\u017e\u0161\u00ed hodnotou \u010d\u00edta\u010de. Tyto kroky \u2014 zru\u0161en\u00ed hlasovac\u00edch l\u00edstk\u016f za \u00fa\u010delem nalezen\u00ed toho, pro kter\u00fd lze potvrdit commit \u2014 zahrnuj\u00ed n\u011bkolik kol feder\u00e1ln\u00edho hlasov\u00e1n\u00ed o r\u016fzn\u00fdch tvrzen\u00edch o hlasovac\u00edch l\u00edstc\u00edch.<\/p>\n<p>V n\u00e1sleduj\u00edc\u00edch sekc\u00edch jsou podrobn\u011bji pops\u00e1ny nominace a hlasov\u00e1n\u00ed.<\/p>\n<h1>Nominace<\/h1>\n<p>\nNa za\u010d\u00e1tku f\u00e1ze nominace m\u016f\u017ee ka\u017ed\u00fd uzel spont\u00e1nn\u011b zvolit hodnotu V a hlasovat pro prohl\u00e1\u0161en\u00ed \u201eNominuj\u00ed V\u201c. C\u00edlem v t\u00e9to f\u00e1zi je potvrdit nominaci ur\u010dit\u00e9 hodnoty prost\u0159ednictv\u00edm feder\u00e1ln\u00edho hlasov\u00e1n\u00ed.<\/p>\n<p>Je mo\u017en\u00e9, \u017ee dostate\u010dn\u00fd po\u010det uzl\u016f hlasuje pro dostate\u010dn\u011b r\u016fzn\u00e1 tvrzen\u00ed a \u017e\u00e1dn\u00e1 nominace nem\u016f\u017ee dos\u00e1hnout p\u0159ijet\u00ed. Proto krom\u011b p\u0159enosu vlastn\u00edch nominac\u00ed uzly \u201eodr\u00e1\u017eej\u00ed\u201c nominace sv\u00fdch soused\u016f. Odr\u00e1\u017een\u00ed (echo) znamen\u00e1, \u017ee pokud uzel hlasuje pro nominaci V, ale vid\u00ed zpr\u00e1vu od souseda, kter\u00fd hlasuje pro nominaci W, nyn\u00ed bude hlasovat pro nominaci jak V, tak W. (Ne v\u0161echny hlasy soused\u016f jsou b\u011bhem nominace odr\u00e1\u017eeny, proto\u017ee to m\u016f\u017ee v\u00e9st k v\u00fdbuchu r\u016fzn\u00fdch nominant\u016f. SCP zahrnuje mechanismus regulace t\u011bchto hlas\u016f. Kr\u00e1tce \u0159e\u010deno, existuje vzorec pro ur\u010den\u00ed \u201epriorit\u201c souseda z pohledu uzlu a odr\u00e1\u017eeny jsou pouze hlasy vysoce prioritn\u00edch uzl\u016f. \u010c\u00edm d\u00e9le nominace trv\u00e1, t\u00edm ni\u017e\u0161\u00ed je prah, tak\u017ee uzel roz\u0161i\u0159uje sadu soused\u016f, jejich\u017e hlasy bude odr\u00e1\u017eet. Vzorec priority jako jeden z vstupn\u00edch \u00fadaj\u016f zahrnuje \u010d\u00edslo slotu, tak\u017ee vysoce prioritn\u00ed peer m\u016f\u017ee b\u00fdt pro jeden slot n\u00edzkoprioritn\u00ed pro jin\u00fd, a naopak).<\/p>\n<p>Konceptu\u00e1ln\u011b je vyhl\u00e1\u0161en\u00ed V i W odd\u011blen\u00fdmi federativn\u00edmi hlasy, p\u0159i\u010dem\u017e ka\u017ed\u00fd z nich m\u00e1 schopnost dos\u00e1hnout p\u0159ijet\u00ed nebo potvrzen\u00ed. V praxi protokoly SCP bal\u00ed tyto jednotliv\u00e9 hlasy dohromady.<\/p>\n<p>I kdy\u017e hlasov\u00e1n\u00ed pro vyhl\u00e1\u0161en\u00ed V znamen\u00e1 slib, \u017ee nikdy nebudete hlasovat proti vyhl\u00e1\u0161en\u00ed V, na aplika\u010dn\u00ed \u00farovni \u2013 v tomto p\u0159\u00edpad\u011b SCP \u2013 se ur\u010duje, co znamen\u00e1 \"proti\". SCP nevid\u00ed prohl\u00e1\u0161en\u00ed, kter\u00e9 konfliktuje s hlasov\u00e1n\u00edm \"Vyhla\u0161uji X\", tedy neexistuje \u017e\u00e1dn\u00e1 zpr\u00e1va \"Jsem proti vyhl\u00e1\u0161en\u00ed X\", tak\u017ee uzel m\u016f\u017ee hlasovat pro vyhl\u00e1\u0161en\u00ed jak\u00fdchkoli hodnot. Mnoh\u00e9 z t\u011bchto nominac\u00ed nikam nevedou, ale nakonec bude uzel schopen p\u0159ijmout nebo potvrdit jednu nebo v\u00edce hodnot. Jakmile je nominant potvrzen, st\u00e1v\u00e1 se <i>kandid\u00e1tem<\/i>.<\/p>\n<p><img decoding=\"async\" alt=\"Zkoum\u00e1me konsenzu\u00e1ln\u00ed protokol Stellar\" src=\"\/wp-content\/uploads\/2019\/03\/794f55d076ec3e1773c49d32e29c084d.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Vyhl\u00e1\u0161en\u00ed SCP pomoc\u00ed federativn\u00edho hlasov\u00e1n\u00ed. M\u016f\u017ee b\u00fdt mnoho hodnot \"B\" navrhovan\u00fdch rovnocenn\u00fdmi uzly a \"odr\u00e1\u017een\u00fdch\" uzlem.<\/i> <\/p>\n<p>N\u00e1vrh kandid\u00e1t\u016f m\u016f\u017ee v\u00e9st k v\u00fdskytu n\u011bkolika potvrzovan\u00fdch kandid\u00e1t\u016f. Proto SCP vy\u017eaduje, aby aplika\u010dn\u00ed \u00farove\u0148 poskytla n\u011bjakou metodu slou\u010den\u00ed kandid\u00e1t\u016f do jednoho <i>kompozitu<\/i> (composite). Metoda slou\u010den\u00ed m\u016f\u017ee b\u00fdt jak\u00e1koli. Hlavn\u00ed je, \u017ee pokud je tato metoda deterministick\u00e1, ka\u017ed\u00fd uzel slou\u010d\u00ed stejn\u00e9 kandid\u00e1ty. V syst\u00e9mu hlasov\u00e1n\u00ed na ob\u011bd \"slou\u010den\u00ed\" m\u016f\u017ee znamenat jednodu\u0161e odm\u00edtnut\u00ed jednoho z dvou kandid\u00e1t\u016f. (Ale deterministicky: ka\u017ed\u00fd uzel mus\u00ed vybrat stejnou hodnotu k zru\u0161en\u00ed. Nap\u0159\u00edklad d\u0159\u00edv\u011bj\u0161\u00ed v\u00fdb\u011br v abecedn\u00edm po\u0159ad\u00ed). V platebn\u00ed s\u00edti Stellar, kde prob\u00edh\u00e1 hlasov\u00e1n\u00ed o historii transakc\u00ed, slou\u010den\u00ed dvou navrhovan\u00fdch nominant\u016f p\u0159edpokl\u00e1d\u00e1 slou\u010den\u00ed transakc\u00ed, kter\u00e9 obsahuj\u00ed, a posledn\u00edch z jejich dvou \u010dasov\u00fdch zna\u010dek.<\/p>\n<p>Technick\u00fd popis SCP dokazuje (v\u011bta 12), \u017ee na konci f\u00e1ze vyhl\u00e1\u0161en\u00ed se s\u00ed\u0165 nakonec sb\u00edh\u00e1 k jednomu kompozitu. Ale je tu probl\u00e9m: federativn\u00ed hlasov\u00e1n\u00ed je asynchronn\u00ed protokol (stejn\u011b jako SCP). Jin\u00fdmi slovy, uzly nejsou koordinov\u00e1ny podle \u010dasu, ale pouze podle zpr\u00e1v, kter\u00e9 pos\u00edlaj\u00ed. Z pohledu uzlu nen\u00ed jasn\u00e9, kdy <i>skon\u010dila<\/i> f\u00e1ze nominace. I kdy\u017e v\u0161echny uzly nakonec doraz\u00ed ke stejn\u00e9mu kompozitu, mohou si na t\u00e9to cest\u011b vybrat r\u016fzn\u00e9 trasy a vytv\u00e1\u0159et po cest\u011b r\u016fzn\u00e9 kandid\u00e1ty, ani\u017e by bylo mo\u017en\u00e9 \u0159\u00edct, kter\u00fd z nich je kone\u010dn\u00fd.<\/p>\n<p>Ale to nevad\u00ed. Nominace je jen p\u0159\u00edprava. Hlavn\u00ed je omezit po\u010det kandid\u00e1t\u016f k dosa\u017een\u00ed konsensu, kter\u00fd prob\u00edh\u00e1 v procesu <i>hlasov\u00e1n\u00ed<\/i> (balloting).<\/p>\n<h1>Hlasov\u00e1n\u00ed<\/h1>\n<p>\nHlasovac\u00ed l\u00edstek je p\u00e1r , kde counter je cel\u00e9 \u010d\u00edslo za\u010d\u00ednaj\u00edc\u00ed na 1 a value je kandid\u00e1t z f\u00e1ze nominace. M\u016f\u017ee to b\u00fdt vlastn\u00ed kandid\u00e1t uzlu nebo kandid\u00e1t sousedn\u00edho uzlu, kter\u00fd byl t\u00edmto uzlem p\u0159ijat. Jin\u00fdmi slovy, p\u0159i hlasov\u00e1n\u00ed se opakovan\u011b pokou\u0161\u00edme donutit s\u00ed\u0165 dos\u00e1hnout konsensu o n\u011bjak\u00e9m kandid\u00e1tovi v n\u011bjak\u00e9m hlasovac\u00edm l\u00edstku prost\u0159ednictv\u00edm potenci\u00e1ln\u011b mnoha federativn\u00edch hlasov\u00e1n\u00ed o prohl\u00e1\u0161en\u00edch o hlasovac\u00edch l\u00edstc\u00edch. Po\u010d\u00edtadla v hlasovac\u00edch l\u00edstc\u00edch sleduj\u00ed u\u010din\u011bn\u00e9 pokusy a hlasovac\u00ed l\u00edstky s vy\u0161\u0161\u00edmi po\u010d\u00edtadly maj\u00ed prioritu p\u0159ed hlasovac\u00edmi l\u00edstky s ni\u017e\u0161\u00edmi po\u010d\u00edtadly. Pokud hlasovac\u00ed l\u00edstek  uv\u00edzne, za\u010dne nov\u00e9 hlasov\u00e1n\u00ed, nyn\u00ed o hlasovac\u00edm l\u00edstku .<\/p>\n<p>Je d\u016fle\u017eit\u00e9 rozli\u0161ovat <i>hodnoty<\/i> (nap\u0159\u00edklad jak by m\u011bla vypadat objedn\u00e1vka na ob\u011bd: pizza nebo sal\u00e1ty), <i>hlasovac\u00ed l\u00edstky<\/i> (p\u00e1r counter-value) a <i>prohl\u00e1\u0161en\u00ed<\/i> o hlasovac\u00edch l\u00edstc\u00edch. Kolo SCP zahrnuje n\u011bkolik kol federativn\u00edho hlasov\u00e1n\u00ed, zejm\u00e9na na takov\u00e1 prohl\u00e1\u0161en\u00ed:<\/p>\n<ul>\n<li>\u201eJsem p\u0159ipraven potvrdit hlasovac\u00ed l\u00edstek B\u201c a\n<\/li>\n<li>\u201eVyhla\u0161uji potvrzen\u00ed hlasovac\u00edho l\u00edstku B\u201c<\/li>\n<\/ul>\n<p>\nZ pohledu tohoto uzlu je konsensus dosa\u017een, kdy\u017e najde hlasovac\u00ed l\u00edstek B, pro kter\u00fd m\u016f\u017ee potvrdit (to znamen\u00e1 naj\u00edt kv\u00f3rum p\u0159ij\u00edmaj\u00edc\u00ed) prohl\u00e1\u0161en\u00ed \u201eVyhla\u0161uji potvrzen\u00ed hlasovac\u00edho l\u00edstku B\u201c. Od t\u00e9to chv\u00edle je mo\u017en\u00e9 bezpe\u010dn\u011b jednat podle hodnoty uveden\u00e9 v B \u2013 nap\u0159\u00edklad prov\u00e9st tuto objedn\u00e1vku na ob\u011bd. To se naz\u00fdv\u00e1 <i>externalizace<\/i> hodnoty. Jakmile je potvrzeno p\u0159ijet\u00ed hlasovac\u00edho l\u00edstku, m\u016f\u017ee si uzel b\u00fdt jist\u00fd, \u017ee kter\u00fdkoli jin\u00fd uzel provedl externalizaci t\u00e9\u017ee hodnoty nebo ji nutn\u011b provede v budoucnu.<\/p>\n<p>A\u010dkoliv jsou konceptu\u00e1ln\u011b mnoh\u00e1 federativn\u00ed hlasov\u00e1n\u00ed prov\u00e1d\u011bna na z\u00e1klad\u011b \u017e\u00e1dost\u00ed o r\u016fzn\u00e9 volebn\u00ed l\u00edstky, nevym\u011b\u0148uj\u00ed se tolik zpr\u00e1v, proto\u017ee ka\u017ed\u00e1 zpr\u00e1va obsahuje \u0159adu volebn\u00edch l\u00edstk\u016f. Jedna zpr\u00e1va tak propaguje stav mnoha federativn\u00edch hlasov\u00e1n\u00ed najednou, nap\u0159\u00edklad: \u201eP\u0159ij\u00edm\u00e1m komit volebn\u00edch l\u00edstk\u016f v rozmez\u00ed od  do .\u201d<\/p>\n<p>Co znamenaj\u00ed term\u00edny \u201ep\u0159ipraven\u201d (prepared) a \u201ekomit\u201d (commit)?<\/p>\n<p>Uzly hlasuj\u00ed pro komit volebn\u00edho l\u00edstku, kdy\u017e jsou p\u0159esv\u011bd\u010deny, \u017ee jin\u00e9 uzly neprovedou komit volebn\u00edch l\u00edstk\u016f s jin\u00fdmi hodnotami. P\u0159esv\u011bd\u010den\u00ed o tom je c\u00edlem p\u0159\u00edpravy prohl\u00e1\u0161en\u00ed. Hlasov\u00e1n\u00ed, ve kter\u00e9m se \u0159\u00edk\u00e1: \u201eJsem p\u0159ipraven k comitu volebn\u00edho l\u00edstku B\u201c, je slibem, \u017ee nikdy neprovedou komit volebn\u00edho l\u00edstku men\u0161\u00edho ne\u017e B, tj. s men\u0161\u00edmi \u010d\u00edta\u010di (SCP vy\u017eaduje, aby hodnoty ve volebn\u00edch l\u00edstc\u00edch m\u011bly ur\u010dit\u00fd po\u0159\u00e1dek. Tak\u017ee volebn\u00ed l\u00edstek  je men\u0161\u00ed ne\u017e , pokud N1&lt;N2, a tak\u00e9 pokud N1=N2 a V1&lt;V2). Tyto men\u0161\u00ed volebn\u00ed l\u00edstky jsou b\u011bhem p\u0159\u00edpravn\u00e9ho hlasov\u00e1n\u00ed \u201ezru\u0161eny\u201d (aborted), zat\u00edmco B je pova\u017eov\u00e1no za \u201ep\u0159ipraven\u00e9\u201d.<\/p>\n<p>Pro\u010d \u201eJsem p\u0159ipraven k comitu volebn\u00edho l\u00edstku V\u201d znamen\u00e1 \u201eSlibuji, \u017ee nikdy neprovedu komit volebn\u00edch l\u00edstk\u016f men\u0161\u00edch ne\u017e V\u201d? Proto\u017ee SCP definuje abort jako protiklad commit. Hlasov\u00e1n\u00ed o p\u0159\u00edprav\u011b volebn\u00edho l\u00edstku nazna\u010duje tak\u00e9 hlasov\u00e1n\u00ed o zru\u0161en\u00ed n\u011bkter\u00fdch dal\u0161\u00edch volebn\u00edch l\u00edstk\u016f, a jak jsme se ji\u017e zm\u00ednili, hlasov\u00e1n\u00ed pro n\u011bco znamen\u00e1 slib, \u017ee proti tomu nikdy nebudou hlasovat.<\/p>\n<p>Ne\u017e uzel vys\u00edl\u00e1 komit, mus\u00ed nejprve naj\u00edt volebn\u00ed l\u00edstek, kter\u00fd m\u016f\u017ee potvrdit jako p\u0159ipraven\u00fd. Jin\u00fdmi slovy, prov\u00e1d\u00ed federativn\u00ed hlasov\u00e1n\u00ed na t\u00e9ma \u201eJsem p\u0159ipraven k comitu volebn\u00edho l\u00edstku B\u201c, mo\u017en\u00e1 pro mnoho r\u016fzn\u00fdch volebn\u00edch l\u00edstk\u016f, dokud nenajde ten, kter\u00fd akceptuje kv\u00f3rum.<\/p>\n<p>Odkud poch\u00e1zej\u00ed hlasovac\u00ed l\u00edstky pro p\u0159\u00edpravu hlasov\u00e1n\u00ed? Nejprve uzel vys\u00edl\u00e1 p\u0159\u00edpravu na hlasov\u00e1n\u00ed pro , kde C je kandid\u00e1t-kompozit, vytvo\u0159en\u00fd v r\u00e1mci nominace. Nicm\u00e9n\u011b i po zah\u00e1jen\u00ed p\u0159\u00edpravy na hlasov\u00e1n\u00ed m\u016f\u017ee nominace v\u00e9st k vzniku dal\u0161\u00edch kandid\u00e1t\u016f, kte\u0159\u00ed se stanou nov\u00fdmi hlasovac\u00edmi l\u00edstky. Mezit\u00edm mohou m\u00edt piri r\u016fzn\u00e9 kandid\u00e1ty a mohou formulovat blokuj\u00edc\u00ed mno\u017einu, kter\u00e1 p\u0159ijet\u00ed \"Jsem p\u0159ipraven k potvrzen\u00ed hlasovac\u00edho l\u00edstku B2\" p\u0159esv\u011bd\u010d\u00ed uzel tak\u00e9 k p\u0159ijet\u00ed. Nakonec zde existuje \u010dasov\u00fd mechanismus, kter\u00fd generuje nov\u00e9 kolo federativn\u00edho hlasov\u00e1n\u00ed na nov\u00fdch hlasovac\u00edch l\u00edstc\u00edch s vy\u0161\u0161\u00edmi \u010d\u00edta\u010di, pokud se aktu\u00e1ln\u00ed hlasovac\u00ed l\u00edstky zaseknou.<\/p>\n<p>Jakmile uzel najde hlasovac\u00ed l\u00edstek B, kter\u00fd m\u016f\u017ee potvrdit jako p\u0159ipraven\u00fd, vys\u00edl\u00e1 novou zpr\u00e1vu \"Potvrzen\u00ed hlasovac\u00edho l\u00edstku B\". Toto hlasov\u00e1n\u00ed \u0159\u00edk\u00e1 pir\u016fm, \u017ee uzel se nikdy nevzd\u00e1 B. Ve skute\u010dnosti, pokud B p\u0159edstavuje hlasovac\u00ed l\u00edstek , pak \"Potvrzen\u00ed hlasovac\u00edho l\u00edstku \" znamen\u00e1 bezpodm\u00edne\u010dn\u00fd souhlas hlasovat pro p\u0159ipravenost ka\u017ed\u00e9ho hlasovac\u00edho l\u00edstku od  do . Tato dodate\u010dn\u00e1 hodnota pom\u00e1h\u00e1 ostatn\u00edm uzl\u016fm dohnat pira s potvrzen\u00edm, pokud jsou st\u00e1le v d\u0159\u00edv\u011bj\u0161\u00edch f\u00e1z\u00edch protokolu.<\/p>\n<p>V t\u00e9to f\u00e1zi je t\u0159eba je\u0161t\u011b jednou zd\u016fraznit, \u017ee se jedn\u00e1 o asynchronn\u00ed protokoly. Jen proto, \u017ee jeden uzel pos\u00edl\u00e1 hlasy pro potvrzen\u00ed, neznamen\u00e1, \u017ee jeho vrstevn\u00edci to d\u011blaj\u00ed tak\u00e9. N\u011bkte\u0159\u00ed z nich st\u00e1le mohou hlasovat o prohl\u00e1\u0161en\u00edch pro p\u0159\u00edpravu na hlasov\u00e1n\u00ed, jin\u00ed ji\u017e mo\u017en\u00e1 externilizovali hodnotu. SCP vysv\u011btluje, jak by uzel m\u011bl zpracov\u00e1vat ka\u017ed\u00fd typ peer-to-peer zpr\u00e1vy bez ohledu na jeho f\u00e1zi.<\/p>\n<p>Pokud zpr\u00e1va \u201eProhla\u0161uji commit \u201c nem\u016f\u017ee b\u00fdt p\u0159ijata nebo potvrzena, existuje \u0161ance na p\u0159ijet\u00ed nebo potvrzen\u00ed zpr\u00e1vy  nebo  \u2014 nebo v ka\u017ed\u00e9m p\u0159\u00edpad\u011b jak\u00e9koli zpr\u00e1vy se hodnotou C a ne jinou, proto\u017ee uzel u\u017e sl\u00edbil nikdy neodvolat . V dob\u011b, kdy uzel p\u0159en\u00e1\u0161\u00ed hlasy pro commit, to bude C nebo nic, v z\u00e1vislosti na tom, jak daleko se dostane konsensus. Nicm\u00e9n\u011b to zat\u00edm nen\u00ed pro uzel dosta\u010duj\u00edc\u00ed k exter-nalizaci C. N\u011bkter\u00e9 byzantsk\u00e9 \u00faniky (sest\u00e1vaj\u00edc\u00ed z m\u00e9n\u011b ne\u017e kvora, na z\u00e1klad\u011b na\u0161ich p\u0159edpoklad\u016f o bezpe\u010dnosti) mohou uzlu lh\u00e1t. P\u0159ijet\u00ed a n\u00e1sledn\u00e9 potvrzen\u00ed ur\u010dit\u00e9 zpr\u00e1vy (nebo rozsahu zpr\u00e1v) je to, co poskytuje uzlu jistotu, \u017ee kone\u010dn\u011b m\u016f\u017ee exter-nalizovat C.<\/p>\n<p><img decoding=\"async\" alt=\"Zkoum\u00e1me konsenzu\u00e1ln\u00ed protokol Stellar\" src=\"\/wp-content\/uploads\/2019\/03\/c59f036bb8aa189bb3d4540f54121391.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Hlasov\u00e1n\u00ed SCP pomoc\u00ed federativn\u00edho hlasov\u00e1n\u00ed. Nezobrazeno: v kter\u00e9mkoli okam\u017eiku se m\u016f\u017ee spustit \u010dasova\u010d, kter\u00fd zv\u00fd\u0161\u00ed po\u010det v hlasov\u00e1n\u00ed (a mo\u017en\u00e1 vytvo\u0159\u00ed novou kompozici z dodate\u010dn\u011b navr\u017een\u00fdch kandid\u00e1t\u016f).<\/i> <\/p>\n<p>A to je v\u0161e! Jakmile s\u00ed\u0165 dos\u00e1hne konsensu, je p\u0159ipravena d\u011blat to znovu a znovu. V platebn\u00ed s\u00edti Stellar se to d\u011bje p\u0159ibli\u017en\u011b ka\u017ed\u00fdch 5 sekund: \u00fakol, kter\u00fd vy\u017eaduje jak bezpe\u010dnost, tak odolnost, zaru\u010denou SCP.<\/p>\n<p>SCP m\u016f\u017ee toho dos\u00e1hnout op\u0159en\u00edm se o n\u011bkolik kol federativn\u00edho hlasov\u00e1n\u00ed. Federativn\u00ed hlasov\u00e1n\u00ed bylo umo\u017en\u011bno konceptem kv\u00f3rumov\u00fdch \u0159ez\u016f: sadou rovnocenn\u00fdch uzl\u016f, kter\u00fdm se ka\u017ed\u00fd uzel rozhodl d\u016fv\u011b\u0159ovat jako sou\u010d\u00e1st sv\u00e9ho (subjektivn\u00edho) kv\u00f3ra. Tato konfigurace znamen\u00e1, \u017ee lze dos\u00e1hnout konsensu i v s\u00edti s otev\u0159en\u00fdm \u010dlenstv\u00edm a byzantsk\u00fdmi podvody.<\/p>\n<h1>Dal\u0161\u00ed \u010dten\u00ed<\/h1>\n<p><\/p>\n<ul>\n<li>Origin\u00e1ln\u00ed technick\u00fd dokument SCP lze nal\u00e9zt <noindex><a rel=\"nofollow\" href=\"https:\/\/www.stellar.org\/papers\/stellar-consensus-protocol.pdf\">zde<\/a><\/noindex>, a <noindex><a rel=\"nofollow\" href=\"https:\/\/datatracker.ietf.org\/doc\/draft-mazieres-dinrg-scp\/\">tady<\/a><\/noindex> projektovan\u00e1 specifikace pro jeho implementaci.\n<\/li>\n<li>Origin\u00e1ln\u00ed autor protokolu SCP David Mazieres zjednodu\u0161en\u011b (ale st\u00e1le technicky) vysv\u011btluje jeho <noindex><a rel=\"nofollow\" href=\"http:\/\/www.scs.stanford.edu\/~dm\/blog\/simplified-scp.html\">zde<\/a><\/noindex>.\n<\/li>\n<li>Mo\u017en\u00e1 v\u00e1s p\u0159ekvapilo, \u017ee v tomto \u010dl\u00e1nku nenajdete v\u00fdrazy \u201et\u011b\u017eba\u201c nebo \u201ed\u016fkaz pr\u00e1ce\u201c. SCP tyto metody nepou\u017e\u00edv\u00e1, ale n\u011bkter\u00e9 jin\u00e9 algoritmy konsensu je pou\u017e\u00edvaj\u00ed. Zain Wizerspoon napsal p\u0159\u00edstupn\u00fd <noindex><a rel=\"nofollow\" href=\"https:\/\/hackernoon.com\/a-hitchhikers-guide-to-consensus-algorithms-d81aae3eb0e3\">p\u0159ehled algoritm\u016f konsensu<\/a><\/noindex>.\n<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/bobg\/scp\/blob\/master\/Lunch.md\">Krok za krokem popis<\/a><\/noindex> jednoduch\u00e9 s\u00edt\u011b, kter\u00e1 dosahuje konsensu b\u011bhem jednoho \u00fapln\u00e9ho kola SCP.\n<\/li>\n<li>Pro \u010dten\u00e1\u0159e, kte\u0159\u00ed maj\u00ed z\u00e1jem o implementace SCP: viz. <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/stellar\/stellar-core\/tree\/master\/src\/scp\">k\u00f3d C++<\/a><\/noindex>, pou\u017e\u00edvan\u00fd platebn\u00ed s\u00edt\u00ed Stellar, nebo <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/bobg\/scp\">k\u00f3d Go<\/a><\/noindex>, kter\u00fd jsem napsal pro lep\u0161\u00ed porozum\u011bn\u00ed SCP.<\/li>\n<\/ul>\n<p>Zdroj: <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.3 - 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\/cs\/blog\/razbiraemsya-v-protokole-konsensusa-stellar\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"cs_CZ\" \/>\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\/cs\/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\udd47Porozum\u011bn\u00ed konsensu\u00e1ln\u00edmu protokolu Stellar | ProHoster","description":"Konsensu\u00e1ln\u00ed protokol Stellar byl poprv\u00e9 pops\u00e1n v.","canonical_url":"https:\/\/prohoster.info\/cs\/blog\/razbiraemsya-v-protokole-konsensusa-stellar","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"cs_CZ","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\/cs\/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\/cs\/wp-json\/wp\/v2\/posts\/30047","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/comments?post=30047"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts\/30047\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/media?parent=30047"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/categories?post=30047"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/tags?post=30047"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}