{"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\/cs\/blog\/administrirovanie\/mozhno-li-generirovat-sluchajnye-chisla-esli-my-ne-doveryaem-drug-drugu-chast-1","title":{"rendered":"M\u016f\u017eeme generovat n\u00e1hodn\u00e1 \u010d\u00edsla, pokud si navz\u00e1jem nev\u011b\u0159\u00edme? \u010c\u00e1st 1","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Ahoj, Habr!<\/p>\n<p>V tomto \u010dl\u00e1nku se budu zab\u00fdvat generov\u00e1n\u00edm pseudo-n\u00e1hodn\u00fdch \u010d\u00edsel \u00fa\u010dastn\u00edky, kte\u0159\u00ed si navz\u00e1jem ned\u016fv\u011b\u0159uj\u00ed. Jak uvid\u00edme n\u00ed\u017ee, implementace \"t\u00e9m\u011b\u0159\" dobr\u00e9ho gener\u00e1toru je pom\u011brn\u011b jednoduch\u00e1, zat\u00edmco velmi dobr\u00fd gener\u00e1tor je slo\u017eit\u011bj\u0161\u00ed.<\/p>\n<p>Pro\u010d je v\u016fbec pot\u0159eba generovat n\u00e1hodn\u00e1 \u010d\u00edsla pro \u00fa\u010dastn\u00edky, kte\u0159\u00ed si navz\u00e1jem nev\u011b\u0159\u00ed? Jednou z oblast\u00ed pou\u017eit\u00ed jsou decentralizovan\u00e9 aplikace. Nap\u0159\u00edklad aplikace, kter\u00e1 p\u0159ij\u00edm\u00e1 s\u00e1zku od \u00fa\u010dastn\u00edka a bu\u010f zdvojn\u00e1sob\u00ed \u010d\u00e1stku s 49% pravd\u011bpodobnost\u00ed, nebo ji s 51% odebere, bude fungovat pouze v p\u0159\u00edpad\u011b, \u017ee m\u016f\u017ee nestrann\u011b z\u00edskat n\u00e1hodn\u00e9 \u010d\u00edslo. Pokud \u00fato\u010dn\u00edk m\u016f\u017ee ovlivnit v\u00fdsledek pr\u00e1ce gener\u00e1toru n\u00e1hodn\u00fdch \u010d\u00edsel a i nepatrn\u011b zv\u00fd\u0161it svou \u0161anci na v\u00fdplatu v aplikaci, snadno ji vypr\u00e1zdn\u00ed.<\/p>\n<p>Kdy\u017e vyv\u00edj\u00edme distribuovan\u00fd protokol pro generov\u00e1n\u00ed n\u00e1hodn\u00fdch \u010d\u00edsel, chceme, aby m\u011bl t\u0159i vlastnosti:<\/p>\n<ol>\n<li>\n<p>Mus\u00ed b\u00fdt nestrann\u00fd. Jin\u00fdmi slovy, \u017e\u00e1dn\u00fd \u00fa\u010dastn\u00edk by nem\u011bl m\u00edt \u017e\u00e1dn\u00fd vliv na v\u00fdsledek gener\u00e1toru n\u00e1hodn\u00fdch \u010d\u00edsel.<\/p>\n<\/li>\n<li>\n<p>Mus\u00ed b\u00fdt nep\u0159edv\u00eddateln\u00fd. Jin\u00fdmi slovy, \u017e\u00e1dn\u00fd \u00fa\u010dastn\u00edk by nem\u011bl b\u00fdt schopen odhadnout, kter\u00e9 \u010d\u00edslo bude vygenerov\u00e1no (nebo odvodit jak\u00e9koli jeho vlastnosti) p\u0159ed t\u00edm, ne\u017e bude vygenerov\u00e1no.<\/p>\n<\/li>\n<li>\n<p>Protokol mus\u00ed b\u00fdt \u017eivotaschopn\u00fd, co\u017e znamen\u00e1, \u017ee je odoln\u00fd v\u016f\u010di situaci, kdy ur\u010dit\u00e9 procento \u00fa\u010dastn\u00edk\u016f se odpoj\u00ed od s\u00edt\u011b nebo se pokus\u00ed protokol \u00famysln\u011b zastavit.<\/p>\n<\/li>\n<\/ol>\n<p>V tomto \u010dl\u00e1nku se pod\u00edv\u00e1me na dva p\u0159\u00edstupy: RANDAO + VDF a p\u0159\u00edstup zalo\u017een\u00fd na erasure codes. V n\u00e1sleduj\u00edc\u00ed \u010d\u00e1sti podrobn\u011b prozkoum\u00e1me p\u0159\u00edstup zalo\u017een\u00fd na threshold signatur\u00e1ch.<\/p>\n<p>Ale nejprve si objasn\u00edme jednoduch\u00fd a \u010dasto pou\u017e\u00edvan\u00fd algoritmus, kter\u00fd je \u017eivotaschopn\u00fd, nep\u0159edv\u00eddateln\u00fd, ale p\u0159esto zaujat\u00fd.<\/p>\n<h3>RANDAO<\/h3>\n<p>RANDAO je velmi jednoduch\u00fd a tedy pom\u011brn\u011b \u010dasto pou\u017e\u00edvan\u00fd p\u0159\u00edstup k z\u00edsk\u00e1n\u00ed n\u00e1hody. V\u0161ichni \u00fa\u010dastn\u00edci s\u00edt\u011b nejprve lok\u00e1ln\u011b zvol\u00ed pseudon\u00e1hodn\u00e9 \u010d\u00edslo, pot\u00e9 ka\u017ed\u00fd \u00fa\u010dastn\u00edk po\u0161le hash vybran\u00e9ho \u010d\u00edsla. N\u00e1sledn\u011b \u00fa\u010dastn\u00edci postupn\u011b odhaluj\u00ed sv\u00e1 vybran\u00e1 \u010d\u00edsla a prov\u00e1d\u011bj\u00ed nad odhalen\u00fdmi \u010d\u00edsly operaci XOR, a v\u00fdsledek t\u00e9to operace se st\u00e1v\u00e1 v\u00fdsledkem pr\u00e1ce protokolu.<\/p>\n<p>Krok s publikov\u00e1n\u00edm hash\u016f p\u0159ed odhalen\u00edm \u010d\u00edsel je nezbytn\u00fd, aby \u00fato\u010dn\u00edk nemohl vybrat sv\u00e9 \u010d\u00edslo pot\u00e9, co vid\u011bl \u010d\u00edsla ostatn\u00edch \u00fa\u010dastn\u00edk\u016f. To by mu ve skute\u010dnosti umo\u017enilo jednor\u00e1zov\u011b ur\u010dit v\u00fdstup gener\u00e1toru n\u00e1hodn\u00fdch \u010d\u00edsel.<\/p>\n<p>B\u011bhem protokolu mus\u00ed \u00fa\u010dastn\u00edci dvakr\u00e1t dos\u00e1hnout spole\u010dn\u00e9ho rozhodnut\u00ed (tzv. konsensu): kdy za\u010d\u00edt odhalovat vybran\u00e1 \u010d\u00edsla, a tedy p\u0159estat p\u0159ij\u00edmat hash, a kdy ukon\u010dit p\u0159ij\u00edm\u00e1n\u00ed vybran\u00fdch \u010d\u00edsel a vypo\u010d\u00edtat v\u00fdsledn\u00e9 n\u00e1hodn\u00e9 \u010d\u00edslo. P\u0159ijet\u00ed takov\u00fdch rozhodnut\u00ed mezi \u00fa\u010dastn\u00edky, kte\u0159\u00ed si navz\u00e1jem ned\u016fv\u011b\u0159uj\u00ed, je samo o sob\u011b slo\u017eit\u00fd \u00fakol, a k tomu se vr\u00e1t\u00edme v budouc\u00edch \u010dl\u00e1nc\u00edch; v tomto \u010dl\u00e1nku budeme p\u0159edpokl\u00e1dat, \u017ee takov\u00fd konsensu\u00e1ln\u00ed algoritmus m\u00e1me k dispozici.<\/p>\n<p>Jak\u00e9 vlastnosti, kter\u00e9 jsme popsali v\u00fd\u0161e, m\u00e1 RANDAO? Je nep\u0159edv\u00eddateln\u00fd, m\u00e1 stejnou \u017eivotaschopnost jako protokol konsensu, na kter\u00e9m je zalo\u017een, ale je p\u0159edpojat\u00fd. Zejm\u00e9na \u00fato\u010dn\u00edk m\u016f\u017ee sledovat s\u00ed\u0165, a pot\u00e9, co ostatn\u00ed \u00fa\u010dastn\u00edci odhal\u00ed sv\u00e1 \u010d\u00edsla, m\u016f\u017ee vypo\u010d\u00edtat jejich XOR a rozhodnout se, zda odhalit nebo neodhalit sv\u00e9 \u010d\u00edslo, aby ovlivnil v\u00fdsledek. P\u0159esto\u017ee to \u00fato\u010dn\u00edkovi neumo\u017e\u0148uje jednor\u00e1zov\u011b ur\u010dit v\u00fdstup gener\u00e1toru n\u00e1hodn\u00fdch \u010d\u00edsel, st\u00e1le mu to poskytuje 1 bit vlivu. A pokud \u00fato\u010dn\u00edci ovl\u00e1daj\u00ed n\u011bkolik \u00fa\u010dastn\u00edk\u016f, pak bude po\u010det kontrolovan\u00fdch bit\u016f roven po\u010dtu \u00fa\u010dastn\u00edk\u016f pod jejich kontrolou.<\/p>\n<p><img decoding=\"async\" alt=\"M\u016f\u017eeme generovat n\u00e1hodn\u00e1 \u010d\u00edsla, pokud si navz\u00e1jem nev\u011b\u0159\u00edme? \u010c\u00e1st 1\" src=\"\/wp-content\/uploads\/2020\/09\/4869d0c7dbc4cc8a368c2846997d6d2a.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Vliv \u00fato\u010dn\u00edk\u016f lze v\u00fdznamn\u011b sn\u00ed\u017eit, pokud se vy\u017eaduje, \u017ee \u00fa\u010dastn\u00edci odhaluj\u00ed \u010d\u00edsla v \u0159ad\u011b. Pot\u00e9 \u00fato\u010dn\u00edk m\u016f\u017ee ovlivnit v\u00fdsledek pouze tehdy, kdy\u017e se odhal\u00ed jako posledn\u00ed. P\u0159esto\u017ee je vliv zna\u010dn\u011b men\u0161\u00ed, algoritmus si st\u00e1le zachov\u00e1v\u00e1 p\u0159edpojatost.<\/p>\n<h3>RANDAO + VDF<\/h3>\n<p>Jednou z mo\u017enost\u00ed, jak u\u010dinit RANDAO nep\u0159edpojat\u00fdm, je to, \u017ee po odhalen\u00ed v\u0161ech \u010d\u00edsel a v\u00fdpo\u010dtu XOR se v\u00fdsledn\u00fd v\u00fdstup p\u0159edkl\u00e1d\u00e1 funkci, jej\u00ed\u017e v\u00fdpo\u010det trv\u00e1 velmi dlouho, ale umo\u017e\u0148uje velmi rychle ov\u011b\u0159it spr\u00e1vnost v\u00fdpo\u010dtu.<\/p>\n<pre><code>(vdf_output, vdf_proof) = VDF_compute(input) \/\/ to je velmi pomal\u00e9\ncorrect = VDF_verify(input, vdf_output, vdf_proof) \/\/ to je velmi rychl\u00e9<\/code><\/pre>\n<p>Tato funkce se naz\u00fdv\u00e1 Verifiable Delay Function neboli VDF. Pokud v\u00fdpo\u010det kone\u010dn\u00e9ho v\u00fdsledku trv\u00e1 d\u00e9le ne\u017e f\u00e1ze odhalen\u00ed \u010d\u00edsel, \u00fato\u010dn\u00edk nebude schopen p\u0159edpov\u011bd\u011bt efekt uk\u00e1z\u00e1n\u00ed nebo zadr\u017een\u00ed sv\u00e9ho \u010d\u00edsla, a tedy ztrat\u00ed mo\u017enost ovlivnit v\u00fdsledek.<\/p>\n<p>V\u00fdvoj dobr\u00fdch VDF je extr\u00e9mn\u011b slo\u017eit\u00fd. V posledn\u00ed dob\u011b do\u0161lo k n\u011bkolika pr\u016flom\u016fm, nap\u0159\u00edklad <noindex><a rel=\"nofollow\" href=\"https:\/\/eprint.iacr.org\/2018\/623.pdf\"><u>tento<\/u><\/a><\/noindex> a <noindex><a rel=\"nofollow\" href=\"https:\/\/eprint.iacr.org\/2018\/627.pdf\"><u>tento,<\/u><\/a><\/noindex> kter\u00e9 \u010din\u00ed VDF prakti\u010dt\u011bj\u0161\u00edmi, a Ethereum 2.0 pl\u00e1nuje v dlouhodob\u00e9m horizontu pou\u017e\u00edvat RANDAO s VDF jako zdroj n\u00e1hodn\u00fdch \u010d\u00edsel. Krom\u011b toho, \u017ee je tento p\u0159\u00edstup nep\u0159edv\u00eddateln\u00fd a nestrann\u00fd, m\u00e1 tak\u00e9 dal\u0161\u00ed v\u00fdhodu, kterou je \u017eivotaschopnost, pokud jsou v s\u00edti dostupn\u00ed alespo\u0148 dva \u00fa\u010dastn\u00edci (za p\u0159edpokladu, \u017ee pou\u017eit\u00fd konsenzu\u00e1ln\u00ed protokol je \u017eivotaschopn\u00fd p\u0159i tak mal\u00e9m po\u010dtu \u00fa\u010dastn\u00edk\u016f).<\/p>\n<p>Nejv\u011bt\u0161\u00ed probl\u00e9m tohoto p\u0159\u00edstupu spo\u010d\u00edv\u00e1 v nastaven\u00ed VDF tak, aby ani \u00fa\u010dastn\u00edk s velmi drah\u00fdm specializovan\u00fdm za\u0159\u00edzen\u00edm nebyl schopen vypo\u010d\u00edtat VDF do konce f\u00e1ze odhalen\u00ed. Ide\u00e1ln\u011b by m\u011bl algoritmus m\u00edt dokonce podstatnou rezervu, \u0159ekn\u011bme 10x. Na obr\u00e1zku n\u00ed\u017ee je zn\u00e1zorn\u011bn \u00fatok \u00fa\u010dastn\u00edka, kter\u00fd m\u00e1 specializovan\u00fd ASIC, co\u017e mu umo\u017e\u0148uje spou\u0161t\u011bt VDF rychleji, ne\u017e je \u010das ur\u010den\u00fd pro odhalen\u00ed potvrzen\u00ed RANDAO. Takov\u00fd \u00fa\u010dastn\u00edk m\u016f\u017ee st\u00e1le vypo\u010d\u00edtat kone\u010dn\u00fd v\u00fdsledek vyu\u017eit\u00edm i nevyu\u017eit\u00edm sv\u00e9ho \u010d\u00edsla a pot\u00e9 na z\u00e1klad\u011b t\u011bchto v\u00fdpo\u010dt\u016f rozhodnout, zda ho uk\u00e1zat nebo ne.<\/p>\n<p><img decoding=\"async\" alt=\"M\u016f\u017eeme generovat n\u00e1hodn\u00e1 \u010d\u00edsla, pokud si navz\u00e1jem nev\u011b\u0159\u00edme? \u010c\u00e1st 1\" src=\"\/wp-content\/uploads\/2020\/09\/3c6e64b6473b951f549f5ba60edbafa9.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Pro v\u00fd\u0161e zm\u00edn\u011bnou rodinu VDF m\u016f\u017ee b\u00fdt v\u00fdkon specializovan\u00e9ho ASIC v\u00edce ne\u017e 100kr\u00e1t vy\u0161\u0161\u00ed ne\u017e u b\u011b\u017en\u00e9ho za\u0159\u00edzen\u00ed. Pokud tedy f\u00e1ze odhalen\u00ed trv\u00e1 10 sekund, VDF vypo\u010d\u00edtan\u00e1 na takov\u00e9m ASIC by m\u011bla trvat d\u00e9le ne\u017e 100 sekund, aby m\u011bla 10n\u00e1sobnou bezpe\u010dnostn\u00ed rezervu, a tedy stejn\u00e1 VDF vypo\u010d\u00edtan\u00e1 na b\u011b\u017en\u00e9m za\u0159\u00edzen\u00ed by m\u011bla trvat 100 x 100 sekund = p\u0159ibli\u017en\u011b 3 hodiny.<\/p>\n<p>Nadace Ethereum pl\u00e1nuje vy\u0159e\u0161it tento probl\u00e9m t\u00edm, \u017ee vytvo\u0159\u00ed vlastn\u00ed ve\u0159ejn\u011b dostupn\u00e9 bezplatn\u00e9 ASIC. Jakmile se to stane, budou moci v\u0161echny ostatn\u00ed protokoly rovn\u011b\u017e vyu\u017e\u00edvat v\u00fdhod t\u00e9to technologie, ale do t\u00e9 doby p\u0159\u00edstup RANDAO + VDF nebude tak \u017eivotaschopn\u00fd pro protokoly, kter\u00e9 nemohou investovat do v\u00fdvoje vlastn\u00edch ASIC.<\/p>\n<p>Na <noindex><a rel=\"nofollow\" href=\"https:\/\/vdfresearch.org\/\"><u>t\u00e9to str\u00e1nce<\/u><\/a><\/noindex>.<\/p>\n<h3>Pou\u017e\u00edv\u00e1me vymaz\u00e1vac\u00ed k\u00f3dy<\/h3>\n<p>V t\u00e9to \u010d\u00e1sti se pod\u00edv\u00e1me na protokol generov\u00e1n\u00ed n\u00e1hodn\u00fdch \u010d\u00edsel, kter\u00fd pou\u017e\u00edv\u00e1 <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\">vymaz\u00e1vac\u00ed k\u00f3dy<\/a><\/noindex>. M\u016f\u017ee sn\u00e9st a\u017e \u2153 \u00fato\u010dn\u00edk\u016f a p\u0159itom z\u016fst\u00e1v\u00e1 funk\u010dn\u00ed, a umo\u017e\u0148uje existenci a\u017e \u2154 \u00fato\u010dn\u00edk\u016f, ne\u017e budou schopni p\u0159edpov\u011bd\u011bt nebo ovlivnit v\u00fdsledek.<\/p>\n<p>Hlavn\u00ed my\u0161lenka protokolu je n\u00e1sleduj\u00edc\u00ed. Pro zjednodu\u0161en\u00ed p\u0159edpokl\u00e1dejme, \u017ee se ho \u00fa\u010dastn\u00ed p\u0159esn\u011b 100 \u00fa\u010dastn\u00edk\u016f. P\u0159edpokl\u00e1dejme tak\u00e9, \u017ee v\u0161ichni \u00fa\u010dastn\u00edci maj\u00ed na m\u00edst\u011b ur\u010dit\u00fd soukrom\u00fd kl\u00ed\u010d a ve\u0159ejn\u00e9 kl\u00ed\u010de v\u0161ech \u00fa\u010dastn\u00edk\u016f jsou zn\u00e1my v\u0161em \u00fa\u010dastn\u00edk\u016fm:<\/p>\n<ol>\n<li>\n<p>Ka\u017ed\u00fd \u00fa\u010dastn\u00edk si lok\u00e1ln\u011b vymysl\u00ed dlouh\u00fd \u0159et\u011bzec, rozd\u011bl\u00ed ho na 67 \u010d\u00e1st\u00ed, vytvo\u0159\u00ed vymaz\u00e1vac\u00ed k\u00f3dy tak, aby z\u00edskal 100 pod\u00edl\u016f, p\u0159i\u010dem\u017e jak\u00fdchkoli 67 je dostate\u010dn\u00fdch k obnoven\u00ed \u0159et\u011bzce, a p\u0159id\u011bl\u00ed ka\u017ed\u00fd z 100 pod\u00edl\u016f jednomu z \u00fa\u010dastn\u00edk\u016f a \u0161ifruje je pomoc\u00ed ve\u0159ejn\u00e9ho kl\u00ed\u010de toho sam\u00e9ho \u00fa\u010dastn\u00edka. Pot\u00e9 jsou v\u0161echny k\u00f3dovan\u00e9 pod\u00edly publikov\u00e1ny.<\/p>\n<\/li>\n<li>\n<p>\u00da\u010dastn\u00edci pou\u017e\u00edvaj\u00ed n\u011bjak\u00fd konsenzus, aby dos\u00e1hli shody o k\u00f3dovan\u00fdch sad\u00e1ch od konkr\u00e9tn\u00edch 67 \u00fa\u010dastn\u00edk\u016f.<\/p>\n<\/li>\n<li>\n<p>Jakmile je konsenzus dosa\u017een, ka\u017ed\u00fd \u00fa\u010dastn\u00edk vezme k\u00f3dovan\u00e9 pod\u00edly z ka\u017ed\u00e9 z 67 sad, za\u0161ifrovan\u00e9 jejich ve\u0159ejn\u00fdm kl\u00ed\u010dem, de\u0161ifruje v\u0161echny takov\u00e9 pod\u00edly a publikuje v\u0161echny takto de\u0161ifrovan\u00e9 pod\u00edly.<\/p>\n<\/li>\n<li>\n<p>Jakmile 67 \u00fa\u010dastn\u00edk\u016f dokon\u010d\u00ed krok (3), v\u0161echny dohodnut\u00e9 sady mohou b\u00fdt pln\u011b dek\u00f3dov\u00e1ny a obnoveny d\u00edky vlastnostem vymaz\u00e1vac\u00edch k\u00f3d\u016f, a kone\u010dn\u00e9 \u010d\u00edslo m\u016f\u017ee b\u00fdt z\u00edsk\u00e1no jako XOR po\u010d\u00e1te\u010dn\u00edch \u0159et\u011bzc\u016f, ze kter\u00fdch \u00fa\u010dastn\u00edci za\u010dali v (1).<\/p>\n<\/li>\n<\/ol>\n<p><img decoding=\"async\" alt=\"M\u016f\u017eeme generovat n\u00e1hodn\u00e1 \u010d\u00edsla, pokud si navz\u00e1jem nev\u011b\u0159\u00edme? \u010c\u00e1st 1\" src=\"\/wp-content\/uploads\/2020\/09\/b74ef4bb4a8148766f0b1ab2a8222625.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Lze uk\u00e1zat, \u017ee tento protokol je neutr\u00e1ln\u00ed a nep\u0159edv\u00eddateln\u00fd. V\u00fdsledn\u00e9 n\u00e1hodn\u00e9 \u010d\u00edslo je ur\u010deno a\u017e po dosa\u017een\u00ed konsensu, ale nikdo o n\u011bm nev\u00ed, dokud \u2154 \u00fa\u010dastn\u00edk\u016f neroz\u0161ifruje \u010d\u00e1sti za\u0161ifrovan\u00e9 jejich ve\u0159ejn\u00fdm kl\u00ed\u010dem. Tak\u017ee n\u00e1hodn\u00e9 \u010d\u00edslo je ur\u010deno d\u0159\u00edve, ne\u017e je zve\u0159ejn\u011bna informace dostate\u010dn\u00e1 k jeho obnoven\u00ed.<\/p>\n<p>Co se stane, pokud na kroku (1) jeden z \u00fa\u010dastn\u00edk\u016f po\u0161le ostatn\u00edm \u00fa\u010dastn\u00edk\u016fm za\u0161ifrovan\u00e9 pod\u00edly, kter\u00e9 nejsou platn\u00fdm korek\u010dn\u00edm k\u00f3dem n\u011bjak\u00e9ho \u0159et\u011bzce? Bez dal\u0161\u00edch \u00faprav r\u016fzn\u00ed \u00fa\u010dastn\u00edci bu\u010f nebudou schopni \u0159et\u011bzec v\u016fbec obnovit, nebo obnov\u00ed r\u016fzn\u00e9 \u0159et\u011bzce, co\u017e povede k tomu, \u017ee r\u016fzn\u00ed \u00fa\u010dastn\u00edci obdr\u017e\u00ed r\u016fzn\u00e1 n\u00e1hodn\u00e1 \u010d\u00edsla. Aby se tomu zabr\u00e1nilo, lze prov\u00e9st n\u00e1sleduj\u00edc\u00ed: ka\u017ed\u00fd \u00fa\u010dastn\u00edk, krom\u011b za\u0161ifrovan\u00fdch pod\u00edl\u016f, tak\u00e9 vypo\u010d\u00edt\u00e1v\u00e1 <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\">Merkleho strom<\/a><\/noindex> v\u0161ech t\u011bchto pod\u00edl\u016f, a ka\u017ed\u00e9mu \u00fa\u010dastn\u00edku pos\u00edl\u00e1 jak samotn\u00fd za\u0161ifrovan\u00fd pod\u00edl, tak ko\u0159en Merkleho stromu a d\u016fkaz o zahrnut\u00ed pod\u00edlu do Merkleho stromu. V konsensu na kroku (2) se pak \u00fa\u010dastn\u00edci neshoduj\u00ed pouze na mno\u017estv\u00ed sad, ale na mno\u017estv\u00ed konkr\u00e9tn\u00edch ko\u0159en\u016f t\u011bchto strom\u016f (pokud se n\u011bkter\u00fd \u00fa\u010dastn\u00edk odch\u00fdlil od protokolu a poslal r\u016fzn\u00e9 ko\u0159eny Merkleho stromu r\u016fzn\u00fdm \u00fa\u010dastn\u00edk\u016fm, a dva takov\u00e9 ko\u0159eny byly p\u0159edlo\u017eeny b\u011bhem konsensu, jeho \u0159et\u011bzec nen\u00ed zahrnut do v\u00fdsledn\u00e9 sady). Po dosa\u017een\u00ed konsensu budeme m\u00edt 67 za\u0161ifrovan\u00fdch \u0159et\u011bzc\u016f a jejich odpov\u00eddaj\u00edc\u00ed ko\u0159eny Merkleho stromu, tak \u017ee existuje alespo\u0148 67 \u00fa\u010dastn\u00edk\u016f (ne nutn\u011b t\u011bch, kte\u0159\u00ed navrhli odpov\u00eddaj\u00edc\u00ed \u0159et\u011bzce), kte\u0159\u00ed maj\u00ed pro ka\u017ed\u00fd z t\u011bchto 67 \u0159et\u011bzc\u016f zpr\u00e1vy s pod\u00edly korek\u010dn\u00edch k\u00f3d\u016f a d\u016fkaz o zahrnut\u00ed jejich pod\u00edlu do p\u0159\u00edslu\u0161n\u00e9ho Merkleho stromu.<\/p>\n<p>Kdy\u017e na kroku (4) \u00fa\u010dastn\u00edk de\u0161ifruje 67 pod\u00edl\u016f pro n\u011bjak\u00fd \u0159et\u011bzec a pokus\u00ed se z nich obnovit p\u016fvodn\u00ed \u0159et\u011bzec, m\u016f\u017ee nastat jedna z n\u00e1sleduj\u00edc\u00edch mo\u017enost\u00ed:<\/p>\n<ol>\n<li>\n<p>\u0158et\u011bzec je obnoven, a pokud je pot\u00e9 znovu za\u0161ifrov\u00e1n korek\u010dn\u00edmi k\u00f3dy a spo\u010d\u00edt\u00e1 se Merkleho strom pro lok\u00e1ln\u011b spo\u010d\u00edtan\u00e9 pod\u00edly, ko\u0159en se shoduje s t\u00edm, na kter\u00e9m byl dosa\u017een konsensus.<\/p>\n<\/li>\n<li>\n<p>\u0158et\u011bzec je obnoven, ale lok\u00e1ln\u011b vypo\u010dten\u00fd ko\u0159en se neshoduje s t\u00edm, na kter\u00e9m byl dosa\u017een konsensus.<\/p>\n<\/li>\n<li>\n<p>\u0158et\u011bzec se neobnov\u00ed.<\/p>\n<\/li>\n<\/ol>\n<p>Je snadn\u00e9 uk\u00e1zat, \u017ee pokud alespo\u0148 pro jednoho \u00fa\u010dastn\u00edka nastala varianta (1), pak nastane varianta (1) i pro v\u0161echny ostatn\u00ed \u00fa\u010dastn\u00edky, a naopak, pokud alespo\u0148 pro jednoho \u00fa\u010dastn\u00edka nastala varianta (2) nebo (3), pak nastane varianta (2) nebo (3) pro v\u0161echny \u00fa\u010dastn\u00edky. Tak\u017ee pro ka\u017ed\u00fd \u0159\u00e1dek v souboru bu\u010f v\u0161ichni \u00fa\u010dastn\u00edci \u00fasp\u011b\u0161n\u011b obnov\u00ed, nebo v\u0161ichni \u00fa\u010dastn\u00edci nebudou m\u00edt mo\u017enost obnovit. V\u00fdsledn\u00e9 n\u00e1hodn\u00e9 \u010d\u00edslo je tedy XOR pouze t\u011bch \u0159\u00e1dk\u016f, kter\u00e9 \u00fa\u010dastn\u00edci dok\u00e1zali obnovit.<\/p>\n<h3>Prahov\u00e9 podpisy<\/h3>\n<p>Dal\u0161\u00ed p\u0159\u00edstup k n\u00e1hodnosti spo\u010d\u00edv\u00e1 v pou\u017eit\u00ed tzv. prahov\u00fdch podpis\u016f BLS. Gener\u00e1tor n\u00e1hodn\u00fdch \u010d\u00edsel zalo\u017een\u00fd na prahov\u00fdch podpisech m\u00e1 p\u0159esn\u011b takov\u00e9 sam\u00e9 z\u00e1ruky jako v\u00fd\u0161e popsan\u00fd algoritmus na b\u00e1zi chybov\u00fdch k\u00f3d\u016f, ale m\u00e1 v\u00fdrazn\u011b men\u0161\u00ed asymptotiku po\u010dtu zpr\u00e1v, kter\u00e9 se p\u0159en\u00e1\u0161ej\u00ed po s\u00edti pro ka\u017ed\u00e9 generovan\u00e9 \u010d\u00edslo.<\/p>\n<p>Podpisy BLS jsou konstrukc\u00ed, kter\u00e1 umo\u017e\u0148uje n\u011bkolika \u00fa\u010dastn\u00edk\u016fm vytv\u00e1\u0159et jeden spole\u010dn\u00fd podpis pro zpr\u00e1vy. Tyto podpisy se \u010dasto pou\u017e\u00edvaj\u00ed pro \u00fasporu m\u00edsta a \u0161\u00ed\u0159ky p\u00e1sma, proto\u017ee nevy\u017eaduj\u00ed rozes\u00edl\u00e1n\u00ed n\u011bkolika podpis\u016f.&nbsp;<\/p>\n<p>\u010cast\u00e9 pou\u017eit\u00ed BLS-podpis\u016f v protokolech blockchainu, krom\u011b generov\u00e1n\u00ed n\u00e1hodn\u00fdch \u010d\u00edsel, spo\u010d\u00edv\u00e1 v podepisov\u00e1n\u00ed blok\u016f v protokolech BFT. \u0158ekn\u011bme, \u017ee 100 \u00fa\u010dastn\u00edk\u016f vytv\u00e1\u0159\u00ed bloky, a blok je pova\u017eov\u00e1n za kone\u010dn\u00fd, pokud jej podep\u00ed\u0161e 67 z nich. V\u0161ichni mohou p\u0159edlo\u017eit sv\u00e9 \u010d\u00e1sti BLS-podpisu a pou\u017e\u00edt n\u011bjak\u00fd konsenzusn\u00ed algoritmus, aby se shodli na 67 z nich, a pot\u00e9 je slou\u010dit do jednoho BLS-podpisu. Jak\u00e9koli 67 (nebo v\u00edce) \u010d\u00e1st\u00ed m\u016f\u017ee b\u00fdt pou\u017eito k vytvo\u0159en\u00ed kone\u010dn\u00e9ho podpisu, kter\u00fd z\u00e1vis\u00ed na t\u011bchto konkr\u00e9tn\u00edch 67 podepsan\u00fdch, a proto se m\u016f\u017ee li\u0161it, ale i kdy\u017e r\u016fzn\u00e9 v\u00fdb\u011bry 67 \u00fa\u010dastn\u00edk\u016f vytvo\u0159\u00ed r\u016fzn\u00fd podpis, jak\u00fdkoli takov\u00fd podpis bude platn\u00fdm podpisem pro blok. Ostatn\u00edm \u00fa\u010dastn\u00edk\u016fm pak posta\u010d\u00ed obdr\u017eet po s\u00edti a ov\u011b\u0159it pouze jeden podpis na ka\u017ed\u00fd blok m\u00edsto 67, co\u017e v\u00fdrazn\u011b sni\u017euje z\u00e1t\u011b\u017e na s\u00ed\u0165.<\/p>\n<p>Ukazuje se, \u017ee pokud jsou soukrom\u00e9 kl\u00ed\u010de, kter\u00e9 pou\u017e\u00edvaj\u00ed \u00fa\u010dastn\u00edci, generov\u00e1ny ur\u010dit\u00fdm zp\u016fsobem, pak bez ohledu na to, kolik podpis\u016f (67 nebo v\u00edce, ale nejm\u00e9n\u011b 67) je agregov\u00e1no, v\u00fdsledn\u00fd podpis bude stejn\u00fd. To m\u016f\u017ee b\u00fdt pou\u017eito jako zdroj n\u00e1hodnosti: \u00fa\u010dastn\u00edci se nejprve dohodnou na n\u011bjak\u00e9 zpr\u00e1v\u011b, kterou podep\u00ed\u0161\u00ed (m\u016f\u017ee to b\u00fdt v\u00fdstup RANDAO nebo jen hash posledn\u00edho bloku, skute\u010dn\u011b na tom nez\u00e1le\u017e\u00ed, jen aby se to poka\u017ed\u00e9 m\u011bnilo a bylo dohodnut\u00e9) a vytvo\u0159\u00ed pro n\u011bj BLS-podpis. V\u00fdsledek generace bude nep\u0159edv\u00eddateln\u00fd, dokud 67 \u00fa\u010dastn\u00edk\u016f neposkytne sv\u00e9 \u010d\u00e1sti, a pot\u00e9 u\u017e budou v\u00fdstupy p\u0159edem stanoven\u00e9 a nemohou z\u00e1viset na jedn\u00e1n\u00ed kter\u00e9hokoli \u00fa\u010dastn\u00edka.<\/p>\n<p>Tento p\u0159\u00edstup k n\u00e1hodnosti je \u017eivotaschopn\u00fd, pokud je alespo\u0148 \u2154 \u00fa\u010dastn\u00edk\u016f online a dodr\u017euj\u00ed protokol, a je nestrann\u00fd a nep\u0159edv\u00eddateln\u00fd, dokud alespo\u0148 \u2153 \u00fa\u010dastn\u00edk\u016f dodr\u017euje protokol. Je d\u016fle\u017eit\u00e9 si v\u0161imnout, \u017ee \u00fato\u010dn\u00edk, kter\u00fd ovl\u00e1d\u00e1 v\u00edce ne\u017e \u2153, ale m\u00e9n\u011b ne\u017e \u2154 \u00fa\u010dastn\u00edk\u016f, m\u016f\u017ee protokol zastavit, ale nem\u016f\u017ee p\u0159edpov\u011bd\u011bt nebo ovlivnit jeho v\u00fdstup.<\/p>\n<p>Prahov\u00e9 podpisy samy o sob\u011b jsou velmi zaj\u00edmav\u00e9 t\u00e9ma. Ve druh\u00e9 \u010d\u00e1sti \u010dl\u00e1nku podrobn\u011b prozkoum\u00e1me, jak funguj\u00ed a jak\u00fdm zp\u016fsobem je t\u0159eba generovat kl\u00ed\u010de \u00fa\u010dastn\u00edk\u016f, aby bylo mo\u017en\u00e9 pou\u017e\u00edvat prahov\u00e9 podpisy jako gener\u00e1tor n\u00e1hodn\u00fdch \u010d\u00edsel.<\/p>\n<h3>Na z\u00e1v\u011br<\/h3>\n<p>Tento \u010dl\u00e1nek je prvn\u00ed v s\u00e9rii technick\u00fdch \u010dl\u00e1nk\u016f na blogu. <noindex><a rel=\"nofollow\" href=\"https:\/\/near.org\">NEAR<\/a><\/noindex>. NEAR je blockchainov\u00fd protokol a platforma pro v\u00fdvoj decentralizovan\u00fdch aplikac\u00ed s d\u016frazem na jednoduchost v\u00fdvoje a jednoduchost pou\u017eit\u00ed pro koncov\u00e9 u\u017eivatele.<\/p>\n<p>K\u00f3d protokolu je otev\u0159en\u00fd, na\u0161e implementace je naps\u00e1na v jazyce Rust, lze ji nal\u00e9zt. <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/nearprotocol\/nearcore\">tady<\/a><\/noindex>.<\/p>\n<p>Pod\u00edvat se, jak vypad\u00e1 v\u00fdvoj na NEAR a vyzkou\u0161et si to v online IDE, lze. <noindex><a rel=\"nofollow\" href=\"https:\/\/examples.near.org\">zde<\/a><\/noindex>.<\/p>\n<p>Sledovat v\u0161echny novinky v ru\u0161tin\u011b lze v <noindex><a rel=\"nofollow\" href=\"https:\/\/t.me\/near_protocol\">skupin\u011b na Telegramu<\/a><\/noindex> a v <noindex><a rel=\"nofollow\" href=\"https:\/\/vk.com\/nearprotocol\">skupin\u011b na VKontakte<\/a><\/noindex>, a anglicky na ofici\u00e1ln\u00edm <noindex><a rel=\"nofollow\" href=\"https:\/\/twitter.com\/NEARProtocol\">Twitteru<\/a><\/noindex>.<\/p>\n<p>Na shledanou!<\/p>\n<p>Zdroj: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/near\/blog\/521090\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440! \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u043f\u0440\u043e \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044e \u043f\u0441\u0435\u0432\u0434\u043e-\u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0445 \u0447\u0438\u0441\u0435\u043b \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0430\u043c\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435 \u0434\u043e\u0432\u0435\u0440\u044f\u044e\u0442 \u0434\u0440\u0443\u0433 \u0434\u0440\u0443\u0433\u0443. \u041a\u0430\u043a \u043c\u044b \u0443\u0432\u0438\u0434\u0438\u043c \u043d\u0438\u0436\u0435, \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u201c\u043f\u043e\u0447\u0442\u0438\u201d \u0445\u043e\u0440\u043e\u0448\u0438\u0439 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e, \u0430 \u0432\u043e\u0442 \u043e\u0447\u0435\u043d\u044c \u0445\u043e\u0440\u043e\u0448\u0438\u0439 \u2013 \u0441\u043b\u043e\u0436\u043d\u043e. \u0417\u0430\u0447\u0435\u043c \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0443\u0436\u043d\u043e \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0435 \u0447\u0438\u0441\u043b\u0430 \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0430\u043c, \u043d\u0435 \u0434\u043e\u0432\u0435\u0440\u044f\u044e\u0449\u0438\u043c \u0434\u0440\u0443\u0433 \u0434\u0440\u0443\u0433\u0443? \u041e\u0434\u043d\u0430 \u0438\u0437 \u043e\u0431\u043b\u0430\u0441\u0442\u0435\u0439 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f &#8212; \u044d\u0442\u043e \u0434\u0435\u0446\u0435\u043d\u0442\u0440\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":95469,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-95468","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.3 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440!\u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u043f\u0440\u043e \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044e \u043f\u0441\u0435\u0432\u0434\u043e-\u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0445 \u0447\u0438\u0441\u0435\u043b \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0430\u043c\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435 \u0434\u043e\u0432\u0435\u0440\u044f\u044e\u0442 \u0434\u0440\u0443\u0433 \u0434\u0440\u0443\u0433\u0443.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/cs\/blog\/administrirovanie\/mozhno-li-generirovat-sluchajnye-chisla-esli-my-ne-doveryaem-drug-drugu-chast-1\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"cs_CZ\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u041c\u043e\u0436\u043d\u043e \u043b\u0438 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0435 \u0447\u0438\u0441\u043b\u0430, \u0435\u0441\u043b\u0438 \u043c\u044b \u043d\u0435 \u0434\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u0434\u0440\u0443\u0433 \u0434\u0440\u0443\u0433\u0443? \u0427\u0430\u0441\u0442\u044c 1 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440!\u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u043f\u0440\u043e \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044e \u043f\u0441\u0435\u0432\u0434\u043e-\u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0445 \u0447\u0438\u0441\u0435\u043b \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0430\u043c\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435 \u0434\u043e\u0432\u0435\u0440\u044f\u044e\u0442 \u0434\u0440\u0443\u0433 \u0434\u0440\u0443\u0433\u0443.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/cs\/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\udd47 Je mo\u017en\u00e9 generovat n\u00e1hodn\u00e1 \u010d\u00edsla, pokud si navz\u00e1jem ned\u016fv\u011b\u0159ujeme? \u010c\u00e1st 1 | ProHoster","description":"Ahoj, Habre! V tomto \u010dl\u00e1nku budu vypr\u00e1v\u011bt o generov\u00e1n\u00ed pseudo-n\u00e1hodn\u00fdch \u010d\u00edsel \u00fa\u010dastn\u00edky, kte\u0159\u00ed si navz\u00e1jem ned\u016fv\u011b\u0159uj\u00ed.","canonical_url":"https:\/\/prohoster.info\/cs\/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":"cs_CZ","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u041c\u043e\u0436\u043d\u043e \u043b\u0438 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0435 \u0447\u0438\u0441\u043b\u0430, \u0435\u0441\u043b\u0438 \u043c\u044b \u043d\u0435 \u0434\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u0434\u0440\u0443\u0433 \u0434\u0440\u0443\u0433\u0443? \u0427\u0430\u0441\u0442\u044c 1 | ProHoster","og:description":"\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440!\u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u043f\u0440\u043e \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044e \u043f\u0441\u0435\u0432\u0434\u043e-\u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0445 \u0447\u0438\u0441\u0435\u043b \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0430\u043c\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435 \u0434\u043e\u0432\u0435\u0440\u044f\u044e\u0442 \u0434\u0440\u0443\u0433 \u0434\u0440\u0443\u0433\u0443.","og:url":"https:\/\/prohoster.info\/cs\/blog\/administrirovanie\/mozhno-li-generirovat-sluchajnye-chisla-esli-my-ne-doveryaem-drug-drugu-chast-1","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-09-29T17:42:29+00:00","article:modified_time":"2020-09-29T17:42:29+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"95468","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 11:05:29","updated":"2022-09-28 01:55:15","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts\/95468","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/comments?post=95468"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts\/95468\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/media\/95469"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/media?parent=95468"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/categories?post=95468"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/tags?post=95468"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}