{"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\/et\/blog\/administrirovanie\/mozhno-li-generirovat-sluchajnye-chisla-esli-my-ne-doveryaem-drug-drugu-chast-1","title":{"rendered":"Kas me saame genereerida juhuslikke numbreid, kui me ei usalda \u00fcksteist? Osa 1","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Tere, Habr!<\/p>\n<p>Selles artikkel r\u00e4\u00e4gin t\u00f5en\u00e4osuslike numbrite genereerimisest osalejate poolt, kes \u00fcksteisesse ei usalda. Nagu allpool n\u00e4eme, on \"peaaegu\" hea generaatori rakendamine suhteliselt lihtne, kuid v\u00e4ga hea loomine on keeruline.<\/p>\n<p>\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 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0441\u0442\u0430\u0432\u043a\u0443 \u043e\u0442 \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0430 \u0438 \u043b\u0438\u0431\u043e \u0443\u0434\u0432\u0430\u0438\u0432\u0430\u0435\u0442 \u0441\u0443\u043c\u043c\u0443 \u0441 \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u044c\u044e 49%, \u043b\u0438\u0431\u043e \u0437\u0430\u0431\u0438\u0440\u0430\u0435\u0442 \u0441 51%, \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0435\u0441\u043b\u0438 \u043e\u043d\u043e \u043c\u043e\u0436\u0435\u0442 \u043d\u0435\u043f\u0440\u0435\u0434\u0432\u0437\u044f\u0442\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0435 \u0447\u0438\u0441\u043b\u043e. \u0415\u0441\u043b\u0438 \u0437\u043b\u043e\u0443\u043c\u044b\u0448\u043b\u0435\u043d\u043d\u0438\u043a \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u0432\u043b\u0438\u044f\u0442\u044c \u043d\u0430 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0440\u0430\u0431\u043e\u0442\u044b \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0445 \u0447\u0438\u0441\u0435\u043b, \u0438 \u0434\u0430\u0436\u0435 \u043d\u0435\u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0442\u044c \u0441\u0432\u043e\u0439 \u0448\u0430\u043d\u0441 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0432\u044b\u043f\u043b\u0430\u0442\u0443 \u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438, \u043e\u043d \u043b\u0435\u0433\u043a\u043e \u043e\u043f\u0443\u0441\u0442\u043e\u0448\u0438\u0442 \u0435\u0433\u043e.<\/p>\n<p>Kui arendame jaotatud protokolli juhuslike numbrite genereerimiseks, soovime, et see omaks kolme omadust:<\/p>\n<ol>\n<li>\n<p>See peab olema erapooletu. Teisis\u00f5nu, \u00fckski osaleja ei tohiks mingil viisil m\u00f5jutada juhuslike numbrite generaatori tulemust.<\/p>\n<\/li>\n<li>\n<p>See peab olema ettearvamatu. Teisis\u00f5nu, \u00fckski osaleja ei tohi suuta prognoosida, milline number genereeritakse (v\u00f5i sellega seotud omadusi) enne, kui see on genereeritud.<\/p>\n<\/li>\n<li>\n<p>Protokoll peab olema eluj\u00f5uline, st vastupidav sellele, et teatud protsent osalejatest l\u00fclitub v\u00e4lja v\u00f5i \u00fcritab teadlikult protokolli peatada.<\/p>\n<\/li>\n<\/ol>\n<p>Selles artiklis vaatleme kahte l\u00e4henemist: RANDAO + VDF ja l\u00e4henemine, mis p\u00f5hineb kustutavatel koodidel. J\u00e4rgmisel osal k\u00e4sitleme \u00fcksikasjalikult l\u00e4henemist, mis p\u00f5hineb piirim\u00fc\u00fcgialustel.<\/p>\n<p>Aga k\u00f5igepealt vaatame lihtsat ja sageli kasutatavat algoritmi, mis on eluj\u00f5uline, ettearvamatu, kuid kallutatud.<\/p>\n<h3>RANDAO<\/h3>\n<p>RANDAO &#8212; \u044d\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u0438, \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0447\u0430\u0441\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0439 \u043f\u043e\u0434\u0445\u043e\u0434 \u043a \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044e \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0441\u0442\u0438. \u0412\u0441\u0435 \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0438 \u0441\u0435\u0442\u0438 \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e \u0432\u044b\u0431\u0438\u0440\u0430\u044e\u0442 \u043f\u0441\u0435\u0432\u0434\u043e\u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e\u0435 \u0447\u0438\u0441\u043b\u043e, \u0437\u0430\u0442\u0435\u043c \u043a\u0430\u0436\u0434\u044b\u0439 \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a \u043f\u0440\u0438\u0441\u044b\u043b\u0430\u0435\u0442 \u0445\u0435\u0448 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u043e\u0433\u043e \u0447\u0438\u0441\u043b\u0430. \u0414\u0430\u043b\u0435\u0435 \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0438 \u043f\u043e \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u0432\u0441\u043a\u0440\u044b\u0432\u0430\u044e\u0442 \u0441\u0432\u043e\u0438 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0435 \u0447\u0438\u0441\u043b\u0430, \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u044e\u0442 \u043d\u0430\u0434 \u0432\u0441\u043a\u0440\u044b\u0442\u044b\u043c\u0438 \u0447\u0438\u0441\u043b\u0430\u043c\u0438 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044e XOR, \u0430 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u044d\u0442\u043e\u0439 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0438 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u043c \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430.<\/p>\n<p>Avaldamisprotsessi esimene samm enne numberite avamist on vajalik, et r\u00fcndajal ei oleks v\u00f5imalik valida oma numbrit p\u00e4rast seda, kui ta on n\u00e4inud teiste osalejate numbreid. See v\u00f5imaldaks tal tegelikult \u00fcksi m\u00e4\u00e4rata juhuslike numbrite generaatori v\u00e4ljundi.<\/p>\n<p>Protokolli k\u00e4igus peavad osalejad kaks korda j\u00f5udma \u00fchisotsusele (nn konsensusele): millal alustada valitud numbrite avamist ja seega l\u00f5petada hashide vastuv\u00f5tt, ning millal l\u00f5petada valitud numbrite vastuv\u00f5tt ja arvutada v\u00e4lja tulemuslik juhuslik number. Selliste otsuste vastuv\u00f5tmine osalejate vahel, kes \u00fcksteise usaldusv\u00e4\u00e4rsuses ei ole kindlad, on iseenesest keeruline \u00fclesanne, ja me tuleme selle juurde tagasi tulevastes artiklites; praeguses artiklis eeldame, et selline konsensusalgoritm on meile kergesti k\u00e4ttesaadav.<\/p>\n<p>Milliseid eelnevalt kirjeldatud omadusi omab RANDAO? See on ettearvamatu, omab sama eluj\u00f5udu kui selle aluseks olev konsensusprotokoll, kuid on siiski kallutatud. Eriti kui r\u00fcndaja j\u00e4lgib v\u00f5rku, v\u00f5ib ta p\u00e4rast seda, kui teised osalejad oma numbreid avaldavad, arvutada nende XOR ja otsustada, kas oma numbri avaldamine m\u00f5jutab tulemust. Kuigi see ei luba r\u00fcndajal \u00fcksi m\u00e4\u00e4rata juhusliku arvu generaatori v\u00e4ljundit, annab see siiski 1 bitti m\u00f5ju. Kui r\u00fcndajad kontrollivad mitmeid osalejaid, siis kontrollitavate bitide arv vastab nende halduses olevate osalejate arvule.<\/p>\n<p><img decoding=\"async\" alt=\"Kas me saame genereerida juhuslikke numbreid, kui me ei usalda \u00fcksteist? Osa 1\" src=\"\/wp-content\/uploads\/2020\/09\/4869d0c7dbc4cc8a368c2846997d6d2a.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>R\u00fcndajate m\u00f5ju saab oluliselt v\u00e4hendada, kui n\u00f5uda, et osalejad avalikustaksid numbreid j\u00e4rjekorras. Sellisel juhul saab r\u00fcndaja m\u00f5jutada tulemust ainult juhul, kui ta avaldab oma numbri viimase. Kuigi m\u00f5ju on oluliselt v\u00e4iksem, on algoritm endiselt kallutatud.<\/p>\n<h3>RANDAO + VDF<\/h3>\n<p>\u00dcks v\u00f5imalus, kuidas muuta RANDAO erapooletuks, on j\u00e4rgmine: p\u00e4rast k\u00f5igi numbrite avamist ja XOR-i arvutamist esitatakse selle tulemus funktsioonile, mille arvutamine v\u00f5tab v\u00e4ga palju aega, kuid mis v\u00f5imaldab arvutuse \u00f5igsust kiiresti kontrollida.<\/p>\n<pre><code>(vdf_output, vdf_proof) = VDF_compute(input) \/\/ see on v\u00e4ga aeglane\ncorrect = VDF_verify(input, vdf_output, vdf_proof) \/\/ see on v\u00e4ga kiire<\/code><\/pre>\n<p>Sellist funktsiooni nimetatakse Verifiable Delay Function ehk VDF. Kui l\u00f5pptulemuse arvutamine v\u00f5tab rohkem aega kui numbrite avamise etapp, siis ei saa kurjategija ennustada, milline m\u00f5ju tagab tema numbri esitlemine v\u00f5i varjamine, seega kaotab ta v\u00f5imaluse tulemusele m\u00f5jutada.<\/p>\n<p>Heade VDF-de v\u00e4ljat\u00f6\u00f6tamine on \u00e4\u00e4rmiselt keeruline. Viimasel ajal on tehtud mitmeid l\u00e4bimurdeid, n\u00e4iteks <noindex><a rel=\"nofollow\" href=\"https:\/\/eprint.iacr.org\/2018\/623.pdf\"><u>seda<\/u><\/a><\/noindex> ja <noindex><a rel=\"nofollow\" href=\"https:\/\/eprint.iacr.org\/2018\/627.pdf\"><u>see,<\/u><\/a><\/noindex> mille, mis muudavad VDF rakendamise praktilisemaks ning Ethereum 2.0 plaanib pikaajalises perspektiivis kasutada RANDAO-d koos VDF-ga juhuslike numbrite allikana. Lisaks sellele, et see l\u00e4henemine on ettearvamatu ja erapooletu, on sellel ka t\u00e4iendav eelis, mis seisneb eluj\u00f5ulisuses, kui v\u00e4hemalt kaks osalist on v\u00f5rku saadaval (tingimusel, et kasutatav konsensuse protokoll toimib nii v\u00e4ikeses osalejate arvus).<\/p>\n<p>Selle l\u00e4henemise suurim keerukus seisneb VDF seadistamises nii, et isegi osaline, kellel on v\u00e4ga kallis spetsialiseeritud varustus, ei suudaks VDF-d arvutada enne avalikustamise etapi l\u00f5ppu. Ideaalis peaks algoritmil olema isegi m\u00e4rkimisv\u00e4\u00e4rne varu, \u00fctleme 10x. Alloleval joonisel on kujutatud osalise r\u00fcnnakut, kellel on spetsialiseeritud ASIC, mis v\u00f5imaldab tal k\u00e4ivitada VDF-d kiiremini kui aeg, mis on m\u00e4\u00e4ratud RANDAO kinnituste avalikustamiseks. Selline osaline suudab ikkagi arvutada l\u00f5pptulemust, kasutades oma numbrit ja ilma selleta, ning seej\u00e4rel oma arvutuste p\u00f5hjal otsustada, kas seda n\u00e4idata v\u00f5i mitte.<\/p>\n<p><img decoding=\"async\" alt=\"Kas me saame genereerida juhuslikke numbreid, kui me ei usalda \u00fcksteist? Osa 1\" src=\"\/wp-content\/uploads\/2020\/09\/3c6e64b6473b951f549f5ba60edbafa9.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>K\u00e4ideldava VDF perekonna puhul v\u00f5ib spetsialiseeritud ASIC-i tootlikkus olla \u00fcle 100 korra suurem kui tavalise varustuse puhul. Seega, kui avalikustamise faas kestab 10 sekundit, peab sellisel ASIC-il arvutatud VDF v\u00f5tma aega \u00fcle 100 sekundi, et olla 10-kordne ohutusvaru, ning seega, tavalise varustuse puhul arvutatud VDF peab kestma 100 x 100 sekundit = umbes 3 tundi.<\/p>\n<p>Ethereum Foundation plaanib selle probleemi lahendada, luues oma tasuta avalikud ASIC-id. Kui see juhtub, saavad k\u00f5ik muud protokollid samuti kasutada selle tehnoloogia eeliseid, kuid seni ei ole RANDAO + VDF l\u00e4henemine sama eluj\u00f5uline protokollide jaoks, mis ei saa investeerida oma ASIC-ide arendamisse.<\/p>\n<p>Palju artikleid, videoid ja muud teavet VDF kohta on kogutud <noindex><a rel=\"nofollow\" href=\"https:\/\/vdfresearch.org\/\"><u>sellel veebilehel<\/u><\/a><\/noindex>.<\/p>\n<h3>Kasutame kustutuskoode<\/h3>\n<p>Selles jaotises vaatleme juhuslike arvude genereerimise protokolli, mis kasutab <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\">kustutuskoode<\/a><\/noindex>. Ta suudab taluda kuni \u2153 pahatahtlikest osalejatest, j\u00e4\u00e4des samas eluj\u00f5uliseks, ja lubab kuni \u2154 pahatahtlike olemasolu, enne kui nad suudavad ennustada v\u00f5i m\u00f5jutada tulemust.<\/p>\n<p>Protokolli p\u00f5hidee on j\u00e4rgmine. Lihtsuse huvides oletame, et selles on t\u00e4pselt 100 osalejat. Eeldame ka, et k\u00f5igil osalejatel on kohalikult teatud privaatne v\u00f5ti ja k\u00f5igi osalejate avalikud v\u00f5tmed on k\u00f5igile osalejatele teada.<\/p>\n<ol>\n<li>\n<p>Iga osaleja m\u00f5tleb kohalikult v\u00e4lja pika stringi, jagab selle 67 ossa, loob kustutuskoodid, et saada 100 osakest, nii et mistahes 67 on piisavad stringi taastamiseks, m\u00e4\u00e4rab iga 100 osakese \u00fchele osalejale ja kr\u00fcpteerib need selle osaleja avaliku v\u00f5tmega. Seej\u00e4rel avalikustatakse k\u00f5ik kodeeritud osakesed.<\/p>\n<\/li>\n<li>\n<p>Osalejad kasutavad mingit konsensust, et saavutada \u00fcksmeel konkreetsete 67 osaleja kodeeritud komplektide \u00fcle.<\/p>\n<\/li>\n<li>\n<p>Kuna konsensus on saavutatud, v\u00f5tab iga osaleja igast 67 komplektist oma avaliku v\u00f5tme abil kr\u00fcpteeritud osakesed, dekr\u00fcpteerib k\u00f5ik sellised osakesed ja avalikustab k\u00f5ik sellised dekr\u00fcpteeritud osakesed.<\/p>\n<\/li>\n<li>\n<p>Kui 67 osalejat on l\u00e4binud etapi (3), saab k\u00f5ik kokku lepitud komplektid t\u00e4ielikult dekodeerida ja taastada kustutamise koodide omaduste t\u00f5ttu, ja l\u00f5plik number saab k\u00e4tte XOR-iga algsetest ridadest, millega osalejad alustasid (1).<\/p>\n<\/li>\n<\/ol>\n<p><img decoding=\"async\" alt=\"Kas me saame genereerida juhuslikke numbreid, kui me ei usalda \u00fcksteist? Osa 1\" src=\"\/wp-content\/uploads\/2020\/09\/b74ef4bb4a8148766f0b1ab2a8222625.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>On v\u00f5imalik n\u00e4idata, et see protokoll on erapooletu ja ettearvamatu. Tulemuse juhuslik number m\u00e4\u00e4ratletakse p\u00e4rast konsensuse saavutamist, kuid ei ole veel kellelegi teada, kuni \u2154 osalejat ei dekodeeri osi, mis on nende avaliku v\u00f5tmega kr\u00fcpteeritud. Seega on juhuslik number m\u00e4\u00e4ratletud enne, kui teave, mis on vajalik selle taastamiseks, avalikustatakse.<\/p>\n<p>Mis toimub, kui etapis (1) saadab \u00fcks osalejatest teistele osalejatele kodeeritud osad, mis ei ole m\u00f5ne rea korrektne kustutamise kood? Ilma t\u00e4iendavate muudatusteta ei suuda erinevad osalejad kas t\u00e4ielikult taastada rida v\u00f5i taastavad nad erinevaid ridasid, mille tulemusena saavad erinevad osalejad erineva juhusliku numbri. Selle v\u00e4ltimiseks v\u00f5ib teha j\u00e4rgmist: iga osaleja, lisaks kodeeritud osadele, arvutab samuti <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\">Merkle puu<\/a><\/noindex> k\u00f5iki selliseid osi, ja iga osalejale saadetakse nii kooditud osa kui ka Merkle puu juur ja t\u00f5end osa kuulumisest Merkle puusse. Konsensuse sammul (2) n\u00f5ustuvad osalejad mitte ainult mitmete komplektide osas, vaid ka mitmete konkreetsete selliste puude juurte osas (kui m\u00f5ni osaleja on protokollist k\u00f5rvale l\u00e4inud ja on saatnud erinevad Merkle puu juured erinevatele osalejatele ning kaks sellist juurt [\u2026] konsensuse ajal on n\u00e4idatud, ei kuulu tema rida l\u00f5plikku komplekti). Konsensuse tulemusena saame 67 kodeeritud rida ja vastavad Merkle puu juured, nii et on v\u00e4hemalt 67 osalejat (mitte tingimata need, kes esitasid vastavad read), kelle jaoks iga 67 rea puhul on s\u00f5num kustutuskoodi osaga ning t\u00f5end nende osade kuulumisest vastavasse Merkle puusse.<\/p>\n<p>Kui sammul (4) osaleja dekr\u00fcpteerib 67 osa m\u00f5ne rea jaoks ja p\u00fc\u00fcab nende p\u00f5hjal originaalset rida taastada, on v\u00f5imalik \u00fcks j\u00e4rgmistest variantidest:<\/p>\n<ol>\n<li>\n<p>Rida taastatakse, ja kui seej\u00e4rel kodeerida see uuesti kustutuskoodidega ning arvutada v\u00e4lja Merkle'i puu kohalike osade jaoks, siis juur vastab sellele, millega on saavutatud konsensus.<\/p>\n<\/li>\n<li>\n<p>Rida taastatakse, kuid kohaliku arvutuse juur ei vasta sellele, millega on saavutatud konsensus.<\/p>\n<\/li>\n<li>\n<p>Rida ei taastata.<\/p>\n<\/li>\n<\/ol>\n<p>On lihtne n\u00e4idata, et kui v\u00e4hemalt \u00fche osalise puhul juhtus variant (1), siis juhtub see k\u00f5igi osaliste puhul, ja vastupidi, kui v\u00e4hemalt \u00fche osalise puhul juhtus variant (2) v\u00f5i (3), siis juhtus see k\u00f5igi osaliste puhul variant (2) v\u00f5i (3). Seel\u00e4bi, iga rida kogumis kas k\u00f5ik osalised taastavad selle edukalt v\u00f5i ei suuda seda taastada. Siis on tulemuslik juhuslik number \u2013 see on XOR ainult nende ridade osas, mida osalised suudavad taastada.<\/p>\n<h3>Piirv\u00e4\u00e4rsete allkirjad<\/h3>\n<p>Teine l\u00e4henemine juhuslikkusele seisneb nii-\u00f6elda l\u00e4veallkirjade BLS kasutamises. L\u00e4veallkirjadele p\u00f5hinev juhusliku arvu generaator omab t\u00e4pselt samu garantiisid nagu eespool kirjeldatud kustutuskoodide p\u00f5hine algoritm, kuid sellel on t\u00f5eliselt madalam asymptootika v\u00f5rreldes v\u00f5rgus edastatavate s\u00f5numite arvuga iga genereeritud arvu kohta.<\/p>\n<p>BLS allkirjad on konstruktsioon, mis v\u00f5imaldab mitmel osalejal luua \u00fche \u00fchise allkirja s\u00f5numile. Selliseid allkirju kasutatakse sageli ruumi ja ribalaiuse kokkuhoiu nimel, kuna need ei vaja mitme allkirja saatmist.&nbsp;<\/p>\n<p>BLS-allkirjade sagedane rakendamine plokiahela protokollides, lisaks juhuslike arvude genereerimisele, on BFT-protokollides plokkide allkirjastamine. Oletame, et 100 osalejat loovad blokke ja plokk loetakse l\u00f5plikuks, kui 67 neist allkirjastab selle. K\u00f5ik nad v\u00f5ivad esitada oma BLS-allkirja osi ja kasutada mingit konsensuse algoritmi, et koondada 67 neist, ning seej\u00e4rel \u00fchendada need \u00fcheks BLS-allkiri. Igasugused 67 (v\u00f5i enam) osa v\u00f5ivad olla kasutatud l\u00f5pliku allkirja loomisel, s\u00f5ltudes sellest, millised konkreetsed 67 allkirja on \u00fchendatud, ja seega v\u00f5ivad need erineda, kuid vaatamata sellele, et erinev valik 67 osalejat tekitab erineva allkirja, on iga selline allkiri ploki jaoks korrektne. \u00dclej\u00e4\u00e4nud osalejatele piisab siis, kui nad saavad v\u00f5rgus ja kontrollivad iga ploki kohta vaid \u00fchte allkirja, mitte 67, mis oluliselt v\u00e4hendab v\u00f5rgu koormust.<\/p>\n<p>K\u00fcsimus on selles, et kui osalejate kasutatavad privaatv\u00f5tmed genereeritakse teatud viisil, siis s\u00f5ltumata sellest, kui palju allkirju (67 v\u00f5i rohkem, kuid mitte v\u00e4hem) on kokku kogutud, saab tulemusena saadud allkiri olema sama. Seda saab kasutada juhuslikkuse allikana: osalejad lepivad esmalt kokku mingi s\u00f5numi, mida nad allkirjastavad (see v\u00f5ib olla RANDAO v\u00e4ljund v\u00f5i lihtsalt viimase ploki hash, tegelikult ei ole sellel t\u00e4htsust, peaasi, et see iga kord muutuks ja oleks koosk\u00f5lastatud), ja loovad sellele BLS-allkirja. Generatsiooni tulemus on unpredictable kuni 67 osalejat esitavad oma osalused, ja p\u00e4rast seda on v\u00e4ljund juba ette m\u00e4\u00e4ratud ja ei saa s\u00f5ltuda \u00fchegi osaleja tegevusest.<\/p>\n<p>Seda l\u00e4henemine juhuslikkusele on eluj\u00f5uline, kui v\u00e4hemalt \u2154 osalistest on online ja j\u00e4rgivad protokolli, ning on erapooletud ja ettearvamatud, kuni v\u00e4hemalt \u2153 osalistest j\u00e4rgib protokolli. Oluline on m\u00e4rkida, et kurjategija, kes kontrollib rohkem kui \u2153, kuid v\u00e4hem kui \u2154 osalistest, v\u00f5ib protokolli peatada, kuid ei saa ennustada ega m\u00f5jutada selle v\u00e4ljundit.<\/p>\n<p>Piirangutega allkirjad iseenesest on v\u00e4ga huvitav teema. Artikli teises osas k\u00e4sitleme \u00fcksikasjalikult, kuidas need t\u00f6\u00f6tavad ja kuidas osaliste v\u00f5tmeid genereerida, et piirangutega allkirju saaks kasutada juhuslike numbrite generaatorina.<\/p>\n<h3>Kokkuv\u00f5tteks<\/h3>\n<p>See artikkel on esimene tehniliste artiklite seerias blogis <noindex><a rel=\"nofollow\" href=\"https:\/\/near.org\">NEAR<\/a><\/noindex>. NEAR on plokiahela protokoll ja platvorm detsentraliseeritud rakenduste arendamiseks, keskendudes arendamise lihtsusele ja l\u00f5ppkasutajate kasutusmugavusele.<\/p>\n<p>Protokolli kood on avatud, meie teostus on kirjutatud Rustis, selle leiate <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/nearprotocol\/nearcore\">siin<\/a><\/noindex>.<\/p>\n<p>Vaata, milline n\u00e4eb v\u00e4lja NEAR-i arendamine, ja katseta online-IDE-s. <noindex><a rel=\"nofollow\" href=\"https:\/\/examples.near.org\">siit<\/a><\/noindex>.<\/p>\n<p>J\u00e4lgi k\u00f5iki uudiseid eesti keeles <noindex><a rel=\"nofollow\" href=\"https:\/\/t.me\/near_protocol\">Telegrami grupis<\/a><\/noindex> ja <noindex><a rel=\"nofollow\" href=\"https:\/\/vk.com\/nearprotocol\">VKontakte grupis.<\/a><\/noindex>, aga inglise keeles ametlikul <noindex><a rel=\"nofollow\" href=\"https:\/\/twitter.com\/NEARProtocol\">Twitteris<\/a><\/noindex>.<\/p>\n<p>Kohtumiseni!<\/p>\n<p>Allikas: <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 4.9.10 - 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. \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 -- \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 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0441\u0442\u0430\u0432\u043a\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\/et\/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) 4.9.10\" \/>\n\t\t<meta property=\"og:locale\" content=\"et_EE\" \/>\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. \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 -- \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 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0441\u0442\u0430\u0432\u043a\u0443\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/et\/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\udd47Kas on v\u00f5imalik genereerida juhuslikke numbreid, kui me ei usalda \u00fcksteist? Osa 1 | ProHoster","description":"Tere, Habr! Selles artiklis r\u00e4\u00e4gin ma pseudojuhuslike arvude genereerimisest osaliste poolt, kes ei usalda \u00fcksteist. Nagu me allpool n\u00e4eme, on 'peaaegu' hea generaatori rakendamine suhteliselt lihtne, kuid t\u00f5eliselt hea generaator on keeruline. Miks on \u00fcldse vajalik genereerida juhuslikke numbreid osalistele, kes ei usalda \u00fcksteist? \u00dcks rakendusvaldkondi on detsentraliseeritud rakendused. N\u00e4iteks rakendus, mis aktsepteerib panuseid.","canonical_url":"https:\/\/prohoster.info\/et\/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":"et_EE","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. \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 -- \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 \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0441\u0442\u0430\u0432\u043a\u0443","og:url":"https:\/\/prohoster.info\/et\/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"},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/95468","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/comments?post=95468"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/95468\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media\/95469"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media?parent=95468"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/categories?post=95468"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/tags?post=95468"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}