{"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\/sk\/blog\/administrirovanie\/cluchajnyj-orakul-na-osnove-tsifrovoj-podpisi-v-blokchejne","title":{"rendered":"N\u00e1hodn\u00fd oracle na z\u00e1klade digit\u00e1lneho podpisu v blockchaine","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Od my\u0161lienky k realiz\u00e1cii: modifikujeme existuj\u00faci syst\u00e9m digit\u00e1lneho podpisu na eliptick\u00fdch krivk\u00e1ch, aby bol deterministick\u00fd, a na jeho z\u00e1klade poskytujeme funkcie na z\u00edskavanie overite\u013en\u00fdch pseudo-n\u00e1hodn\u00fdch \u010d\u00edsel v r\u00e1mci blockchainu.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"N\u00e1hodn\u00fd oracle na z\u00e1klade digit\u00e1lneho podpisu v blockchaine\" 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\">My\u0161lienka<\/h1>\n<p><\/p>\n<p>Na jese\u0148 2018 boli v blockchaine Waves <noindex><a rel=\"nofollow\" href=\"https:\/\/blog.wavesplatform.com\/smart-accounts-finally-activated-on-waves-mainnet-8bb7c7b67beb\">aktivovan\u00e9 prv\u00e9 smart kontrakty<\/a><\/noindex>, okam\u017eite sa objavila ot\u00e1zka o mo\u017enosti z\u00edskania <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\">pseudo-n\u00e1hodn\u00fdch \u010d\u00edsel<\/a><\/noindex>, ktor\u00fdm m\u00f4\u017eeme d\u00f4verova\u0165.<\/p>\n<p><\/p>\n<p>Ke\u010f som sa nad touto ot\u00e1zkou zam\u00fd\u0161\u013eal, kone\u010dne som dospel k z\u00e1veru: ka\u017ed\u00fd blockchain je celok, z\u00edska\u0165 d\u00f4veryhodn\u00fd zdroj entropie v uzavretom syst\u00e9me je nemo\u017en\u00e9.<\/p>\n<p><\/p>\n<p>Ale jedna my\u0161lienka ma predsa oslovila: ak <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\">n\u00e1hodn\u00fd or\u00e1kul<\/a><\/noindex> bude robi\u0165 podpis pou\u017e\u00edvate\u013esk\u00fdch \u00fadajov deterministick\u00fdm algoritmom, potom si pou\u017e\u00edvate\u013e v\u017edy bude m\u00f4c\u0165 overi\u0165 tak\u00fdto podpis pomocou verejn\u00e9ho k\u013e\u00fa\u010da a bude si ist\u00fd, \u017ee z\u00edskan\u00e1 hodnota je jedine\u010dn\u00e1. Or\u00e1kul, akoko\u013evek sa sna\u017e\u00ed, nem\u00f4\u017ee ni\u010d zmeni\u0165, algoritmus d\u00e1va jednozna\u010dn\u00fd v\u00fdsledok. V podstate pou\u017e\u00edvate\u013e fixuje v\u00fdsledok, ale nevie ho, pok\u00fdm ho or\u00e1kul nepublikuje. Ukazuje sa, \u017ee im m\u00f4\u017eete v\u00f4bec ned\u00f4verova\u0165, ale overi\u0165 v\u00fdsledok jeho pr\u00e1ce. Potom, v pr\u00edpade \u00faspe\u0161n\u00e9ho overenia, m\u00f4\u017ee by\u0165 tak\u00fdto podpis pova\u017eovan\u00fd za zdroj entropie pre pseudo-n\u00e1hodn\u00e9 \u010d\u00edslo.<\/p>\n<p><\/p>\n<p>V blockchainovej platforme Waves sa pou\u017e\u00edva sch\u00e9ma podpisu <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/EdDSA\">EdDSA<\/a><\/noindex> variantu <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/EdDSA#Ed25519\">Ed25519<\/a><\/noindex>. V tejto sch\u00e9me podpis pozost\u00e1va z hodn\u00f4t R a S, kde R z\u00e1vis\u00ed od n\u00e1hodnej hodnoty a S sa vypo\u010d\u00edta na z\u00e1klade podpisovan\u00fdch spr\u00e1v, s\u00fakromn\u00e9ho k\u013e\u00fa\u010da a tej istej n\u00e1hodnej hodnoty ako R. Ukazuje sa, \u017ee neexistuje jednozna\u010dn\u00e1 z\u00e1vislos\u0165, pre rovnak\u00fa pou\u017e\u00edvate\u013esk\u00fa spr\u00e1vu existuje mno\u017estvo platn\u00fdch podpisov.<\/p>\n<p><\/p>\n<p>Je zrejm\u00e9, \u017ee v \u010distej forme tak\u00fd podpis nemo\u017eno pou\u017ei\u0165 ako zdroj pseudo-n\u00e1hodn\u00fdch \u010d\u00edsel, preto\u017ee je nedeterministick\u00fd a teda m\u00f4\u017ee by\u0165 \u013eahko manipulovan\u00fd or\u00e1kulom.<\/p>\n<p><\/p>\n<p>Ale, ako sa uk\u00e1zalo, je mo\u017en\u00e9 ho skuto\u010dne spravi\u0165 deterministick\u00fdm.<\/p>\n<p><\/p>\n<p>Ve\u013ek\u00e9 n\u00e1deje som mal na <noindex><a rel=\"nofollow\" href=\"https:\/\/tools.ietf.org\/html\/draft-irtf-cfrg-vrf-04\">overite\u013en\u00fa n\u00e1hodn\u00fa funkciu (VRF)<\/a><\/noindex>, ale po presk\u00faman\u00ed technick\u00fdch detailov bolo nutn\u00e9 od tohto variantu upusti\u0165. Hoci VRF pon\u00faka deterministick\u00fa variantu podpisu a jeho d\u00f4kazov, v algoritme sa nach\u00e1dza podivn\u00e9 miesto, ktor\u00e9 otv\u00e1ra \u010diernu dieru pre manipul\u00e1cie oracle. A konkr\u00e9tne, pri v\u00fdpo\u010dte hodnoty k (<noindex><a rel=\"nofollow\" href=\"https:\/\/tools.ietf.org\/html\/draft-irtf-cfrg-vrf-04#section-5.1\">\u010das\u0165 5.1<\/a><\/noindex>) sa pou\u017e\u00edva tajn\u00fd k\u013e\u00fa\u010d, ktor\u00fd zost\u00e1va nezn\u00e1my pou\u017e\u00edvate\u013eovi, \u010do znamen\u00e1, \u017ee pou\u017e\u00edvate\u013e nem\u00f4\u017ee overi\u0165 spr\u00e1vnos\u0165 v\u00fdpo\u010dtu k, a teda oracle m\u00f4\u017ee pou\u017ei\u0165 ak\u00fako\u013evek po\u017eadovan\u00fa hodnotu k a z\u00e1rove\u0148 vies\u0165 datab\u00e1zu zhody hodnoty k a podpisovan\u00fdch \u00fadajov, aby v\u017edy mohol op\u00e4tovne vypo\u010d\u00edta\u0165 spr\u00e1vny v\u00fdsledok z poh\u013eadu VRF. Uvid\u00edte \u017erebovanie na z\u00e1klade VRF bez odhalenia tajn\u00e9ho k\u013e\u00fa\u010da, m\u00f4\u017eete rozumova\u0165: nazna\u010di\u0165 potrebu alebo odhali\u0165 k\u013e\u00fa\u010d, alebo vyl\u00fa\u010di\u0165 ho z v\u00fdpo\u010dtu k, inak sa tajn\u00fd k\u013e\u00fa\u010d automaticky odhal\u00ed pri objaven\u00ed sa prv\u00e9ho podpisu. V ka\u017edom pr\u00edpade, ako u\u017e bolo povedan\u00e9, podivn\u00fd syst\u00e9m pre n\u00e1hodn\u00e9ho oracla.<\/p>\n<p><\/p>\n<p>Po chv\u00edli prem\u00fd\u0161\u013eania a z\u00edskan\u00ed podpory od miestnych analytikov sa zrodila sch\u00e9ma fungovania VECRO.<\/p>\n<p><\/p>\n<p>VECRO je skratka pre Verifiable Elliptic Curve Random Oracle, \u010do v sloven\u010dine znamen\u00e1 overite\u013en\u00fd n\u00e1hodn\u00fd oracle na eliptick\u00fdch krivk\u00e1ch.<\/p>\n<p><\/p>\n<p>V\u0161etko sa uk\u00e1zalo by\u0165 celkom jednoduch\u00e9, na dosiahnutie deterministi\u010dnosti je potrebn\u00e9 stanovi\u0165 hodnotu R pred objaven\u00edm sa podpisovan\u00e9ho odkazu. Ak je R stanoven\u00e9 a je s\u00fa\u010das\u0165ou podpisovan\u00e9ho odkazu, \u010do navy\u0161e zaru\u010duje fix\u00e1ciu R v samotnom podpisovanom odkaze, hodnota S je jednozna\u010dne ur\u010den\u00e1 pou\u017e\u00edvate\u013esk\u00fdm odkazom a teda m\u00f4\u017ee by\u0165 pou\u017eit\u00e1 ako zdroj pre pseudon\u00e1hodn\u00e9 \u010d\u00edsla.<\/p>\n<p><\/p>\n<p>V takejto sch\u00e9me je jedno, ak\u00fdm sp\u00f4sobom je R stanoven\u00e9, to zost\u00e1va v z\u00f3ne zodpovednosti oracla. D\u00f4le\u017eit\u00e9 je, \u017ee S je jednozna\u010dne ur\u010den\u00e1 pou\u017e\u00edvate\u013eom, ale jej hodnota je nezn\u00e1ma, k\u00fdm ju oracle nezverejn\u00ed. Presne ako sme chceli!<\/p>\n<p><\/p>\n<p>Ke\u010f hovor\u00edme o stanovenom R, venujte pozornos\u0165 tomu, \u017ee <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/jedisct1\/libsodium\/issues\/170\">opakovan\u00e9 pou\u017eitie R<\/a><\/noindex> Pri podpisovan\u00ed r\u00f4znych spr\u00e1v jednozna\u010dne odha\u013euje skryt\u00fd k\u013e\u00fa\u010d v sch\u00e9me EdDSA. Pre vlastn\u00edka or\u00e1kula je mimoriadne d\u00f4le\u017eit\u00e9 vyl\u00fa\u010di\u0165 mo\u017enos\u0165 op\u00e4tovn\u00e9ho pou\u017eitia R na podpisovanie r\u00f4znych spr\u00e1v pou\u017e\u00edvate\u013ea. In\u00fdmi slovami, pri ak\u00fdchko\u013evek manipul\u00e1ci\u00e1ch alebo sprisahan\u00ed or\u00e1kul v\u017edy riskuje stratu svojho skryt\u00e9ho k\u013e\u00fa\u010da.<\/p>\n<p><\/p>\n<p>Celkovo, or\u00e1kul mus\u00ed pou\u017e\u00edvate\u013eom poskytova\u0165 dve funkcie: inicializ\u00e1ciu, ktor\u00e1 zaznamen\u00e1va hodnotu R, a podpis, ktor\u00fd vracia hodnotu S. Pri tom p\u00e1r R, S predstavuje be\u017ene overite\u013en\u00fd podpis pou\u017e\u00edvate\u013eskej spr\u00e1vy obsahuj\u00facej fixn\u00fa hodnotu R a \u013eubovo\u013en\u00e9 d\u00e1ta pou\u017e\u00edvate\u013ea.<\/p>\n<p><\/p>\n<p>M\u00f4\u017ee by\u0165 n\u00e1mietka, \u017ee t\u00e1to sch\u00e9ma pre blockchain nie je ni\u010d in\u00e9 ako be\u017en\u00e1 <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/348838\/\">sch\u00e9ma commit-odhalenie.<\/a><\/noindex>V podstate, \u00e1no, je to ona. Ale s\u00fa tu niektor\u00e9 nuansy. Po prv\u00e9, or\u00e1kul st\u00e1le pracuje s t\u00fdm ist\u00fdm k\u013e\u00fa\u010dom vo v\u0161etk\u00fdch oper\u00e1ci\u00e1ch, napr\u00edklad je to pohodln\u00e9 na pou\u017e\u00edvanie v zmluv\u00e1ch. Po druh\u00e9, existuje riziko straty skryt\u00e9ho k\u013e\u00fa\u010da or\u00e1kula pri nespr\u00e1vnom spr\u00e1van\u00ed, napr\u00edklad or\u00e1kul umo\u017e\u0148uje robi\u0165 vzorky v\u00fdsledku, potom sta\u010d\u00ed urobi\u0165 iba dve vzorky, aby sa zistil skryt\u00fd k\u013e\u00fa\u010d a z\u00edskal sa \u00fapln\u00fd pr\u00edstup k pe\u0148a\u017eenke. Po tretie, n\u00e1tivne overite\u013en\u00fd v blockchaine podpis, ktor\u00fd je zdrojom n\u00e1hodnosti - to je kr\u00e1sne.<\/p>\n<p><\/p>\n<p>Pol roka sa my\u0161lienka realiz\u00e1cie v hlave objavovala, k\u00fdm kone\u010dne nevznikla motiv\u00e1cia v podobe <noindex><a rel=\"nofollow\" href=\"https:\/\/medium.com\/waves-lab\/waves-labs-announces-first-grant-recipients-7568f01fec22\">grantu od Waves Labs.<\/a><\/noindex>S ve\u013ek\u00fdm grantom prich\u00e1dza ve\u013ek\u00e1 zodpovednos\u0165, tak\u017ee projekt m\u00e1 existova\u0165!<\/p>\n<p><\/p>\n<h1 id=\"realizaciya\">Implement\u00e1cia<\/h1>\n<p><\/p>\n<p>Tak\u017ee v tomto projekte <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/deemru\/VECRO\">VECRO bol implementovan\u00fd<\/a><\/noindex> na blockchaine Waves v re\u017eime po\u017eiadavka-odpove\u010f pomocou transf\u00e9rov medzi pou\u017e\u00edvate\u013eom a or\u00e1kulom. Pri tom je na \u00fa\u010dte or\u00e1kula nain\u0161talovan\u00fd skript, ktor\u00fd pr\u00edsne kontroluje pr\u00e1cu v s\u00falade s vy\u0161\u0161ie pop\u00edsanou logikou. Transakcie or\u00e1kula prech\u00e1dzaj\u00fa kontrolou s obnoven\u00edm celej re\u0165aze interakcie s pou\u017e\u00edvate\u013eom. Pri kontrole kone\u010dnej hodnoty sa z\u00fa\u010dast\u0148uj\u00fa v\u0161etky \u0161tyri transakcie, smart kontrakt ich nan\u00e1\u0161a na pr\u00edsne overovaciu ni\u0165, krok za krokom kontroluj\u00fac v\u0161etky hodnoty a nezanech\u00e1va priestor na ak\u00e9ko\u013evek manipul\u00e1cie.<\/p>\n<p><\/p>\n<p>E\u0161te raz, aby sa to ulo\u017eilo a bolo jasnej\u0161ie. Or\u00e1kul nepracuje jednoducho pod\u013ea navrhnutej sch\u00e9my. Jeho pr\u00e1ca je plne kontrolovan\u00e1 na \u00farovni blockchainu. <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/deemru\/VECRO\/blob\/master\/vecro.ride\">natrvalo smart kontraktom<\/a><\/noindex>. Krok do\u013eava a transakcia jednoducho neprejde. Tak\u017ee ak transakcia bola zahrnut\u00e1 v blockchaine, pou\u017e\u00edvate\u013e nemus\u00ed ani ni\u010d kontrolova\u0165, za neho to u\u017e skontrolovalo stovky uzlov siete.<\/p>\n<p><\/p>\n<p>V s\u00fa\u010dasnosti je v hlavnej sieti Waves spusten\u00fd jeden VECRO (m\u00f4\u017eete spusti\u0165 svoj vlastn\u00fd, nie je to \u0165a\u017ek\u00e9, sta\u010d\u00ed <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/deemru\/VECRO\/blob\/master\/config.sample.php\">pozrie\u0165 sa na pr\u00edklad konfigur\u00e1cie<\/a><\/noindex>). Aktu\u00e1lny k\u00f3d be\u017e\u00ed na PHP (na <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/deemru\/WavesKit\">WavesKit<\/a><\/noindex>, o ktorom <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/446110\/\">som hovoril sk\u00f4r<\/a><\/noindex>).<\/p>\n<p><\/p>\n<p>Aby ste mohli vyu\u017ei\u0165 slu\u017ebu or\u00e1cle, je potrebn\u00e9:<\/p>\n<p><\/p>\n<ul>\n<li>Zafixova\u0165 R;\n<ul>\n<li>Posla\u0165 minim\u00e1lne 0.005 Waves na alias or\u00e1cle init@vecr;<\/li>\n<li>Z\u00edska\u0165 R-k\u00f3d v poli prilo\u017eenia pri transfere 1 R-vecr tokena od or\u00e1cle pou\u017e\u00edvate\u013eovi;<\/li>\n<\/ul>\n<\/li>\n<li>Z\u00edska\u0165 podpis;\n<ul>\n<li>Posla\u0165 minim\u00e1lne 0.005 Waves na alias or\u00e1cle random@vecr, a navy\u0161e POVINNE uvies\u0165 v poli prilo\u017eenia predt\u00fdm z\u00edskan\u00fd R-k\u00f3d a \u010fal\u0161ie pou\u017e\u00edvate\u013esk\u00e9 \u00fadaje;<\/li>\n<li>Z\u00edska\u0165 S-k\u00f3d v poli prilo\u017eenia pri transfere 1 S-vecr tokena od or\u00e1cle pou\u017e\u00edvate\u013eovi;<\/li>\n<\/ul>\n<\/li>\n<li>Pou\u017ei\u0165 S-k\u00f3d ako zdroj pseudon\u00e1hodn\u00e9ho \u010d\u00edsla.<\/li>\n<\/ul>\n<p><\/p>\n<p>Nuansy aktu\u00e1lnej implement\u00e1cie:<\/p>\n<p><\/p>\n<ul>\n<li>Odoslan\u00e9 or\u00e1cle Waves sa pou\u017e\u00edvaj\u00fa ako poplatok za sp\u00e4tn\u00fa transakciu pou\u017e\u00edvate\u013eovi, a\u017e do maxim\u00e1lnych 1 Waves;<\/li>\n<li>R-k\u00f3d \u2014 je to zre\u0165azenie bytu symbolu \u2018R\u2019 a 32-bytn\u00e9ho hodnoty R v k\u00f3dovan\u00ed base58;<\/li>\n<li>R-k\u00f3d v prilo\u017een\u00ed mus\u00ed by\u0165 prv\u00fd, pou\u017e\u00edvate\u013esk\u00e9 \u00fadaje prich\u00e1dzaj\u00fa po R-k\u00f3de;<\/li>\n<li>S-k\u00f3d \u2014 je to zre\u0165azenie bytu symbolu \u2018S\u2019 a 32-bytn\u00e9ho hodnoty S v k\u00f3dovan\u00ed base58;<\/li>\n<li>S je v\u00fdsledkom delenia pod\u013ea modulu, preto nie je mo\u017en\u00e9 pou\u017ei\u0165 S ako plne funk\u010dn\u00e9 256-bitov\u00e9 pseudon\u00e1hodn\u00e9 \u010d\u00edslo (toto \u010d\u00edslo m\u00f4\u017ee by\u0165 pova\u017eovan\u00e9 maxim\u00e1lne za 252-bitov\u00e9 pseudon\u00e1hodn\u00e9 \u010d\u00edslo);<\/li>\n<li>Najjednoduch\u0161ia varianta \u2014 pou\u017ei\u0165 ako pseudon\u00e1hodn\u00e9 \u010d\u00edslo hash od S-k\u00f3du.<\/li>\n<\/ul>\n<p><\/p>\n<p>Pr\u00edklad z\u00edskania S-k\u00f3du:<\/p>\n<p><\/p>\n<ul>\n<li>Inicializ\u00e1cia: <noindex><a rel=\"nofollow\" href=\"https:\/\/wavesexplorer.com\/tx\/8gc8jwM7JrPNehoDs7NVyos7BsufYktvkwVW1B6FAY6\">https:\/\/wavesexplorer.com\/tx\/8gc8jwM7JrPNehoDs7NVyos7BsufYktvkwVW1B6FAY6<\/a><\/noindex><\/li>\n<li>Z\u00edskanie R-k\u00f3du: <noindex><a rel=\"nofollow\" href=\"https:\/\/wavesexplorer.com\/tx\/9eB25SbzEwvHEbm8pcKj7MGDrYv1u3Fxpj696FkJ96hd\">https:\/\/wavesexplorer.com\/tx\/9eB25SbzEwvHEbm8pcKj7MGDrYv1u3Fxpj696FkJ96hd<\/a><\/noindex><\/li>\n<li>\u017diados\u0165 o v\u00fdsledok podpisu R-k\u00f3du a pou\u017e\u00edvate\u013esk\u00fdch \u00fadajov \u2018random\u2019: <noindex><a rel=\"nofollow\" href=\"https:\/\/wavesexplorer.com\/tx\/6faoFJobEsugDFYmYmfsbtQYABmckNuE2kevaLh7ifzz\">https:\/\/wavesexplorer.com\/tx\/6faoFJobEsugDFYmYmfsbtQYABmckNuE2kevaLh7ifzz<\/a><\/noindex><\/li>\n<li>Z\u00edskanie S-k\u00f3du: <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>Z technick\u00e9ho h\u013eadiska je or\u00e1cle \u00faplne pripraven\u00e9 na pr\u00e1cu, m\u00f4\u017eete ho pokojne pou\u017e\u00edva\u0165. Z poh\u013eadu be\u017en\u00e9ho pou\u017e\u00edvate\u013ea ch\u00fdba pohodln\u00e9 grafick\u00e9 rozhranie, na to si budeme musie\u0165 po\u010dka\u0165.<\/p>\n<p><\/p>\n<p>R\u00e1d odpoviem na ot\u00e1zky a prijmem pripomienky, \u010fakujem.<\/p>\n<p>Zdroj: <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.3 - 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\/sk\/blog\/administrirovanie\/cluchajnyj-orakul-na-osnove-tsifrovoj-podpisi-v-blokchejne\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"sk_SK\" \/>\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\/sk\/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\udd47N\u00e1hodn\u00fd or\u00e1kul na z\u00e1klade digit\u00e1lneho podpisu v blockchainu | ProHoster","description":"Od n\u00e1padu po realiz\u00e1ciu: modifikujeme existuj\u00facu sch\u00e9mu digit\u00e1lneho podpisu na eliptick\u00fdch krivk\u00e1ch tak, aby bola deterministick\u00e1, a na jej z\u00e1klade poskytujeme funkcie z\u00edskavania overite\u013en\u00fdch v r\u00e1mci blockchainu.","canonical_url":"https:\/\/prohoster.info\/sk\/blog\/administrirovanie\/cluchajnyj-orakul-na-osnove-tsifrovoj-podpisi-v-blokchejne","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sk_SK","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\/sk\/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\/sk\/wp-json\/wp\/v2\/posts\/32343","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/comments?post=32343"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/posts\/32343\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/media\/24158"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/media?parent=32343"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/categories?post=32343"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/tags?post=32343"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}