{"id":33888,"date":"2019-10-31T21:55:15","date_gmt":"2019-10-31T18:55:15","guid":{"rendered":"https:\/\/prohoster.info\/blog\/sluchajnye-chisla-i-detsentralizovannye-seti-implementatsii\/"},"modified":"2019-10-31T21:55:15","modified_gmt":"2019-10-31T18:55:15","slug":"sluchajnye-chisla-i-detsentralizovannye-seti-implementatsii","status":"publish","type":"post","link":"https:\/\/prohoster.info\/cs\/blog\/administrirovanie\/sluchajnye-chisla-i-detsentralizovannye-seti-implementatsii","title":{"rendered":"N\u00e1hodn\u00e1 \u010d\u00edsla a decentralizovan\u00e9 s\u00edt\u011b: implementace","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<h1 id=\"vvedenie\">\u00davod<\/h1>\n<p><\/p>\n<pre><code class=\"plaintext\">function getAbsolutelyRandomNumer() {\n        return 4; \/\/ vrac\u00ed absolutn\u011b n\u00e1hodn\u00e9 \u010d\u00edslo!\n}<\/code><\/pre>\n<p><\/p>\n<p>Stejn\u011b jako v p\u0159\u00edpad\u011b koncepce absolutn\u011b bezpe\u010dn\u00e9ho \u0161ifrov\u00e1n\u00ed z kryptografie se skute\u010dn\u00e9 protokoly \u201ePublicly Verifiable Random Beacon\u201c (d\u00e1le jen PVRB) sna\u017e\u00ed co nejv\u00edce p\u0159ibl\u00ed\u017eit ide\u00e1ln\u00edmu sch\u00e9matu, proto\u017ee v re\u00e1ln\u00fdch s\u00edt\u00edch nen\u00ed \u010dist\u011b v platnosti: je t\u0159eba se dohodnout v\u00fdhradn\u011b na jednom bitu, kolikr\u00e1t se mus\u00ed n\u011bco poslat, a v\u0161echny zpr\u00e1vy mus\u00ed b\u00fdt ide\u00e1ln\u011b rychl\u00e9 a v\u017edy doru\u010deny. Samoz\u0159ejm\u011b, v re\u00e1ln\u00fdch s\u00edt\u00edch tomu tak nen\u00ed. Proto p\u0159i n\u00e1vrhu PVRB pro konkr\u00e9tn\u00ed \u00fakoly v modern\u00edch blockchainech, krom\u011b nemo\u017enosti kontroly z\u00edskan\u00e9ho n\u00e1hodn\u00e9ho \u010d\u00edsla a kryptografick\u00e9 odolnosti, vznik\u00e1 tak\u00e9 mnoho \u010dist\u011b architektonick\u00fdch a technick\u00fdch probl\u00e9m\u016f.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>S\u00e1m blockchain je pro PVRB v podstat\u011b prost\u0159ed\u00edm pro komunikaci, kde zpr\u00e1vy = transakce. To umo\u017e\u0148uje \u010d\u00e1ste\u010dn\u011b se distancovat od s\u00ed\u0165ov\u00fdch probl\u00e9m\u016f, nedoru\u010dov\u00e1n\u00ed zpr\u00e1v, probl\u00e9m\u016f s prost\u0159edn\u00edm softwarem \u2014 v\u0161echny tyto rizika p\u0159eb\u00edr\u00e1 decentralizovan\u00e1 s\u00ed\u0165 a hlavn\u00ed jej\u00ed hodnota pro PVRB \u2014 nemo\u017enost odvolat nebo zkazit ji\u017e odeslanou transakci \u2014 to znemo\u017e\u0148uje \u00fa\u010dastn\u00edk\u016fm odstoupit od \u00fa\u010dasti v protokolu, pokud jen neprovedli \u00fasp\u011b\u0161n\u00fd \u00fatok na konsensus. Takov\u00e1 \u00farove\u0148 bezpe\u010dnosti je p\u0159ijateln\u00e1, proto mus\u00ed b\u00fdt PVRB odoln\u00e9 v\u016f\u010di spiklen\u00edm stejn\u011b jako hlavn\u00ed \u0159et\u011bzec blockchainu. To tak\u00e9 nazna\u010duje, \u017ee PVRB by m\u011bl b\u00fdt sou\u010d\u00e1st\u00ed konsensu, pokud se s\u00ed\u0165 dohodla na hlavn\u00edm \u0159et\u011bzci blok\u016f, a\u0165 u\u017e se z\u00e1rove\u0148 dohodne na jedin\u00e9m \u010destn\u00e9m v\u00fdsledn\u00e9m n\u00e1hodn\u00e9m \u010d\u00edsle. Nebo, PVRB je prost\u011b samostatn\u00fd protokol realizovan\u00fd chytrou smlouvou, funguj\u00edc\u00ed asynchronn\u011b v\u016f\u010di blockchainu a blok\u016fm. Ob\u011b metody maj\u00ed sv\u00e9 v\u00fdhody a nev\u00fdhody a volba mezi nimi je vysoce netrivi\u00e1ln\u00ed. <\/p>\n<p><\/p>\n<h2 id=\"dva-sposoba-implementacii-pvrb\">Dva zp\u016fsoby implementace PVRB<\/h2>\n<p><\/p>\n<p>Podrobn\u011b pop\u00ed\u0161eme dv\u011b varianty implementace PVRB \u2014 standalone verzi, kter\u00e1 funguje pomoc\u00ed smart kontraktu nez\u00e1visl\u00e9ho na blockchainu, a consensus-integrated \u2014 integrovanou do protokolu, podle kter\u00e9ho se s\u00ed\u0165 dohodne na \u0159et\u011bzci blok\u016f a zahrnut\u00fdch transakc\u00edch. Ve v\u0161ech p\u0159\u00edpadech budu m\u00edt na mysli popul\u00e1rn\u00ed blockchainov\u00e9 motoriky: Ethereum, EOS a v\u0161echny podobn\u00e9 podle zp\u016fsobu nasazen\u00ed a zpracov\u00e1n\u00ed smart kontrakt\u016f. <\/p>\n<p><\/p>\n<h3 id=\"standalone-contract\">Standalone contract<\/h3>\n<p><\/p>\n<p>V t\u00e9to variant\u011b je PVRB smart kontrakt, kter\u00fd p\u0159ij\u00edm\u00e1 transakce od random-producer\u016f (RP), zpracov\u00e1v\u00e1 je, kombinuje v\u00fdsledky a na z\u00e1klad\u011b toho dosp\u00edv\u00e1 k n\u011bjak\u00e9 hodnot\u011b, kterou m\u016f\u017ee z\u00edskat jak\u00fdkoli u\u017eivatel z tohoto kontraktu. Tato hodnota nemus\u00ed b\u00fdt p\u0159\u00edmo ulo\u017eena v kontraktu, ale m\u016f\u017ee b\u00fdt reprezentov\u00e1na pouze daty, z nich\u017e lze deterministicky z\u00edskat jednu a pouze jednu hodnotu v\u00fdsledn\u00e9ho rampup. V tomto sch\u00e9matu jsou RP u\u017eivatel\u00e9 blockchainu a \u00fa\u010dastnit se procesu generov\u00e1n\u00ed m\u016f\u017ee kdokoli.<\/p>\n<p><\/p>\n<p>Varianta se standalone-contract je dobr\u00e1:<\/p>\n<p><\/p>\n<ul>\n<li>nositelnost\u00ed (kontrakty lze p\u0159en\u00e1\u0161et z blockchainu na blockchain)<\/li>\n<li>jednoduchost\u00ed implementace a testov\u00e1n\u00ed (kontrakty se dob\u0159e p\u00ed\u0161\u00ed a testuj\u00ed)<\/li>\n<li>pohodlnost\u00ed pro realizaci ekonomick\u00fdch sch\u00e9mat (snadno lze vytvo\u0159it vlastn\u00ed token, jeho\u017e logika slou\u017e\u00ed c\u00edl\u016fm PVRB)<\/li>\n<li>mo\u017enostmi spu\u0161t\u011bn\u00ed v ji\u017e funguj\u00edc\u00edch blockchainech<\/li>\n<\/ul>\n<p><\/p>\n<p>M\u00e1 v\u0161ak i nev\u00fdhody:<\/p>\n<p><\/p>\n<ul>\n<li>siln\u00e1 omezen\u00ed na zdroje p\u0159i v\u00fdpo\u010dtech, objemu transakc\u00ed a \u00falo\u017ei\u0161ti (jednodu\u0161e \u0159e\u010deno cpu\/mem\/io)<\/li>\n<li>omezen\u00ed na operace uvnit\u0159 kontraktu (ne v\u0161echny instrukce jsou dostupn\u00e9, obt\u00ed\u017en\u00e9 p\u0159ipojit extern\u00ed knihovny)<\/li>\n<li>nemo\u017enost organizovat v\u00fdm\u011bnu zpr\u00e1v rychleji, ne\u017e jsou transakce zahrnuty do blockchainu<\/li>\n<\/ul>\n<p><\/p>\n<p>Tato varianta vyhovuje implementaci PVRB, kterou je nutn\u00e9 spustit v ji\u017e existuj\u00edc\u00ed s\u00edti, neobsahuj\u00edc\u00ed slo\u017eitou kryptografii a nevy\u017eaduj\u00edc\u00ed velk\u00e9 mno\u017estv\u00ed interakc\u00ed.<\/p>\n<p><\/p>\n<h3 id=\"consensus-integrated\">Consensus-integrated<\/h3>\n<p><\/p>\n<p>V t\u00e9to variant\u011b je PVRB implementov\u00e1n v k\u00f3du blockchainov\u00e9 uzlu, je zabudov\u00e1n nebo pracuje paraleln\u011b s v\u00fdm\u011bnou zpr\u00e1v mezi uzly blockchainu. V\u00fdsledky protokolu jsou zapisov\u00e1ny p\u0159\u00edmo do vytv\u00e1\u0159en\u00fdch blok\u016f a zpr\u00e1vy protokolu jsou odes\u00edl\u00e1ny p\u0159es p2p s\u00ed\u0165 mezi uzly. Jeliko\u017e protokol produkuje \u010d\u00edsla, kter\u00e1 mus\u00ed b\u00fdt zaps\u00e1na do blok\u016f, s\u00ed\u0165 se mus\u00ed dohodnout na konsensu ohledn\u011b nich. To znamen\u00e1, \u017ee zpr\u00e1vy PVRB, stejn\u011b jako transakce, mus\u00ed b\u00fdt validov\u00e1ny uzly a zahrnuty do blok\u016f, aby jak\u00fdkoli \u00fa\u010dastn\u00edk s\u00edt\u011b mohl ov\u011b\u0159it dodr\u017eov\u00e1n\u00ed protokolu PVRB. To n\u00e1s automaticky vede k z\u0159ejm\u00e9mu \u0159e\u0161en\u00ed \u2013 pokud se s\u00ed\u0165 dohodne na konsensu ohledn\u011b bloku a transakc\u00ed v n\u011bm, PVRB by m\u011bl b\u00fdt sou\u010d\u00e1st\u00ed konsensu, nikoli odd\u011blen\u00fdm protokolem. Jinak m\u016f\u017ee nastat situace, kdy je blok validn\u00ed z hlediska konsensu, ale protokol PVRB nebyl dodr\u017een, a z pohledu PVRB nem\u016f\u017ee b\u00fdt blok p\u0159ijat. Tak\u017ee pokud je vybr\u00e1na varianta \u201econsensus-integrated\u201c, PVRB se st\u00e1v\u00e1 d\u016fle\u017eitou sou\u010d\u00e1st\u00ed konsensu.<\/p>\n<p><\/p>\n<p>P\u0159i popisov\u00e1n\u00ed implementac\u00ed PVRB na \u00farovni konsensu v s\u00edti nelze v \u017e\u00e1dn\u00e9m p\u0159\u00edpad\u011b minout ot\u00e1zky fin\u00e1lnosti. Fin\u00e1lnost je mechanismus pou\u017e\u00edvan\u00fd v deterministick\u00fdch konsensech, kter\u00fd zaji\u0161\u0165uje blok (a \u0159et\u011bzec vedouc\u00ed k n\u011bmu), kter\u00fd je fin\u00e1ln\u00ed a nikdy nebude zru\u0161en, i kdy\u017e se objev\u00ed paraleln\u00ed fork. Nap\u0159\u00edklad Bitcoin tento mechanismus nem\u00e1 \u2013 pokud publikujete \u0159et\u011bzec v\u011bt\u0161\u00ed slo\u017eitosti, nahrad\u00ed jak\u00fdkoli m\u00e9n\u011b slo\u017eit\u00fd, bez ohledu na d\u00e9lku \u0159et\u011bzc\u016f. A v EOS jsou nap\u0159\u00edklad fin\u00e1ln\u00edmi takzvan\u00e9 Last Irreversible Blocks, kter\u00e9 se objevuj\u00ed v pr\u016fm\u011bru ka\u017ed\u00fdch 432 blok\u016f (12*21 + 12*15, pre-vote + pre-commit). Tento proces je v podstat\u011b \u010dek\u00e1n\u00ed na 2\/3 podpis\u016f block-producer\u016f (d\u00e1le BP). P\u0159i vzniku fork\u016f, kter\u00e9 jsou star\u0161\u00ed ne\u017e posledn\u00ed LIB, jsou jednodu\u0161e vy\u0159azeny. Tento mechanismus zaru\u010duje, \u017ee transakce je zahrnuta do blockchainu a nikdy nebude odvol\u00e1na, bez ohledu na zdroje, kter\u00fdmi disponuje \u00fato\u010dn\u00edk. Takt\u00e9\u017e fin\u00e1ln\u00edmi bloky jsou bloky, kter\u00e9 podepsalo 2\/3 BP v Hyperledger, Tendermint a dal\u0161\u00edch konsensech zalo\u017een\u00fdch na pBFT. Protokol pro zaji\u0161t\u011bn\u00ed fin\u00e1lnosti je logick\u00e9 ud\u011blat jako nadstavbu nad konsensem, proto\u017ee m\u016f\u017ee pracovat asynchronn\u011b s v\u00fdrobou a publikac\u00ed blok\u016f. To je dobr\u00e9. <noindex><a rel=\"nofollow\" href=\"https:\/\/arxiv.org\/pdf\/1710.09437.pdf\">neaktu\u00e1ln\u00ed statistika<\/a><\/noindex> o finalit\u011b v Ethereum.<\/p>\n<p><\/p>\n<p>Finalita je extr\u00e9mn\u011b d\u016fle\u017eit\u00e1 pro u\u017eivatele, kte\u0159\u00ed bez n\u00ed mohou b\u00fdt ob\u011bt\u00ed \u00fatoku \u201edouble spend\u201c, kdy BP \u201ezadr\u017euje\u201c bloky a publikuje je pot\u00e9, co s\u00ed\u0165 \u201evid\u011bla\u201c dobrou transakci. Pokud nen\u00ed finalita, pak publikovan\u00fd fork nahrad\u00ed blok s \u201edobrou\u201c transakc\u00ed jin\u00fdm z \u201e\u0161patn\u00e9ho\u201c forku, ve kter\u00e9m jsou prost\u0159edky p\u0159evedeny na adresu \u00fato\u010dn\u00edka. V p\u0159\u00edpad\u011b PVRB se po\u017eadavky na finalitu je\u0161t\u011b zp\u0159\u00eds\u0148uj\u00ed, proto\u017ee konstrukce fork\u016f pro PVRB znamen\u00e1 mo\u017enost pro \u00fato\u010dn\u00edka p\u0159ipravit n\u011bkolik variant n\u00e1hody s c\u00edlem publikovat tu nejv\u00fdhodn\u011bj\u0161\u00ed, a omezit \u010das pro mo\u017en\u00fd \u00fatok \u2014 dobr\u00e9 \u0159e\u0161en\u00ed.<\/p>\n<p><\/p>\n<p>Proto je nejlep\u0161\u00ed variantou zkombinovat PVRB a finalitu do jednoho protokolu \u2014 pak finalizovan\u00fd blok = finalizovan\u00e1 n\u00e1hoda, a to je p\u0159esn\u011b to, co bylo t\u0159eba z\u00edskat. Nyn\u00ed hr\u00e1\u010di obdr\u017e\u00ed garantovanou n\u00e1hodu za N sekund a mohou si b\u00fdt jisti, \u017ee nen\u00ed mo\u017en\u00e9 ji p\u0159evr\u00e1tit nebo hr\u00e1t znovu.<\/p>\n<p><\/p>\n<p>Varianta se souvisej\u00edc\u00edm konsenzem je dobr\u00e1:<\/p>\n<p><\/p>\n<ul>\n<li>s mo\u017enost\u00ed asynchronn\u00ed realizace ve vztahu k v\u00fdrob\u011b blok\u016f \u2014 bloky se vyr\u00e1b\u011bj\u00ed jako obvykle, ale paraleln\u011b s t\u00edm m\u016f\u017ee pracovat protokol PVRB, kter\u00fd generuje n\u00e1hody ne ka\u017ed\u00fd blok<\/li>\n<li>s mo\u017enost\u00ed implementovat i t\u011b\u017ekou kryptografii, bez omezen\u00ed kladen\u00fdch na smart kontrakty<\/li>\n<li>s mo\u017enost\u00ed organizovat v\u00fdm\u011bnu zpr\u00e1v rychleji, ne\u017e jsou transakce zahrnuty do blockchainu, nap\u0159\u00edklad \u010d\u00e1st protokolu m\u016f\u017ee pracovat mezi nody bez \u0161\u00ed\u0159en\u00ed zpr\u00e1v po s\u00edti<\/li>\n<\/ul>\n<p><\/p>\n<p>M\u00e1 v\u0161ak i nev\u00fdhody:<\/p>\n<p><\/p>\n<ul>\n<li>slo\u017eitosti p\u0159i testov\u00e1n\u00ed a v\u00fdvoji \u2014 bude nutn\u00e9 emulovat s\u00ed\u0165ov\u00e9 chyby, chyb\u011bj\u00edc\u00ed nody, hard forky s\u00edt\u011b<\/li>\n<li>chyby v implementaci vy\u017eaduj\u00ed hard fork s\u00edt\u011b<\/li>\n<\/ul>\n<p><\/p>\n<p>Oba zp\u016fsoby implementace PVRB maj\u00ed pr\u00e1vo na \u017eivot, ale implementace ve smart kontraktech v modern\u00edch blockchainech je p\u0159ece jen dost siln\u011b omezena ve v\u00fdpo\u010detn\u00edch zdroj\u00edch, a jak\u00fdkoli p\u0159echod na v\u00e1\u017enou kryptografii je \u010dasto prost\u011b nemo\u017en\u00fd. A v\u00e1\u017en\u00e1 kryptografie bude pot\u0159eba, jak bude d\u00e1le demonstrov\u00e1no. I kdy\u017e, tento probl\u00e9m je zjevn\u011b do\u010dasn\u00e9ho charakteru, v\u00e1\u017en\u00e1 kryptografie v kontraktech je pot\u0159ebn\u00e1 k \u0159e\u0161en\u00ed mnoha \u00fakol\u016f a postupn\u011b se objevuje (nap\u0159\u00edklad syst\u00e9mov\u00e9 kontrakty pro zkSNARKs v Ethereum).<\/p>\n<p><\/p>\n<p>Blockchain, kter\u00fd zaji\u0161\u0165uje transparentn\u00ed a spolehliv\u00fd kan\u00e1l pro v\u00fdm\u011bnu zpr\u00e1v protokolu, to ned\u011bl\u00e1 zadarmo. Ka\u017ed\u00fd decentralizovan\u00fd protokol mus\u00ed zohlednit mo\u017enost Sybil \u00fatoku, jak\u00e9koli akce mohou b\u00fdt provedeny v konsensu s mno\u017estv\u00edm \u00fa\u010dt\u016f, a proto je p\u0159i n\u00e1vrhu nutn\u00e9 vz\u00edt v \u00favahu mo\u017enosti \u00fato\u010dn\u00edk\u016f k vytvo\u0159en\u00ed libovoln\u00e9ho po\u010dtu \u00fa\u010dastn\u00edk\u016f protokolu, kte\u0159\u00ed jednaj\u00ed ve spiknut\u00ed. <\/p>\n<p><\/p>\n<h2 id=\"pvrb-i-peremennye-bloka\">PVRB a prom\u011bnn\u00e9 bloku.<\/h2>\n<p><\/p>\n<p>Nelhal jsem, kdy\u017e jsem \u0159\u00edkal, \u017ee dobr\u00fd PVRB, kter\u00fd byl ov\u011b\u0159en mnoha gamblovac\u00edmi aplikacemi, zat\u00edm nikdo v blockchainech neimplementoval. Odkud tedy poch\u00e1z\u00ed tolik gamblovac\u00edch aplikac\u00ed na Ethereu a EOS? To m\u011b p\u0159ekvapuje stejn\u011b jako v\u00e1s, odkud se v pln\u011b deterministick\u00e9m prost\u0159ed\u00ed vzalo tolik \"odoln\u00fdch\" n\u00e1hodnost\u00ed?<\/p>\n<p><\/p>\n<p>Obl\u00edben\u00fd zp\u016fsob, jak z\u00edsk\u00e1vat n\u00e1hodnost v blockchainu, je vz\u00edt n\u011bjakou \"nep\u0159edv\u00eddatelnou\" informaci z bloku a na jej\u00edm z\u00e1klad\u011b vytvo\u0159it n\u00e1hodnost \u2014 prost\u00fdm hashov\u00e1n\u00edm jedn\u00e9 nebo n\u011bkolika hodnot. Dobr\u00fd \u010dl\u00e1nek o probl\u00e9mech takov\u00fdch sch\u00e9mat. <noindex><a rel=\"nofollow\" href=\"https:\/\/blog.positive.com\/predicting-random-numbers-in-ethereum-smart-contracts-e5358c6b8620\">zde<\/a><\/noindex>. M\u016f\u017eete si vz\u00edt n\u011bjakou z \"nep\u0159edv\u00eddateln\u00fdch\" hodnot v bloku, nap\u0159\u00edklad hash bloku, po\u010det transakc\u00ed, obt\u00ed\u017enost s\u00edt\u011b a dal\u0161\u00ed, p\u0159edem nezn\u00e1m\u00e9 hodnoty. Pak je m\u016f\u017eete hashovat, jednu nebo v\u00edce, a m\u011blo by z toho vyj\u00edt skute\u010dn\u00e9 n\u00e1hodno. M\u016f\u017eete dokonce uv\u00e9st do whitepaperu, \u017ee va\u0161e sch\u00e9ma je \"post-quantum secure\" (proto\u017ee existuj\u00ed kvantov\u011b odoln\u00e9 hash funkce :)).<\/p>\n<p><\/p>\n<p>Ale bohu\u017eel ani post-quantum secure hashov\u00e1n\u00ed nesta\u010d\u00ed. Tajemstv\u00ed spo\u010d\u00edv\u00e1 v po\u017eadavc\u00edch na PVRB, p\u0159ipom\u00edn\u00e1m je z p\u0159edchoz\u00edho \u010dl\u00e1nku:<\/p>\n<p><\/p>\n<ol>\n<li>V\u00fdsledek by m\u011bl m\u00edt prokazateln\u011b rovnom\u011brn\u00e9 rozlo\u017een\u00ed, tedy b\u00fdt zalo\u017een na prokazateln\u011b odoln\u00e9 kryptografii.<\/li>\n<li>Nen\u00ed mo\u017en\u00e9 kontrolovat \u017e\u00e1dn\u00fd bit v\u00fdsledku. V d\u016fsledku toho nelze v\u00fdsledek p\u0159edem p\u0159edpov\u011bd\u011bt.<\/li>\n<li>Nelze sabotovat protokol generace t\u00edm, \u017ee se na n\u011bm ne\u00fa\u010dastn\u00edte, nebo p\u0159et\u00ed\u017een\u00edm s\u00edt\u011b \u00fato\u010dn\u00fdmi zpr\u00e1vami.<\/li>\n<li>V\u0161echno v\u00fd\u0161e uveden\u00e9 mus\u00ed b\u00fdt odoln\u00e9 v\u016f\u010di spol\u010den\u00ed akceptovateln\u00e9ho po\u010dtu ne\u010destn\u00fdch \u00fa\u010dastn\u00edk\u016f protokolu (nap\u0159. 1\/3 \u00fa\u010dastn\u00edk\u016f).<\/li>\n<\/ol>\n<p><\/p>\n<p>V tomto p\u0159\u00edpad\u011b je spln\u011bn pouze po\u017eadavek 1 a 2 nen\u00ed dodr\u017eeno. Hashov\u00e1n\u00edm nep\u0159edv\u00eddateln\u00fdch hodnot z bloku z\u00edsk\u00e1me rovnom\u011brn\u00e9 rozd\u011blen\u00ed a dobr\u00e9 n\u00e1hodn\u00e9 v\u00fdsledky. Ale BP m\u00e1 alespo\u0148 mo\u017enost \u201epublikovat blok, nebo ne\u201c. Tak\u017ee BP m\u016f\u017ee vyb\u00edrat alespo\u0148 ze DVOU variant n\u00e1hody: \u201esv\u00e9\u201c a t\u00e9, kter\u00e1 vznikne, pokud blok ud\u011bl\u00e1 n\u011bkdo jin\u00fd. BP m\u016f\u017ee p\u0159edem \u201enahl\u00e9dnout\u201c, co se stane, pokud publikuje blok, a jednodu\u0161e se rozhodnout, zda to ud\u011blat, nebo ne. Takto, kdy\u017e nap\u0159\u00edklad hraje v \u201esud-lich\u00fd\u201c nebo \u201e\u010derven\u00e9\/\u010dern\u00e9\u201c na rulet\u011b, m\u016f\u017ee publikovat blok pouze, pokud vid\u00ed v\u00fdhru. To tak\u00e9 \u010din\u00ed neefektivn\u00ed strategii pou\u017e\u00edv\u00e1n\u00ed nap\u0159\u00edklad hashe bloku \u201ez budoucnosti\u201c. V tomto p\u0159\u00edpad\u011b se \u0159\u00edk\u00e1, \u017ee \u201ebude pou\u017eit n\u00e1hodn\u00fd v\u00fdsledek, kter\u00fd vznik\u00e1 hashov\u00e1n\u00edm aktu\u00e1ln\u00edch dat a hashe budouc\u00edho bloku na v\u00fd\u0161ce, nap\u0159\u00edklad N + 42, kde N je aktu\u00e1ln\u00ed v\u00fd\u0161ka bloku. To m\u00edrn\u011b posiluje sch\u00e9ma, ale st\u00e1le umo\u017e\u0148uje BP, i kdy\u017e v budoucnosti, vyb\u00edrat, zda blok zadr\u017eet nebo publikovat.<\/p>\n<p><\/p>\n<p>Software BP se v tomto p\u0159\u00edpad\u011b zhor\u0161uje, ale ne p\u0159\u00edli\u0161. P\u0159i validaci a za\u0159azen\u00ed transakce do bloku prob\u00edh\u00e1 rychl\u00e1 kontrola, zda bude v\u00fdhra, a mo\u017en\u00e1 v\u00fdb\u011br jednoho parametr\u016f transakce, aby se dos\u00e1hlo vysok\u00e9 pravd\u011bpodobnosti v\u00fdhry. P\u0159itom je t\u00e9m\u011b\u0159 nemo\u017en\u00e9 chytit inteligentn\u00edho BP p\u0159i podobn\u00fdch manipulac\u00edch, poka\u017ed\u00e9 lze pou\u017e\u00edt nov\u00e9 adresy a vyhr\u00e1vat kousek po kousku, ani\u017e by se vzbudily podez\u0159en\u00ed.<\/p>\n<p><\/p>\n<p>Tak\u017ee zp\u016fsoby vyu\u017e\u00edvaj\u00edc\u00ed informace z bloku nejsou vhodn\u00e9 jako univerz\u00e1ln\u00ed implementace PVRB. V omezen\u00e9m variant\u011b, s omezen\u00edmi na velikosti s\u00e1zek, omezen\u00edmi po\u010dtu hr\u00e1\u010d\u016f a\/nebo KYC registrac\u00ed (aby se jednomu hr\u00e1\u010di nedalo mo\u017enost pou\u017e\u00edvat v\u00edce adres), tyto sch\u00e9mata mohou fungovat pro mal\u00e9 hry, ale ne v\u00edc.<\/p>\n<p><\/p>\n<h2 id=\"pvrb-i-commit-reveal\">PVRB a commit-reveal.<\/h2>\n<p><\/p>\n<p>Dob\u0159e, d\u00edky hashov\u00e1n\u00ed a alespo\u0148 relativn\u00ed nep\u0159edv\u00eddatelnosti hashe bloku a dal\u0161\u00edch prom\u011bnn\u00fdch. Pokud vy\u0159e\u0161\u00edme probl\u00e9m front-runningu t\u011b\u017ea\u0159\u016f, m\u011blo by to vy\u00fastit v n\u011bco utilitn\u011bj\u0161\u00edho. Poj\u010fme p\u0159idat do tohoto sch\u00e9matu u\u017eivatele \u2013 a\u0165 tak\u00e9 ovliv\u0148uj\u00ed n\u00e1hodu: ka\u017ed\u00fd pracovn\u00edk technick\u00e9 podpory v\u00e1m \u0159ekne, \u017ee to nejv\u00edce n\u00e1hodn\u00e9 v IT syst\u00e9mech jsou \u010dinnosti u\u017eivatel\u016f \ud83d\ude42<\/p>\n<p><\/p>\n<p>Naivn\u00ed sch\u00e9ma, kdy u\u017eivatel\u00e9 jen pos\u00edlaj\u00ed n\u00e1hodn\u00e1 \u010d\u00edsla, a v\u00fdsledek se po\u010d\u00edt\u00e1 nap\u0159\u00edklad jako hash jejich sou\u010dtu, nen\u00ed vhodn\u00e9. V tomto p\u0159\u00edpad\u011b m\u016f\u017ee posledn\u00ed, kdo hraje, kontrolovat, jak\u00fd v\u00fdsledek bude, v\u00fdb\u011brem vlastn\u00edho n\u00e1hodn\u00e9ho \u010d\u00edsla. Proto se pou\u017e\u00edv\u00e1 velmi \u0161iroce roz\u0161\u00ed\u0159en\u00fd vzor commit-reveal. \u00da\u010dastn\u00edci nejprve pos\u00edlaj\u00ed hashe sv\u00fdch n\u00e1hodn\u00fdch \u010d\u00edsel (commity), a pot\u00e9 odhaluj\u00ed sama n\u00e1hodn\u00e1 \u010d\u00edsla (revealy). F\u00e1ze \u201ereveal\u201c za\u010d\u00edn\u00e1 a\u017e pot\u00e9, co byly shrom\u00e1\u017ed\u011bny pot\u0159ebn\u00e9 commity, tak\u017ee \u00fa\u010dastn\u00edci mohou poslat p\u0159esn\u011b to n\u00e1hodn\u00e9 \u010d\u00edslo, jeho\u017e hash poslali d\u0159\u00edve. Te\u010f spoj\u00edme v\u0161echno toto s parametry bloku, ide\u00e1ln\u011b vzat\u00e9ho z budoucnosti (n\u00e1hodn\u00e9 \u010d\u00edslo bude mo\u017en\u00e9 poznat a\u017e v jednom z budouc\u00edch blok\u016f), a voil\u00e0 \u2014 n\u00e1hodn\u00e9 \u010d\u00edslo je p\u0159ipraven\u00e9! Nyn\u00ed ka\u017ed\u00fd hr\u00e1\u010d ovliv\u0148uje v\u00fdslednou n\u00e1hodnost a m\u016f\u017ee \u201eporazit\u201c zlovoln\u00fd BP t\u00edm, \u017ee zakryje jeho n\u00e1hodnost svou, p\u0159edem nezn\u00e1mou, n\u00e1hodnost\u00ed... Je\u0161t\u011b m\u016f\u017eeme p\u0159idat ochranu proti sabotov\u00e1n\u00ed protokolu t\u00edm, \u017ee na f\u00e1zi reveal prost\u011b po\u017e\u00e1d\u00e1me, aby p\u0159i commit-u byla k transakci p\u0159ilo\u017eena ur\u010dit\u00e1 \u010d\u00e1stka \u2014 zaji\u0161\u0165ovac\u00ed depozit, kter\u00fd se vr\u00e1t\u00ed pouze p\u0159i procedu\u0159e reveal. V tomto p\u0159\u00edpad\u011b nen\u00ed v\u00fdhodn\u00e9 prov\u00e1d\u011bt commit a neprov\u00e1d\u011bt reveal.<\/p>\n<p><\/p>\n<p>Byl to dobr\u00fd pokus a takov\u00e9 sch\u00e9my existuj\u00ed i v hern\u00edch DApp, ale bohu\u017eel, to op\u011bt nesta\u010d\u00ed. Nyn\u00ed m\u016f\u017ee na v\u00fdsledek m\u00edt vliv nejen t\u011b\u017ea\u0159, ale i kter\u00fdkoli \u00fa\u010dastn\u00edk protokolu. Samotnou hodnotu je st\u00e1le mo\u017en\u00e9 kontrolovat, s men\u0161\u00ed prom\u011bnlivost\u00ed a za pen\u00edze, ale, jak v p\u0159\u00edpad\u011b t\u011b\u017ea\u0159e, pokud jsou v\u00fdsledky losov\u00e1n\u00ed cenn\u011bj\u0161\u00ed ne\u017e poplatek za \u00fa\u010dast na protokolu PVRB, m\u016f\u017ee random-producer (RP) rozhodnout, zda prov\u00e9st reveal a st\u00e1le m\u016f\u017ee vyb\u00edrat z minim\u00e1ln\u011b dvou variant n\u00e1hodnosti.<br \/>\nZato se objevila mo\u017enost trestat ty, kte\u0159\u00ed provedou commit a neprovedou reveal, a tento vzor se je\u0161t\u011b hod\u00ed. Jeho jednoduchost je v\u00e1\u017enou v\u00fdhodou \u2014 slo\u017eit\u011bj\u0161\u00ed protokoly vy\u017eaduj\u00ed mnohem siln\u011bj\u0161\u00ed v\u00fdpo\u010dty.<\/p>\n<p><\/p>\n<h2 id=\"pvrb-i-determinirovannye-podpisi\">PVRB a deterministick\u00e9 podpisy.<\/h2>\n<p><\/p>\n<p>Existuje dal\u0161\u00ed zp\u016fsob, jak donutit RP poskytnout pseudon\u00e1hodn\u00e9 \u010d\u00edslo, na kter\u00e9 nem\u016f\u017ee m\u00edt vliv, pokud mu poskytneme \u201eprototyp\u201c \u2014 to je determinovan\u00fd podpis. Takov\u00fdm podpisem je nap\u0159\u00edklad RSA, nikoli ECS. Pokud m\u00e1 RP p\u00e1r kl\u00ed\u010d\u016f: RSA a ECC, a podepisuje svou priv\u00e1tn\u00ed kl\u00ed\u010dem ur\u010ditou hodnotu, pak v p\u0159\u00edpad\u011b RSA z\u00edsk\u00e1 JEDEN A JEDIN\u00dd podpis, zat\u00edmco v p\u0159\u00edpad\u011b ECS m\u016f\u017ee vygenerovat libovoln\u00fd po\u010det r\u016fzn\u00fdch platn\u00fdch podpis\u016f. To se d\u011bje proto, \u017ee p\u0159i vytv\u00e1\u0159en\u00ed ECS podpisu se pou\u017e\u00edv\u00e1 n\u00e1hodn\u00e9 \u010d\u00edslo, kter\u00e9 si podepisuj\u00edc\u00ed vyb\u00edr\u00e1, a to m\u016f\u017ee b\u00fdt vybr\u00e1no jakkoli, co\u017e podepisuj\u00edc\u00edmu d\u00e1v\u00e1 mo\u017enost vybrat si jeden z n\u011bkolika podpis\u016f. V p\u0159\u00edpad\u011b RSA: \u201ejedna vstupn\u00ed hodnota\u201c + \u201ejeden p\u00e1r kl\u00ed\u010d\u016f\u201c = \u201ejeden podpis\u201c. P\u0159edpov\u011bd\u011bt, jak\u00fd podpis obdr\u017e\u00ed jin\u00fd RP, nelze, proto m\u016f\u017ee b\u00fdt PVRB s determinovan\u00fdmi podpisy uspo\u0159\u00e1d\u00e1no kombinac\u00ed RSA podpis\u016f n\u011bkolika \u00fa\u010dastn\u00edk\u016f, kte\u0159\u00ed podepsali stejnou hodnotu. Nap\u0159\u00edklad \u2014 p\u0159edchoz\u00ed n\u00e1hodn\u00e9 \u010d\u00edslo. V takov\u00e9m sch\u00e9matu se u\u0161et\u0159\u00ed spousta zdroj\u016f, proto\u017ee podpisy jsou z\u00e1rove\u0148 potvrzen\u00edm spr\u00e1vn\u00e9ho chov\u00e1n\u00ed podle protokolu a zdrojem n\u00e1hody.<\/p>\n<p><\/p>\n<p>Nicm\u00e9n\u011b, i s determinovan\u00fdmi podpisy je sch\u00e9ma st\u00e1le zraniteln\u00e9 v\u016f\u010di probl\u00e9mu \u201eposledn\u00edho akt\u00e9ra\u201c. Posledn\u00ed \u00fa\u010dastn\u00edk st\u00e1le m\u016f\u017ee rozhodovat, zda publikovat sv\u016fj podpis nebo ne, \u010d\u00edm\u017e kontroluje v\u00fdsledek. Sch\u00e9ma je mo\u017en\u00e9 p\u0159epracovat, p\u0159id\u00e1vat do n\u011bj hash blok\u016f, prov\u00e1d\u011bt kola, aby nebylo mo\u017en\u00e9 p\u0159edem p\u0159edpov\u011bd\u011bt v\u00fdsledek, ale v\u0161echny tyto techniky, i s ohledem na mnoho vylep\u0161en\u00ed, st\u00e1le ne\u0159e\u0161\u00ed probl\u00e9m vlivu jednoho \u00fa\u010dastn\u00edka na kolektivn\u00ed v\u00fdsledek v ned\u016fv\u011bryhodn\u00e9m prost\u0159ed\u00ed a mohou fungovat pouze za podm\u00ednek ekonomick\u00fdch a \u010dasov\u00fdch omezen\u00ed. Krom\u011b toho je velikost kl\u00ed\u010d\u016f RSA (1024 a 2048 bit\u016f) pom\u011brn\u011b velk\u00e1, a velikost pro blockchainov\u00e9 transakce je extr\u00e9mn\u011b d\u016fle\u017eit\u00fd parametr. Z\u0159ejm\u011b probl\u00e9m jednodu\u0161e vy\u0159e\u0161it nelze, jdeme d\u00e1l.<\/p>\n<p><\/p>\n<h2 id=\"pvrb-i-secret-sharing-shemy\">PVRB a sch\u00e9mata sd\u00edlen\u00ed tajemstv\u00ed<\/h2>\n<p><\/p>\n<p>V kryptografii existuj\u00ed sch\u00e9mata, kter\u00e1 umo\u017e\u0148uj\u00ed s\u00edti dohodnout se na jedn\u00e9 a jedin\u00e9 hodnot\u011b PVRB, p\u0159i\u010dem\u017e jsou tato sch\u00e9mata odoln\u00e1 v\u016f\u010di jak\u00fdmkoli zlov\u011bstn\u00fdm \u010din\u016fm n\u011bkter\u00fdch \u00fa\u010dastn\u00edk\u016f. Jeden z u\u017eite\u010dn\u00fdch protokol\u016f, se kter\u00fdmi se vyplat\u00ed sezn\u00e1mit, je sch\u00e9ma d\u011blen\u00ed tajemstv\u00ed Shamir. To slou\u017e\u00ed k rozd\u011blen\u00ed tajemstv\u00ed (nap\u0159\u00edklad tajn\u00e9ho kl\u00ed\u010de) na n\u011bkolik \u010d\u00e1st\u00ed, kter\u00e9 se rozdaj\u00ed N \u00fa\u010dastn\u00edk\u016fm. Tajemstv\u00ed se rozd\u011bluje tak, \u017ee k jeho obnoven\u00ed sta\u010d\u00ed M \u010d\u00e1st\u00ed z N, p\u0159i\u010dem\u017e to mohou b\u00fdt jak\u00e9koli M \u010d\u00e1sti. Pokud bychom to zjednodu\u0161ili, \u00fa\u010dastn\u00edci si vym\u011b\u0148uj\u00ed body na grafu nezn\u00e1m\u00e9 funkce, a po z\u00edsk\u00e1n\u00ed M bod\u016f m\u016f\u017ee b\u00fdt cel\u00e1 funkce obnovena.<br \/>\nDobr\u00e9 vysv\u011btlen\u00ed je uvedeno v <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Shamir%27s_Secret_Sharing\">wiki<\/a><\/noindex> a hr\u00e1t si s n\u00edm prakticky, aby si cel\u00e9 protokol l\u00e9pe zapamatovali, je u\u017eite\u010dn\u00e9 na <noindex><a rel=\"nofollow\" href=\"http:\/\/point-at-infinity.org\/ssss\/demo.html\">demo<\/a><\/noindex> str\u00e1nce.<\/p>\n<p><\/p>\n<p>Kdyby byla sch\u00e9ma FSSS (Fiat-Shamir Secret Sharing) pou\u017eita v \u010dist\u00e9 podob\u011b \u2014 byl by to nezni\u010diteln\u00fd PVRB. V nejjednodu\u0161\u0161\u00edm proveden\u00ed m\u016f\u017ee protokol vypadat takto:<\/p>\n<p><\/p>\n<ul>\n<li>Ka\u017ed\u00fd \u00fa\u010dastn\u00edk vygeneruje sv\u016fj vlastn\u00ed random a rozd\u00e1 pod\u00edly od n\u011bj ostatn\u00edm \u00fa\u010dastn\u00edk\u016fm.<\/li>\n<li>Ka\u017ed\u00fd \u00fa\u010dastn\u00edk odhal\u00ed sv\u00e9 \u010d\u00e1sti tajemstv\u00ed ostatn\u00edch \u00fa\u010dastn\u00edk\u016f.<\/li>\n<li>Pokud m\u00e1 \u00fa\u010dastn\u00edk v\u00edce ne\u017e M pod\u00edl\u016f, lze vypo\u010d\u00edtat \u010d\u00edslo tohoto \u00fa\u010dastn\u00edka, a to bude jedin\u00e9, bez ohledu na soubor odhalen\u00fdch \u00fa\u010dastn\u00edk\u016f.<\/li>\n<li>Kombinace odhalen\u00fdch random\u016f je po\u017eadovan\u00fd PVRB.<\/li>\n<\/ul>\n<p><\/p>\n<p>Zde ji\u017e jednotliv\u00fd \u00fa\u010dastn\u00edk neovliv\u0148uje v\u00fdsledky protokolu, krom\u011b p\u0159\u00edpad\u016f, kdy od n\u011bj z\u00e1vis\u00ed dosa\u017een\u00ed thresholdu odhalen\u00ed randomu. Proto tento protokol, p\u0159i \u043d\u0430\u043b\u0438\u0447\u0438\u0438 pot\u0159ebn\u00e9ho pod\u00edlu pracuj\u00edc\u00edch podle protokolu a dostupn\u00fdch RP, funguje tak, \u017ee spl\u0148uje po\u017eadavky na kryptografickou odolnost a je odoln\u00fd v\u016f\u010di probl\u00e9mu \"last actor\".<\/p>\n<p><\/p>\n<p>To by mohl b\u00fdt ide\u00e1ln\u00ed p\u0159\u00edpad, toto sch\u00e9ma PVRB zalo\u017een\u00e9 na d\u011blen\u00ed tajemstv\u00ed Fiata-Shamira je pops\u00e1no nap\u0159\u00edklad v <noindex><a rel=\"nofollow\" href=\"https:\/\/eprint.iacr.org\/2017\/216.pdf\">tato<\/a><\/noindex> \u010dl\u00e1nku. Ale, jak bylo \u0159e\u010deno v\u00fd\u0161e, pokud se pokus\u00edme aplikovat ho p\u0159\u00edmo v blockchainu, objevuj\u00ed se technick\u00e1 omezen\u00ed. Zde je p\u0159\u00edklad testovac\u00ed implementace protokolu ve smart kontraktu EOS a jeho nejd\u016fle\u017eit\u011bj\u0161\u00ed \u010d\u00e1st \u2014 kontrola zve\u0159ejn\u011bn\u00e9ho pod\u00edlu \u00fa\u010dastn\u00edka: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/mixbytes\/eoscraper\/blob\/master\/Proof.hh#L23\">k\u00f3d<\/a><\/noindex>. Z k\u00f3du je patrn\u00e9, \u017ee validace proofu vy\u017eaduje n\u011bkolik skal\u00e1rn\u00edch n\u00e1soben\u00ed a \u010d\u00edsla jsou velmi velk\u00e1. Je t\u0159eba si uv\u011bdomit, \u017ee v blockchainu prob\u00edh\u00e1 verifikace ve chv\u00edli, kdy block-producer zpracov\u00e1v\u00e1 transakci, a jak\u00fdkoliv \u00fa\u010dastn\u00edk by m\u011bl b\u00fdt schopen snadno ov\u011b\u0159it spr\u00e1vnost protokolu, proto jsou po\u017eadavky na rychlost funkce verify velmi p\u0159\u00edsn\u00e9. Tento variant se uk\u00e1zal jako nefunk\u010dn\u00ed, proto\u017ee verifikace se neve\u0161la do \u010dasov\u00e9ho limitu na transakci (0,5 sekundy).<\/p>\n<p><\/p>\n<p>Efektivita verifikace je jedn\u00edm z nejd\u016fle\u017eit\u011bj\u0161\u00edch po\u017eadavk\u016f na pou\u017eit\u00ed vlastn\u011b jak\u00fdchkoliv pokro\u010dil\u00fdch kryptografick\u00fdch sch\u00e9mat v blockchainu. Vytv\u00e1\u0159en\u00ed proof\u016f, p\u0159\u00edprava zpr\u00e1v \u2014 tyto postupy lze prov\u00e1d\u011bt off-chain na vysoce v\u00fdkonn\u00fdch po\u010d\u00edta\u010d\u00edch, ale verifikaci nelze obej\u00edt \u2014 to je dal\u0161\u00ed d\u016fle\u017eit\u00fd po\u017eadavek na PVRB. <\/p>\n<p><\/p>\n<h2 id=\"pvrb-i-threshold-signatures\">PVRB a threshold podpisy<\/h2>\n<p><\/p>\n<p>Sezn\u00e1men\u00edm se s sch\u00e9matem secret sharing jsme otev\u0159eli celou t\u0159\u00eddu protokol\u016f, spojovan\u00fdch kl\u00ed\u010dov\u00fdm slovem 'threshold'. Kdy\u017e je pro odhalen\u00ed ur\u010dit\u00e9 informace pot\u0159eba \u00fa\u010dast M \u010destn\u00fdch \u00fa\u010dastn\u00edk\u016f z N, a soubor \u010destn\u00fdch \u00fa\u010dastn\u00edk\u016f m\u016f\u017ee b\u00fdt libovolnou podmno\u017einou N, mluv\u00edme o 'threshold' sch\u00e9matech. Pr\u00e1v\u011b ta umo\u017e\u0148uj\u00ed vy\u0159e\u0161it probl\u00e9m 'last actor', nyn\u00ed pokud \u00fato\u010dn\u00edk neodhal\u00ed svou \u010d\u00e1st tajemstv\u00ed, za n\u011bj to ud\u011bl\u00e1 jin\u00fd \u010destn\u00fd \u00fa\u010dastn\u00edk. Tato sch\u00e9mata umo\u017e\u0148uj\u00ed dohodnout se na jedn\u00e9 a pouze jedn\u00e9 hodnot\u011b, i p\u0159i sabotov\u00e1n\u00ed protokolu \u010d\u00e1st\u00ed \u00fa\u010dastn\u00edk\u016f. <\/p>\n<p><\/p>\n<p>Kombinace deterministick\u00fdch podpis\u016f a threshold sch\u00e9mat umo\u017enila vyvinout velmi pohodln\u00e9 a slibn\u00e9 sch\u00e9ma pro realizaci PVRB \u2014 to jsou deterministick\u00e9 threshold podpisy. Tady <noindex><a rel=\"nofollow\" href=\"https:\/\/eprint.iacr.org\/2002\/081.pdf\">neaktu\u00e1ln\u00ed statistika<\/a><\/noindex> o r\u016fzn\u00fdch aplikac\u00edch threshold podpis\u016f, a tady je je\u0161t\u011b jeden dobr\u00fd <noindex><a rel=\"nofollow\" href=\"https:\/\/blog.dash.org\/secret-sharing-and-threshold-signatures-with-bls-954d1587b5f\">longread<\/a><\/noindex> od Dash. <\/p>\n<p><\/p>\n<p>V posledn\u00edm \u010dl\u00e1nku jsou pops\u00e1ny BLS podpisy (BLS se rozeb\u00edr\u00e1 jako Boneh-Lynn-Shacham, <noindex><a rel=\"nofollow\" href=\"https:\/\/www.iacr.org\/archive\/asiacrypt2001\/22480516.pdf\">tady je<\/a><\/noindex> \u010dl\u00e1nek), kter\u00e9 maj\u00ed velmi d\u016fle\u017eitou a extr\u00e9mn\u011b pohodlnou vlastnost pro program\u00e1tory \u2013 ve\u0159ejn\u00e9, tajn\u00e9, ve\u0159ejn\u00e9 kl\u00ed\u010de a BLS podpisy mohou b\u00fdt kombinov\u00e1ny navz\u00e1jem pomoc\u00ed jednoduch\u00fdch matematick\u00fdch operac\u00ed, p\u0159i\u010dem\u017e jejich kombinace z\u016fst\u00e1vaj\u00ed platn\u00fdmi kl\u00ed\u010di a podpisy, co\u017e umo\u017e\u0148uje snadno agregovat mnoho podpis\u016f do jedn\u00e9 a mnoho ve\u0159ejn\u00fdch kl\u00ed\u010d\u016f do jednoho. Maj\u00ed tak\u00e9 deterministickou povahu a na stejn\u00fdch vstupn\u00edch datech vracej\u00ed stejn\u00fd v\u00fdsledek. D\u00edky t\u00e9to vlastnosti jsou kombinace BLS podpis\u016f samy o sob\u011b platn\u00fdmi kl\u00ed\u010di, co\u017e umo\u017e\u0148uje realizaci varianty, p\u0159i kter\u00e9 M z N \u00fa\u010dastn\u00edk\u016f produkuje pr\u00e1v\u011b jeden jedin\u00fd podpis, kter\u00fd je determinov\u00e1n, ve\u0159ejn\u011b ov\u011b\u0159iteln\u00fd a nep\u0159edv\u00eddateln\u00fd, dokud nen\u00ed odhalen M-t\u00fdm \u00fa\u010dastn\u00edkem.<\/p>\n<p><\/p>\n<p>V sch\u00e9matu s threshold BLS podpisy ka\u017ed\u00fd \u00fa\u010dastn\u00edk podpisuje pomoc\u00ed BLS n\u011bco (nap\u0159\u00edklad p\u0159edchoz\u00ed n\u00e1hodu), a celkov\u00fd threshold-podpis je po\u017eadovan\u00e1 n\u00e1hoda. Kryptografick\u00e9 vlastnosti BLS podpis\u016f spl\u0148uj\u00ed po\u017eadavky na kvalitu n\u00e1hody, threshold-\u010d\u00e1st chr\u00e1n\u00ed proti \u201elast-actor\u201c, a jedine\u010dn\u00e1 kombinovatelnost kl\u00ed\u010d\u016f umo\u017e\u0148uje realizovat dal\u0161\u00ed zaj\u00edmav\u00e9 algoritmy, kter\u00e9 umo\u017e\u0148uj\u00ed nap\u0159\u00edklad efektivn\u011b agregovat zpr\u00e1vy protokolu.<\/p>\n<p><\/p>\n<p>Tak\u017ee, pokud budujete PVRB ve sv\u00e9 blockchainu, pravd\u011bpodobn\u011b p\u0159ijdete ke sch\u00e9matu BLS threshold podpis\u016f, kter\u00e9 ji\u017e pou\u017e\u00edv\u00e1 n\u011bkolik projekt\u016f. Nap\u0159\u00edklad DFinity (<noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/dfinity\/random-beacon\">zde<\/a><\/noindex> benchmark, kter\u00fd implementuje sch\u00e9ma, a <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/dfinity\/vss\/blob\/master\/docs\/index.md\">tady<\/a><\/noindex> p\u0159\u00edklad implementace verifiable secret sharing), nebo Keep.network (tady je jejich random beacon <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/keep-network\/random-beacon-yellowpaper\">yellowpaper<\/a><\/noindex>, a to je <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/keep-network\/random-beacon-box\">p\u0159\u00edklad<\/a><\/noindex> smart kontraktu, kter\u00fd obsluhuje protokol).<\/p>\n<p><\/p>\n<h2 id=\"implementaciya-pvrb\">Implementace PVRB<\/h2>\n<p><\/p>\n<p>Bohu\u017eel dosud nevid\u00edme p\u0159ipraven\u00fd, v blockchainech PVRB realizovan\u00fd protokol, kter\u00fd by prok\u00e1zal svou bezpe\u010dnost a odolnost. I kdy\u017e jsou samotn\u00e9 protokoly p\u0159ipraven\u00e9, technicky je jejich aplikace na st\u00e1vaj\u00edc\u00ed \u0159e\u0161en\u00ed slo\u017eit\u00e1. Pro centralizovan\u00e9 syst\u00e9my PVRB ned\u00e1v\u00e1 smysl, zat\u00edmco decentralizovan\u00e9 jsou p\u0159\u00edsn\u011b omezen\u00e9 ve v\u0161ech v\u00fdpo\u010detn\u00edch zdroj\u00edch: CPU, pam\u011bti, \u00falo\u017ei\u0161ti, I\/O. N\u00e1vrh PVRB spo\u010d\u00edv\u00e1 v kombinaci r\u016fzn\u00fdch protokol\u016f, abychom p\u0159ece jen vytvo\u0159ili n\u011bco, co spln\u00ed v\u0161echny po\u017eadavky alespo\u0148 pro n\u011bjak\u00fd \u017eivotaschopn\u00fd blockchain. Jeden protokol efektivn\u011bji po\u010d\u00edt\u00e1, ale vy\u017eaduje v\u00edce zpr\u00e1v mezi RP, zat\u00edmco jin\u00fd vy\u017eaduje velmi m\u00e1lo zpr\u00e1v, ale vytvo\u0159en\u00ed proof m\u016f\u017ee b\u00fdt \u00falohou na des\u00edtky minut, nebo dokonce hodin.<\/p>\n<p><\/p>\n<p>Vyjmenuji faktory, kter\u00e9 mus\u00edte zohlednit p\u0159i v\u00fdb\u011bru kvalitn\u00edho PVRB:<\/p>\n<p><\/p>\n<ul>\n<li><em>Kryptografick\u00e1 odolnost<\/em>. Va\u0161e PVRB by m\u011blo b\u00fdt naprosto neovlivniteln\u00e9, bez mo\u017enosti kontroly jedin\u00e9ho bitu. V n\u011bkter\u00fdch sch\u00e9matech tomu tak nen\u00ed, proto si pozv\u011bte kryptografa.<\/li>\n<li><em>Probl\u00e9m \u201eposledn\u00edho akt\u00e9ra\u201c<\/em>. Va\u0161e PVRB by m\u011blo b\u00fdt odoln\u00e9 v\u016f\u010di \u00fatok\u016fm, kdy \u00fato\u010dn\u00edk, kontroluj\u00edc\u00ed jednoho nebo v\u00edce RP, m\u016f\u017ee vyb\u00edrat mezi dv\u011bma variantami v\u00fdsledku.<\/li>\n<li><em>Probl\u00e9m sabot\u00e1\u017ee protokolu<\/em>. Va\u0161e PVRB by m\u011blo b\u00fdt odoln\u00e9 v\u016f\u010di \u00fatok\u016fm, kdy \u00fato\u010dn\u00edk, kontroluj\u00edc\u00ed jednoho nebo v\u00edce RP, rozhodne, zda bude v\u00fdb\u011br n\u00e1hodn\u00fd nebo ne, a m\u016f\u017ee garantovan\u011b, nebo s danou pravd\u011bpodobnost\u00ed na to m\u00edt vliv.<\/li>\n<li><em>Probl\u00e9m po\u010dtu zpr\u00e1v<\/em>. Va\u0161e RP by m\u011bly pos\u00edlat do blockchainu minimum zpr\u00e1v a maxim\u00e1ln\u011b se vyhnout synchronn\u00edm akc\u00edm typu \u201eposlal jsem n\u011bjak\u00e9 informace, \u010dek\u00e1m na odpov\u011b\u010f od konkr\u00e9tn\u00edho \u00fa\u010dastn\u00edka\u201c. V p2p s\u00edt\u00edch, zejm\u00e9na geograficky rozpt\u00fdlen\u00fdch, nelze po\u010d\u00edtat s rychlou odpov\u011bd\u00ed.<\/li>\n<li><em>Probl\u00e9m v\u00fdpo\u010detn\u00ed slo\u017eitosti<\/em>. Ov\u011b\u0159en\u00ed jak\u00e9koli f\u00e1ze PVRB on-chain by m\u011blo b\u00fdt extr\u00e9mn\u011b jednoduch\u00e9, proto\u017ee to vykon\u00e1vaj\u00ed v\u0161echny pln\u00e9 klienty s\u00edt\u011b. Pokud je realizace provedena pomoc\u00ed smart kontraktu, mus\u00ed b\u00fdt po\u017eadavky na rychlost velmi p\u0159\u00edsn\u00e9.<\/li>\n<li><em>Probl\u00e9m dostupnosti a \u017eivotnosti<\/em>. Va\u0161e PVRB by m\u011blo usilovat o to, aby bylo odoln\u00e9 v\u016f\u010di situac\u00edm, kdy \u010d\u00e1st s\u00edt\u011b byla n\u011bjakou dobu nedostupn\u00e1 a \u010d\u00e1st RP prost\u011b p\u0159estala fungovat.<\/li>\n<li><em>Probl\u00e9m d\u016fv\u011bryhodn\u00e9ho nastaven\u00ed a po\u010d\u00e1te\u010dn\u00edho rozd\u011blen\u00ed kl\u00ed\u010d\u016f<\/em>. Pokud v\u00e1\u0161 PVRB pou\u017e\u00edv\u00e1 prim\u00e1rn\u00ed setup protokolu, je to zcela jin\u00fd velk\u00fd a v\u00e1\u017en\u00fd p\u0159\u00edb\u011bh. Tady <noindex><a rel=\"nofollow\" href=\"https:\/\/z.cash\/ru\/blog\/the-design-of-the-ceremony\/\">p\u0159\u00edklad<\/a><\/noindex>. Pokud mus\u00ed \u00fa\u010dastn\u00edci p\u0159ed za\u010d\u00e1tkem protokolu ozn\u00e1mit sv\u00e9 kl\u00ed\u010de, je to tak\u00e9 probl\u00e9m, pokud se slo\u017een\u00ed \u00fa\u010dastn\u00edk\u016f m\u011bn\u00ed.<\/li>\n<li><em>Probl\u00e9my s v\u00fdvojem<\/em>. D\u016fle\u017eit\u00e1 je p\u0159\u00edtomnost knihoven ve spr\u00e1vn\u00fdch jazyc\u00edch, jejich bezpe\u010dnost a v\u00fdkon, ve\u0159ejn\u00fd p\u0159\u00edstup, slo\u017eit\u00e9 testy atd.<\/li>\n<\/ul>\n<p><\/p>\n<p>Nap\u0159\u00edklad u threshold BLS podpis\u016f existuje z\u00e1sadn\u00ed probl\u00e9m \u2013 ne\u017e za\u010dnou pracovat, \u00fa\u010dastn\u00edci si mus\u00ed navz\u00e1jem rozdat kl\u00ed\u010de a organizovat skupinu, v jej\u00edm\u017e r\u00e1mci bude threshold fungovat. To znamen\u00e1, \u017ee se mus\u00ed \u010dekat alespo\u0148 na jedno kolo v\u00fdm\u011bny v decentralizovan\u00e9 s\u00edti, a vzhledem k tomu, \u017ee generovan\u00fd random, nap\u0159\u00edklad, je pot\u0159ebn\u00fd ve hr\u00e1ch prakticky v re\u00e1ln\u00e9m \u010dase, znamen\u00e1 to, \u017ee na t\u00e9to \u00farovni je mo\u017en\u00e9 sabot\u00e1\u017e\u00ed protokolu, a v\u00fdhody threshold sch\u00e9matu se ztr\u00e1cej\u00ed. Tento probl\u00e9m je u\u017e jednodu\u0161\u0161\u00ed ne\u017e p\u0159edchoz\u00ed, ale st\u00e1le si vy\u017eaduje v\u00fdvoj samostatn\u00e9 procedury pro formov\u00e1n\u00ed threshold skupin, kterou bude nutn\u00e9 ekonomicky chr\u00e1nit prost\u0159ednictv\u00edm vklad\u016f a odejmut\u00ed prost\u0159edk\u016f (slashing) od \u00fa\u010dastn\u00edk\u016f, kte\u0159\u00ed se nenechaj\u00ed \u0159\u00eddit protokolem. Nav\u00edc, ov\u011b\u0159en\u00ed BLS s p\u0159ijatelnou \u00farovn\u00ed bezpe\u010dnosti se prost\u011b nevejde nap\u0159\u00edklad do standardn\u00ed transakce EOS nebo Ethereum \u2013 prost\u011b nen\u00ed dost \u010dasu na ov\u011b\u0159en\u00ed. K\u00f3d kontrakt\u016f \u2013 to je WebAssembly nebo EVM, vykon\u00e1v\u00e1no virtu\u00e1ln\u00ed stroj. Kryptografick\u00e9 funkce zat\u00edm nejsou nativn\u011b implementov\u00e1ny a pracuj\u00ed n\u011bkolikan\u00e1sobn\u011b pomaleji ne\u017e oby\u010dejn\u00e9 kryptografick\u00e9 knihovny. Mnoho protokol\u016f nespl\u0148uje po\u017eadavky vych\u00e1zej\u00edc\u00ed jednodu\u0161e z objemu kl\u00ed\u010d\u016f, nap\u0159\u00edklad to je 1024 a 2048 bit pro RSA, 4-8 kr\u00e1t v\u00edce ne\u017e standardn\u00ed podpis transakce v Bitcoin a Ethereum.<\/p>\n<p><\/p>\n<p>Hraje roli i p\u0159\u00edtomnost implementac\u00ed v r\u016fzn\u00fdch programovac\u00edch jazyc\u00edch \u2013 kter\u00e9 jsou vz\u00e1cn\u00e9, zejm\u00e9na pro nov\u00e9 protokoly. Mo\u017enost integrace do konsensu vy\u017eaduje napsat protokol v jazyce platformy, tak\u017ee budete muset hledat k\u00f3d v Go pro geth, v Rust pro Parity, v C++ pro EOS. K\u00f3d v JavaScriptu bude muset hledat ka\u017ed\u00fd, a proto\u017ee JavaScript a kryptografie nejsou zrovna bl\u00edzc\u00ed p\u0159\u00e1tel\u00e9, pom\u016f\u017ee WebAssembly, kter\u00fd nyn\u00ed m\u00e1 na dosah role d\u016fle\u017eit\u00e9ho internetov\u00e9ho standardu.<\/p>\n<p><\/p>\n<h2 id=\"zaklyuchenie\">Z\u00e1v\u011br<\/h2>\n<p><\/p>\n<p>Douf\u00e1m, \u017ee v p\u0159edchoz\u00edm <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/448330\/\">\u010dl\u00e1nku<\/a><\/noindex> Uv\u011b\u0159il jsem v\u00e1s, \u017ee generov\u00e1n\u00ed n\u00e1hodn\u00fdch \u010d\u00edsel na blockchainu je kriticky d\u016fle\u017eit\u00e9 pro mnoho aspekt\u016f \u017eivota decentralizovan\u00fdch s\u00edt\u00ed, a t\u00edmto \u010dl\u00e1nkem ukazuji, \u017ee \u00fakol je mimo\u0159\u00e1dn\u011b ambici\u00f3zn\u00ed a obt\u00ed\u017en\u00fd, ale existuj\u00ed ji\u017e dobr\u00e1 \u0159e\u0161en\u00ed. Kone\u010dn\u00fd n\u00e1vrh protokolu je mo\u017en\u00e9 navrhnout a\u017e po proveden\u00ed rozs\u00e1hl\u00fdch test\u016f, kter\u00e9 zohled\u0148uj\u00ed v\u0161echny aspekty od nastaven\u00ed po simulaci selh\u00e1n\u00ed, tak\u017ee jen t\u011b\u017eko naleznete hotov\u00e9 recepty v whitepapers t\u00fdm\u016f a v \u010dl\u00e1nc\u00edch, a my se v n\u00e1sleduj\u00edc\u00edch roce \u010di dvou ur\u010dit\u011b neodv\u00e1\u017e\u00edme ps\u00e1t \u201ed\u011blejte to takto, tak je to spr\u00e1vn\u011b\u201c. <\/p>\n<p><\/p>\n<p>Zat\u00edm, pro n\u00e1\u0161 PVRB v p\u0159ipravovan\u00e9m blockchainu <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/mixbytes\/haya\">Haya<\/a><\/noindex>, jsme se rozhodli pro pou\u017eit\u00ed threshold BLS podpis\u016f, pl\u00e1nujeme implementovat PVRB na \u00farovni konsensu, proto\u017ee verifikace ve smart kontraktech s p\u0159ijatelnou \u00farovn\u00ed zabezpe\u010den\u00ed zat\u00edm nen\u00ed mo\u017en\u00e1. Mo\u017en\u00e1 pou\u017eijeme rovnou dv\u011b sch\u00e9mata: nejprve drahou secret sharing pro vytvo\u0159en\u00ed dlouhodob\u00e9ho random_seed, a ten pak pou\u017eijeme jako z\u00e1klad pro vysoce frekventovanou generaci n\u00e1hody pomoc\u00ed deterministick\u00fdch threshold BLS podpis\u016f, mo\u017en\u00e1 se omez\u00edme jen na jedno ze sch\u00e9mat. P\u0159edem \u0159\u00edct, jak\u00fd bude protokol, bohu\u017eel nelze, ale t\u011b\u0161\u00ed m\u011b, \u017ee jako v v\u011bd\u011b, i v in\u017een\u00fdrsk\u00fdch \u00faloh\u00e1ch je negativn\u00ed v\u00fdsledek tak\u00e9 v\u00fdsledkem, a ka\u017ed\u00fd nov\u00fd pokus vy\u0159e\u0161it \u00fakol je dal\u0161\u00ed krokem pro v\u0161echny, kdo se t\u00edmto probl\u00e9mem zab\u00fdvaj\u00ed. Abychom splnili po\u017eadavky z pohledu byznysu, \u0159e\u0161\u00edme konkr\u00e9tn\u00ed praktick\u00fd \u00fakol \u2014 zaji\u0161t\u011bn\u00ed hern\u00edch aplikac\u00ed spolehliv\u00fdm zdrojem entropie, proto se mus\u00edme v\u011bnovat tak\u00e9 samotn\u00e9mu blockchainu, zejm\u00e9na ot\u00e1zk\u00e1m fin\u00e1lnosti \u0159et\u011bzce a governance s\u00edt\u011b. <\/p>\n<p><\/p>\n<p>A i kdy\u017e zat\u00edm nevid\u00edme v blockchainech prok\u00e1zan\u011b odoln\u00fd PVRB, kter\u00fd by byl pou\u017e\u00edv\u00e1n dostate\u010dn\u011b dlouho na to, aby pro\u0161el testy skute\u010dn\u00fdmi aplikacemi, mnoha audity, z\u00e1t\u011b\u017eemi a samoz\u0159ejm\u011b skute\u010dn\u00fdmi \u00fatoky, po\u010det mo\u017en\u00fdch cest potvrzuje, \u017ee \u0159e\u0161en\u00ed existuje, a n\u011bjak\u00fd z t\u011bchto algoritm\u016f nakonec probl\u00e9m vy\u0159e\u0161\u00ed. R\u00e1di se pod\u011bl\u00edme o v\u00fdsledky a d\u011bkujeme ostatn\u00edm t\u00fdm\u016fm, kte\u0159\u00ed se tak\u00e9 zab\u00fdvaj\u00ed touto z\u00e1le\u017eitost\u00ed za \u010dl\u00e1nky a k\u00f3d, kter\u00e9 umo\u017e\u0148uj\u00ed in\u017een\u00fdr\u016fm nenarazit dvakr\u00e1t na stejn\u00e9 hr\u00e1b\u011b. <\/p>\n<p><\/p>\n<p>Pokud se setk\u00e1te s program\u00e1torem, kter\u00fd navrhuje decentralizovan\u00fd gener\u00e1tor n\u00e1hodn\u00fdch \u010d\u00edsel, bu\u010fte opatrn\u00ed a ohledupln\u00ed, a pokud je to nutn\u00e9, poskytn\u011bte psychologickou pomoc \ud83d\ude42<\/p>\n<p>Zdroj: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/452340\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435 function getAbsolutelyRandomNumer() { return 4; \/\/ returns absolutely random number! } \u041a\u0430\u043a \u0438 \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u0441 \u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u0435\u0439 \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u043e \u0441\u0442\u043e\u0439\u043a\u043e\u0433\u043e \u0448\u0438\u0444\u0440\u0430 \u0438\u0437 \u043a\u0440\u0438\u043f\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0438, \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u044b \u201cPublicly Verifiable Random Beacon\u201d (\u0434\u0430\u043b\u0435\u0435 PVRB) \u043b\u0438\u0448\u044c \u043f\u044b\u0442\u0430\u044e\u0442\u0441\u044f \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e \u043f\u0440\u0438\u0431\u043b\u0438\u0437\u0438\u0442\u044c\u0441\u044f \u043a \u0438\u0434\u0435\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0445\u0435\u043c\u0435, \u0442.\u043a. \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0445 \u0441\u0435\u0442\u044f\u0445 \u0432 \u0447\u0438\u0441\u0442\u043e\u043c \u0432\u0438\u0434\u0435 \u043e\u043d\u0430 \u043d\u0435\u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043c\u0430: \u0434\u043e\u0433\u043e\u0432\u0430\u0440\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430\u0434\u043e \u0441\u0442\u0440\u043e\u0433\u043e \u043e\u0431 \u043e\u0434\u043d\u043e\u043c \u0431\u0438\u0442\u0435, \u0440\u0430\u0443\u043d\u0434\u043e\u0432 \u0434\u043e\u043b\u0436\u043d\u043e [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-33888","post","type-post","status-publish","format-standard","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=\"\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435 function getAbsolutelyRandomNumer() { return 4; \/\/ returns absolutely random number!\" \/>\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\/sluchajnye-chisla-i-detsentralizovannye-seti-implementatsii\" \/>\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\u0421\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0435 \u0447\u0438\u0441\u043b\u0430 \u0438 \u0434\u0435\u0446\u0435\u043d\u0442\u0440\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0441\u0435\u0442\u0438: \u0438\u043c\u043f\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435 function getAbsolutelyRandomNumer() { return 4; \/\/ returns absolutely random number!\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/cs\/blog\/administrirovanie\/sluchajnye-chisla-i-detsentralizovannye-seti-implementatsii\" \/>\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:55:15+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T18:55:15+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\u00e1 \u010d\u00edsla a decentralizovan\u00e9 s\u00edt\u011b: implementace | ProHoster","description":"\u00davod function getAbsolutelyRandomNumer() { return 4; \/\/ vr\u00e1t\u00ed naprosto n\u00e1hodn\u00e9 \u010d\u00edslo!","canonical_url":"https:\/\/prohoster.info\/cs\/blog\/administrirovanie\/sluchajnye-chisla-i-detsentralizovannye-seti-implementatsii","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\u0421\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0435 \u0447\u0438\u0441\u043b\u0430 \u0438 \u0434\u0435\u0446\u0435\u043d\u0442\u0440\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0441\u0435\u0442\u0438: \u0438\u043c\u043f\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 | ProHoster","og:description":"\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435 function getAbsolutelyRandomNumer() { return 4; \/\/ returns absolutely random number!","og:url":"https:\/\/prohoster.info\/cs\/blog\/administrirovanie\/sluchajnye-chisla-i-detsentralizovannye-seti-implementatsii","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:55:15+00:00","article:modified_time":"2019-10-31T18:55:15+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"33888","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 17:06:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 02:31:23","updated":"2026-01-21 17:06:19","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\/33888","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=33888"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts\/33888\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/media?parent=33888"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/categories?post=33888"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/tags?post=33888"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}