{"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\/ro\/blog\/razbiraemsya-v-protokole-konsensusa-stellar","title":{"rendered":"Ne familiariz\u0103m cu protocolul de consens Stellar","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Ne familiariz\u0103m cu protocolul de consens Stellar\" src=\"\/wp-content\/uploads\/2019\/03\/09b61160286ae40c21269e1590fc2b92.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nProtocolul de consens Stellar a fost descris pentru prima dat\u0103 \u00een <noindex><a rel=\"nofollow\" href=\"https:\/\/www.stellar.org\/papers\/stellar-consensus-protocol.pdf\">articol \u0219tiin\u021bific<\/a><\/noindex> 2015 de David Mazie\u0219. Este un \u201esistem federativ de acord bizantin\u201d, care permite re\u021belelor de calcul descentralizate f\u0103r\u0103 lideri s\u0103 ajung\u0103 eficient la consens cu privire la o decizie anume. Re\u021beaua de pl\u0103\u021bi Stellar folose\u0219te Protocolul de Consens Stellar (SCP) pentru a men\u021bine o istorie consensual\u0103 a tranzac\u021biilor, pe care toate p\u0103r\u021bile o pot vedea.<\/p>\n<p>Se consider\u0103 c\u0103 protocoalele de consens sunt dificile de \u00een\u021beles. SCP este mai simplu dec\u00e2t majoritatea dintre ele, dar totu\u0219i \u00eemp\u0103rt\u0103\u0219e\u0219te aceast\u0103 reputa\u021bie \u2014 par\u021bial din cauza ideii gre\u0219ite c\u0103 \u201evotul federativ\u201d, despre care se discut\u0103 \u00een prima jum\u0103tate a articolului, este SCP. Dar nu este a\u0219a! Este doar un bloc de construc\u021bie important, care \u00een a doua jum\u0103tate a articolului este utilizat pentru a crea <i>protocolul efectiv<\/i> de consens Stellar.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\n\u00cen acest articol, vom explica pe scurt ce este un \u201esistem de acord\u201d, ce poate face acesta \u201ebizantin\u201d \u0219i de ce trebuie s\u0103 facem ca un sistem bizantin s\u0103 fie \u201efederativ\u201d. Apoi, vom explica procedura de votare federativ\u0103 descris\u0103 \u00een articolul despre SCP \u0219i, \u00een final, vom explica protocolul SCP \u00een sine.<\/p>\n<h1>Sistemele de acord<\/h1>\n<p>\nSistemul de acord permite unui grup de participan\u021bi s\u0103 ajung\u0103 la consens cu privire la un anumit subiect, de exemplu, ce s\u0103 comand\u0103m la pr\u00e2nz.<\/p>\n<p>Noi, la compania Interstellar, am implementat propriul nostru sistem de acord pentru pr\u00e2nz: comand\u0103m ceea ce spune managerul nostru opera\u021bional John. Este un sistem simplu \u0219i eficient de acord. To\u021bi avem \u00eencredere \u00een John \u0219i credem c\u0103 el va g\u0103si \u00een fiecare zi ceva interesant \u0219i hr\u0103nitor.<\/p>\n<p>Dar ce se \u00eent\u00e2mpl\u0103 dac\u0103 John abuzeaz\u0103 de \u00eencrederea noastr\u0103? El ar putea decide singur c\u0103 to\u021bi trebuie s\u0103 devenim vegani. Dup\u0103 o s\u0103pt\u0103m\u00e2n\u0103 sau dou\u0103, probabil c\u0103 \u00eel vom r\u0103sturna \u0219i vom \u00eencredin\u021ba puterea Elizabetei. Dar, dintr-o dat\u0103, ea ador\u0103 avocado cu an\u0219oa \u0219i crede c\u0103 to\u021bi ar trebui s\u0103 devin\u0103 la fel. Puterea corupe. De aceea, este mai bine s\u0103 g\u0103sim o metod\u0103 mai democratic\u0103: un mod de a ne asigura c\u0103 diferitele preferin\u021be sunt luate \u00een considerare, asigur\u00e2nd \u00een acela\u0219i timp un rezultat clar \u0219i \u00een timp util, astfel \u00eenc\u00e2t s\u0103 nu se ajung\u0103 \u00een situa\u021bia \u00een care nimeni nu comand\u0103 pr\u00e2nzul sau cinci persoane fac comenzi diferite, sau discu\u021bia se \u00eentinde p\u00e2n\u0103 seara.<\/p>\n<p>P\u0103rea simplu: s\u0103 facem un vot! Dar aceasta este o impresie \u00een\u0219el\u0103toare. Cine va colecta buletinele \u0219i va anun\u021ba rezultatele? \u0218i de ce ceilal\u021bi ar trebui s\u0103 aib\u0103 \u00eencredere \u00een ceea ce va spune el? Poate c\u0103 putem <i>mai \u00eent\u00e2i<\/i> s\u0103 vot\u0103m pentru un lider \u00een care avem \u00eencredere s\u0103 conduc\u0103 votul - dar cine va conduce acest <i>\u00een primul r\u00e2nd<\/i> vot? Ce se \u00eent\u00e2mpl\u0103 dac\u0103 nu ne putem \u00een\u021belege asupra unui lider? Sau dac\u0103 ne \u00een\u021belegem, iar acest lider este blocat la o \u00eent\u00e2lnire sau se \u00eemboln\u0103ve\u0219te?<\/p>\n<p>Probleme similare apar \u00een re\u021belele informatice distribuite. To\u021bi participan\u021bii sau nodurile trebuie s\u0103 ajung\u0103 la un consens cu privire la o anumit\u0103 decizie, cum ar fi cine este responsabil pentru actualizarea unui fi\u0219ier comun sau pentru preluarea unei sarcini dintr-o coad\u0103 de procesare. \u00centr-o re\u021bea de criptomonede, nodurile trebuie s\u0103 aleag\u0103 de mai multe ori cum arat\u0103 istoricul complet dintre mai multe versiuni posibile, care uneori pot intra \u00een conflict. Acest consim\u021b\u0103m\u00e2nt \u00een re\u021bea ofer\u0103 destinatarului asigurarea c\u0103 moneda este (a) valid\u0103 (nu contraf\u0103cut\u0103) \u0219i (b) nu a fost cheltuit\u0103 \u00een alt\u0103 parte. Aceasta garanteaz\u0103, de asemenea, c\u0103 el va putea s\u0103 cheltuie monedele \u00een viitor, deoarece noul destinatar va avea acelea\u0219i garan\u021bii din acelea\u0219i motive.<\/p>\n<p>Orice sistem de consens \u00eentr-o re\u021bea de calcul distribuit\u0103 trebuie s\u0103 fie tolerat la defecte: acesta trebuie s\u0103 ofere rezultate consistente, \u00een ciuda erorilor, cum ar fi linii de comunica\u021bie lente, noduri care nu r\u0103spund \u0219i ordinea gre\u0219it\u0103 a mesajelor. <i>Sistemul<\/i> de consens bizantin este suplimentar rezistent la erorile \u201ebizantine\u201d: noduri care ofer\u0103 informa\u021bii false, fie din cauza unei erori, fie \u00een \u00eencercarea deliberat\u0103 de a submina sistemul sau de a ob\u021bine un avantaj. Rezilien\u021ba \u201ebizantin\u0103\u201d - capacitatea de a avea \u00eencredere \u00een deciziile grupului, chiar \u0219i atunci c\u00e2nd unii membri ai grupului pot min\u021bi sau s\u0103 nu urmeze regulile de luare a deciziilor - \u00ee\u0219i are numele \u00een <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\">pilda generalilor Imperiului Bizantin<\/a><\/noindex>, care \u00eencercau s\u0103 coordoneze un atac. <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\">O descriere bun\u0103<\/a><\/noindex> la Anthony Stevens.<\/p>\n<p>S\u0103 ne imagin\u0103m c\u0103 proprietarul de criptomoned\u0103, Alice, trebuie s\u0103 aleag\u0103 \u00eentre a cump\u0103ra \u00eenghe\u021bat\u0103 delicioas\u0103 de la Bob \u0219i a pl\u0103ti o datorie lui Carol. Poate c\u0103 Alice vrea s\u0103 pl\u0103teasc\u0103 am\u00e2ndurora \u00een acela\u0219i timp, cheltuind fraudulos aceea\u0219i moned\u0103. Pentru aceasta, trebuie s\u0103 conving\u0103 computerul lui Bob c\u0103 moneda nu a fost niciodat\u0103 pl\u0103tit\u0103 lui Carol \u0219i s\u0103 conving\u0103 computerul lui Carol c\u0103 moneda nu a fost niciodat\u0103 pl\u0103tit\u0103 lui Bob. Un sistem bizantin de acorduri face acest lucru practic imposibil, utiliz\u00e2nd o form\u0103 de regul\u0103 a majorit\u0103\u021bii, numit\u0103 <i>cvorum<\/i>. Un nod dintr-o astfel de re\u021bea refuz\u0103 s\u0103 treac\u0103 la o anumit\u0103 versiune a istoriei p\u00e2n\u0103 nu vede c\u0103 un num\u0103r suficient de noduri de egal\u0103 putere \u2014 cvorum \u2014 sunt de acord cu aceast\u0103 tranzi\u021bie. Odat\u0103 ce acest lucru se \u00eent\u00e2mpl\u0103, ele formeaz\u0103 un bloc electoral suficient de mare pentru a determina nodurile r\u0103mase din re\u021bea s\u0103 fie de acord cu decizia lor. Alice poate determina unele noduri s\u0103 mint\u0103 \u00een numele ei, dar, dac\u0103 re\u021beaua este suficient de mare, \u00eencercarea ei va fi supresat\u0103 de vocile nodurilor oneste.<\/p>\n<p>C\u00e2te noduri sunt necesare pentru un cvorum? Cel pu\u021bin, majoritatea, sau mai precis, o majoritate calificat\u0103 pentru a combate erorile \u0219i fraudele. Dar pentru a calcula majoritatea, este necesar s\u0103 se cunoasc\u0103 num\u0103rul total de participan\u021bi. La biroul Interstellar sau la alegerile locale, aceste cifre sunt u\u0219or de aflat. \u00cens\u0103 dac\u0103 grupul dvs. este o re\u021bea slab definit\u0103, \u00een care nodurile pot intra \u0219i ie\u0219i dup\u0103 bunul plac f\u0103r\u0103 a se coordona cu un centru, atunci este nevoie de <i>un sistem<\/i> federativ de acord bizantin, capabil s\u0103 determine cvorumuri nu dintr-o list\u0103 prestabilit\u0103 de noduri, ci dintr-un instantaneu dinamic, mereu schimb\u0103tor \u0219i inevitabil incomplet de noduri \u00eentr-un anumit moment.<\/p>\n<p>Poate p\u0103rea imposibil s\u0103 se creeze un cvorum din perspectiva unui nod \u00eentr-o re\u021bea vast\u0103, dar este posibil. Un astfel de cvorum poate chiar garanta rezultatele votului descentralizat. Documentul tehnic SCP arat\u0103 cum se poate face acest lucru printr-o procedur\u0103 denumit\u0103 <i>votare federativ\u0103<\/i>.<\/p>\n<h1>Pentru cei ner\u0103bd\u0103tori<\/h1>\n<p>\nRestul articolului descrie mai detaliat votarea federativ\u0103 \u0219i protocolul de consens Stellar. Dac\u0103 nu v\u0103 intereseaz\u0103 detaliile, iat\u0103 o prezentare general\u0103 a procesului.<\/p>\n<ol>\n<li>Nodurile desf\u0103\u0219oar\u0103 runde de vot federal pentru \u00abnomina\u021bi\u00bb. Runda de votare federal\u0103 \u00eenseamn\u0103:\n<ul>\n<li>Un nod voteaz\u0103 pentru o anumit\u0103 afirma\u021bie, de exemplu, \u00abPropun valoarea V\u00bb;\n<\/li>\n<li>Un nod ascult\u0103 vocile p\u0103r\u021bilor implicate, p\u00e2n\u0103 c\u00e2nd g\u0103se\u0219te pe cineva care poate \u00abaccepta\u00bb;\n<\/li>\n<li>Un nod caut\u0103 \u00abcvorumul\u00bb pentru aceast\u0103 afirma\u021bie. Cvorumul \u00abconfirm\u0103\u00bb nominalizatul.<\/li>\n<\/ul>\n<\/li>\n<li>Odat\u0103 ce nodul poate confirma unul sau mai mul\u021bi nominaliza\u021bi, el \u00eencearc\u0103 s\u0103 \u00abpreg\u0103teasc\u0103\u00bb \u00abbuletinul\u00bb prin c\u00e2teva runde de votare federal\u0103.\n<\/li>\n<li>Odat\u0103 ce nodul este capabil s\u0103 verifice preg\u0103tirea buletinului, el \u00eencearc\u0103 s\u0103-l angajeze cu ajutorul unor runde suplimentare de votare federal\u0103.\n<\/li>\n<li>Odat\u0103 ce nodul poate confirma angajamentul buletinului, el poate \u00abexternaliza\u00bb valoarea acestui buletin, folosindu-l ca rezultat al consensului.<\/li>\n<\/ol>\n<p>\nAce\u0219ti pa\u0219i includ mai multe runde de votare federal\u0103, care \u00eempreun\u0103 formeaz\u0103 o rund\u0103 SCP. S\u0103 vedem \u00een detaliu ce se \u00eent\u00e2mpl\u0103 la fiecare pas.<\/p>\n<h1>Votare federal\u0103<\/h1>\n<p>\nVotarea federal\u0103 este o procedur\u0103 care determin\u0103 dac\u0103 re\u021beaua poate concilia o propunere. \u00cen runda de votare, fiecare nod trebuie s\u0103 aleag\u0103 una dintre numeroasele valori posibile. Nu poate face acest lucru p\u00e2n\u0103 c\u00e2nd nu este sigur c\u0103 celelalte noduri din re\u021bea nu vor alege un alt rezultat. Pentru a fi sigure de acest lucru, nodurile schimb\u0103 un flux de mesaje \u00een ambele sensuri, astfel \u00eenc\u00e2t fiecare <i>a confirmat<\/i>, ceea ce <i>cvorum<\/i> nod <i>accept\u0103<\/i> aceea\u0219i <i>solu\u021bie<\/i>. Restul acestei sec\u021biuni explic\u0103 termenii din aceast\u0103 afirma\u021bie \u0219i cum se desf\u0103\u0219oar\u0103 \u00eentreaga procedur\u0103.<\/p>\n<h1>Cvorumuri \u0219i \u201ecortege de cvorum\u201d<\/h1>\n<p>\nS\u0103 \u00eencepem cu defini\u021bia unui cvorum. A\u0219a cum am discutat mai devreme, \u00een cadrul unei re\u021bele descentralizate cu membri dinamici, nu este posibil s\u0103 se cunoasc\u0103 dinainte num\u0103rul de noduri \u0219i, prin urmare, c\u00e2te sunt necesare pentru o majoritate. Votarea federal\u0103 rezolv\u0103 aceast\u0103 problem\u0103, introduc\u00e2nd o nou\u0103 idee <i>a \u201ecortegei de cvorum\u201d<\/i> (quorum slice): un set mic de noduri de egali care sunt de \u00eencredere pentru a transmite informa\u021bii despre starea votului \u00een restul re\u021belei. Fiecare nod \u00ee\u0219i define\u0219te propriul corteg de cvorum (de care devine membru prin simpla existen\u021b\u0103).<\/p>\n<p>Formarea cvorumului \u00eencepe cu cortegul de cvorum. Pentru fiecare nod, se adaug\u0103 nodurile din cortegul s\u0103u. Apoi, se adaug\u0103 membrii cortegelor. <i>aceste noduri<\/i> \u015fi a\u015fa mai departe. Pe m\u0103sur\u0103 ce continu\u0103m, g\u0103sim tot mai multe noduri pe care nu le pute\u0163i ad\u0103uga, deoarece sunt deja incluse \u00een sec\u0163iune. C\u00e2nd nu mai exist\u0103 noduri noi de ad\u0103ugat, procesul se \u00eencheie: am format un cvorum prin \u201e\u00eenchidere tranzitiv\u0103\u201d a sec\u0163iunii cvorumului nodului ini\u0163ial.<\/p>\n<p><img decoding=\"async\" alt=\"Ne familiariz\u0103m cu protocolul de consens Stellar\" src=\"\/wp-content\/uploads\/2019\/03\/6991e3f9a22d920e4a5e9c161f32dee1.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Pentru a g\u0103si un cvorum din nodul dat\u2026<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Ne familiariz\u0103m cu protocolul de consens Stellar\" src=\"\/wp-content\/uploads\/2019\/03\/52b3d435a8f4a67b56deb43c83fee828.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>\u2026 ad\u0103ug\u0103m membri ai sec\u0163iunii sale\u2026<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Ne familiariz\u0103m cu protocolul de consens Stellar\" src=\"\/wp-content\/uploads\/2019\/03\/0820e9ca560caf9ebfa92db8e7a1da85.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>\u2026 apoi ad\u0103ug\u0103m membri ai sec\u0163iunilor acestor noduri.<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Ne familiariz\u0103m cu protocolul de consens Stellar\" src=\"\/wp-content\/uploads\/2019\/03\/539933eb3c279fa7da68fc9049516fc8.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Continu\u0103m p\u00e2n\u0103 nu mai r\u0103m\u00e2n noduri de ad\u0103ugat.<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Ne familiariz\u0103m cu protocolul de consens Stellar\" src=\"\/wp-content\/uploads\/2019\/03\/48058639262412514641063a10503a01.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<img decoding=\"async\" alt=\"Ne familiariz\u0103m cu protocolul de consens Stellar\" src=\"\/wp-content\/uploads\/2019\/03\/d068fb06f35337ae68c35b4606f329ae.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Nu mai sunt noduri de ad\u0103ugat. Acesta este cvorumul.<\/i><\/p>\n<p>\u00cen realitate, fiecare nod poate face parte din mai multe sec\u0163iuni. Pentru a forma un cvorum, alege\u0163i doar una dintre sec\u0163iuni \u015fi ad\u0103uga\u0163i membri; apoi alege\u0163i orice sec\u0163iune pentru fiecare dintre membri \u015fi ad\u0103uga\u0163i membri <i>aceasta<\/i> sec\u0163iunii \u015fi a\u015fa mai departe. Aceasta \u00eenseamn\u0103 c\u0103 fiecare nod este membru al unui num\u0103r de cvorumuri posibile.<\/p>\n<p><img decoding=\"async\" alt=\"Ne familiariz\u0103m cu protocolul de consens Stellar\" src=\"\/wp-content\/uploads\/2019\/03\/3427406c132cfd1cd174b856a1239908.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Alege\u0163i doar o sec\u0163iune de cvorum la fiecare pas.<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Ne familiariz\u0103m cu protocolul de consens Stellar\" src=\"\/wp-content\/uploads\/2019\/03\/79a8728890ecb36b2e127b1b76c44fc8.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<img decoding=\"async\" alt=\"Ne familiariz\u0103m cu protocolul de consens Stellar\" src=\"\/wp-content\/uploads\/2019\/03\/22fe0422c73cdf5fb5416e389934c5c3.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<img decoding=\"async\" alt=\"Ne familiariz\u0103m cu protocolul de consens Stellar\" src=\"\/wp-content\/uploads\/2019\/03\/60379efdde3b88fb9c86de6c5b4a0b62.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Un cvorum posibil. Sau o alternativ\u0103\u2026<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Ne familiariz\u0103m cu protocolul de consens Stellar\" src=\"\/wp-content\/uploads\/2019\/03\/341f1e897be1474ee2d67324da2134b1.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>\u2026 alegem alte sec\u0163iuni\u2026<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Ne familiariz\u0103m cu protocolul de consens Stellar\" src=\"\/wp-content\/uploads\/2019\/03\/8a6d605050b075bf935e6151bd1cbe2c.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<img decoding=\"async\" alt=\"Ne familiariz\u0103m cu protocolul de consens Stellar\" src=\"\/wp-content\/uploads\/2019\/03\/865567aa370605b7cf10da3457c3d158.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>\u2026(c\u00e2nd este posibil)\u2026<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Ne familiariz\u0103m cu protocolul de consens Stellar\" src=\"\/wp-content\/uploads\/2019\/03\/6343f774104454d62e7c8681bf25dbcb.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>\u2026 creeaz\u0103 un alt cvorum.<\/i><\/p>\n<p>Cum afl\u0103 un nod \u00een ce sec\u0163iuni se afl\u0103 celelalte noduri? La fel ca \u015fi celelalte informa\u0163ii despre celelalte noduri: din transmisiile pe care fiecare nod le transmite \u00een re\u0163ea, atunci c\u00e2nd starea sa de votare se schimb\u0103. Fiecare transmisiune con\u0163ine informa\u0163ii despre sec\u0163iunile nodului emitent. \u00cen documentul tehnic SCP nu este specificat un mecanism de comunica\u0163ie. Implement\u0103rile folosesc de obicei <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Gossip_protocol\">protocolul gossip<\/a><\/noindex> pentru a garanta transmiterea mesajelor \u00een \u00eentreaga re\u0163ea.<\/p>\n<p>Reamintim c\u0103 \u00een sistemul de acorduri bizantine nefedera\u021bioniste, cvorumul este definit ca majoritatea tuturor nodurilor. Sistemul bizantin de acorduri a fost dezvoltat din perspectiva \u00eentreb\u0103rii: c\u00e2te noduri necorecte poate suporta sistemul? \u00centr-un sistem format din N noduri, proiectat s\u0103 supravie\u021buiasc\u0103 la f e\u0219ecuri (\u00een\u0219el\u0103ciuni), un nod trebuie s\u0103 fie capabil s\u0103 realizeze progresul ob\u021bin\u00e2nd un r\u0103spuns de la N\u2212f perechi, deoarece f dintre ele nu func\u021bioneaz\u0103 poate. Dar, ob\u021bin\u00e2nd un r\u0103spuns de la N\u2212f perechi, se poate presupune c\u0103 toate f perechile (de la care nodul nu a primit r\u0103spuns) sunt, de fapt, corecte. Astfel, malefice sunt f din N\u2212f perechi (de la care s-a primit un r\u0103spuns). Pentru ca nodurile s\u0103 ajung\u0103 la un consens comun, majoritatea celorlalte noduri trebuie s\u0103 fie corecte, adic\u0103 avem nevoie ca N\u2212f s\u0103 fie mai mare dec\u00e2t 2f sau N &gt; 3f. A\u0219adar, \u00een mod obi\u0219nuit, un sistem proiectat s\u0103 supravie\u021buiasc\u0103 la f e\u0219ecuri va avea \u00een total N=3f+1 noduri \u0219i o dimensiune a cvorumului de 2f+1. Odat\u0103 ce propunerea dep\u0103\u0219e\u0219te pragul cvorumului, ceilal\u021bi membri ai re\u021belei sunt convin\u0219i c\u0103 orice propuneri concurente vor e\u0219ua. Astfel, re\u021beaua converge spre un rezultat.<\/p>\n<p>Dar \u00een sistemul de acorduri bizantine federative nu numai c\u0103 nu poate exista o majoritate (deoarece nimeni nu cunoa\u0219te dimensiunea total\u0103 a re\u021belei), dar conceptul de majoritate este complet inutil! Dac\u0103 apartenen\u021ba la sistem este deschis\u0103, atunci cineva poate ob\u021bine o majoritate, pur \u0219i simplu efectu\u00e2nd a\u0219a-numita atac Sivil: adun\u00e2ndu-se repetat la re\u021bea prin mai multe noduri. Atunci, de ce se poate numi \u00eenchiderea tranzitiv\u0103 a t\u0103ieturii <i>cvorum<\/i>, \u0219i cum poate suprima propunerile concurente?<\/p>\n<p>Tehnic, deloc! Imagineaz\u0103-\u021bi o re\u021bea format\u0103 din \u0219ase noduri, unde dou\u0103 grupuri de c\u00e2te trei sunt izolate \u00een t\u0103ieturile cvorumului unul de cel\u0103lalt. Prima subgrup\u0103 poate lua o decizie despre care a doua nu va auzi niciodat\u0103 \u0219i viceversa. Pentru aceast\u0103 re\u021bea nu exist\u0103 nicio modalitate de a atinge consensul (\u00een afar\u0103 de cazurile \u00eent\u00e2mpl\u0103toare).<\/p>\n<p>De aceea, SCP necesit\u0103 ca pentru votul federativ (\u0219i pentru aplicarea teoremelor importante ale articolului), re\u021beaua s\u0103 aib\u0103 o proprietate numit\u0103 <i>intersec\u021bia cvorumurilor<\/i>. \u00centr-o re\u021bea cu aceast\u0103 proprietate, orice dou\u0103 cvorumuri care pot fi construite se suprapun \u00eentotdeauna \u00een cel pu\u021bin un nod. Pentru a determina tendin\u021bele predominante ale re\u021belei, acest lucru este la fel de bun ca a avea majoritatea. Intuitiv, aceasta \u00eenseamn\u0103 c\u0103, dac\u0103 un cvorum este de acord cu afirma\u021bia X, niciun alt cvorum nu va putea niciodat\u0103 s\u0103 fie de acord cu ceva diferit, pentru c\u0103 va include cu siguran\u021b\u0103 un anumit nod din primul cvorum, care a votat deja pentru X.<\/p>\n<p><img decoding=\"async\" alt=\"Ne familiariz\u0103m cu protocolul de consens Stellar\" src=\"\/wp-content\/uploads\/2019\/03\/5b0aeec99e285b4bbeb92ec5b8dfe69d.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Dac\u0103 \u00een re\u021bea exist\u0103 intersec\u021bii \u00eentre cvorumuri\u2026<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Ne familiariz\u0103m cu protocolul de consens Stellar\" src=\"\/wp-content\/uploads\/2019\/03\/bdb3866cb02fb5991446f0cb0fa5a4fd.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>\u2026atunci orice dou\u0103 cvorumuri pe care le po\u021bi construi\u2026<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Ne familiariz\u0103m cu protocolul de consens Stellar\" src=\"\/wp-content\/uploads\/2019\/03\/29ee8d1ce9fba6c5c24386ce1c1c639b.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>\u2026se vor suprapune \u00eentotdeauna.<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Ne familiariz\u0103m cu protocolul de consens Stellar\" src=\"\/wp-content\/uploads\/2019\/03\/6f1ef2b9896669c10fd19f1acd52db70.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<img decoding=\"async\" alt=\"Ne familiariz\u0103m cu protocolul de consens Stellar\" src=\"\/wp-content\/uploads\/2019\/03\/6849569e849ac3b5487d31e0bf22a596.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n(Desigur, nodurile suprapuse pot fi vizante, mincinoase sau defectuoase \u00een alte privin\u021be. \u00cen acest caz, intersec\u021biile \u00eentre cvorumuri nu ajut\u0103 re\u021beaua s\u0103 ajung\u0103 la un consens. Din acest motiv, multe rezultate \u00een documentul tehnic SCP se bazeaz\u0103 pe presupuneri expresse, cum ar fi c\u0103 re\u021beaua a p\u0103strat intersec\u021bii \u00eentre cvorumuri, <i>chiar \u0219i dup\u0103 eliminarea nodurilor defectuoase.<\/i>. Pentru simplificare, s\u0103 l\u0103s\u0103m aceste presupuneri <i>neexplicite<\/i> \u00een restul articolului).<\/p>\n<p>Poate p\u0103rea nerezonabil s\u0103 a\u0219tep\u021bi c\u0103 \u00eentr-o re\u021bea de noduri independente este posibil un intersec\u021bie fiabil\u0103 \u00eentre cvorumuri. Dar exist\u0103 dou\u0103 motive pentru care este a\u0219a.<\/p>\n<p>Primul motiv este existen\u021ba \u00eens\u0103\u0219i a internetului. Internetul este un exemplu ideal de re\u021bea de noduri independente cu intersec\u021bii \u00eentre cvorumuri. Cele mai multe noduri din internet se conecteaz\u0103 doar cu c\u00e2teva alte noduri locale, dar aceste seturi mici se suprapun suficient pentru ca fiecare nod s\u0103 fie accesibil din fiecare alt nod printr-o rut\u0103 oarecare.<\/p>\n<p>A doua cauz\u0103 este specific\u0103 re\u021belei de pl\u0103\u021bi Stellar (cea mai frecvent\u0103 aplicare a SCP). Fiecare activ din re\u021beaua Stellar are un emitent, iar recomand\u0103rile Stellar cer ca fiecare emitent s\u0103 desemneze unul sau mai multe noduri din re\u021bea pentru a gestiona cererile de r\u0103scump\u0103rare. Este \u00een interesul vostru s\u0103 include\u021bi direct sau indirect aceste noduri \u00een cotele de quorum pentru fiecare activ de interes. Astfel, cotele pentru toate nodurile interesate de acest activ se vor suprapune cel pu\u021bin \u00een aceste noduri de r\u0103scump\u0103rare. Nodurile interesate de mai multe active vor include \u00een cotele lor de quorum toate nodurile de r\u0103scump\u0103rare ale emitentelor corespunz\u0103toare \u0219i vor c\u0103uta s\u0103 adune toate activele \u00eempreun\u0103. \u00cen plus, orice active care nu sunt legate \u00een acest mod de altele din re\u021bea \u0219i <i>nu trebuie s\u0103 fie legate<\/i> \u2014 a fost g\u00e2ndit astfel \u00eenc\u00e2t s\u0103 nu existe suprapuneri de quorumuri \u00een aceast\u0103 re\u021bea (de exemplu, b\u0103ncile din zona dolarului vor s\u0103 fac\u0103 uneori tranzac\u021bii cu b\u0103ncile din zona euro \u0219i cu b\u0103ncile din zona peso, deci se afl\u0103 \u00een aceea\u0219i re\u021bea, dar nim\u0103nui nu-i pas\u0103 de re\u021beaua separat\u0103 a copiilor care tranzac\u021bioneaz\u0103 c\u0103r\u021bi de baseball).<\/p>\n<p>Desigur, <i>a\u0219teptarea<\/i> suprapunerilor de quorumuri nu este <i>o garan\u021bie<\/i>. Alte sisteme de acorduri bizantine \u00ee\u0219i datoreaz\u0103 \u00een mare parte complexitatea garan\u021biei quorumurilor. O inova\u021bie important\u0103 a SCP este c\u0103 aceasta transfer\u0103 responsabilitatea pentru crearea quorumurilor de la algoritmul de consens la nivelul aplica\u021biei. Astfel, de\u0219i votul federativ este suficient de obi\u0219nuit pentru votarea pe orice subiect, \u00een realitate fiabilitatea sa depinde critic de sensul mai larg al acestor valori. Unele utiliz\u0103ri ipotetice s-ar putea s\u0103 nu fie la fel de convenabile pentru crearea de re\u021bele bine legate ca altele.<\/p>\n<h1>Votul, acceptarea \u0219i confirmarea<\/h1>\n<p>\n\u00cen runda de votare federativ\u0103, un nod op\u021bional \u00eencepe s\u0103 voteze pentru o anumit\u0103 valoare V. Aceasta \u00eenseamn\u0103 transmiterea \u00een re\u021bea a unui mesaj: \u201eEu sunt nodul N, cotele mele de quorum Q \u0219i votez pentru V\u201d. C\u00e2nd un nod voteaz\u0103 \u00een acest mod, promite c\u0103 nu a votat niciodat\u0103 \u00eempotriva lui V \u0219i nu va face acest lucru niciodat\u0103.<\/p>\n<p>\u00cen transmisiile de la noduri peer-to-peer, fiecare nod poate vedea cum voteaz\u0103 celelalte. Odat\u0103 ce un nod str\u00e2nge un num\u0103r suficient de astfel de mesaje, poate urm\u0103ri subgrupele de quorum \u0219i \u00eencerca s\u0103 g\u0103seasc\u0103 quorumul. Dac\u0103 vede un quorum de noduri care voteaz\u0103 pentru V, poate trece la <i>acceptarea<\/i> V \u0219i transmite acest nou mesaj \u00een re\u021bea: \u201eEu sunt nodul N, subgrupurile mele de quorum Q, \u0219i accept V\u201d. Acceptarea ofer\u0103 o garan\u021bie mai puternic\u0103 dec\u00e2t votul simplu. Atunci c\u00e2nd un nod voteaz\u0103 pentru V, nu poate vota niciodat\u0103 pentru alte op\u021biuni. Dar dac\u0103 un nod accept\u0103 V, niciun alt nod din re\u021bea nu va accepta o alt\u0103 op\u021biune (teorema 8 din documentul tehnic SCP dovede\u0219te acest lucru).<\/p>\n<p>Desigur, este foarte probabil ca nu imediat s\u0103 se g\u0103seasc\u0103 un quorum de noduri care s\u0103 fie de acord cu V. Alte noduri pot vota pentru alte valori. Dar pentru nod exist\u0103 \u00eenc\u0103 o modalitate de a trece de la votul simplu la acceptare. N poate accepta o alt\u0103 valoare W, chiar dac\u0103 nu a votat pentru ea \u0219i chiar dac\u0103 nu vede un quorum pentru aceasta. Pentru a schimba votul s\u0103u, este suficient s\u0103 vad\u0103 <i>un set de blocare<\/i> de noduri care au acceptat W. Setul de blocare este format din c\u00e2te un nod din fiecare subgrup de quorum N. A\u0219a cum denumirea sugereaz\u0103, acesta este capabil s\u0103 <i>blocheze<\/i> orice alt\u0103 valoare. Dac\u0103 toate nodurile dintr-un astfel de set accept\u0103 W, atunci, conform teoremei 8, nu va fi niciodat\u0103 posibil s\u0103 se formeze un quorum care s\u0103 accepte o alt\u0103 valoare \u0219i astfel, pentru N, este de asemenea sigur s\u0103 accepte W.<\/p>\n<p><img decoding=\"async\" alt=\"Ne familiariz\u0103m cu protocolul de consens Stellar\" src=\"\/wp-content\/uploads\/2019\/03\/6dd4ec5595ab863daf684fec670d83a6.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Nodul N cu trei subgrupuri de quorum.<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Ne familiariz\u0103m cu protocolul de consens Stellar\" src=\"\/wp-content\/uploads\/2019\/03\/b65e32160570af2883eef9990a74e3bd.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>B-D-F este setul de blocare pentru N: acesta include c\u00e2te un nod din fiecare subgrup N.<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Ne familiariz\u0103m cu protocolul de consens Stellar\" src=\"\/wp-content\/uploads\/2019\/03\/7e17b4a9ee83aac7fa2b68b2f9fae066.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>B-E este de asemenea un set de blocare pentru N, deoarece E apare \u00een dou\u0103 subgrupuri din N.<\/i><\/p>\n<p>Dar setul de blocare nu este un quorum. Ar fi prea u\u0219or s\u0103 p\u0103c\u0103le\u0219ti nodul N s\u0103 accepte valoarea dorit\u0103 dac\u0103 ar fi suficient s\u0103 compromi\u021bi un singur nod din fiecare subgrup din N. De aceea, acceptarea unei valori nu este finalul votului. \u00cen schimb, N trebuie s\u0103 confirme valoarea, adic\u0103 s\u0103 vad\u0103 un quorum de noduri care o accept\u0103. Dac\u0103 a ajuns at\u00e2t de departe, a\u0219a cum dovede\u0219te documentul tehnic SCP (\u00een teorema 11), restul re\u021belei va confirma, de asemenea, aceea\u0219i valoare, astfel \u00eenc\u00e2t N va finaliza votul federal cu o valoare specific\u0103 ca rezultat.<\/p>\n<p><img decoding=\"async\" alt=\"Ne familiariz\u0103m cu protocolul de consens Stellar\" src=\"\/wp-content\/uploads\/2019\/03\/bd68dc5172460c17fa2de54fcc0d9017.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Votul federal.<\/i><\/p>\n<p>Procesul de votare, adoptare \u0219i confirmare constituie un ciclu complet de votare federativ\u0103. Protocolul de consens Stellar reune\u0219te multe astfel de cicluri pentru a crea un sistem complet de consens.<\/p>\n<h1>Protocolul de consens Stellar<\/h1>\n<p>\nCele dou\u0103 cele mai importante propriet\u0103\u021bi ale unui sistem de consens sunt <i>securitate<\/i> \u0219i <i>rezilien\u021ba<\/i>. Un algoritm de consens este \u201esigur\u201d dac\u0103 nu poate niciodat\u0103 oferi rezultate diferite diferitelor p\u0103r\u021bi (o copie a istoricului lui Bob nu va contrazice niciodat\u0103 pe cea a lui Carol). \u201eResilien\u021ba\u201d \u00eenseamn\u0103 c\u0103 algoritmul va oferi mereu un rezultat, adic\u0103 nu va r\u0103m\u00e2ne blocat.<\/p>\n<p>Procedura descris\u0103 a votului federativ <i>este sigur\u0103<\/i> \u00een sensul c\u0103, dac\u0103 un nod confirm\u0103 valoarea V, niciun alt nod nu va confirma o alt\u0103 valoare. Dar \u201enu va confirma o alt\u0103 valoare\u201d nu \u00eenseamn\u0103 c\u0103 trebuie s\u0103 confirme neap\u0103rat ceva. Participan\u021bii pot vota pentru un num\u0103r at\u00e2t de mare de valori diferite \u00eenc\u00e2t nimic nu va atinge pragul de acceptare. Aceasta \u00eenseamn\u0103 c\u0103 \u00een votul federativ lipse\u0219te <i>rezilien\u021ba<\/i>.<\/p>\n<p>Protocolul de consens Stellar utilizeaz\u0103 votul federativ \u00eentr-un mod care garanteaz\u0103 at\u00e2t siguran\u021ba, c\u00e2t \u0219i rezilien\u021ba. (Garan\u021biile de siguran\u021b\u0103 \u0219i rezilien\u021b\u0103 ale SCP au o limit\u0103 teoretic\u0103. Construc\u021bia alege o garan\u021bie de siguran\u021b\u0103 foarte puternic\u0103, sacrific\u00e2nd o u\u0219oar\u0103 sl\u0103bire a rezilien\u021bei, dar av\u00e2nd \u00een vedere un termen suficient, consensul va fi atins cu o mare probabilitate). \u00cen c\u00e2teva cuvinte, ideea este de a desf\u0103\u0219ura mai multe voturi federative asupra mai multor valori, p\u00e2n\u0103 c\u00e2nd una dintre ele va trece complet prin toate fazele de vot SCP, descrise mai jos.<\/p>\n<p>Valorile pentru care SCP caut\u0103 consens pot fi istorii de tranzac\u021bii sau comenzi de pr\u00e2nz, sau altele, dar este important de men\u021bionat c\u0103 acestea nu sunt valorile care sunt acceptate sau confirmate. \u00cen schimb, votul federativ are loc asupra <i>declara\u021biilor referitoare la aceste valori<\/i>.<\/p>\n<p>Primele runde de vot federativ au loc \u00een <i>faza de nominalizare<\/i> (nomination phase), pe un set de declara\u021bii de tip \u201e\u00cei propun V\u201d, posibil pentru multe valori diferite V. Scopul nominaliz\u0103rii este de a g\u0103si una sau mai multe declara\u021bii care s\u0103 treac\u0103 prin acceptare \u0219i confirmare.<\/p>\n<p>Dup\u0103 identificarea candida\u021bilor confirmabili, SCP trece la etapa de votare, unde scopul este de a g\u0103si o <i>buletin\u0103<\/i> (adic\u0103 un container pentru valoarea propus\u0103) \u0219i un cvorum capabil s\u0103 declare <i>commit<\/i> pentru acesta (commit). Dac\u0103 cvorumul face commit-ul buletinei, valoarea sa este acceptat\u0103 ca fiind consens. Dar \u00eenainte ca un nod s\u0103 poat\u0103 vota pentru commit-ul buletinei, acesta trebuie mai \u00eent\u00e2i s\u0103 confirme <i>anularea<\/i> tuturor buletinelor cu un num\u0103r de contor mai mic. Ace\u0219ti pa\u0219i \u2014 anularea buletinelor pentru a g\u0103si pe cel pentru care se poate confirma commit-ul \u2014 implic\u0103 mai multe runde de votare federativ\u0103 pe mai multe declara\u021bii de buletine.<\/p>\n<p>\u00cen sec\u021biunile urm\u0103toare se discut\u0103 mai \u00een detaliu despre propunere \u0219i votare.<\/p>\n<h1>Propunere<\/h1>\n<p>\nLa \u00eenceputul etapei de propunere, fiecare nod poate alege spontan o valoare V \u0219i poate vota pentru aprobarea \u201ePropun V\u201d. Scopul \u00een aceast\u0103 etap\u0103 este de a confirma propunerea unei anumite valori prin votare federativ\u0103.<\/p>\n<p>Poate c\u0103 un num\u0103r suficient de noduri voteaz\u0103 pentru declara\u021bii \u00eendeajuns de diferite, \u0219i nicio propunere nu poate atinge pragul de acceptare. De aceea, \u00een afar\u0103 de transmiterea propriilor voturi de propunere, nodurile \u201ereflect\u0103\u201d propunerile vecinilor lor. Reflec\u021bia (echo) \u00eenseamn\u0103 c\u0103, dac\u0103 un nod voteaz\u0103 pentru propunerea V, dar vede un mesaj de la un vecin care voteaz\u0103 pentru propunerea W, atunci acum va vota at\u00e2t pentru propunerea V, c\u00e2t \u0219i pentru W. (Nu toate voturile vecinilor sunt reflectate \u00een timpul propunerii, deoarece acest lucru poate duce la o explozie de propuneri diferite. SCP include un mecanism de reglementare a acestor voturi. Pe scurt, exist\u0103 o formul\u0103 pentru a determina \u201eprioritatea\u201d unui vecin din perspectiva nodului, \u0219i sunt reflectate voturile doar ale nodurilor de \u00eenalt\u0103 prioritate. Cu c\u00e2t propunerea dureaz\u0103 mai mult, cu at\u00e2t pragul este mai mic, astfel \u00eenc\u00e2t nodul extinde setul de vecini ale c\u0103ror voturi le va reflecta. Formula de prioritate, ca unul dintre datele de intrare, include num\u0103rul slotului, astfel \u00eenc\u00e2t un nod peer de \u00eenalt\u0103 prioritate pentru un slot poate fi de prioritate sc\u0103zut\u0103 pentru altul, \u0219i invers).<\/p>\n<p>Conceptual, the advancement of both V and W in parallel means separate federative votes, each capable of achieving adoption or confirmation independently. In practice, SCP protocol messages package these individual votes together.<\/p>\n<p>Although voting for the advancement of V is a promise never to vote against it, at the application level \u2014 in this case, SCP \u2014 it is determined what 'against' means. SCP does not recognize a statement that contradicts the vote 'I nominate X'; that is, there is no message 'I am against the nomination of X', so the node can vote for the advancement of any values. Many of these nominations may lead nowhere, but eventually, the node can accept or confirm one or several values. Once the nominee is confirmed, they become <i>candidate<\/i>.<\/p>\n<p><img decoding=\"async\" alt=\"Ne familiariz\u0103m cu protocolul de consens Stellar\" src=\"\/wp-content\/uploads\/2019\/03\/794f55d076ec3e1773c49d32e29c084d.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Nomination in SCP using federative voting. There can be many 'B' values nominated by peer nodes and 'reflected' by the node.<\/i> <\/p>\n<p>Nominating candidates may result in multiple confirmable candidates. Therefore, SCP requires that the application layer provide some method of merging candidates into one <i>composite<\/i> (composite). The merging method can be anything. The main point is that if this method is deterministic, each node will merge the same candidates. In a lunch voting system, 'merging' may simply mean dropping one of the two candidates. (But deterministically: each node must choose the same value to drop. For example, by earlier alphabetical order). In the Stellar payment network, where voting on transaction history occurs, merging two proposed nominees implies combining the transactions they contain and the latest of their two timestamps.<\/p>\n<p>The technical description of SCP proves (theorem 12) that by the end of the nomination phase, the network eventually converges to one composite. But there is a problem: federative voting is an asynchronous protocol (just like SCP). In other words, nodes are not time-coordinated but only coordinated through the messages they send. From the node's perspective, it is unclear when <i>has completed<\/i> faza de propunere. \u0218i, de\u0219i toate nodurile vor ajunge \u00een cele din urm\u0103 la acela\u0219i compus, ele pot alege trasee diferite \u00een acest parcurs, cre\u00e2nd \u00een drumul lor diferi\u021bi candida\u021bi compu\u0219i, f\u0103r\u0103 a putea spune vreodat\u0103 care dintre ei este final.<\/p>\n<p>Dar este \u00een regul\u0103. Propunerea este doar o preg\u0103tire. Principalul este s\u0103 restr\u00e2ngem num\u0103rul de candida\u021bi pentru a ajunge la un consens, care are loc \u00een procesul <i>vot\u0103rii<\/i> (votare).<\/p>\n<h1>Votarea<\/h1>\n<p>\nUn buletin de vot este o pereche , unde counter este un num\u0103r \u00eentreg care \u00eencepe de la 1, iar value este candidatul din etapa de propunere. Acesta poate fi candidatul propriu al nodului sau candidatul unui nod vecin, acceptat de acest nod. \u00cen termeni simpli, \u00een timpul vot\u0103rii se fac multiple \u00eencerc\u0103ri pentru a face re\u021beaua s\u0103 ajung\u0103 la un consens asupra unui anumit candidat \u00eentr-un anumit buletin, prin desf\u0103\u0219urarea poten\u021bial a multor voturi federative pe declara\u021biile privind buletinele. Contoarele din buletinele de vot urm\u0103resc \u00eencerc\u0103rile efectuate, iar buletinele cu contoare mai mari au prioritate fa\u021b\u0103 de cele cu contoare mai mici. Dac\u0103 buletinul  se blocheaz\u0103, \u00eencepe o nou\u0103 votare acum pe buletinul .<\/p>\n<p>Este important s\u0103 distingi <i>valorile<\/i> (de exemplu, ce ar trebui s\u0103 con\u021bin\u0103 comanda de pr\u00e2nz: pizza sau salate), <i>buletinele de vot<\/i> (perechea counter-value) \u0219i <i>declara\u021bii<\/i> despre buletinele de vot. Runda SCP include mai multe runde de votare federativ\u0103, \u00een special, pe declara\u021bii precum:<\/p>\n<ul>\n<li>\u201eSunt preg\u0103tit s\u0103 angajez buletinul de vot B\u201d \u0219i\n<\/li>\n<li>\u201eAnun\u021b angajamentul buletinului de vot B\u201d<\/li>\n<\/ul>\n<p>\nDin perspectiva acestui nod, consensul este atins c\u00e2nd g\u0103se\u0219te buletinul B, pentru care poate confirma (adic\u0103 g\u0103si un cvorum care accept\u0103) declara\u021bia \u201eAnun\u021b angajamentul buletinului de vot B\u201d. De acum \u00eencolo, se poate ac\u021biona \u00een siguran\u021b\u0103 pe baza valorii indicate \u00een B \u2013 de exemplu, s\u0103 se plaseze aceast\u0103 comand\u0103 de pr\u00e2nz. Aceasta se nume\u0219te <i>externalizarea<\/i> valorii. Odat\u0103 ce a fost confirmat\u0103 acceptarea buletinului, nodul poate fi sigur c\u0103 orice alt nod a realizat externalizarea acelei valori sau o va face cu siguran\u021b\u0103 \u00een viitor.<\/p>\n<p>De\u0219i conceptual, multe voturi federative sunt efectuate pe baza declara\u021biilor referitoare la multe buletine diferite, ele nu schimb\u0103 at\u00e2t de multe mesaje, deoarece fiecare mesaj \u00eencorporeaz\u0103 un num\u0103r de buletine. Astfel, un singur mesaj promoveaz\u0103 starea simultan a multor voturi federative, de exemplu: \u201eAccept comiterea buletinelor \u00een intervalul de la  la .\u201d<\/p>\n<p>Ce \u00eenseamn\u0103 termenii \u201epreparat\u201d (prepared) \u0219i \u201ecomite\u201d (commit)?<\/p>\n<p>Nodul voteaz\u0103 pentru comiterea buletinului atunci c\u00e2nd este convins c\u0103 celelalte noduri nu vor comite buletine cu alte valori. Convincerea \u00een acest sens este scopul preg\u0103tirii declara\u021biei. Votul care spune: \u201eSunt gata s\u0103 comit buletinul B\u201d reprezint\u0103 o promisiune de a nu comite niciodat\u0103 buletine mai mici dec\u00e2t B, adic\u0103 cu un contor mai mic (SCP necesit\u0103 ca valorile din buletine s\u0103 aib\u0103 un anumit ordonare. Astfel, buletinul  este mai mic dec\u00e2t , dac\u0103 N1&lt;N2, \u0219i de asemenea, dac\u0103 N1=N2 \u0219i V1&lt;V2). Aceste buletine mai mici sunt \u201eabandonate\u201d (aborted) \u00een timpul votului de preg\u0103tire, \u00een timp ce B este considerat \u201epreg\u0103tit\u201d.<\/p>\n<p>De ce \u201eSunt gata s\u0103 comit buletinul B\u201d \u00eenseamn\u0103 \u201ePromit s\u0103 nu permit niciodat\u0103 comiterea buletinelor mai mici dec\u00e2t B\u201d? Pentru c\u0103 SCP define\u0219te abort ca fiind opusul lui commit. Votul pentru preg\u0103tirea buletinului implic\u0103 de asemenea votul pentru anularea unor alte buletine, \u0219i, a\u0219a cum am discutat anterior, votul pentru ceva anume este o promisiune de a nu vota niciodat\u0103 \u00eempotriva acestuia.<\/p>\n<p>\u00cenainte de a transmite comiterea, nodul trebuie mai \u00eent\u00e2i s\u0103 g\u0103seasc\u0103 un buletin pe care \u00eel poate confirma ca fiind preg\u0103tit. Cu alte cuvinte, el realizeaz\u0103 un vot federativ pe tema \u201eSunt gata s\u0103 comit buletinul B\u201d, posibil pentru multe buletine diferite, p\u00e2n\u0103 g\u0103se\u0219te pe acela care accept\u0103 cvorumul.<\/p>\n<p>De unde provin buletinele pentru preg\u0103tirea votului? Mai \u00eent\u00e2i, nodul transmite preg\u0103tirea pentru votul pentru , unde C este candidatul-compozit, creat \u00een etapa de propunere. Cu toate acestea, chiar \u0219i dup\u0103 \u00eenceputul preg\u0103tirii pentru vot, propunerea poate duce la apari\u021bia unor candida\u021bi suplimentari, care vor deveni noile buletine. \u00centre timp, p\u0103r\u021bile pot avea candida\u021bi diferi\u021bi \u0219i pot forma un set blocant, care accept\u0103 \u201eSunt preg\u0103tit pentru a comite buletinul B2\u201d, ceea ce va convinge nodul s\u0103-l accepte \u0219i el. \u00cen cele din urm\u0103, exist\u0103 un mecanism de timeout care genereaz\u0103 noi runde de votare federativ\u0103 pe noi buletine cu numere de contor mai mari, dac\u0103 buletinele curente sunt blocate.<\/p>\n<p>Odat\u0103 ce nodul g\u0103se\u0219te buletinul V, care poate fi confirmat ca preg\u0103tit, transmite un nou mesaj \u201eComite buletinul V\u201d. Aceast\u0103 votare \u00eei spune p\u0103r\u021bilor c\u0103 nodul nu va renun\u021ba niciodat\u0103 la V. De fapt, dac\u0103 V reprezint\u0103 un buletin , atunci \u201eComite buletinul \u201d \u00eenseamn\u0103 acordul necondi\u021bionat de a vota pentru preg\u0103tirea fiec\u0103rui buletin de la  p\u00e2n\u0103 la . Aceast\u0103 valoare suplimentar\u0103 \u00eei ajut\u0103 pe al\u021bii noduri s\u0103 ajung\u0103 din urm\u0103 cu comiterea, dac\u0103 ace\u0219tia se afl\u0103 \u00eenc\u0103 \u00een etape anterioare ale protocolului.<\/p>\n<p>\u00cen aceast\u0103 etap\u0103, este important s\u0103 subliniem din nou c\u0103 acestea sunt protocoale asincrone. Numai pentru c\u0103 un nod trimite voturi pentru comitere, nu \u00eenseamn\u0103 c\u0103 colegii s\u0103i fac la fel. Unii dintre ei ar putea \u00eenc\u0103 vota pe declara\u021bii pentru preg\u0103tirea votului, al\u021bii ar putea c\u0103 deja au externalizat valoarea. SCP explic\u0103 cum un nod trebuie s\u0103 proceseze fiecare tip de mesaj peer-to-peer independent de faza sa.<\/p>\n<p>Dac\u0103 mesajul \u201eAnun\u021b commit &lt;N,C&gt;\u201d nu poate fi acceptat sau confirmat, exist\u0103 \u0219ansa ca mesajul &lt;N+1, C&gt; sau &lt;N+2, C&gt; s\u0103 fie acceptat sau confirmat \u2014 sau, \u00een orice caz, orice buletin cu valoarea C, \u0219i nu orice altceva, deoarece nodul a promis deja s\u0103 nu anuleze niciodat\u0103 &lt;N,C&gt;. P\u00e2n\u0103 c\u00e2nd nodul transmite voturile pentru commit, acesta va fi C sau nimic, \u00een func\u021bie de c\u00e2t de departe va merge consensul. Cu toate acestea, aceasta nu este \u00eenc\u0103 suficient pentru ca nodul s\u0103 externalizeze C. Anumi\u021bi participan\u021bi bizantini (constituind mai pu\u021bin de un cvorum, baz\u00e2ndu-se pe presupunerile noastre de securitate) pot min\u021bi nodul. Acceptarea \u0219i apoi confirmarea unui anumit buletin (sau a unui interval de buletine) este ceea ce ofer\u0103 nodului \u00eencrederea de a externaliza, \u00een sf\u00e2r\u0219it, C.<\/p>\n<p><img decoding=\"async\" alt=\"Ne familiariz\u0103m cu protocolul de consens Stellar\" src=\"\/wp-content\/uploads\/2019\/03\/c59f036bb8aa189bb3d4540f54121391.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Votarea SCP prin vot federal. Nu este afi\u0219at: la orice moment, un temporizator poate fi activat, cresc\u00e2nd contorul din buletin (\u0219i, posibil, cre\u00e2nd un nou compus din candida\u021bi suplimentari propusi).<\/i> <\/p>\n<p>\u0218i asta e tot! Odat\u0103 ce re\u021beaua a ajuns la un consens, este preg\u0103tit\u0103 s\u0103 fac\u0103 asta din nou \u0219i din nou. \u00cen re\u021beaua de pl\u0103\u021bi Stellar, acest lucru se \u00eent\u00e2mpl\u0103 aproximativ la fiecare 5 secunde: o realizare care necesit\u0103 at\u00e2t securitate, c\u00e2t \u0219i rezilien\u021b\u0103, garantate de SCP.<\/p>\n<p>SCP poate realiza acest lucru, baz\u00e2ndu-se pe mai multe runde de votare federal\u0103. Votarea federal\u0103 a devenit posibil\u0103 datorit\u0103 conceptului de t\u0103ieturi de cvorum: seturi de noduri de acela\u0219i nivel, \u00een care fiecare nod a decis s\u0103 aib\u0103 \u00eencredere ca parte a cvorumului s\u0103u (subiectiv). Aceast\u0103 configura\u021bie \u00eenseamn\u0103 c\u0103 se poate ajunge la consens chiar \u0219i \u00eentr-o re\u021bea cu membri deschi\u0219i \u0219i \u00een\u0219el\u0103ciuni bizantine.<\/p>\n<h1>Citi\u021bi mai departe<\/h1>\n<p><\/p>\n<ul>\n<li>Documentul tehnic original SCP se poate g\u0103si <noindex><a rel=\"nofollow\" href=\"https:\/\/www.stellar.org\/papers\/stellar-consensus-protocol.pdf\">aici<\/a><\/noindex>, iar <noindex><a rel=\"nofollow\" href=\"https:\/\/datatracker.ietf.org\/doc\/draft-mazieres-dinrg-scp\/\">aici<\/a><\/noindex> proiectul specifica\u021biilor pentru implementarea sa.\n<\/li>\n<li>Autorul original al protocolului SCP, David Mazier, explic\u0103 simplificat (dar totu\u0219i tehnic) acesta <noindex><a rel=\"nofollow\" href=\"http:\/\/www.scs.stanford.edu\/~dm\/blog\/simplified-scp.html\">aici<\/a><\/noindex>.\n<\/li>\n<li>Poate c\u0103 a\u021bi fost surprin\u0219i c\u0103 nu a\u021bi g\u0103sit \u00een acest articol termenii \u201emining\u201d sau \u201eproof of work\u201d. SCP nu folose\u0219te aceste metode, dar alte algoritme de consens le folosesc. Zane Wiserpoon a scris un accesibil <noindex><a rel=\"nofollow\" href=\"https:\/\/hackernoon.com\/a-hitchhikers-guide-to-consensus-algorithms-d81aae3eb0e3\">rezumat al algoritmilor de consens<\/a><\/noindex>.\n<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/bobg\/scp\/blob\/master\/Lunch.md\">Descriere pas cu pas<\/a><\/noindex> a unei re\u021bele simple care ajunge la consens \u00een cadrul unei runde complete de SCP.\n<\/li>\n<li>Pentru cititorii interesa\u021bi de implement\u0103rile SCP: verifica\u021bi <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/stellar\/stellar-core\/tree\/master\/src\/scp\">codul C++<\/a><\/noindex>, utilizat de re\u021beaua de pl\u0103\u021bi Stellar, sau <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/bobg\/scp\">codul Go<\/a><\/noindex>, pe care l-am scris pentru o mai bun\u0103 \u00een\u021belegere a SCP.<\/li>\n<\/ul>\n<p>Sursa: <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\/ro\/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=\"ro_RO\" \/>\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\/ro\/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\udd47S\u0103 \u00een\u021belegem protocolul de consen sus Stellar | ProHoster","description":"Protocolul de consen sus Stellar a fost descris pentru prima dat\u0103 \u00een.","canonical_url":"https:\/\/prohoster.info\/ro\/blog\/razbiraemsya-v-protokole-konsensusa-stellar","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"ro_RO","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\/ro\/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\/ro\/wp-json\/wp\/v2\/posts\/30047","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/comments?post=30047"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts\/30047\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/media?parent=30047"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/categories?post=30047"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/tags?post=30047"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}