{"id":95468,"date":"2020-09-29T19:42:29","date_gmt":"2020-09-29T17:42:29","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/mozhno-li-generirovat-sluchajnye-chisla-esli-my-ne-doveryaem-drug-drugu-chast-1"},"modified":"2020-09-29T19:42:29","modified_gmt":"2020-09-29T17:42:29","slug":"mozhno-li-generirovat-sluchajnye-chisla-esli-my-ne-doveryaem-drug-drugu-chast-1","status":"publish","type":"post","link":"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/mozhno-li-generirovat-sluchajnye-chisla-esli-my-ne-doveryaem-drug-drugu-chast-1","title":{"rendered":"Se pot genera numere aleatoare dac\u0103 nu ne \u00eencredin\u021b\u0103m unii altora? Partea 1","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Salut, Habr!<\/p>\n<p>\u00cen acest articol voi vorbi despre generarea numerelor pseudo-aleatoare de c\u0103tre participan\u021bi care nu se \u00eencrede \u00een ceilal\u021bi. A\u0219a cum vom vedea mai jos, implementarea unui generator \u201eaproape\u201d bun este destul de simpl\u0103, dar unul foarte bun este complicat.<\/p>\n<p>De ce este necesar\u0103 generarea de numere aleatorii pentru participan\u021bii care nu se \u00eencred \u00eentre ei? O aplica\u021bie a acestora este \u00een aplica\u021biile descentralizate. De exemplu, o aplica\u021bie care accept\u0103 o miz\u0103 de la un participant \u0219i fie dubleaz\u0103 suma cu o probabilitate de 49%, fie ia 51%, va func\u021biona doar dac\u0103 poate ob\u021bine un num\u0103r aleatoriu \u00een mod impar\u021bial. Dac\u0103 un atacator poate influen\u021ba rezultatul generatorului de numere aleatorii \u0219i chiar s\u0103 \u00ee\u0219i creasc\u0103 u\u0219or \u0219ansele de a primi o plat\u0103 \u00een aplica\u021bie, el va putea s\u0103 o goleasc\u0103 cu u\u0219urin\u021b\u0103.<\/p>\n<p>Atunci c\u00e2nd dezvolt\u0103m un protocol distribuit pentru generarea numerelor aleatoare, dorim ca acesta s\u0103 aib\u0103 trei propriet\u0103\u021bi:<\/p>\n<ol>\n<li>\n<p>Trebuie s\u0103 fie nepartinitor. Cu alte cuvinte, niciun participant nu ar trebui s\u0103 influen\u021beze \u00een vreun fel rezultatul generatorului de numere aleatoare.<\/p>\n<\/li>\n<li>\n<p>Trebuie s\u0103 fie imprevizibil. Cu alte cuvinte, niciun participant nu ar trebui s\u0103 poat\u0103 prezice ce num\u0103r va fi generat (sau s\u0103 deduc\u0103 vreo proprietate a acestuia) \u00eenainte ca acesta s\u0103 fie generat.<\/p>\n<\/li>\n<li>\n<p>Protocolul trebuie s\u0103 fie viabil, adic\u0103 rezistent la faptul c\u0103 un anumit procent de participan\u021bi se deconecteaz\u0103 de la re\u021bea sau \u00eencearc\u0103 inten\u021bionat s\u0103 opreasc\u0103 protocolul.<\/p>\n<\/li>\n<\/ol>\n<p>\u00cen acest articol vom examina dou\u0103 abord\u0103ri: RANDAO + VDF \u0219i o abordare bazat\u0103 pe coduri de \u0219tergere. \u00cen partea urm\u0103toare, vom analiza mai detaliat abordarea bazat\u0103 pe semn\u0103turi de prag.<\/p>\n<p>Dar mai \u00eent\u00e2i, s\u0103 analiz\u0103m un algoritm simplu \u0219i adesea folosit, care este viabil, imprevizibil, dar partinitor.<\/p>\n<h3>RANDAO<\/h3>\n<p>RANDAO este o abordare foarte simpl\u0103 \u0219i, prin urmare, destul de des folosit\u0103 pentru ob\u021binerea aleatoriet\u0103\u021bii. Toti participan\u021bii re\u021belei aleg mai \u00eent\u00e2i local un num\u0103r pseudo-aleator, apoi fiecare participant trimite hash-ul num\u0103rului ales. Apoi, participan\u021bii descoper\u0103 succesiv numerele alese \u0219i efectueaz\u0103 o opera\u021bie XOR asupra acestora, iar rezultatul acestei opera\u021bii devine rezultatul protocolului.<\/p>\n<p>Pasul de publicare a hash-urilor \u00eenainte de a revela numerele este necesar pentru ca un atacator s\u0103 nu poat\u0103 alege propriul s\u0103u num\u0103r dup\u0103 ce a v\u0103zut numerele celorlal\u021bi participan\u021bi. Aceasta i-ar permite s\u0103 determine de fapt \u00een mod unilateral rezultatul generatorului de numere aleatoare.<\/p>\n<p>Pe parcursul protocolului, participan\u021bii trebuie s\u0103 ajung\u0103 de dou\u0103 ori la un consens (a\u0219a-numitul consor\u021b) cu privire la momentul \u00een care s\u0103 \u00eenceap\u0103 s\u0103 dezv\u0103luie numerele alese, \u0219i, prin urmare, s\u0103 \u00eenceteze s\u0103 mai primeasc\u0103 hash-uri, \u0219i c\u00e2nd s\u0103 termine primirea numerelor alese \u0219i s\u0103 calculeze num\u0103rul aleatoriu rezultat. Luarea acestor decizii \u00eentre participan\u021bi, care nu au \u00eencredere unii \u00een al\u021bii, este o sarcin\u0103 complicat\u0103 \u0219i ne vom \u00eentoarce la aceasta \u00een articolele viitoare; \u00een acest articol ne vom considera c\u0103 un astfel de algoritm de consens este accesibil.<\/p>\n<p>Ce propriet\u0103\u021bi, pe care le-am descris mai sus, are RANDAO? Este imprevizibil, are aceea\u0219i viabilitate ca \u0219i protocolul de consens care st\u0103 la baza sa, dar este p\u0103rtinitor. \u00cen special, un atacator poate observa re\u021beaua \u0219i, dup\u0103 ce ceilal\u021bi participan\u021bi \u00ee\u0219i dezv\u0103luie numerele, poate calcula XOR-ul acestora \u0219i decide dac\u0103 s\u0103 \u00ee\u0219i dezv\u0103luie sau nu num\u0103rul pentru a influen\u021ba rezultatul. De\u0219i acest lucru nu permite atacatorului s\u0103 determine unilateral rezultatul generatorului de numere aleatoare, \u00eei ofer\u0103 totu\u0219i 1 bit de influen\u021b\u0103. Dac\u0103 atacatorii controleaz\u0103 mai mul\u021bi participan\u021bi, num\u0103rul de bi\u021bi controla\u021bi de ei va fi egal cu num\u0103rul de participan\u021bi sub controlul lor.<\/p>\n<p><img decoding=\"async\" alt=\"Se pot genera numere aleatoare dac\u0103 nu ne \u00eencredin\u021b\u0103m unii altora? Partea 1\" src=\"\/wp-content\/uploads\/2020\/09\/4869d0c7dbc4cc8a368c2846997d6d2a.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Influen\u021ba atacatorilor poate fi redus\u0103 semnificativ dac\u0103 se cere ca participan\u021bii s\u0103 dezv\u0103luie numerele \u00een ordine. Atunci, atacatorul poate influen\u021ba rezultatul doar dac\u0103 dezv\u0103luie ultimul. De\u0219i influen\u021ba este semnificativ mai mic\u0103, algoritmul este totu\u0219i p\u0103rtinitor.<\/p>\n<h3>RANDAO + VDF<\/h3>\n<p>Una dintre op\u021biuni pentru a face RANDAO nep\u0103rtinitor este urm\u0103toarea: dup\u0103 ce toate numerele au fost dezv\u0103luite \u0219i XOR-ul a fost calculat, rezultatul s\u0103 fie trimis ca intrare unei func\u021bii care necesit\u0103 mult timp pentru a fi calculat\u0103, dar permite verificarea rapid\u0103 a corectitudinii calculului.<\/p>\n<pre><code>(vdf_output, vdf_proof) = VDF_compute(input) \/\/ este foarte lent\ncorrect = VDF_verify(input, vdf_output, vdf_proof) \/\/ este foarte rapid<\/code><\/pre>\n<p>Aceast\u0103 func\u021bie se nume\u0219te Verifiable Delay Function, sau VDF. Dac\u0103 calcularea rezultatului final dureaz\u0103 mai mult dec\u00e2t etapa de revelare a numerelor, atunci un atacator nu va putea prezice efectul demonstra\u021biei sau ascunderii num\u0103rului s\u0103u, \u0219i, prin urmare, va pierde capacitatea de a influen\u021ba rezultatul.<\/p>\n<p>Dezvoltarea unor VDF bune este extrem de complicat\u0103. \u00cen ultima vreme, au avut loc c\u00e2teva progrese, de exemplu, <noindex><a rel=\"nofollow\" href=\"https:\/\/eprint.iacr.org\/2018\/623.pdf\"><u>aceasta<\/u><\/a><\/noindex> \u0219i <noindex><a rel=\"nofollow\" href=\"https:\/\/eprint.iacr.org\/2018\/627.pdf\"><u>aceasta,<\/u><\/a><\/noindex> care au f\u0103cut ca VDF s\u0103 fie mai aplicabile \u00een practic\u0103, iar Ethereum 2.0 preconizeaz\u0103 c\u0103 va folosi RANDAO cu VDF ca surs\u0103 de numere aleatorii pe termen lung. Pe l\u00e2ng\u0103 faptul c\u0103 aceast\u0103 abordare este imprevizibil\u0103 \u0219i impar\u021bial\u0103, are un avantaj suplimentar \u00een ceea ce prive\u0219te viabilitatea, cu condi\u021bia ca m\u0103car doi participan\u021bi s\u0103 fie disponibili \u00een re\u021bea (at\u00e2ta timp c\u00e2t protocolul de consens utilizat este viabil pentru a func\u021biona cu un num\u0103r at\u00e2t de mic de participan\u021bi).<\/p>\n<p>Cea mai mare dificultate a acestei abord\u0103ri const\u0103 \u00een configurarea VDF astfel \u00eenc\u00e2t chiar \u0219i un participant cu echipament specializat foarte scump s\u0103 nu poat\u0103 calcula VDF p\u00e2n\u0103 la finalizarea etapei de revela\u021bie. \u00cen mod ideal, algoritmul ar trebui s\u0103 aib\u0103 chiar \u0219i un rezerv\u0103 semnificativ\u0103 de putere, s\u0103 zicem, 10x. \u00cen figura de mai jos este ar\u0103tat un atac al unui participant care dispune de un ASIC specializat, care \u00eei permite s\u0103 ruleze VDF mai repede dec\u00e2t timpul alocat pentru revela\u021bia confirm\u0103rii RANDAO. Acest participant poate calcula \u00een continuare rezultatul final folosind \u0219i nelu\u00e2nd \u00een considerare num\u0103rul s\u0103u, \u0219i, pe baza calculului, s\u0103 decid\u0103 dac\u0103 s\u0103-l arate sau nu.<\/p>\n<p><img decoding=\"async\" alt=\"Se pot genera numere aleatoare dac\u0103 nu ne \u00eencredin\u021b\u0103m unii altora? Partea 1\" src=\"\/wp-content\/uploads\/2020\/09\/3c6e64b6473b951f549f5ba60edbafa9.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Pentru familia VDF men\u021bionat\u0103 mai sus, performan\u021ba unui ASIC specializat poate fi de peste 100 de ori mai mare dec\u00e2t a echipamentului obi\u0219nuit. Astfel, dac\u0103 etapa de revela\u021bie dureaz\u0103 10 secunde, atunci VDF calculat pe un astfel de ASIC ar trebui s\u0103 dureze mai mult de 100 de secunde pentru a avea un rezerv\u0103 de securitate de 10x, \u0219i, prin urmare, acela\u0219i VDF calculat pe echipament obi\u0219nuit ar trebui s\u0103 dureze 100 x 100 secunde = ~ 3 ore.<\/p>\n<p>Funda\u021bia Ethereum inten\u021bioneaz\u0103 s\u0103 rezolve aceast\u0103 problem\u0103 prin crearea propriilor ASIC publice \u0219i gratuite. Odat\u0103 ce acest lucru se va \u00eent\u00e2mpla, toate celelalte protocoale vor putea beneficia de aceast\u0103 tehnologie, dar p\u00e2n\u0103 atunci abordarea RANDAO + VDF nu va fi la fel de viabil\u0103 pentru protocoalele care nu pot investi \u00een dezvoltarea propriilor ASIC.<\/p>\n<p>O mul\u021bime de articole, videoclipuri \u0219i alte informa\u021bii despre VDF au fost adunate pe <noindex><a rel=\"nofollow\" href=\"https:\/\/vdfresearch.org\/\"><u>acest site<\/u><\/a><\/noindex>.<\/p>\n<h3>Folosim coduri de \u0219tergere<\/h3>\n<p>\u00cen aceast\u0103 sec\u021biune, vom explora protocolul de generare a numerelor aleatoare, care folose\u0219te <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%A1%D1%82%D0%B8%D1%80%D0%B0%D1%8E%D1%89%D0%B8%D0%B9_%D0%BA%D0%BE%D0%B4\">coduri de \u0219tergere<\/a><\/noindex>. Acesta poate tolera p\u00e2n\u0103 la \u2153 din atacatori, r\u0103m\u00e2n\u00e2nd viabil, \u0219i permite existen\u021ba a p\u00e2n\u0103 la \u2154 din atacatori \u00eenainte ca ace\u0219tia s\u0103 poat\u0103 prezice sau influen\u021ba rezultatul.<\/p>\n<p>Ideea de baz\u0103 a protocolului este urm\u0103toarea. Pentru a simplifica, s\u0103 presupunem c\u0103 sunt exact 100 de participan\u021bi. De asemenea, s\u0103 presupunem c\u0103 fiecare participant are local o cheie privat\u0103, iar cheile publice ale tuturor participan\u021bilor sunt cunoscute de to\u021bi participan\u021bii:<\/p>\n<ol>\n<li>\n<p>Fiecare participant genereaz\u0103 local un \u0219ir lung, \u00eel fragmenteaz\u0103 \u00een 67 de p\u0103r\u021bi, creeaz\u0103 coduri de \u0219tergere pentru a ob\u021bine 100 de p\u0103r\u021bi, astfel \u00eenc\u00e2t oricare 67 s\u0103 fie suficiente pentru a recupera \u0219irul, aloc\u0103 fiecare din cele 100 de p\u0103r\u021bi unui participant \u0219i le cripteaz\u0103 folosind cheia public\u0103 a aceluia\u0219i participant. Apoi, toate p\u0103r\u021bile criptate sunt publicate.<\/p>\n<\/li>\n<li>\n<p>Participan\u021bii folosesc un anumit consens pentru a ajunge la un acord asupra seturilor codificate de la anumi\u021bi 67 de participan\u021bi.<\/p>\n<\/li>\n<li>\n<p>Odat\u0103 ce consensul este atins, fiecare participant ia p\u0103r\u021bile codificate din fiecare dintre cele 67 de seturi, criptate cu cheia lor public\u0103, decripteaz\u0103 toate aceste p\u0103r\u021bi \u0219i public\u0103 toate aceste p\u0103r\u021bi decriptate.<\/p>\n<\/li>\n<li>\n<p>Odat\u0103 ce 67 de participan\u021bi au finalizat pasul (3), toate seturile convenite pot fi complet decriptate \u0219i restaurate datorit\u0103 propriet\u0103\u021bilor codurilor de \u0219tergere, iar num\u0103rul final poate fi ob\u021binut ca XOR al \u0219irurilor ini\u021biale din care participan\u021bii au \u00eenceput \u00een (1).<\/p>\n<\/li>\n<\/ol>\n<p><img decoding=\"async\" alt=\"Se pot genera numere aleatoare dac\u0103 nu ne \u00eencredin\u021b\u0103m unii altora? Partea 1\" src=\"\/wp-content\/uploads\/2020\/09\/b74ef4bb4a8148766f0b1ab2a8222625.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Se poate demonstra c\u0103 acest protocol este impar\u021bial \u0219i imprevizibil. Num\u0103rul aleatoriu rezultat este definit dup\u0103 atingerea consensului, dar nim\u0103nui nu \u00eei este cunoscut p\u00e2n\u0103 c\u00e2nd \u2154 din participan\u021bi nu decodeaz\u0103 p\u0103r\u021bile criptate cu cheia lor public\u0103. Astfel, num\u0103rul aleatoriu este definit \u00eenainte ca informa\u021bia necesar\u0103 pentru recuperarea sa s\u0103 fie publicat\u0103.<\/p>\n<p>Ce se \u00eent\u00e2mpl\u0103 dac\u0103 \u00een pasul (1) unul dintre participan\u021bi trimite altor participan\u021bi p\u0103r\u021bi codificate care nu sunt un cod de \u0219tergere corect pentru o anumit\u0103 linie? F\u0103r\u0103 modific\u0103ri suplimentare, participan\u021bii diferi\u021bi fie nu vor putea s\u0103 recupereze deloc linia, fie vor recupera linii diferite, ceea ce va duce la ob\u021binerea unui num\u0103r aleatoriu diferit de c\u0103tre participan\u021bi. Pentru a preveni acest lucru, se poate face urm\u0103toarele: fiecare participant, pe l\u00e2ng\u0103 p\u0103r\u021bile codificate, calculeaz\u0103 de asemenea <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%94%D0%B5%D1%80%D0%B5%D0%B2%D0%BE_%D1%85%D0%B5%D1%88%D0%B5%D0%B9\">un arbore Merkle<\/a><\/noindex> pentru toate aceste p\u0103r\u021bi \u0219i trimite fiec\u0103rui participant at\u00e2t partea codificat\u0103, c\u00e2t \u0219i r\u0103d\u0103cina arborelui Merkle, \u0219i dovada includerii p\u0103r\u021bii \u00een arborele Merkle. \u00cen consens, \u00een pasul (2), participan\u021bii nu doar c\u0103 sunt de acord asupra mai multor seturi, ci \u0219i asupra mai multor r\u0103d\u0103cini specifice ale acestor arbori (dac\u0103 un anumit participant s-a ab\u0103tut de la protocol \u0219i a trimis r\u0103d\u0103cini diferite ale arborelui Merkle diferitelor participan\u021bi, iar aceste dou\u0103 r\u0103d\u0103cini sunt prezentate \u00een timpul consensului, linia sa nu este inclus\u0103 \u00een setul rezultat). La finalul consensului, vom avea 67 de linii codificate \u0219i r\u0103d\u0103cinile corespunz\u0103toare ale arborelui Merkle, astfel \u00eenc\u00e2t s\u0103 existe cel pu\u021bin 67 de participan\u021bi (nu neap\u0103rat aceia\u0219i care au propus liniile respective), care pentru fiecare dintre cele 67 de linii au un mesaj cu o parte a codului de \u0219tergere \u0219i o dovad\u0103 a includerii p\u0103r\u021bii lor \u00een arborele Merkle corespunz\u0103tor.<\/p>\n<p>C\u00e2nd \u00een pasul (4) un participant decodeaz\u0103 67 de p\u0103r\u021bi pentru o anumit\u0103 linie \u0219i \u00eencearc\u0103 s\u0103 recupereze linia original\u0103 din acestea, este posibil unul dintre urm\u0103toarele scenarii:<\/p>\n<ol>\n<li>\n<p>Linia este recuperat\u0103, iar dac\u0103 este din nou codificat\u0103 cu coduri de \u0219tergere \u0219i se calculeaz\u0103 arborele Merkle pentru p\u0103r\u021bile calculate local, r\u0103d\u0103cina coincide cu cea la care s-a ob\u021binut consensul.<\/p>\n<\/li>\n<li>\n<p>Linia este recuperat\u0103, dar r\u0103d\u0103cina calculat\u0103 local nu corespunde celei la care s-a ob\u021binut consensul.<\/p>\n<\/li>\n<li>\n<p>Linia nu poate fi recuperat\u0103.<\/p>\n<\/li>\n<\/ol>\n<p>Este u\u0219or de demonstrat c\u0103, dac\u0103 cel pu\u021bin pentru un participant a ap\u0103rut varianta (1), atunci pentru to\u021bi participan\u021bii va ap\u0103rea varianta (1), \u0219i invers, dac\u0103 cel pu\u021bin pentru un participant a ap\u0103rut varianta (2) sau (3), atunci pentru to\u021bi participan\u021bii va ap\u0103rea varianta (2) sau (3). Astfel, pentru fiecare linie din set, fie to\u021bi participan\u021bii o vor reconstitui cu succes, fie to\u021bi participan\u021bii nu o vor putea reconstitui. Apoi, num\u0103rul aleatoriu rezultat este XOR doar al acelor linii pe care participan\u021bii le-au putut reconstitui.<\/p>\n<h3>Semn\u0103turi prin prag<\/h3>\n<p>O alt\u0103 abordare a aleatoriz\u0103rii implic\u0103 utilizarea a\u0219a-numitelor semn\u0103turi BLS prin prag. Generatorul de numere aleatoare, bazat pe semn\u0103turi prin prag, are acelea\u0219i garan\u021bii ca algoritmul descris mai sus, bazat pe coduri care \u0219terg, dar are o complexitate asimptotic\u0103 semnificativ mai mic\u0103 \u00een ceea ce prive\u0219te num\u0103rul de mesaje transmise prin re\u021bea pentru fiecare num\u0103r generat.<\/p>\n<p>Semn\u0103turile BLS sunt o construc\u021bie care permite mai multor participan\u021bi s\u0103 creeze o semn\u0103tur\u0103 comun\u0103 pentru un mesaj. Aceste semn\u0103turi sunt adesea utilizate pentru a economisi spa\u021biu \u0219i l\u0103\u021bime de band\u0103, deoarece nu este necesar\u0103 distribuirea mai multor semn\u0103turi.&nbsp;<\/p>\n<p>O utilizare frecvent\u0103 pentru semn\u0103turile BLS \u00een protocoalele blockchain, pe l\u00e2ng\u0103 generarea numerelor aleatoare, este semnarea blocurilor \u00een protocoalele BFT. S\u0103 zicem c\u0103 100 de participan\u021bi creeaz\u0103 blocuri, iar un bloc este considerat final dac\u0103 67 dintre ei \u00eel semneaz\u0103. To\u021bi pot prezenta p\u0103r\u021bile lor de semn\u0103tur\u0103 BLS \u0219i pot folosi un anumit algoritm de consens pentru a conveni asupra celor 67 dintre ei, iar apoi le pot combina \u00eentr-o singur\u0103 semn\u0103tur\u0103 BLS. Orice 67 (sau mai multe) p\u0103r\u021bi pot fi utilizate pentru a genera semn\u0103tura final\u0103, care va depinde de ce 67 de semn\u0103turi au fost combinate, \u0219i, prin urmare, poate varia, dar, de\u0219i diversele selec\u021bii ale celor 67 de participan\u021bi vor crea o semn\u0103tur\u0103 diferit\u0103, oricare astfel de semn\u0103tur\u0103 va fi o semn\u0103tur\u0103 corect\u0103 pentru bloc. Celorlal\u021bi participan\u021bi le va fi suficient s\u0103 primeasc\u0103 prin re\u021bea \u0219i s\u0103 verifice o singur\u0103 semn\u0103tur\u0103 pentru fiecare bloc, \u00een loc de 67, ceea ce reduce semnificativ \u00eenc\u0103rcarea pe re\u021bea.<\/p>\n<p>Se pare c\u0103 dac\u0103 cheile private folosite de participan\u021bi sunt generate \u00eentr-un anumit mod, atunci indiferent de ce 67 de semn\u0103turi (sau mai multe, dar nu mai pu\u021bin) sunt agregate, semn\u0103tura rezultat\u0103 va fi identic\u0103. Acest lucru poate fi utilizat ca surs\u0103 de aleatoritate: participan\u021bii se \u00een\u021beleg mai \u00eent\u00e2i asupra unui anumit mesaj pe care vor s\u0103-l semneze (acesta poate fi rezultatul RANDAO sau pur \u0219i simplu hash-ul ultimei blocuri, de fapt nu are importan\u021b\u0103, at\u00e2ta timp c\u00e2t se schimb\u0103 de fiecare dat\u0103 \u0219i este convenit), \u0219i creeaz\u0103 pentru el o semn\u0103tur\u0103 BLS. Rezultatul gener\u0103rii va fi imprevizibil, p\u00e2n\u0103 c\u00e2nd 67 de participan\u021bi \u00ee\u0219i vor oferi p\u0103r\u021bile, iar dup\u0103 aceea, ie\u0219irea va fi deja predeterminat\u0103 \u0219i nu poate depinde de ac\u021biunile vreunui participant.<\/p>\n<p>Aceast\u0103 abordare a aleatorit\u0103\u021bii este viabil\u0103 dac\u0103 cel pu\u021bin \u2154 dintre participan\u021bi sunt online \u0219i respect\u0103 protocolul, \u0219i este impar\u021bial\u0103 \u0219i imprevizibil\u0103 at\u00e2ta timp c\u00e2t cel pu\u021bin \u2153 dintre participan\u021bi respect\u0103 protocolul. Este important de men\u021bionat c\u0103 un atacator care controleaz\u0103 mai mult de \u2153 dar mai pu\u021bin de \u2154 dintre participan\u021bi poate opri protocolul, dar nu poate prezice sau influen\u021ba ie\u0219irea acestuia.<\/p>\n<p>Semn\u0103turile de prag sunt ele \u00eensele o tem\u0103 foarte interesant\u0103. \u00cen a doua parte a articolului vom analiza \u00een detaliu cum func\u021bioneaz\u0103 acestea \u0219i cum trebuie generate cheile participan\u021bilor pentru ca semn\u0103turile de prag s\u0103 poat\u0103 fi folosite ca generator de numere aleatoare.<\/p>\n<h3>\u00cen concluzie<\/h3>\n<p>Acest articol este primul dintr-o serie de articole tehnice pe blog. <noindex><a rel=\"nofollow\" href=\"https:\/\/near.org\">NEAR<\/a><\/noindex>. NEAR este un protocol blockchain \u0219i o platform\u0103 pentru dezvoltarea aplica\u021biilor descentralizate, cu accent pe u\u0219urin\u021ba dezvolt\u0103rii \u0219i u\u0219urin\u021ba utiliz\u0103rii pentru utilizatorii finali.<\/p>\n<p>Codul protocolului este deschis, iar implementarea noastr\u0103 este scris\u0103 \u00een Rust, \u0219i poate fi g\u0103sit\u0103 <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/nearprotocol\/nearcore\">aici<\/a><\/noindex>.<\/p>\n<p>Pute\u021bi vedea cum arat\u0103 dezvoltarea pe NEAR \u0219i experimenta \u00een online-IDE <noindex><a rel=\"nofollow\" href=\"https:\/\/examples.near.org\">aici<\/a><\/noindex>.<\/p>\n<p>Urm\u0103rii toate nout\u0103\u021bile \u00een limba rom\u00e2n\u0103 se poate \u00een <noindex><a rel=\"nofollow\" href=\"https:\/\/t.me\/near_protocol\">grup\u0103 pe Telegram<\/a><\/noindex> \u0219i \u00een <noindex><a rel=\"nofollow\" href=\"https:\/\/vk.com\/nearprotocol\">grup\u0103 pe VKontakte<\/a><\/noindex>, iar \u00een limba englez\u0103 \u00een oficialul <noindex><a rel=\"nofollow\" href=\"https:\/\/twitter.com\/NEARProtocol\">twitter.<\/a><\/noindex>.<\/p>\n<p>Pe cur\u00e2nd!<\/p>\n<p>Sursa: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/near\/blog\/521090\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440! \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u043f\u0440\u043e \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044e \u043f\u0441\u0435\u0432\u0434\u043e-\u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0445 \u0447\u0438\u0441\u0435\u043b \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0430\u043c\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435 \u0434\u043e\u0432\u0435\u0440\u044f\u044e\u0442 \u0434\u0440\u0443\u0433 \u0434\u0440\u0443\u0433\u0443. \u041a\u0430\u043a \u043c\u044b \u0443\u0432\u0438\u0434\u0438\u043c \u043d\u0438\u0436\u0435, \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u201c\u043f\u043e\u0447\u0442\u0438\u201d \u0445\u043e\u0440\u043e\u0448\u0438\u0439 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e, \u0430 \u0432\u043e\u0442 \u043e\u0447\u0435\u043d\u044c \u0445\u043e\u0440\u043e\u0448\u0438\u0439 \u2013 \u0441\u043b\u043e\u0436\u043d\u043e. \u0417\u0430\u0447\u0435\u043c \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0443\u0436\u043d\u043e \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0435 \u0447\u0438\u0441\u043b\u0430 \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0430\u043c, \u043d\u0435 \u0434\u043e\u0432\u0435\u0440\u044f\u044e\u0449\u0438\u043c \u0434\u0440\u0443\u0433 \u0434\u0440\u0443\u0433\u0443? \u041e\u0434\u043d\u0430 \u0438\u0437 \u043e\u0431\u043b\u0430\u0441\u0442\u0435\u0439 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f &#8212; \u044d\u0442\u043e \u0434\u0435\u0446\u0435\u043d\u0442\u0440\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":95469,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-95468","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.2.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440!\u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u043f\u0440\u043e \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044e \u043f\u0441\u0435\u0432\u0434\u043e-\u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0445 \u0447\u0438\u0441\u0435\u043b \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0430\u043c\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435 \u0434\u043e\u0432\u0435\u0440\u044f\u044e\u0442 \u0434\u0440\u0443\u0433 \u0434\u0440\u0443\u0433\u0443.\" \/>\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\/administrirovanie\/mozhno-li-generirovat-sluchajnye-chisla-esli-my-ne-doveryaem-drug-drugu-chast-1\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2.1\" \/>\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\u041c\u043e\u0436\u043d\u043e \u043b\u0438 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0435 \u0447\u0438\u0441\u043b\u0430, \u0435\u0441\u043b\u0438 \u043c\u044b \u043d\u0435 \u0434\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u0434\u0440\u0443\u0433 \u0434\u0440\u0443\u0433\u0443? \u0427\u0430\u0441\u0442\u044c 1 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440!\u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u043f\u0440\u043e \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044e \u043f\u0441\u0435\u0432\u0434\u043e-\u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0445 \u0447\u0438\u0441\u0435\u043b \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0430\u043c\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435 \u0434\u043e\u0432\u0435\u0440\u044f\u044e\u0442 \u0434\u0440\u0443\u0433 \u0434\u0440\u0443\u0433\u0443.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/mozhno-li-generirovat-sluchajnye-chisla-esli-my-ne-doveryaem-drug-drugu-chast-1\" \/>\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=\"2020-09-29T17:42:29+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-09-29T17:42:29+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\udd47Se pot genera numere aleatoare dac\u0103 nu ne \u00eencredem unii \u00een al\u021bii? Partea 1 | ProHoster","description":"Bun\u0103, Habr! \u00cen acest articol voi vorbi despre generarea numerelor pseudo-aleatoare de c\u0103tre participan\u021bi care nu se \u00eencred unul \u00een cel\u0103lalt.","canonical_url":"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/mozhno-li-generirovat-sluchajnye-chisla-esli-my-ne-doveryaem-drug-drugu-chast-1","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\u041c\u043e\u0436\u043d\u043e \u043b\u0438 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0435 \u0447\u0438\u0441\u043b\u0430, \u0435\u0441\u043b\u0438 \u043c\u044b \u043d\u0435 \u0434\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u0434\u0440\u0443\u0433 \u0434\u0440\u0443\u0433\u0443? \u0427\u0430\u0441\u0442\u044c 1 | ProHoster","og:description":"\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440!\u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u043f\u0440\u043e \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044e \u043f\u0441\u0435\u0432\u0434\u043e-\u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0445 \u0447\u0438\u0441\u0435\u043b \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0430\u043c\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435 \u0434\u043e\u0432\u0435\u0440\u044f\u044e\u0442 \u0434\u0440\u0443\u0433 \u0434\u0440\u0443\u0433\u0443.","og:url":"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/mozhno-li-generirovat-sluchajnye-chisla-esli-my-ne-doveryaem-drug-drugu-chast-1","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":"2020-09-29T17:42:29+00:00","article:modified_time":"2020-09-29T17:42:29+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"95468","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":"","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":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 11:05:29","updated":"2022-09-28 01:55:15","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\/95468","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=95468"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts\/95468\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/media\/95469"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/media?parent=95468"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/categories?post=95468"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/tags?post=95468"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}