{"id":32343,"date":"2019-10-31T21:46:27","date_gmt":"2019-10-31T18:46:27","guid":{"rendered":"https:\/\/prohoster.info\/blog\/cluchajnyj-orakul-na-osnove-tsifrovoj-podpisi-v-blokchejne\/"},"modified":"2019-10-31T21:46:27","modified_gmt":"2019-10-31T18:46:27","slug":"cluchajnyj-orakul-na-osnove-tsifrovoj-podpisi-v-blokchejne","status":"publish","type":"post","link":"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/cluchajnyj-orakul-na-osnove-tsifrovoj-podpisi-v-blokchejne","title":{"rendered":"Un oracol aleator bazat pe semn\u0103tura digital\u0103 \u00een blockchain","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>De la idee la realizare: modific\u0103m schema existent\u0103 de semn\u0103tur\u0103 digital\u0103 pe curb\u0103 eliptic\u0103 pentru a o face determinist\u0103 \u0219i oferim pe baza acesteia func\u021bii de generare a numerelor pseudo-aleatorii verificate \u00een cadrul blockchain-ului.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Un oracol aleator bazat pe semn\u0103tura digital\u0103 \u00een blockchain\" src=\"\/wp-content\/uploads\/2019\/04\/91c321aa895498263f80f586aa336956.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h1 id=\"ideya\">Ideea<\/h1>\n<p><\/p>\n<p>\u00cen toamna anului 2018, \u00een blockchain-ul Waves au fost <noindex><a rel=\"nofollow\" href=\"https:\/\/blog.wavesplatform.com\/smart-accounts-finally-activated-on-waves-mainnet-8bb7c7b67beb\">activate primele smart contracts<\/a><\/noindex>, imediat a ap\u0103rut \u00eentrebarea privind posibilitatea de a ob\u021bine <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%93%D0%B5%D0%BD%D0%B5%D1%80%D0%B0%D1%82%D0%BE%D1%80_%D0%BF%D1%81%D0%B5%D0%B2%D0%B4%D0%BE%D1%81%D0%BB%D1%83%D1%87%D0%B0%D0%B9%D0%BD%D1%8B%D1%85_%D1%87%D0%B8%D1%81%D0%B5%D0%BB\">numere pseudo-aleatorii<\/a><\/noindex>, \u00een care po\u021bi avea \u00eencredere.<\/p>\n<p><\/p>\n<p>Reflect\u00e2nd asupra acestei \u00eentreb\u0103ri, am ajuns la concluzia c\u0103 orice blockchain este o celul\u0103, ob\u021binerea unei surse de entropie de \u00eencredere \u00eentr-un sistem \u00eenchis este imposibil\u0103.<\/p>\n<p><\/p>\n<p>Dar mi-a pl\u0103cut totu\u0219i o idee: dac\u0103 <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%A1%D0%BB%D1%83%D1%87%D0%B0%D0%B9%D0%BD%D1%8B%D0%B9_%D0%BE%D1%80%D0%B0%D0%BA%D1%83%D0%BB\">un oracol aleator<\/a><\/noindex> va semna datele utilizatorului cu un algoritm determinist, atunci utilizatorul va putea verifica \u00eentotdeauna aceast\u0103 semn\u0103tur\u0103 cu cheia public\u0103 \u0219i va fi sigur c\u0103 valoarea ob\u021binut\u0103 este unic\u0103. Oracolul, indiferent de inten\u021bie, nu poate schimba nimic, algoritmul ofer\u0103 un rezultat unic. Practic, utilizatorul fixeaz\u0103 rezultatul, dar nu \u00eel cunoa\u0219te p\u00e2n\u0103 c\u00e2nd oracolul nu \u00eel public\u0103. A\u0219adar, se poate concluziona c\u0103 nu trebuie s\u0103 avem \u00eencredere \u00een oracol, ci s\u0103 verific\u0103m rezultatul muncii sale. Astfel, \u00een cazul unui e\u0219ec de verificare, aceast\u0103 semn\u0103tur\u0103 poate fi considerat\u0103 o surs\u0103 de entropie pentru un num\u0103r pseudo-aleator.<\/p>\n<p><\/p>\n<p>\u00cen platforma blockchain Waves este utilizat\u0103 schema de semn\u0103tur\u0103 <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/EdDSA\">EdDSA<\/a><\/noindex> o variant\u0103 <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/EdDSA#Ed25519\">Ed25519<\/a><\/noindex>. \u00cen aceast\u0103 schem\u0103, semn\u0103tura const\u0103 din valorile R \u0219i S, unde R depinde de o valoare aleatoare, iar S este calculat\u0103 pe baza mesajului semnat, a cheii private \u0219i a acelea\u0219i valori aleatoare ca R. Rezult\u0103 c\u0103 nu exist\u0103 o dependen\u021b\u0103 unic\u0103, pentru acela\u0219i mesaj utilizator exist\u0103 multe semn\u0103turi valide.<\/p>\n<p><\/p>\n<p>Este evident c\u0103, \u00een forma sa pur\u0103, aceast\u0103 semn\u0103tur\u0103 nu poate fi utilizat\u0103 ca surs\u0103 de numere pseudo-aleatorii, deoarece este nedeterminat\u0103 \u0219i, prin urmare, poate fi u\u0219or subject\u0103 manipul\u0103rilor din partea oracolului.<\/p>\n<p><\/p>\n<p>Dar, dup\u0103 cum s-a dovedit, este \u00eentr-adev\u0103r posibil s\u0103 o facem determinist\u0103.<\/p>\n<p><\/p>\n<p>Am avut mari speran\u021be \u00een <noindex><a rel=\"nofollow\" href=\"https:\/\/tools.ietf.org\/html\/draft-irtf-cfrg-vrf-04\">func\u021bia aleatoare verificabil\u0103 (VRF)<\/a><\/noindex>, dar, dup\u0103 ce am studiat detaliile, am renun\u021bat la aceast\u0103 variant\u0103. De\u0219i VRF ofer\u0103 o variant\u0103 determinist\u0103 de semnare \u0219i dovada acesteia, algoritmul are o por\u021biune ciudat\u0103, care creeaz\u0103 o oportunitate pentru manipularea oracolului. Adic\u0103, \u00een calculul valorii k (<noindex><a rel=\"nofollow\" href=\"https:\/\/tools.ietf.org\/html\/draft-irtf-cfrg-vrf-04#section-5.1\">sec\u021biunea 5.1<\/a><\/noindex>) se utilizeaz\u0103 cheia privat\u0103, care r\u0103m\u00e2ne necunoscut\u0103 utilizatorului, ceea ce \u00eenseamn\u0103 c\u0103 utilizatorul nu poate verifica corectitudinea calculului lui k, astfel c\u0103 oracolul poate folosi orice valoare k necesar\u0103 \u0219i s\u0103 men\u021bin\u0103 \u00een acela\u0219i timp o baz\u0103 de date a coresponden\u021belor dintre k \u0219i datele semnate, pentru a putea recompensa \u00eentotdeauna un resultat corect din perspectiva VRF. Dac\u0103 vede\u021bi un joc bazat pe VRF f\u0103r\u0103 a dezv\u0103lui cheia privat\u0103, pute\u021bi argumenta: fie este nevoie s\u0103 se dezv\u0103luie cheia, fie s\u0103 se exclud\u0103 din calculul lui k, atunci cheia privat\u0103 se va dezv\u0103lui automat la prima semn\u0103tur\u0103. \u00cen general, a\u0219a cum s-a spus deja, este un sistem ciudat pentru un oracol aleator.<\/p>\n<p><\/p>\n<p>Dup\u0103 ce am reflectat pu\u021bin \u0219i am ob\u021binut sprijin din partea anali\u0219tilor locali, a ap\u0103rut schema de func\u021bionare a VECRO.<\/p>\n<p><\/p>\n<p>VECRO este un acronim pentru Verifiable Elliptic Curve Random Oracle, care \u00een rom\u00e2n\u0103 \u00eenseamn\u0103 oracol aleator verificabil pe curbe eliptice.<\/p>\n<p><\/p>\n<p>Totul s-a dovedit a fi destul de simplu, pentru a ob\u021bine determinismul este necesar s\u0103 se fixeze valoarea R \u00eenainte de apari\u021bia mesajului semnat. Dac\u0103 R este fixat \u0219i face parte din mesajul semnat, ceea ce garanteaz\u0103 \u00een plus fixarea lui R \u00een \u00eensu\u0219i mesajul semnat, valoarea S este determinat\u0103 \u00een mod univoc de mesajul utilizatorului \u0219i, din urmare, poate fi utilizat\u0103 ca surs\u0103 pentru numere pseudo-aleatorii.<\/p>\n<p><\/p>\n<p>\u00centr-o astfel de schem\u0103, nu conteaz\u0103 cum este fixat R, aceasta r\u0103m\u00e2ne \u00een responsabilitatea oracolului. Important este c\u0103 S este determinat \u00een mod univoc de utilizator, dar valoarea sa r\u0103m\u00e2ne necunoscut\u0103 p\u00e2n\u0103 c\u00e2nd oracolul o public\u0103. Totul a\u0219a cum ne doream!<\/p>\n<p><\/p>\n<p>Vorbind despre R fixat, re\u021bine\u021bi c\u0103 <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/jedisct1\/libsodium\/issues\/170\">R reutilizat<\/a><\/noindex> Semn\u0103tura diferitelor mesaje dezv\u0103luie f\u0103r\u0103 echivoc cheia privat\u0103 \u00een schema EdDSA. Pentru proprietarul oracolului, devine extrem de important s\u0103 se exclud\u0103 posibilitatea reutiliz\u0103rii lui R pentru semnarea diferitelor mesaje ale utilizatorului. Cu alte cuvinte, \u00een orice manipulare sau conspira\u021bie, oracolul va risca mereu pierderea cheii sale private.<\/p>\n<p><\/p>\n<p>Prin urmare, oracolul trebuie s\u0103 ofere utilizatorilor dou\u0103 func\u021bii: ini\u021bializarea, care fixeaz\u0103 valoarea R, \u0219i semn\u0103tura, care returneaz\u0103 valoarea S. Astfel, perechea R, S este o semn\u0103tur\u0103 verificabil\u0103 obi\u0219nuit\u0103 a mesajului utilizatorului care con\u021bine valoarea R fixat\u0103 \u0219i date ale utilizatorului.<\/p>\n<p><\/p>\n<p>Se poate sus\u021bine c\u0103 aceast\u0103 schem\u0103 pentru blockchain nu este altceva dec\u00e2t o simpl\u0103 <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/348838\/\">schem\u0103 de angajament-dezv\u0103luire<\/a><\/noindex>. \u00cen esen\u021b\u0103, da, aceasta este. Dar exist\u0103 c\u00e2teva nuan\u021be. \u00cen primul r\u00e2nd, oracolul lucreaz\u0103 \u00eentotdeauna cu aceea\u0219i cheie \u00een toate opera\u021biunile, ceea ce este convenabil \u00een contracte. \u00cen al doilea r\u00e2nd, exist\u0103 riscul pierderii cheii private de c\u0103tre oracol \u00een cazul unui comportament incorect; de exemplu, oracolul permite prelevarea rezultatelor, astfel \u00eenc\u00e2t este suficient s\u0103 se fac\u0103 doar dou\u0103 prelev\u0103ri pentru a afla cheia privat\u0103 \u0219i a ob\u021bine acces complet la portofel. \u00cen al treilea r\u00e2nd, o semn\u0103tur\u0103 nativ verificabil\u0103 \u00een blockchain, care este sursa de aleatoriu \u2013 este una frumoas\u0103.<\/p>\n<p><\/p>\n<p>Ideea implement\u0103rii a fost hr\u0103nit\u0103 timp de \u0219ase luni, p\u00e2n\u0103 c\u00e2nd, \u00een cele din urm\u0103, a ap\u0103rut motiva\u021bia sub forma unei <noindex><a rel=\"nofollow\" href=\"https:\/\/medium.com\/waves-lab\/waves-labs-announces-first-grant-recipients-7568f01fec22\">subven\u021bii de la Waves Labs<\/a><\/noindex>. Cu o subven\u021bie mare vine o mare responsabilitate, a\u0219a c\u0103 proiectul trebuie s\u0103 existe!<\/p>\n<p><\/p>\n<h1 id=\"realizaciya\">Implementarea<\/h1>\n<p><\/p>\n<p>A\u0219adar, \u00een acest proiect, <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/deemru\/VECRO\">VECRO a fost implementat<\/a><\/noindex> pe blockchain-ul Waves \u00een modul cerere-r\u0103spuns folosind tranzac\u021bii de transfer \u00eentre utilizator \u0219i oracol. \u00cen acest sens, pe contul oracolului este instalat un script care controleaz\u0103 activitatea \u00een strict\u0103 conformitate cu logica descris\u0103 mai sus. Tranzac\u021biile oracolului sunt verificate prin refacerea \u00eentregului lan\u021b de interac\u021biune cu utilizatorul. Verificarea valorii finale implic\u0103 toate cele patru tranzac\u021bii; contractul inteligent le combin\u0103 pe un fir de verificare strict, verific\u00e2nd pas cu pas toate valorile \u0219i f\u0103r\u0103 a l\u0103sa loc pentru orice manipul\u0103ri.<\/p>\n<p><\/p>\n<p>\u00cenc\u0103 o dat\u0103, pentru a r\u0103m\u00e2ne evident \u0219i a fi mai clar. Oracolul nu lucreaz\u0103 doar conform schemei propuse. Activitatea sa este complet controlat\u0103 la nivelul blockchain-ului de un set stabilit. <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/deemru\/VECRO\/blob\/master\/vecro.ride\">contract inteligent<\/a><\/noindex>. O mic pas \u00een lateral, \u0219i tranzac\u021bia pur \u0219i simplu nu va trece. A\u0219a c\u0103, dac\u0103 tranzac\u021bia a ajuns \u00een blockchain, utilizatorul nu trebuie s\u0103 verifice nimic, a fost deja verificat\u0103 de sute de noduri din re\u021bea.<\/p>\n<p><\/p>\n<p>\u00cen prezent, pe re\u021beaua principal\u0103 Waves a fost lansat un VECRO (pute\u021bi lansa propriul, nu este dificil, doar <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/deemru\/VECRO\/blob\/master\/config.sample.php\">uita\u021bi-v\u0103 la exemplul de configura\u021bie<\/a><\/noindex>). Codul actual func\u021bioneaz\u0103 pe PHP (pe <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/deemru\/WavesKit\">WavesKit<\/a><\/noindex>, despre care <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/446110\/\">am vorbit anterior<\/a><\/noindex>).<\/p>\n<p><\/p>\n<p>Pentru a folosi serviciul de oracle, este necesar:<\/p>\n<p><\/p>\n<ul>\n<li>S\u0103 fixa\u021bi R;\n<ul>\n<li>S\u0103 trimite\u021bi minimum 0.005 Waves c\u0103tre aliasul oracle init@vecr;<\/li>\n<li>S\u0103 primi\u021bi R-code \u00een c\u00e2mpul attachment \u00een transferul a 1 R-vecr token de la oracle c\u0103tre utilizator;<\/li>\n<\/ul>\n<\/li>\n<li>S\u0103 ob\u021bine\u021bi semn\u0103tura;\n<ul>\n<li>S\u0103 trimite\u021bi minimum 0.005 Waves la aliasul oracle random@vecr \u0219i, de asemenea, este OBLIGATORIU s\u0103 specifica\u021bi \u00een c\u00e2mpul attachment R-code ob\u021binut anterior \u0219i datele suplimentare ale utilizatorului;<\/li>\n<li>S\u0103 primi\u021bi S-code \u00een c\u00e2mpul attachment \u00een transferul a 1 S-vecr token de la oracle c\u0103tre utilizator;<\/li>\n<\/ul>\n<\/li>\n<li>S\u0103 folosi\u021bi S-code ca surs\u0103 de num\u0103r pseudo-aleator.<\/li>\n<\/ul>\n<p><\/p>\n<p>Nuantele implement\u0103rii actuale:<\/p>\n<p><\/p>\n<ul>\n<li>Waves trimise oracle-ului sunt utilizate ca tax\u0103 pentru tranzac\u021bia de returnare c\u0103tre utilizator, p\u00e2n\u0103 la maximum 1 Waves;<\/li>\n<li>R-code este concatenarea byte-ului simbolului \u2018R\u2019 \u0219i a valorii R de 32 bytes \u00een codare base58;<\/li>\n<li>R-code \u00een attachment trebuie s\u0103 fie primul, datele utilizatorului vin dup\u0103 R-code;<\/li>\n<li>S-code este concatenarea byte-ului simbolului \u2018S\u2019 \u0219i a valorii S de 32 bytes \u00een codare base58;<\/li>\n<li>S este rezultatul \u00eemp\u0103r\u021birii modulo, a\u0219a c\u0103 nu se poate folosi S ca un num\u0103r pseudo-aleator de 256-bits (acest num\u0103r poate fi considerat maximum 252-bits pseudo-aleator);<\/li>\n<li>Cea mai simpl\u0103 variant\u0103 este s\u0103 folosi\u021bi hash-ul de la S-code ca num\u0103r pseudo-aleator.<\/li>\n<\/ul>\n<p><\/p>\n<p>Exemplu de ob\u021binere a S-code:<\/p>\n<p><\/p>\n<ul>\n<li>Ini\u021bializare: <noindex><a rel=\"nofollow\" href=\"https:\/\/wavesexplorer.com\/tx\/8gc8jwM7JrPNehoDs7NVyos7BsufYktvkwVW1B6FAY6\">https:\/\/wavesexplorer.com\/tx\/8gc8jwM7JrPNehoDs7NVyos7BsufYktvkwVW1B6FAY6<\/a><\/noindex><\/li>\n<li>Ob\u021binerea R-code: <noindex><a rel=\"nofollow\" href=\"https:\/\/wavesexplorer.com\/tx\/9eB25SbzEwvHEbm8pcKj7MGDrYv1u3Fxpj696FkJ96hd\">https:\/\/wavesexplorer.com\/tx\/9eB25SbzEwvHEbm8pcKj7MGDrYv1u3Fxpj696FkJ96hd<\/a><\/noindex><\/li>\n<li>Cererea rezultatului semn\u0103turii R-code \u0219i a datelor utilizatorilor \u201crandom\u201d: <noindex><a rel=\"nofollow\" href=\"https:\/\/wavesexplorer.com\/tx\/6faoFJobEsugDFYmYmfsbtQYABmckNuE2kevaLh7ifzz\">https:\/\/wavesexplorer.com\/tx\/6faoFJobEsugDFYmYmfsbtQYABmckNuE2kevaLh7ifzz<\/a><\/noindex><\/li>\n<li>Ob\u021binerea S-code: <noindex><a rel=\"nofollow\" href=\"https:\/\/wavesexplorer.com\/tx\/C5VrFLQcprbA1KXAToaNvMP4Kg2rq43NkwWuADAA7wXX\">https:\/\/wavesexplorer.com\/tx\/C5VrFLQcprbA1KXAToaNvMP4Kg2rq43NkwWuADAA7wXX<\/a><\/noindex><\/li>\n<\/ul>\n<p><\/p>\n<p>Din punct de vedere tehnic, oracle-ul este complet preg\u0103tit de func\u021bionare, \u00eel pute\u021bi folosi cu \u00eencredere. Din perspectiva utilizatorului obi\u0219nuit, lipse\u0219te o interfa\u021b\u0103 grafic\u0103 convenabil\u0103, acest lucru va trebui s\u0103 a\u0219tepte.<\/p>\n<p><\/p>\n<p>Voi fi bucuros s\u0103 r\u0103spund la \u00eentreb\u0103ri \u0219i s\u0103 primesc comentarii, mul\u021bumesc.<\/p>\n<p>Sursa: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/449340\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041e\u0442 \u0438\u0434\u0435\u0438 \u0434\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438: \u043c\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u0443\u0435\u043c \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0443\u044e \u0441\u0445\u0435\u043c\u0443 \u0446\u0438\u0444\u0440\u043e\u0432\u043e\u0439 \u043f\u043e\u0434\u043f\u0438\u0441\u0438 \u043d\u0430 \u044d\u043b\u043b\u0438\u043f\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043a\u0440\u0438\u0432\u043e\u0439, \u0447\u0442\u043e\u0431\u044b \u043e\u043d\u0430 \u0431\u044b\u043b\u0430 \u0434\u0435\u0442\u0435\u0440\u043c\u0438\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439, \u0438 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u043d\u0430 \u0435\u0451 \u043e\u0441\u043d\u043e\u0432\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c\u044b\u0445 \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u0431\u043b\u043e\u043a\u0447\u0435\u0439\u043d\u0430 \u043f\u0441\u0435\u0432\u0434\u043e\u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0445 \u0447\u0438\u0441\u0435\u043b. \u0418\u0434\u0435\u044f \u041e\u0441\u0435\u043d\u044c\u044e 2018 \u0432 \u0431\u043b\u043e\u043a\u0447\u0435\u0439\u043d\u0435 Waves \u0431\u044b\u043b\u0438 \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u043f\u0435\u0440\u0432\u044b\u0435 \u0441\u043c\u0430\u0440\u0442-\u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u044b, \u043d\u0435\u043c\u0435\u0434\u043b\u0435\u043d\u043d\u043e \u0432\u043e\u0437\u043d\u0438\u043a \u0432\u043e\u043f\u0440\u043e\u0441 \u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u043f\u0441\u0435\u0432\u0434\u043e\u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0445 \u0447\u0438\u0441\u0435\u043b, \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0432\u0435\u0440\u044f\u0442\u044c. \u041b\u043e\u043c\u0430\u044f \u0433\u043e\u043b\u043e\u0432\u0443 \u043d\u0430\u0434 \u044d\u0442\u0438\u043c \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u043c, [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":24158,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-32343","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=\"\u041e\u0442 \u0438\u0434\u0435\u0438 \u0434\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438: \u043c\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u0443\u0435\u043c \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0443\u044e \u0441\u0445\u0435\u043c\u0443 \u0446\u0438\u0444\u0440\u043e\u0432\u043e\u0439 \u043f\u043e\u0434\u043f\u0438\u0441\u0438 \u043d\u0430 \u044d\u043b\u043b\u0438\u043f\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043a\u0440\u0438\u0432\u043e\u0439, \u0447\u0442\u043e\u0431\u044b \u043e\u043d\u0430 \u0431\u044b\u043b\u0430 \u0434\u0435\u0442\u0435\u0440\u043c\u0438\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439, \u0438 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u043d\u0430 \u0435\u0451 \u043e\u0441\u043d\u043e\u0432\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c\u044b\u0445 \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u0431\u043b\u043e\u043a\u0447\u0435\u0439\u043d\u0430.\" \/>\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\/cluchajnyj-orakul-na-osnove-tsifrovoj-podpisi-v-blokchejne\" \/>\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\udd47C\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0439 \u043e\u0440\u0430\u043a\u0443\u043b \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0446\u0438\u0444\u0440\u043e\u0432\u043e\u0439 \u043f\u043e\u0434\u043f\u0438\u0441\u0438 \u0432 \u0431\u043b\u043e\u043a\u0447\u0435\u0439\u043d\u0435 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041e\u0442 \u0438\u0434\u0435\u0438 \u0434\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438: \u043c\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u0443\u0435\u043c \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0443\u044e \u0441\u0445\u0435\u043c\u0443 \u0446\u0438\u0444\u0440\u043e\u0432\u043e\u0439 \u043f\u043e\u0434\u043f\u0438\u0441\u0438 \u043d\u0430 \u044d\u043b\u043b\u0438\u043f\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043a\u0440\u0438\u0432\u043e\u0439, \u0447\u0442\u043e\u0431\u044b \u043e\u043d\u0430 \u0431\u044b\u043b\u0430 \u0434\u0435\u0442\u0435\u0440\u043c\u0438\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439, \u0438 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u043d\u0430 \u0435\u0451 \u043e\u0441\u043d\u043e\u0432\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c\u044b\u0445 \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u0431\u043b\u043e\u043a\u0447\u0435\u0439\u043d\u0430.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/cluchajnyj-orakul-na-osnove-tsifrovoj-podpisi-v-blokchejne\" \/>\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:46:27+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T18:46:27+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\udd47Oracle aleatoriu bazat pe semn\u0103tura digital\u0103 \u00een blockchain | ProHoster","description":"De la idee la realizare: modific\u0103m schema existent\u0103 de semn\u0103tur\u0103 digital\u0103 pe o curb\u0103 eliptic\u0103 pentru a o face determinist\u0103 \u0219i oferim pe baza acesteia func\u021biile de ob\u021binere a verific\u0103rilor \u00een cadrul blockchain-ului.","canonical_url":"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/cluchajnyj-orakul-na-osnove-tsifrovoj-podpisi-v-blokchejne","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\udd47C\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0439 \u043e\u0440\u0430\u043a\u0443\u043b \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0446\u0438\u0444\u0440\u043e\u0432\u043e\u0439 \u043f\u043e\u0434\u043f\u0438\u0441\u0438 \u0432 \u0431\u043b\u043e\u043a\u0447\u0435\u0439\u043d\u0435 | ProHoster","og:description":"\u041e\u0442 \u0438\u0434\u0435\u0438 \u0434\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438: \u043c\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u0443\u0435\u043c \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0443\u044e \u0441\u0445\u0435\u043c\u0443 \u0446\u0438\u0444\u0440\u043e\u0432\u043e\u0439 \u043f\u043e\u0434\u043f\u0438\u0441\u0438 \u043d\u0430 \u044d\u043b\u043b\u0438\u043f\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043a\u0440\u0438\u0432\u043e\u0439, \u0447\u0442\u043e\u0431\u044b \u043e\u043d\u0430 \u0431\u044b\u043b\u0430 \u0434\u0435\u0442\u0435\u0440\u043c\u0438\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439, \u0438 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u043d\u0430 \u0435\u0451 \u043e\u0441\u043d\u043e\u0432\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c\u044b\u0445 \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u0431\u043b\u043e\u043a\u0447\u0435\u0439\u043d\u0430.","og:url":"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/cluchajnyj-orakul-na-osnove-tsifrovoj-podpisi-v-blokchejne","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:46:27+00:00","article:modified_time":"2019-10-31T18:46:27+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"32343","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":"2026-01-21 10:26:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 03:00:23","updated":"2026-01-21 10:26: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\/32343","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=32343"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts\/32343\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/media\/24158"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/media?parent=32343"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/categories?post=32343"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/tags?post=32343"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}