{"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\/sl\/blog\/administrirovanie\/sluchajnye-chisla-i-detsentralizovannye-seti-implementatsii","title":{"rendered":"Naklju\u010dna \u0161tevila in decentralizirane mre\u017ee: implementacije","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<h1 id=\"vvedenie\">Uvod<\/h1>\n<p><\/p>\n<pre><code class=\"plaintext\">function getAbsolutelyRandomNumer() {\n        return 4; \/\/ returns absolutely random number!\n}<\/code><\/pre>\n<p><\/p>\n<p>\u0422\u0430\u043a \u0436\u0435, \u043a\u0430\u043a \u0438 \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u043a\u043e\u043d\u0446\u0435\u043f\u0446\u0438\u0438 \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 \"Publicly Verifiable Random Beacon\" (\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, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \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: \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0434\u043e\u0433\u043e\u0432\u0430\u0440\u0438\u0432\u0430\u0442\u044c\u0441\u044f \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 \u0431\u044b\u0442\u044c \u043c\u043d\u043e\u0433\u043e, \u0430 \u0432\u0441\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0434\u043e\u043b\u0436\u043d\u044b \u043f\u0435\u0440\u0435\u0434\u0430\u0432\u0430\u0442\u044c\u0441\u044f \u0438\u0434\u0435\u0430\u043b\u044c\u043d\u043e \u0431\u044b\u0441\u0442\u0440\u043e \u0438 \u0432\u0441\u0435\u0433\u0434\u0430 \u0434\u043e\u0439\u0442\u0438 \u0434\u043e \u0430\u0434\u0440\u0435\u0441\u0430\u0442\u0430. \u0420\u0430\u0437\u0443\u043c\u0435\u0435\u0442\u0441\u044f, \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0445 \u0441\u0435\u0442\u044f\u0445 \u044d\u0442\u043e \u043d\u0435 \u0442\u0430\u043a. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 PVRB \u043f\u043e\u0434 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0435 \u0437\u0430\u0434\u0430\u0447\u0438 \u0432 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u0431\u043b\u043e\u043a\u0447\u0435\u0439\u043d\u0430\u0445, \u043f\u043e\u043c\u0438\u043c\u043e \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u043c\u043e\u0433\u043e \u0440\u0430\u043d\u0434\u043e\u043c\u0430 \u0438 \u043a\u0440\u0438\u043f\u0442\u043e\u0433\u0440\u0430\u0444\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0441\u0442\u043e\u0439\u043a\u043e\u0441\u0442\u0438, \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u0435\u0449\u0435 \u043c\u043d\u043e\u0433\u043e \u0447\u0438\u0441\u0442\u043e \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u043d\u044b\u0445 \u0438 \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>\u0421\u0430\u043c \u0431\u043b\u043e\u043a\u0447\u0435\u0439\u043d \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0434\u043b\u044f PVRB \u043f\u043e \u0441\u0443\u0442\u0438 \u0441\u0440\u0435\u0434\u043e\u0439 \u0434\u043b\u044f \u043a\u043e\u043c\u043c\u0443\u043d\u0438\u043a\u0430\u0446\u0438\u0438, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u0440\u0430\u0432\u043d\u044b \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u044f\u043c. \u042d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0447\u0430\u0441\u0442\u0438\u0447\u043d\u043e \u0430\u0431\u0441\u0442\u0440\u0430\u0433\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043e\u0442 \u0441\u0435\u0442\u0435\u0432\u044b\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c, \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0438 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439, \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u043f\u0440\u043e\u043c\u0435\u0436\u0443\u0442\u043e\u0447\u043d\u043e\u0433\u043e \u041f\u041e \u2014 \u0432\u0441\u0435 \u044d\u0442\u0438 \u0440\u0438\u0441\u043a\u0438 \u0431\u0435\u0440\u0435\u0442 \u043d\u0430 \u0441\u0435\u0431\u044f \u0434\u0435\u0446\u0435\u043d\u0442\u0440\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u0430\u044f \u0441\u0435\u0442\u044c, \u0438 \u0433\u043b\u0430\u0432\u043d\u0430\u044f \u0435\u0435 \u0446\u0435\u043d\u043d\u043e\u0441\u0442\u044c \u0434\u043b\u044f PVRB \u2014 \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043e\u0442\u043e\u0437\u0432\u0430\u0442\u044c \u0438\u043b\u0438 \u0438\u0441\u043f\u043e\u0440\u0442\u0438\u0442\u044c \u0443\u0436\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043d\u0443\u044e \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u044e \u2014 \u044d\u0442\u043e \u043d\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u0430\u043c \u043e\u0442\u043a\u0430\u0437\u0430\u0442\u044c\u0441\u044f \u043e\u0442 \u0443\u0447\u0430\u0441\u0442\u0438\u044f \u0432 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0435, \u0435\u0441\u043b\u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u043d\u0438 \u043d\u0435 \u043f\u0440\u043e\u0432\u0435\u043b\u0438 \u0443\u0441\u043f\u0435\u0448\u043d\u0443\u044e \u0430\u0442\u0430\u043a\u0443 \u043d\u0430 \u043a\u043e\u043d\u0441\u0435\u043d\u0441\u0443\u0441. \u0422\u0430\u043a\u043e\u0439 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u043f\u0440\u0438\u0435\u043c\u043b\u0435\u043c, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 PVRB \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0443\u0441\u0442\u043e\u0439\u0447\u0438\u0432 \u043a \u0441\u0433\u043e\u0432\u043e\u0440\u0430\u043c \u0443\u0447\u0430\u0441\u0442\u043d\u0438\u043a\u043e\u0432 \u0440\u043e\u0432\u043d\u043e \u0432 \u0442\u0430\u043a\u043e\u0439 \u0436\u0435 \u043c\u0435\u0440\u0435, \u043a\u0430\u043a \u0438 \u043e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u0446\u0435\u043f\u043e\u0447\u043a\u0430 \u0431\u043b\u043e\u043a\u0447\u0435\u0439\u043d\u0430. \u0422\u0430\u043a\u0436\u0435 \u044d\u0442\u043e \u043d\u0430\u043c\u0435\u043a\u0430\u0435\u0442 \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e PVRB \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0447\u0430\u0441\u0442\u044c\u044e \u043a\u043e\u043d\u0441\u0435\u043d\u0441\u0443\u0441\u0430, \u0435\u0441\u043b\u0438 \u0441\u0435\u0442\u044c \u0434\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043b\u0430\u0441\u044c \u043d\u0430\u0441\u0447\u0435\u0442 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0446\u0435\u043f\u043e\u0447\u043a\u0438 \u0431\u043b\u043e\u043a\u043e\u0432, \u043f\u0443\u0441\u0442\u044c \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u043e\u043d\u0430 \u0441\u043e\u0433\u043b\u0430\u0441\u0438\u0442\u0441\u044f \u0438 \u043d\u0430 \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0447\u0435\u0441\u0442\u043d\u044b\u0439 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0438\u0440\u0443\u044e\u0449\u0438\u0439 \u0440\u0430\u043d\u0434\u043e\u043c. \u041b\u0438\u0431\u043e PVRB \u2014 \u044d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0430\u0432\u0442\u043e\u043d\u043e\u043c\u043d\u044b\u0439 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b, \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0441\u043c\u0430\u0440\u0442-\u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u043e\u043c, \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0438\u043c \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e \u043f\u043e \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u044e \u043a \u0431\u043b\u043e\u043a\u0447\u0435\u0439\u043d\u0443 \u0438 \u0431\u043b\u043e\u043a\u0430\u043c. \u0423 \u043e\u0431\u043e\u0438\u0445 \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432 \u0435\u0441\u0442\u044c \u0441\u0432\u043e\u0438 \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u0430 \u0438 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043a\u0438, \u0438 \u0432\u044b\u0431\u043e\u0440 \u043c\u0435\u0436\u0434\u0443 \u043d\u0438\u043c\u0438 \u043a\u0440\u0430\u0439\u043d\u0435 \u043d\u0435\u0442\u0440\u0438\u0432\u0438\u0430\u043b\u0435\u043d. <\/p>\n<p><\/p>\n<h2 id=\"dva-sposoba-implementacii-pvrb\">\u0414\u0432\u0430 \u0441\u043f\u043e\u0441\u043e\u0431\u0430 \u0438\u043c\u043f\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 PVRB<\/h2>\n<p><\/p>\n<p>\u041e\u043f\u0438\u0448\u0435\u043c \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u0434\u0432\u0430 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u0430 \u0438\u043c\u043f\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 PVRB \u2014 \u0430\u0432\u0442\u043e\u043d\u043e\u043c\u043d\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e, \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0443\u044e \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0433\u043e \u043e\u0442 \u0431\u043b\u043e\u043a\u0447\u0435\u0439\u043d\u0430 \u0441\u043c\u0430\u0440\u0442-\u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u0430, \u0438 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u0443\u044e \u0432 \u043a\u043e\u043d\u0441\u0435\u043d\u0441\u0443\u0441\u043d\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u2014 \u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0441\u0435\u0442\u044c \u0434\u043e\u0433\u043e\u0432\u0430\u0440\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043e \u0446\u0435\u043f\u043e\u0447\u043a\u0435 \u0431\u043b\u043e\u043a\u043e\u0432 \u0438 \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u044b\u0445 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u044f\u0445. \u0412\u043e \u0432\u0441\u0435\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 \u044f \u0431\u0443\u0434\u0443 \u0438\u043c\u0435\u0442\u044c \u0432 \u0432\u0438\u0434\u0443 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0435 \u0431\u043b\u043e\u043a\u0447\u0435\u0439\u043d-\u0434\u0432\u0438\u0436\u043a\u0438: Ethereum, EOS \u0438 \u0432\u0441\u0435, \u043f\u043e\u0445\u043e\u0436\u0438\u0435 \u043d\u0430 \u043d\u0438\u0445 \u043f\u043e \u0441\u043f\u043e\u0441\u043e\u0431\u0443 \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u044f \u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0438\u043d\u0433\u0430 \u0441\u043c\u0430\u0440\u0442-\u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u043e\u0432. <\/p>\n<p><\/p>\n<h3 id=\"standalone-contract\">Samostojni kontrakt<\/h3>\n<p><\/p>\n<p>V tem primeru PVRB predstavlja pametno pogodbo, ki sprejme transakcije random-producerjev (v nadaljevanju RP), jih obdeluje, kombinira rezultate in na koncu pride do neke vrednosti, ki jo lahko pridobi vsak uporabnik iz te pogodbe. Ta vrednost morda ne bo neposredno shranjena v pogodbi, ampak bo predstavljena le s podatki, iz katerih je mogo\u010de deterministi\u010dno pridobiti eno in samo eno vrednost rezultantnega naklju\u010dja. V tej shemi so RP uporabniki verige blokov, sodelovanje pri procesu generiranja pa je mogo\u010de omogo\u010diti komurkoli.<\/p>\n<p><\/p>\n<p>Izbira samostojnega kontrakta je dobra:<\/p>\n<p><\/p>\n<ul>\n<li>prenosljivostjo (pogodbe je mogo\u010de prena\u0161ati iz verige blokov v verigo blokov)<\/li>\n<li>enostavnostjo pri izvajanju in testiranju (pogodbe je enostavno pisati in testirati)<\/li>\n<li>prikladnostjo pri izvajanju ekonomskih shem (enostavno je izdelati svoj \u017eeton, katerega logika slu\u017ei ciljem PVRB)<\/li>\n<li>mo\u017enostjo zagoniti v \u017ee delujo\u010dih verigah blokov<\/li>\n<\/ul>\n<p><\/p>\n<p>Ima pa tudi pomanjkljivosti:<\/p>\n<p><\/p>\n<ul>\n<li>mo\u010dne omejitve na vire pri izra\u010dunih, obsegu transakcij in shranjevanju (poenostavljeno re\u010deno cpu\/mem\/io)<\/li>\n<li>omejitve pri operacijah znotraj pogodbe (ne vse instrukcije so na voljo, te\u017eko je vklju\u010diti zunanje knji\u017enice)<\/li>\n<li>nemogo\u010dnost organizacije izmenjave sporo\u010dil hitreje, kot se transakcije vklju\u010dijo v verigo blokov<\/li>\n<\/ul>\n<p><\/p>\n<p>Ta razli\u010dica je primerna za izvajanje PVRB, ki ga je treba zagnati v \u017ee obstoje\u010di mre\u017ei, ne da bi vseboval zapleteno kriptografijo in ne zahteva velikega \u0161tevila interakcij.<\/p>\n<p><\/p>\n<h3 id=\"consensus-integrated\">Integriran konsenzus<\/h3>\n<p><\/p>\n<p>V tej razli\u010dici PVRB je implementiran v kodi blockchain vozli\u0161\u010da in ali deluje vzporedno z izmenjavami sporo\u010dil med vozli\u0161\u010di blockchaina. Rezultati protokola so zabele\u017eeni neposredno v ustvarjenih blokih, sporo\u010dila protokola pa se po p2p omre\u017eju po\u0161iljajo med vozli\u0161\u010di. Ker protokol generira \u0161tevilke, ki jih je treba zabele\u017eiti v blokih, se mora omre\u017eje o teh \u0161tevilkah strinjati. To pomeni, da morajo biti sporo\u010dila PVRB, kot tudi transakcije, validirana z vozli\u0161\u010di in vklju\u010dena v bloke, tako da lahko vsak udele\u017eenec omre\u017eja preveri skladnost s protokolom PVRB. To nas avtomatsko pripelje do o\u010ditne re\u0161itve \u2014 \u010de se omre\u017eje dogovori o konsenzu glede bloka in transakcij v njem, potem mora biti PVRB del konsenza, ne pa lo\u010den protokol. Pripravlja se lahko situacija, kjer je blok veljaven z vidika konsenza, a protokol PVRB ni upo\u0161tevan, in z vidika PVRB blok ne more biti sprejet. Tako v primeru izbire \u201ckonsensus-integriranega\u201d modela PVRB postane pomemben del konsenza.<\/p>\n<p><\/p>\n<p>Pri opisovanju implementacij PVRB na ravni konsenza v omre\u017eju nikakor ne smemo spregledati vpra\u0161anj dokon\u010dnosti. Dokon\u010dnost je mehanizem, ki se uporablja v deterministi\u010dnih konsenzih, ki fiksira blok (in verigo, ki vodi do njega), ki je dokon\u010den in nikoli ne bo izlo\u010den, tudi \u010de se pojavi paralelna forks. Na primer, v Bitcoin-u tak\u0161en mehanizem ne obstaja \u2014 \u010de se objavi veriga ve\u010dje zapletenosti, bo zamenjala katero koli manj zapleteno, ne glede na dol\u017eino verig. V EOS-u pa so dokon\u010dni tako imenovani Zadnji Nepovratni Bloki, ki se pojavijo povpre\u010dno vsakih 432 blokov (12*21 + 12*15, pre-vote + pre-commit). Ta postopek je v bistvu \u010dakanje na 2\/3 podpisov block-producerjev (BP). Ko se pojavijo forki, ki so starej\u0161i od zadnjega LIB, se preprosto zavr\u017eejo. Ta mehanizem omogo\u010da, da se zagotovo potrdi, da je transakcija vklju\u010dena v blockchain in nikoli ne bo umaknjena, ne glede na to, kak\u0161ne vire ima napadalec. Tudi dokon\u010dni bloki so bloki, ki jih podpi\u0161e 2\/3 BP v Hyperledger, Tendermint in drugih pBFT-baziranih konsenzih. Poleg tega ima smisel, da protokol za zagotavljanje dokon\u010dnosti deluje kot nadgradnja nad konsenzom, saj lahko deluje asinhrono s proizvodnjo in objavo blokov. <noindex><a rel=\"nofollow\" href=\"https:\/\/arxiv.org\/pdf\/1710.09437.pdf\">\u010dlanek<\/a><\/noindex> o finalnosti v Ethereum.<\/p>\n<p><\/p>\n<p>Finalnost je izredno pomembna za uporabnike, ki brez nje lahko postanejo \u017ertve napada \"double spend\", ko BP \"zadr\u017ei\" bloke in jih objavi, potem ko je omre\u017eje \"videlo\" dobro transakcijo. \u010ce ni finalnosti, objavljen for\u010d zamenja blok z \"dobro\" transakcijo z drugim, iz \"slabega\" forka, kjer se ta sredstva prena\u0161ajo na naslov napadalca. V primeru PVRB so zahteve po finalnosti \u0161e bolj stroge, saj gradnja forkov za PVRB pomeni mo\u017enost za napadalca, da pripravi ve\u010d mo\u017enosti naklju\u010dja, da objavi najbolj ugodno zanj in omeji \u010das mogo\u010de napadalne akcije \u2014 kar je dobra re\u0161itev.<\/p>\n<p><\/p>\n<p>Zato je najbolj\u0161a mo\u017enost zdru\u017eiti PVRB in finalnost v en protokol \u2014 takrat je finaliziran blok = finalizirano naklju\u010dje, kar je prav tisto, kar smo \u017eeleli dose\u010di. Zdaj bodo igralci prejeli zagotovljeno naklju\u010dje v N sekundah in lahko bodo prepri\u010dani, da ga ni mogo\u010de preklicati ali ponovno igrati.<\/p>\n<p><\/p>\n<p>Mo\u017enost s consensus-integrated je dobra:<\/p>\n<p><\/p>\n<ul>\n<li>z mo\u017enostjo asinhrone izvedbe v povezavi s proizvodnjo blokov \u2014 bloki se proizvajajo kot obi\u010dajno, vendar paralelno s tem lahko deluje protokol PVRB, ki proizvaja naklju\u010dja, ne vsak blok<\/li>\n<li>z mo\u017enostjo implementacije tudi te\u017eke kriptografije, brez omejitev, ki jih nalagajo pametne pogodbe<\/li>\n<li>z mo\u017enostjo organizacije izmenjave sporo\u010dil hitreje, kot se transakcije vklju\u010dujejo v blockchain, na primer del protokola lahko deluje med vozli\u0161\u010di brez \u0161irjenja sporo\u010dil po omre\u017eju<\/li>\n<\/ul>\n<p><\/p>\n<p>Ima pa tudi pomanjkljivosti:<\/p>\n<p><\/p>\n<ul>\n<li>te\u017eavnost pri testiranju in razvoju \u2014 treba bo emulirati omre\u017ene napake, izginjajo\u010da vozli\u0161\u010da, hard forke omre\u017eja<\/li>\n<li>napake v implementaciji zahtevajo hard fork omre\u017eja<\/li>\n<\/ul>\n<p><\/p>\n<p>Oba na\u010dina implementacije PVRB imata pravico do obstoja, vendar je implementacija v pametnih pogodbah v sodobnih blockchainih \u0161e vedno precej omejena v ra\u010dunalni\u0161kih virih, in vsak prehod na resno kriptografijo je pogosto preprosto nemogo\u010d. Resna kriptografija bo potrebna, kot bo prikazano kasneje. Vendar pa je ta te\u017eava o\u010ditno za\u010dasnega zna\u010daja, resna kriptografija v pogodbah je potrebna za re\u0161evanje \u0161tevilnih nalog, in postopoma se pojavlja (na primer, sistemske pogodbe za zkSNARKs v Ethereum).<\/p>\n<p><\/p>\n<p>Blockchain, which provides a transparent and reliable channel for protocol messaging, is not free. Any decentralized protocol must take into account the possibility of a Sybil attack; any action can be made consistent by the colluding forces of multiple accounts, so when designing it is necessary to consider the attackers' ability to create an arbitrary number of protocol participants acting in collusion. <\/p>\n<p><\/p>\n<h2 id=\"pvrb-i-peremennye-bloka\">PVRB and block variables.<\/h2>\n<p><\/p>\n<p>I wasn't lying when I said that a good PVRB, validated by numerous gambling applications, has not yet been implemented in blockchains. Then where did such a number of gambling applications in Ethereum and EOS come from? I find it as surprising as you do; how did so many 'resilient' randoms emerge in a fully deterministic environment?<\/p>\n<p><\/p>\n<p>The favorite way to extract randomness in the blockchain is to take some 'unpredictable' information from the block and base randomness on it \u2014 by simply hashing one or more values. A good article about the problems of such schemes. <noindex><a rel=\"nofollow\" href=\"https:\/\/blog.positive.com\/predicting-random-numbers-in-ethereum-smart-contracts-e5358c6b8620\">ovde<\/a><\/noindex>. You can take some of the 'unpredictable' values in the block, such as the block hash, the number of transactions, the network difficulty, and other values that are not known in advance. Then hash them, one or more, and ideally, it should produce true randomness. You could even add to the white paper that your scheme is 'post-quantum secure' (since there are quantum-proof hash functions :)).<\/p>\n<p><\/p>\n<p>But even post-quantum secure hashes are not enough, unfortunately. The secret lies in the requirements for PVRB; let me remind you of them from the previous article:<\/p>\n<p><\/p>\n<ol>\n<li>The result must have a provably uniform distribution, i.e., based on provably secure cryptography.<\/li>\n<li>It is impossible to control any of the bits of the result. Consequently, the result cannot be predicted in advance.<\/li>\n<li>The protocol for generating cannot be sabotaged by non-participation in the protocol or by overloading the network with attacking messages.<\/li>\n<li>All of the above must be resilient to collusion by an acceptable number of dishonest participants in the protocol (for example, 1\/3 of participants).<\/li>\n<\/ol>\n<p><\/p>\n<p>V tem primeru je izpolnjena le zahteva 1, medtem ko 2 ni izpolnjena. Z hashiranjem nepredvidljivih vrednosti iz bloka bomo dobili enakomerno porazdelitev in dobre naklju\u010dno izbrane vrednosti. Vendar ima BP vsaj mo\u017enost, da \u201eobjavi blok ali ne\u201c. Tako lahko BP vsaj izbira med DVEMA mo\u017enostma naklju\u010dja: \u201esvojim\u201c in tistim, ki ga ustvarja nekdo drug. BP lahko vnaprej \u201epogleda\u201c, kaj se bo zgodilo, \u010de objavi blok, in preprosto sprejme odlo\u010ditev, da ga objavi ali ne. Tako lahko ob igranju, na primer, v \u201eparno-neparno\u201c ali \u201erde\u010de\/\u010drno\u201c pri ruleti objavi blok samo, \u010de vidi zmago. To prav tako onemogo\u010da strategijo uporabe, na primer, hasha bloka \u201eiz prihodnosti\u201c. V tem primeru govorimo, da \u201ebo uporabljen naklju\u010dno izbrani podatek, ki izhaja iz hashiranja trenutnih podatkov in hasha prihodnjega bloka vi\u0161ine, na primer, N + 42, kjer je N trenutna vi\u0161ina bloka. To nekoliko okrepi shemo, vendar \u0161e vedno omogo\u010da BP, da, \u010deprav v prihodnosti, izbere, ali zadr\u017eati blok ali ga objaviti.<\/p>\n<p><\/p>\n<p>Softver BP se v tem primeru zapleta, a ne preve\u010d. Med validacijo in vklju\u010ditvijo transakcije v blok poteka hitro preverjanje, ali bo zmaga, in morda izbira enega izmed parametrov transakcije, da se dose\u017ee velika verjetnost zmage. Hkrati je skoraj nemogo\u010de ujeti pametnega BP-ja pri tak\u0161nih manipulacijah, saj vedno lahko koristi nove naslove in pridobiva majhne zmage, ne da bi vzbudil sum.<\/p>\n<p><\/p>\n<p>Tako da na\u010dini, ki uporabljajo informacije iz bloka, niso primerni za univerzalno implementacijo PVRB. V omejenem primeru, z omejitvami na vi\u0161ino stav, omejitvami \u0161tevila igralcev in\/ali KYC registracijo (da enemu igralcu ne bi omogo\u010dili uporabe ve\u010d naslovov), te sheme lahko delujejo za manj\u0161e igre, vendar ne ve\u010d.<\/p>\n<p><\/p>\n<h2 id=\"pvrb-i-commit-reveal\">PVRB in commit-reveal.<\/h2>\n<p><\/p>\n<p>No, hvala hashiranju in vsaj relativni nepredvidljivosti hasha bloka ter drugih spremenljivk. \u010ce bomo re\u0161ili problem front-running-a rudarjev, bi moralo priti do ne\u010desa bolj primernega. Dodajmo v to shemo uporabnike \u2014 naj tudi vplivajo na naklju\u010dnost: vsak zaposleni v slu\u017ebi za pomo\u010d strankam vam bo povedal, da je najbolj naklju\u010dno v IT sistemih vedenje uporabnikov \ud83d\ude42<\/p>\n<p><\/p>\n<p>Naivna shema, v kotoroy pol'zovateli prosto shlyut randomnye chisla, a rezultat vychislyaetsya kak, naprimer, khesh ot ikh summu, ne goditsya. V etom sluchaye posledniy igroka mozhno kontrol'irovat' rezul'tat, vybiraia sobstvennyy random. Poetomu ispol'zuetsya ochen' shiroko ispol'zuyemyy pattern commit-reveal. Uchastniki snachala shlyut kheshy ot svoikh randomov (commit-y), a zatem otkryvayut sami randomy (reveal-y). Fazza \u201creveal\u201d nachinaetsya lish' posle togo, kak byli sobrany neobkhodimye commit-y, poetomu uchastniki mogut prislat' rovno tot random, khesh ot kotorogo prislali ranee. Teper' slepim vse eto s parametrami bloka, prichom luchshe vzyatogo iz budushchego (random mozhno budet uznat' tol'ko v odnom iz budushchikh blokov), i vuolya \u2014 random gotov! Teper' lyuboy igrok vliyaet na rezultat ruandoma i mozhet \u201cpobedit'\u201d zlovrednogo BP, perekryvaya ego random svoim, neizvestnym zaranee, randomom\u2026 Yeshchyo mozhno dobavit' zashchitu ot sabotirovanija protokola putem neviskrytiya na etape reveal \u2014 prosto potrebuyaya pri commit-e prikladyvat' k transaktsii nekotoruyu summu \u2014 strakhovoy deposit, kotoryy vernet'sya tol'ko pri protsedure reveal. V etom sluchaye delat' commit i ne delat' reveal budet nevygodno.<\/p>\n<p><\/p>\n<p>Eto byla khoroshaya popytka, i takie skhemy tozhe yest' v igrovykh DApp-akh, no uvy, etogo opyat' nedostatochno. Teper' na rezultat mozhet vliyat' ne tol'ko mayner, no i lyuboy uchastnik protokola. Kontrol'irovat' samo znachenie po-prezhnemu mozhno, s men'shey stepen'yu variativnosti i za den'gi, no, kak i v sluchaye s maynerom, esli rezul'taty rozegrysha tsenee, chem plata za uchastie v protokole PVRB, to random-producer (RP) mozhet reshat', delat' li reveal i po-prezhnemu mozhet vybiraet' iz minimum dvukh variantov randoma.<br \/>\nZato poyavilas' vozmozhnost' nakazyvat' tekh, kto delaet commit i ne delaet reveal, i eta skhema yeshchyo prigoitsya. Yeya prostota yavlyaetsya seryoznym preimushchestvom \u2014 boleye seryoznye protokoly trebuyut mnogo boleye moshchnykh vychisleniy.<\/p>\n<p><\/p>\n<h2 id=\"pvrb-i-determinirovannye-podpisi\">PVRB i determinirovannye podpisy.<\/h2>\n<p><\/p>\n<p>Obstaja \u0161e en na\u010din, kako prisiliti RP, da zagotovi psevdonaklju\u010dne \u0161tevilke, na katere ne more vplivati, \u010de mu je na voljo \"predhodnik\" \u2014 to je deterministi\u010dni podpis. Tak podpis je na primer RSA in ni ECS. \u010ce ima RP par klju\u010dev: RSA in ECC, in podpi\u0161e neko vrednost s svojim zasebnim klju\u010dem, bo v primeru RSA prejel ENO IN SAMO podpis, medtem ko lahko v primeru ECS ustvari ne\u0161teto razli\u010dnih veljavnih podpisov. To se dogaja, ker se pri ustvarjanju ECS podpisa uporablja naklju\u010dna \u0161tevilka, ki jo izbere podpisnik, in ta lahko izbira poljubno, kar podpisniku omogo\u010da, da izbere enega od ve\u010d podpisov. V primeru RSA: \"eno vhodno vrednost\" + \"en par klju\u010dev\" = \"ena podpis\". Napovedati, kak\u0161en bo podpis drugega RP, ni mogo\u010de, zato se PVRB z deterministi\u010dnimi podpisi lahko organizira z zdru\u017eevanjem RSA podpisov ve\u010d udele\u017eencev, ki so podpisali isto vrednost. Na primer \u2014 prej\u0161nja naklju\u010dna \u0161tevilka. V tak\u0161ni shemi se prihrani precej sredstev, saj so podpisi hkrati tudi potrditev pravilnega vedenja po protokolu in vir naklju\u010dnosti.<\/p>\n<p><\/p>\n<p>Kljub temu pa je shema, celo z deterministi\u010dnimi podpisi, \u0161e vedno ranljiva na te\u017eavo \"zadnjega akterja\". Zadnji udele\u017eenec \u0161e vedno lahko odlo\u010da, ali bo objavil svoj podpis ali ne, s tem pa nadzoruje rezultat. Schemo je mogo\u010de izbolj\u0161ati, dodati hashe blokov, izvajati kroge, da vnaprej ne bi bilo mogo\u010de napovedati rezultata, vendar vse te tehnike, tudi ob upo\u0161tevanju \u0161tevilnih izbolj\u0161av, \u0161e vedno pu\u0161\u010dajo nerazre\u0161eno te\u017eavo vpliva enega udele\u017eenca na kolektivni rezultat v nezaupljivem okolju in lahko delujejo le v pogojih gospodarskih in \u010dasovnih omejitev. Poleg tega je velikost klju\u010dev RSA (1024 in 2048 bitov) precej velika, velikost za transakcije blockchain je izredno pomemben parameter. O\u010ditno preprosta re\u0161itev ne bo delovala, gremo naprej.<\/p>\n<p><\/p>\n<h2 id=\"pvrb-i-secret-sharing-shemy\">PVRB in sheme delitve skrivnosti<\/h2>\n<p><\/p>\n<p>V kriptografiji obstajajo sheme, ki omogo\u010dajo omre\u017eju, da se dogovori o enem in samo enem PVRB-ju, pri \u010demer so te sheme odporne na morebitne zlonamerne akcije dela udele\u017eencev. Eden od koristnih protokolov, ki jih je vredno spoznati, je shema deljenja skrivnosti Shamirja. Namenjena je delitvi skrivnosti (na primer tajnega klju\u010da) na ve\u010d delov, ki jih prejme N udele\u017eencev. Skrivnost se razdeli tako, da za njeno obnovitev zadostuje M delov od N, pri \u010demer so lahko to kakr\u0161ni koli M deli. \u010ce to ponazorimo, udele\u017eenci izmenjujejo to\u010dke na grafu neznane funkcije, in po prejemu M to\u010dk lahko obnovijo celotno funkcijo.<br \/>\nDober opis je podan v <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Shamir%27s_Secret_Sharing\">wiki<\/a><\/noindex> in za eksperimentiranje z njim je prakti\u010dno koristno, da v mislih predvajate protokol na <noindex><a rel=\"nofollow\" href=\"http:\/\/point-at-infinity.org\/ssss\/demo.html\">demo<\/a><\/noindex> strani.<\/p>\n<p><\/p>\n<p>\u010ce bi bila shema FSSS (Fiat-Shamir Secret Sharing) uporabna v svoji \u010disti obliki \u2014 bi bil to neuni\u010dljiv PVRB. V najpreprostej\u0161i razli\u010dici lahko protokol izgleda takole:<\/p>\n<p><\/p>\n<ul>\n<li>Vsak udele\u017eenec generira svoj lastni naklju\u010dni podatek in deli dele\u017ee z ostalimi udele\u017eenci.<\/li>\n<li>Vsak udele\u017eenec razkrije svoj del skrivnosti ostalih udele\u017eencev.<\/li>\n<li>\u010ce je udele\u017eenec zbral ve\u010d M delov, se lahko izra\u010duna \u0161tevilo tega udele\u017eenca, ki bo edinstveno, ne glede na nabor razkrivenih udele\u017eencev.<\/li>\n<li>Kombinacija razkritih naklju\u010dnih podatkov in je iskani PVRB.<\/li>\n<\/ul>\n<p><\/p>\n<p>Tukaj posamezen udele\u017eenec ne vpliva na rezultate protokola, razen v primerih, ko je dosego praga razkritja naklju\u010dnega podatka odvisno le od njega. Zato ta protokol, ob voljo potrebne koli\u010dine sodelujo\u010dih in dostopnih RP, deluje tako, da izpolnjuje zahteve glede kriptografske odpornosti in je odporen na problem \"zadnjega akterja\".<\/p>\n<p><\/p>\n<p>To bi lahko bil idealen primer, ta shema PVRB na podlagi deljenja skrivnosti FSSS je opisana na primer v <noindex><a rel=\"nofollow\" href=\"https:\/\/eprint.iacr.org\/2017\/216.pdf\">tole<\/a><\/noindex> \u010dlanku. Vendar, kot je bilo omenjeno zgoraj, se pri poskusu njene neposredne uporabe v blockchain-u pojavijo tehni\u010dne omejitve. Tukaj je primer testne izvedbe protokola v pametni pogodbi EOS in njen najpomembnej\u0161i del \u2014 preverjanje objavljenega dele\u017ea udele\u017eenca: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/mixbytes\/eoscraper\/blob\/master\/Proof.hh#L23\">kodo<\/a><\/noindex>Iz kode je razvidno, da validacija dokaza zahteva ve\u010d skalarnih mno\u017eenj, pri \u010demer so \u0161tevilke zelo velike. Pri tem je treba razumeti, da se v blokchainih preverjanje zgodi v trenutku, ko block-producer obdeluje transakcijo, in vsak udele\u017eenec mora zlahka preveriti pravilnost protokola, zato so zahteve glede hitrosti funkcije preverjanja zelo resne. V tej razli\u010dici se je izkazalo, da je re\u0161itev neobvladljiva, saj preverjanje ni ustrezalo omejitvi transakcije (0,5 sekunde).<\/p>\n<p><\/p>\n<p>U\u010dinkovitost preverjanja je ena najpomembnej\u0161ih zahtev za uporabo pravzaprav kateregakoli naprednega kriptografskega sistema v blokchainu. Ustvarjanje dokazov, priprava sporo\u010dil \u2014 te postopke lahko prenesemo izven verige in jih izvajamo na visokozmogljivih ra\u010dunalnikih, vendar preverjanje ne bo mogo\u010de obiti \u2014 to je \u0161e en pomemben zahtev za PVRB. <\/p>\n<p><\/p>\n<h2 id=\"pvrb-i-threshold-signatures\">PVRB in pragovne podpise<\/h2>\n<p><\/p>\n<p>Ko smo se spoznali s shemo deljenja skrivnosti, smo odprli cel razred protokolov, povezanih s klju\u010dnimi besedami \"prag\". Ko za razkritje nekaterih informacij sodeluje M po\u0161tenih udele\u017eencev iz N, in nabor po\u0161tenih udele\u017eencev je lahko poljuben podmno\u017eek N, govorimo o \"prag\" shemah. Te sheme omogo\u010dajo re\u0161itev problema \"zadnjega akterja\", zdaj, \u010de napadalec ne razkrije svojega dela skrivnosti, to stori drug, po\u0161ten udele\u017eenec. Te sheme omogo\u010dajo dogovor o enem in edinem vrednotenju, tudi ob sabotage protokola s strani nekaterih udele\u017eencev. <\/p>\n<p><\/p>\n<p>Kombinacija deterministi\u010dnih podpisov in pragovnih shem je omogo\u010dila razvoj zelo priro\u010dne in obetavne sheme za izvajanje PVRB \u2014 to so deterministi\u010dni pragovni podpisi. Tukaj <noindex><a rel=\"nofollow\" href=\"https:\/\/eprint.iacr.org\/2002\/081.pdf\">\u010dlanek<\/a><\/noindex> o razli\u010dnih aplikacijah pragovnih podpisov, tukaj pa je \u0161e ena dobra <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 zadnjem \u010dlanku so opisani BLS podpisi (BLS pomeni Boneh-Lynn-Shacham, <noindex><a rel=\"nofollow\" href=\"https:\/\/www.iacr.org\/archive\/asiacrypt2001\/22480516.pdf\">tukaj je<\/a><\/noindex> \u010dlanek ), ki ima zelo pomembno in izjemno prakti\u010dno kakovost za programerje \u2013 javni, tajni, javni klju\u010di in podpisi BLS se lahko kombinirajo med seboj z enostavnimi matemati\u010dnimi operacijami, pri \u010demer njihove kombinacije ostanejo veljavni klju\u010di in podpisi, kar omogo\u010da enostavno ageracijo ve\u010d podpisov v enega in ve\u010d javnih klju\u010dev v enega. Imajo tudi deterministi\u010dnost in pri enakih vhodnih podatkih dajo enak rezultat. Zaradi te lastnosti so kombinacije BLS podpisov same veljavni klju\u010di, kar omogo\u010da uresni\u010ditev razli\u010dice, kjer M od N udele\u017eencev ustvari en sam podpis, ki je determiniran, javno preverljiv in nepredvidljiv, dokler ga ne razkrije M-ti udele\u017eenec.<\/p>\n<p><\/p>\n<p>V shemi z threshold BLS podpisom vsak udele\u017eenec podpi\u0161e s pomo\u010djo BLS nekaj (na primer prej\u0161nji naklju\u010dni \u0161tevilki), skupni threshold-podpis pa je iskani naklju\u010dni \u0161tevilki. Kriptografske lastnosti BLS podpisov izpolnjujejo zahteve glede kakovosti naklju\u010dnosti, threshold del \u0161\u010diti pred \u201czadnjim izvajalcem\u201d, edinstvena kombinabilnost klju\u010dev pa omogo\u010da izvajanje \u0161e mnogih zanimivih algoritmov, ki omogo\u010dajo, na primer, u\u010dinkovito ageracijo sporo\u010dil protokola.<\/p>\n<p><\/p>\n<p>Torej, \u010de gradite PVRB v svojem blockchainu, boste z veliko verjetnostjo pri\u0161li do sheme BLS threshold podpisov, ki jo \u017ee uporabljajo nekateri projekti. Na primer, DFinity (<noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/dfinity\/random-beacon\">ovde<\/a><\/noindex> benchmark, ki izvaja shemo, ter <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/dfinity\/vss\/blob\/master\/docs\/index.md\">tukaj<\/a><\/noindex> primer izvajanja verifiable secret sharing), ali Keep.network (tu je njihov random beacon <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/keep-network\/random-beacon-yellowpaper\">yellowpaper<\/a><\/noindex>, a evo <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/keep-network\/random-beacon-box\">primer<\/a><\/noindex> pametne pogodbe, ki upravlja protokol).<\/p>\n<p><\/p>\n<h2 id=\"implementaciya-pvrb\">Implementacija PVRB<\/h2>\n<p><\/p>\n<p>\u017dal, \u0161e vedno ne vidimo dokon\u010dnega, v blokchainih PVRB realiziranega protokola, ki bi dokazal svojo varnost in odpornost. Kljub temu, da so protokoli pripravljeni, je tehni\u010dno te\u017eko uporabiti jih za obstoje\u010de re\u0161itve. Za centralizirane sisteme PVRB nima smisla, decentralizirani sistemi pa so strogo omejeni v vseh ra\u010dunalni\u0161kih virih: CPU, pomnilnik, shranjevanje, I\/O. Na\u010drtovanje PVRB je zdru\u017eevanje razli\u010dnih protokolov, da bi oblikovali tisto, kar ustreza vsem zahtevam vsaj za kak\u0161en \u017eivljenjsko sposoben blokchain. Ena protokol u\u010dinkoviteje izra\u010dunava, vendar zahteva ve\u010d sporo\u010dil med RP, medtem ko drugi zahteva izjemno malo sporo\u010dil, vendar lahko ustvarjanje proof-a predstavlja nalogo, ki traja desetine minut, morda celo ur.<\/p>\n<p><\/p>\n<p>Na\u0161tel bom dejavnike, ki jih boste morali upo\u0161tevati pri izbiri kakovostnega PVRB:<\/p>\n<p><\/p>\n<ul>\n<li><em>Kryptografska odpornost<\/em>. Va\u0161 PVRB mora biti strogo unbiasable, brez mo\u017enosti nadzora nad enim bitom. V nekaterih shemama to ni tako, zato pokli\u010dite kriptografa.<\/li>\n<li><em>Te\u017eava 'zadnjega igralca'<\/em>. Va\u0161 PVRB mora biti odporen na napade, kjer napadalec, ki nadzira enega ali ve\u010d RP, lahko izbere eno od dveh mo\u017enosti rezultata.<\/li>\n<li><em>Te\u017eava sabota\u017ee protokola<\/em>. Va\u0161 PVRB mora biti odporen na napade, kjer napadalec, ki nadzira enega ali ve\u010d RP, odlo\u010da, ali bo randomizacija izvedena ali ne ter lahko z gotovostjo ali z dolo\u010deno verjetnostjo vpliva na to.<\/li>\n<li><em>Te\u017eava \u0161tevila sporo\u010dil<\/em>. Va\u0161i RP morajo poslati v blokchain najmanj sporo\u010dil in se izogibati sinhronim dejanjem, kot so situacije 'poslal sem dolo\u010dene informacije, \u010dakam na odgovor od dolo\u010denega udele\u017eenca'. V p2p omre\u017ejih, \u0161e posebej geografsko razpr\u0161enih, ne gre pri\u010dakovati hitrega odgovora.<\/li>\n<li><em>Te\u017eava ra\u010dunalni\u0161ke zapletenosti<\/em>. Verifikacija katerega koli koraka PVRB on-chain mora biti izjemno enostavna, saj jo izvajajo vsi polni odjemalci omre\u017eja. \u010ce se izvedba dela s pomo\u010djo pametnih pogodb, so zahteve glede hitrosti zelo stroge.<\/li>\n<li><em>Te\u017eava dostopnosti in \u017eivljenjske sposobnosti<\/em>. Va\u0161 PVRB mora stremeti k temu, da je odporen na situacije, ko del omre\u017eja postane nedostopen za dolo\u010deno obdobje in del RP preprosto preneha delovati.<\/li>\n<li><em>Te\u017eava zaupanja vredne nastavitve in za\u010detne distribucije klju\u010dev<\/em>. \u010ce va\u0161 PVRB uporablja primarno nastavitev protokola, je to posebna in resna zgodba. Tukaj je <noindex><a rel=\"nofollow\" href=\"https:\/\/z.cash\/ru\/blog\/the-design-of-the-ceremony\/\">primer<\/a><\/noindex>. \u010ce morajo udele\u017eenci pred za\u010detkom protokola sporo\u010diti drug drugemu svoje klju\u010de \u2014 to je prav tako te\u017eava, \u010de se sestava udele\u017eencev spreminja<\/li>\n<li><em>Problemi razvoja<\/em>. Prisotnost knji\u017enic v potrebnih jezikih, njihova varnost in u\u010dinkovitost, javnost, kompleksni testi itd.<\/li>\n<\/ul>\n<p><\/p>\n<p>Na primer, pri threshold BLS podpisih je resna te\u017eava \u2014 pred za\u010detkom dela se morajo udele\u017eenci obvezno izmenjati klju\u010de, organizirati skupino, v kateri bo delovala threshold. To pomeni, da bo potrebno po\u010dakati na vsaj en krog izmenjave v decentralizirani mre\u017ei, in \u010de upo\u0161tevamo, da je generirani naklju\u010dni element, na primer, potreben v igrah, prakti\u010dno v realnem \u010dasu, to pomeni, da je sabotiranje protokola mo\u017eno v tej fazi, in prednosti threshold sheme se izgubijo. Ta te\u017eava je \u017ee enostavnej\u0161a od prej\u0161njih, vendar \u0161e vedno zahteva razvoj posebne procedure za oblikovanje threshold skupin, ki jo bo potrebno za\u0161\u010dititi ekonomsko, preko depozitov in odvzema sredstev (slashing) od udele\u017eencev, ki ne sledijo protokolu. Poleg tega, verifikacija BLS z sprejemljivo stopnjo varnosti preprosto ni mogo\u010da, na primer, v standardni transakciji EOS ali Ethereum \u2014 preprosto ni dovolj \u010dasa za verifikacijo. Koda pogodb \u2014 to je WebAssembly ali EVM, ki jo izvr\u0161uje virtualna naprava. Kriptografske funkcije niso natan\u010dno implementirane (\u0161e), in delujejo desetkrat po\u010dasneje od obi\u010dajnih kriptografskih knji\u017enic. Mnogi protokoli ne ustrezajo zahtevam samo na podlagi koli\u010dine klju\u010dev, na primer 1024 in 2048 bit za RSA, kar je 4-8 krat ve\u010d kot standardni podpis transakcije v Bitcoin in Ethereum.<\/p>\n<p><\/p>\n<p>Igra tudi vlogo prisotnost realizacij v razli\u010dnih programskih jezikih \u2014 katerih je malo, zlasti za nove protokole. Mo\u017enost integracije v konsenz zahteva, da se protokol napi\u0161e v jeziku platforme, zato bo treba iskati kodo v Go za geth, v Rust za Parity, v C++ za EOS. Kodo v JavaScriptu bo treba poiskati pri vsem, in ker JavaScript in kriptografija nista prav zares dobri prijatelji, bo pomagal WebAssembly, ki \u017ee danes resni\u010dno kandidira za vlogo naslednjega pomembnega internetnega standarda.<\/p>\n<p><\/p>\n<h2 id=\"zaklyuchenie\">Zaklju\u010dek<\/h2>\n<p><\/p>\n<p>Upam, da je v prej\u0161njem <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/448330\/\">\u010dlanku<\/a><\/noindex> Uspeo sam vas uveriti da je generisanje nasumi\u010dnih brojeva na blockchainu od kriti\u010dne va\u017enosti za mnoge aspekte \u017eivota decentralizovanih mre\u017ea, a ovim \u010dlankom sam pokazao da je ovaj zadatak izuzetno ambiciozan i slo\u017een, ali ve\u0107 postoje dobra re\u0161enja. U su\u0161tini, kona\u010dan dizajn protokola mogu\u0107 je tek nakon obimnih testova koji uzimaju u obzir sve aspekte, od postavljanja do emulacije gre\u0161aka, tako da te\u0161ko da \u0107ete prona\u0107i gotove recepte u whitepaper-ima timova i u \u010dlancima, a ni mi se u naredne godinu-dve sigurno ne\u0107emo usuditi da ka\u017eemo \u201eradite ovako, to je sigurno ispravno\u201c. <\/p>\n<p><\/p>\n<p>Za sada, za na\u0161 PVRB u razvijaju\u0107em blockchainu <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/mixbytes\/haya\">Haya<\/a><\/noindex>, zaustavili smo se na primeni threshold BLS potpisa, planiramo da implementiramo PVRB na nivou konsenzusa, jer verifikacija u pametnim ugovorima sa prihvatljivim nivoom sigurnosti jo\u0161 uvek nije mogu\u0107a. Mogu\u0107e je da \u0107emo koristiti odmah dve sheme: prvo skupu tajnu deljenja za kreiranje dugoro\u010dnog random_seed, a zatim je koristiti kao osnovu za visoko frekventno generisanje nasumi\u010dnih brojeva pomo\u0107u deterministi\u010dkih threshold BLS potpisa; mo\u017eda \u0107emo se ograni\u010diti samo na jednu od shema. Te\u0161ko je unapred re\u0107i kakav \u0107e biti protokol, na\u017ealost, ali je ohrabruju\u0107e to da, kao i u nauci, u in\u017eenjerskim zadacima negativan rezultat je tako\u0111e rezultat, a svaki novi poku\u0161aj re\u0161avanja problema predstavlja jo\u0161 jedan korak za sve koji se bave ovim izazovima. Da bismo ispunili zahteve sa strane biznisa, re\u0161avamo konkretan prakti\u010dan problem - obezbe\u0111ivanje igra\u010dkih aplikacija pouzdanim izvorom entropije, zbog \u010dega moramo obratiti pa\u017enju i na sam blockchain, posebno na pitanja finalnosti lanca i upravljanja mre\u017eom. <\/p>\n<p><\/p>\n<p>I iako trenutno ne vidimo u blockchainima dokazano otpornog PVRB koji je kori\u0161\u0107en dovoljno dugo da bi pro\u0161ao testove pravih aplikacija, vi\u0161estrukih revizija, optere\u0107enja i naravno, pravih napada, broj mogu\u0107ih puteva potvr\u0111uje da re\u0161enje postoji, i neki od ovih algoritama \u0107e na kraju re\u0161iti problem. Rado \u0107emo deliti rezultate i zahvaljujemo se drugim timovima koji se tako\u0111e bave ovim pitanjem za \u010dlanke i kod koji omogu\u0107avaju in\u017eenjerima da ne ponavljaju iste gre\u0161ke. <\/p>\n<p><\/p>\n<p>Zato, ko sre\u010date programerja, ki oblikuje decentralizirano naklju\u010dje, bodite previdni in skrbni, po potrebi mu nudite psiholo\u0161ko pomo\u010d \ud83d\ude42<\/p>\n<p>Izvor: <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.4 - 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\/sl\/blog\/administrirovanie\/sluchajnye-chisla-i-detsentralizovannye-seti-implementatsii\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.4\" \/>\n\t\t<meta property=\"og:locale\" content=\"sl_SI\" \/>\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\/sl\/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\udd47Naklju\u010dna \u0161tevila in decentralizirane mre\u017ee: implementacije | ProHoster","description":"Uvod function getAbsolutelyRandomNumer() { return 4;  \/\/ vrne povsem naklju\u010dno \u0161tevilo!","canonical_url":"https:\/\/prohoster.info\/sl\/blog\/administrirovanie\/sluchajnye-chisla-i-detsentralizovannye-seti-implementatsii","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sl_SI","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\/sl\/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\/sl\/wp-json\/wp\/v2\/posts\/33888","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/comments?post=33888"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/posts\/33888\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/media?parent=33888"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/categories?post=33888"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/tags?post=33888"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}