{"id":32343,"date":"2019-10-31T21:46:27","date_gmt":"2019-10-31T18:46:27","guid":{"rendered":"https:\/\/prohoster.info\/blog\/cluchajnyj-orakul-na-osnove-tsifrovoj-podpisi-v-blokchejne\/"},"modified":"2019-10-31T21:46:27","modified_gmt":"2019-10-31T18:46:27","slug":"cluchajnyj-orakul-na-osnove-tsifrovoj-podpisi-v-blokchejne","status":"publish","type":"post","link":"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/cluchajnyj-orakul-na-osnove-tsifrovoj-podpisi-v-blokchejne","title":{"rendered":"Losowy wr\u00f3\u017cbita oparty na cyfrowym podpisie w blockchainie","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Od pomys\u0142u do realizacji: modyfikujemy istniej\u0105cy schemat cyfrowego podpisu na krzywej eliptycznej, aby sta\u0142 si\u0119 on deterministyczny, a na jego podstawie zapewniamy funkcje generowania zweryfikowanych w ramach blockchaina pseudolosowych liczb.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Losowy wr\u00f3\u017cbita oparty na cyfrowym podpisie w blockchainie\" src=\"\/wp-content\/uploads\/2019\/04\/91c321aa895498263f80f586aa336956.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h1 id=\"ideya\">Idea<\/h1>\n<p><\/p>\n<p>Jesieni\u0105 2018 roku w blockchainie Waves zosta\u0142y <noindex><a rel=\"nofollow\" href=\"https:\/\/blog.wavesplatform.com\/smart-accounts-finally-activated-on-waves-mainnet-8bb7c7b67beb\">aktywowane pierwsze smart kontrakty<\/a><\/noindex>, natychmiast pojawi\u0142o si\u0119 pytanie o mo\u017cliwo\u015b\u0107 uzyskania <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%93%D0%B5%D0%BD%D0%B5%D1%80%D0%B0%D1%82%D0%BE%D1%80_%D0%BF%D1%81%D0%B5%D0%B2%D0%B4%D0%BE%D1%81%D0%BB%D1%83%D1%87%D0%B0%D0%B9%D0%BD%D1%8B%D1%85_%D1%87%D0%B8%D1%81%D0%B5%D0%BB\">pseudolosowych liczb<\/a><\/noindex>, kt\u00f3rym mo\u017cna ufa\u0107.<\/p>\n<p><\/p>\n<p>Zastanawiaj\u0105c si\u0119 nad tym problemem, doszed\u0142em do ostatecznego wniosku: ka\u017cdy blockchain to klatka, uzyskanie zaufanego \u017ar\u00f3d\u0142a entropii w zamkni\u0119tym systemie jest niemo\u017cliwe.<\/p>\n<p><\/p>\n<p>Jednak jedna idea przypad\u0142a mi do gustu: je\u015bli <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%A1%D0%BB%D1%83%D1%87%D0%B0%D0%B9%D0%BD%D1%8B%D0%B9_%D0%BE%D1%80%D0%B0%D0%BA%D1%83%D0%BB\">losowy oracle<\/a><\/noindex> b\u0119dzie podpisywa\u0142 dane u\u017cytkownika w spos\u00f3b deterministyczny, to u\u017cytkownik zawsze b\u0119dzie m\u00f3g\u0142 zweryfikowa\u0107 taki podpis za pomoc\u0105 klucza publicznego i b\u0119dzie pewny, \u017ce uzyskana warto\u015b\u0107 jest unikalna. Oracle przy ca\u0142ym d\u0105\u017ceniu nie jest w stanie niczego zmieni\u0107, algorytm generuje jednoznaczny wynik. W istocie u\u017cytkownik zapisuje wynik, ale nie wie go, dop\u00f3ki oracle go nie opublikuje. Oznacza to, \u017ce mo\u017cna w og\u00f3le nie ufa\u0107 oracle'owi, ale weryfikowa\u0107 wynik jego pracy. Wtedy, w przypadku pomy\u015blnej weryfikacji, taki podpis mo\u017cna uzna\u0107 za \u017ar\u00f3d\u0142o entropii dla pseudolosowej liczby.<\/p>\n<p><\/p>\n<p>W platformie blockchain Waves u\u017cywana jest schemat podpisu <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/EdDSA\">EdDSA<\/a><\/noindex> wariant <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/EdDSA#Ed25519\">Ed25519<\/a><\/noindex>. W tym schemacie podpis sk\u0142ada si\u0119 z warto\u015bci R i S, gdzie R zale\u017cy od warto\u015bci losowej, a S obliczane jest na podstawie podpisywanej wiadomo\u015bci, klucza prywatnego i tej samej warto\u015bci losowej, co R. Oznacza to, \u017ce nie ma jednoznacznej zale\u017cno\u015bci, dla tej samej wiadomo\u015bci u\u017cytkownika istnieje wiele wa\u017cnych podpis\u00f3w.<\/p>\n<p><\/p>\n<p>Jasne jest, \u017ce w czystej postaci taki podpis nie mo\u017ce by\u0107 u\u017cywany jako \u017ar\u00f3d\u0142o pseudolosowych liczb, poniewa\u017c jest niedeterministyczny i, w konsekwencji, mo\u017ce by\u0107 \u0142atwo poddany manipulacjom ze strony oracle'a.<\/p>\n<p><\/p>\n<p>Jednak, jak si\u0119 okaza\u0142o, mo\u017cna go uczyni\u0107 deterministycznym.<\/p>\n<p><\/p>\n<p>Pok\u0142ada\u0142em w nim wielkie nadzieje <noindex><a rel=\"nofollow\" href=\"https:\/\/tools.ietf.org\/html\/draft-irtf-cfrg-vrf-04\">na zweryfikowan\u0105 funkcj\u0119 losow\u0105 (VRF)<\/a><\/noindex>, ale po zapoznaniu si\u0119 z materia\u0142em musieli\u015bmy porzuci\u0107 ten wariant. Cho\u0107 VRF oferuje deterministyczn\u0105 wersj\u0119 podpisu i jego dowodu, w algorytmie wyst\u0119puje dziwny element, kt\u00f3ry otwiera czarn\u0105 dziur\u0119 dla manipulacji ze strony orakula. Mianowicie, przy obliczaniu warto\u015bci k (<noindex><a rel=\"nofollow\" href=\"https:\/\/tools.ietf.org\/html\/draft-irtf-cfrg-vrf-04#section-5.1\">rozdzia\u0142 5.1<\/a><\/noindex>) u\u017cywany jest klucz prywatny, kt\u00f3ry pozostaje nieznany u\u017cytkownikowi, co oznacza, \u017ce u\u017cytkownik nie mo\u017ce zweryfikowa\u0107 poprawno\u015bci obliczenia k, wi\u0119c orakul mo\u017ce u\u017cywa\u0107 dowolnej potrzebnej mu warto\u015bci k, prowadz\u0105c jednocze\u015bnie baz\u0119 danych odpowiadaj\u0105cych warto\u015bci k i podpisywanych danych, aby zawsze m\u00f3c ponownie obliczy\u0107 poprawny wed\u0142ug VRF wynik. Je\u017celi zobaczycie losowanie oparte na VRF bez ujawnienia klucza prywatnego, mo\u017cecie si\u0119 popisa\u0107: wskaza\u0107 na konieczno\u015b\u0107 ujawnienia klucza albo wykluczenia go z obliczenia k, a wtedy klucz prywatny automatycznie ujawni si\u0119 przy pierwszym podpisie. W og\u00f3le, jak ju\u017c powiedziano, to dziwna metoda dla losowego orakula.<\/p>\n<p><\/p>\n<p>Po chwili refleksji i wsparciu lokalnych analityk\u00f3w, powsta\u0142a koncepcja dzia\u0142ania VECRO.<\/p>\n<p><\/p>\n<p>VECRO to skr\u00f3t od Verifiable Elliptic Curve Random Oracle, co po polsku oznacza weryfikowalny losowy orakul na krzywych eliptycznych.<\/p>\n<p><\/p>\n<p>Okaza\u0142o si\u0119, \u017ce to do\u015b\u0107 proste, aby osi\u0105gn\u0105\u0107 deterministyczno\u015b\u0107, nale\u017cy ustali\u0107 warto\u015b\u0107 R przed pojawieniem si\u0119 podpisywanej wiadomo\u015bci. Je\u015bli R jest ustalone i jest cz\u0119\u015bci\u0105 podpisywanej wiadomo\u015bci, co dodatkowo gwarantuje ustalenie R w samej podpisywanej wiadomo\u015bci, warto\u015b\u0107 S jest jednoznacznie determinowana przez wiadomo\u015b\u0107 u\u017cytkownika i w zwi\u0105zku z tym mo\u017ce by\u0107 u\u017cyta jako \u017ar\u00f3d\u0142o do generowania pseudolosowych liczb.<\/p>\n<p><\/p>\n<p>W takiej koncepcji nie ma znaczenia, w jaki spos\u00f3b ustala si\u0119 R, to pozostaje w gestii orakula. Wa\u017cne, \u017ce S jest jednoznacznie okre\u015blona przez u\u017cytkownika, ale jej warto\u015b\u0107 pozostaje nieznana, dop\u00f3ki orakul jej nie opublikuje. Wszystko tak, jak chcieli\u015bmy!<\/p>\n<p><\/p>\n<p>M\u00f3wi\u0105c o ustalonym R, zwr\u00f3\u0107cie uwag\u0119, \u017ce <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/jedisct1\/libsodium\/issues\/170\">powt\u00f3rnie wykorzystane R<\/a><\/noindex> Podczas podpisywania r\u00f3\u017cnych wiadomo\u015bci zdecydowanie ujawnia klucz prywatny w schemacie EdDSA. Dla w\u0142a\u015bciciela orakula niezwykle wa\u017cne jest wykluczenie mo\u017cliwo\u015bci ponownego wykorzystania R do podpisywania r\u00f3\u017cnych wiadomo\u015bci u\u017cytkownika. Oznacza to, \u017ce przy jakichkolwiek manipulacjach lub zmowach orakul zawsze b\u0119dzie nara\u017cony na utrat\u0119 swojego klucza prywatnego.<\/p>\n<p><\/p>\n<p>W sumie orakul powinien oferowa\u0107 u\u017cytkownikom dwie funkcje: inicjalizacj\u0119, kt\u00f3ra rejestruje warto\u015b\u0107 R, oraz podpis, kt\u00f3ry zwraca warto\u015b\u0107 S. Para R, S jest zwyk\u0142ym weryfikowalnym podpisem wiadomo\u015bci u\u017cytkownika zawieraj\u0105cego ustalon\u0105 warto\u015b\u0107 R i dowolne dane u\u017cytkownika.<\/p>\n<p><\/p>\n<p>Mo\u017cna by zaprotestowa\u0107, \u017ce ten schemat dla blockchaina jest niczym innym jak zwyk\u0142\u0105 <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/348838\/\">schem\u0105 komit-ujawnienie<\/a><\/noindex>. W zasadzie tak, to jest to. Ale istnieje kilka niuans\u00f3w. Po pierwsze, orakul zawsze dzia\u0142a z t\u0105 sam\u0105 par\u0105 kluczy we wszystkich operacjach, na przyk\u0142ad jest to wygodne w u\u017cyciu w kontraktach. Po drugie, istnieje ryzyko utraty klucza prywatnego przez orakula przy niew\u0142a\u015bciwym zachowaniu, na przyk\u0142ad, je\u015bli orakul pozwala na pr\u00f3bki wyniku, wystarczy zrobi\u0107 tylko dwie pr\u00f3bki, aby pozna\u0107 klucz prywatny i uzyska\u0107 pe\u0142ny dost\u0119p do portfela. Po trzecie, natywnie weryfikowalny w blockchainie podpis, kt\u00f3ry jest \u017ar\u00f3d\u0142em losowo\u015bci \u2014 to jest pi\u0119kne.<\/p>\n<p><\/p>\n<p>Pol roku idea realizacji dojrzewa\u0142a w mojej g\u0142owie, a\u017c w ko\u0144cu pojawi\u0142a si\u0119 motywacja w postaci <noindex><a rel=\"nofollow\" href=\"https:\/\/medium.com\/waves-lab\/waves-labs-announces-first-grant-recipients-7568f01fec22\">grantu od Waves Labs<\/a><\/noindex>. Z du\u017cym grantem wi\u0105\u017ce si\u0119 du\u017ca odpowiedzialno\u015b\u0107, oznacza to, \u017ce projekt ma by\u0107!<\/p>\n<p><\/p>\n<h1 id=\"realizaciya\">Realizacja<\/h1>\n<p><\/p>\n<p>Zatem w tym projekcie <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/deemru\/VECRO\">VECRO zosta\u0142 zrealizowany<\/a><\/noindex> na blockchainie Waves w trybie zapytanie-odpowied\u017a za pomoc\u0105 transakcji transferowych mi\u0119dzy u\u017cytkownikiem a orakulem. Na koncie orakula znajduje si\u0119 skrypt, kt\u00f3ry \u015bci\u015ble kontroluje dzia\u0142anie zgodnie z opisan\u0105 powy\u017cej logik\u0105. Transakcje orakula s\u0105 weryfikowane z odzyskaniem ca\u0142ego \u0142a\u0144cucha interakcji z u\u017cytkownikiem. W weryfikacji finalnej warto\u015bci uczestnicz\u0105 wszystkie cztery transakcje, smart kontrakt \u0142\u0105czy je na \u015bci\u015ble weryfikacyjnej nici, krok po kroku sprawdzaj\u0105c wszystkie warto\u015bci i nie pozostawiaj\u0105c miejsca na jakiekolwiek manipulacje.<\/p>\n<p><\/p>\n<p>Jeszcze raz, aby zapad\u0142o w pami\u0119\u0107 i by\u0142o ja\u015bniejsze. Orakul nie dzia\u0142a po prostu wed\u0142ug zaproponowanego schematu. Jego dzia\u0142anie jest ca\u0142kowicie kontrolowane na poziomie blockchaina. <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/deemru\/VECRO\/blob\/master\/vecro.ride\">sztywno zwi\u0105zany z inteligentnym kontraktem<\/a><\/noindex>. Krok w lewo, a transakcja po prostu nie przejdzie. Wi\u0119c je\u015bli transakcja trafi\u0142a do blockchaina, u\u017cytkownik nie musi nawet nic sprawdza\u0107, wszystko ju\u017c zosta\u0142o zweryfikowane przez setki w\u0119z\u0142\u00f3w w sieci.<\/p>\n<p><\/p>\n<p>Obecnie w g\u0142\u00f3wnej sieci Waves uruchomiono jeden VECRO (mo\u017cesz uruchomi\u0107 sw\u00f3j, to nie jest trudne, wystarczy <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/deemru\/VECRO\/blob\/master\/config.sample.php\">rzuci\u0107 okiem na przyk\u0142ad konfiguracji<\/a><\/noindex>). Aktualny kod dzia\u0142a na PHP (na <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/deemru\/WavesKit\">WavesKit<\/a><\/noindex>, o kt\u00f3rym <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/446110\/\">opowiada\u0142em wcze\u015bniej<\/a><\/noindex>).<\/p>\n<p><\/p>\n<p>Aby skorzysta\u0107 z us\u0142ugi orakula, nale\u017cy:<\/p>\n<p><\/p>\n<ul>\n<li>Zarejestrowa\u0107 R;\n<ul>\n<li>Wys\u0142a\u0107 minimum 0.005 Waves na alias orakula init@vecr;<\/li>\n<li>Otrzyma\u0107 R-code w polu attachment w transferze 1 R-vecr tokena od orakula do u\u017cytkownika;<\/li>\n<\/ul>\n<\/li>\n<li>Otrzyma\u0107 podpis;\n<ul>\n<li>Wys\u0142a\u0107 minimum 0.005 Waves na alias orakula random@vecr oraz KONIECZNIE wskaza\u0107 wcze\u015bniej otrzymany R-code w polu attachment i dodatkowe dane u\u017cytkownika;<\/li>\n<li>Otrzyma\u0107 S-code w polu attachment w transferze 1 S-vecr tokena od orakula do u\u017cytkownika;<\/li>\n<\/ul>\n<\/li>\n<li>U\u017cy\u0107 S-code jako \u017ar\u00f3d\u0142a pseudolosowej liczby.<\/li>\n<\/ul>\n<p><\/p>\n<p>Zasady obecnej realizacji:<\/p>\n<p><\/p>\n<ul>\n<li>Wys\u0142ane do orakula Waves s\u0105 wykorzystywane jako op\u0142ata za zwrotn\u0105 transakcj\u0119 do u\u017cytkownika, maksymalnie do 1 Waves;<\/li>\n<li>R-code to konkatencja bajtu znaku 'R' i 32-bajtowej warto\u015bci R w kodowaniu base58;<\/li>\n<li>R-code w za\u0142\u0105czniku powinien by\u0107 pierwszy, dane u\u017cytkownika id\u0105 po R-code;<\/li>\n<li>S-code to konkatencja bajtu znaku 'S' i 32-bajtowej warto\u015bci S w kodowaniu base58;<\/li>\n<li>S jest wynikiem dzielenia modulo, dlatego nie mo\u017cna u\u017cywa\u0107 S jako pe\u0142noprawnej 256-bitowej liczby pseudolosowej (ta liczba mo\u017ce by\u0107 traktowana maksymalnie jako 252-bitowa liczba pseudolosowa);<\/li>\n<li>Najprostsz\u0105 opcj\u0105 jest u\u017cy\u0107 hasha S-code jako pseudolosowej liczby.<\/li>\n<\/ul>\n<p><\/p>\n<p>Przyk\u0142ad uzyskania S-code:<\/p>\n<p><\/p>\n<ul>\n<li>Inicjalizacja: <noindex><a rel=\"nofollow\" href=\"https:\/\/wavesexplorer.com\/tx\/8gc8jwM7JrPNehoDs7NVyos7BsufYktvkwVW1B6FAY6\">https:\/\/wavesexplorer.com\/tx\/8gc8jwM7JrPNehoDs7NVyos7BsufYktvkwVW1B6FAY6<\/a><\/noindex><\/li>\n<li>Uzyskiwanie R-code: <noindex><a rel=\"nofollow\" href=\"https:\/\/wavesexplorer.com\/tx\/9eB25SbzEwvHEbm8pcKj7MGDrYv1u3Fxpj696FkJ96hd\">https:\/\/wavesexplorer.com\/tx\/9eB25SbzEwvHEbm8pcKj7MGDrYv1u3Fxpj696FkJ96hd<\/a><\/noindex><\/li>\n<li>Zapytanie o wynik podpisu R-code i danych u\u017cytkownika 'random': <noindex><a rel=\"nofollow\" href=\"https:\/\/wavesexplorer.com\/tx\/6faoFJobEsugDFYmYmfsbtQYABmckNuE2kevaLh7ifzz\">https:\/\/wavesexplorer.com\/tx\/6faoFJobEsugDFYmYmfsbtQYABmckNuE2kevaLh7ifzz<\/a><\/noindex><\/li>\n<li>Uzyskiwanie S-code: <noindex><a rel=\"nofollow\" href=\"https:\/\/wavesexplorer.com\/tx\/C5VrFLQcprbA1KXAToaNvMP4Kg2rq43NkwWuADAA7wXX\">https:\/\/wavesexplorer.com\/tx\/C5VrFLQcprbA1KXAToaNvMP4Kg2rq43NkwWuADAA7wXX<\/a><\/noindex><\/li>\n<\/ul>\n<p><\/p>\n<p>Z technicznego punktu widzenia orakula jest w pe\u0142ni gotowe do pracy, mo\u017cesz \u015bmia\u0142o z niego korzysta\u0107. Z perspektywy zwyk\u0142ego u\u017cytkownika brakuje wygodnego graficznego interfejsu, na to trzeba b\u0119dzie poczeka\u0107.<\/p>\n<p><\/p>\n<p>Ch\u0119tnie odpowiem na pytania i przyjm\u0119 uwagi, dzi\u0119kuj\u0119.<\/p>\n<p>\u0179r\u00f3d\u0142o: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/449340\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041e\u0442 \u0438\u0434\u0435\u0438 \u0434\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438: \u043c\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u0443\u0435\u043c \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0443\u044e \u0441\u0445\u0435\u043c\u0443 \u0446\u0438\u0444\u0440\u043e\u0432\u043e\u0439 \u043f\u043e\u0434\u043f\u0438\u0441\u0438 \u043d\u0430 \u044d\u043b\u043b\u0438\u043f\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043a\u0440\u0438\u0432\u043e\u0439, \u0447\u0442\u043e\u0431\u044b \u043e\u043d\u0430 \u0431\u044b\u043b\u0430 \u0434\u0435\u0442\u0435\u0440\u043c\u0438\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439, \u0438 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u043d\u0430 \u0435\u0451 \u043e\u0441\u043d\u043e\u0432\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c\u044b\u0445 \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u0431\u043b\u043e\u043a\u0447\u0435\u0439\u043d\u0430 \u043f\u0441\u0435\u0432\u0434\u043e\u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0445 \u0447\u0438\u0441\u0435\u043b. \u0418\u0434\u0435\u044f \u041e\u0441\u0435\u043d\u044c\u044e 2018 \u0432 \u0431\u043b\u043e\u043a\u0447\u0435\u0439\u043d\u0435 Waves \u0431\u044b\u043b\u0438 \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u043f\u0435\u0440\u0432\u044b\u0435 \u0441\u043c\u0430\u0440\u0442-\u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u044b, \u043d\u0435\u043c\u0435\u0434\u043b\u0435\u043d\u043d\u043e \u0432\u043e\u0437\u043d\u0438\u043a \u0432\u043e\u043f\u0440\u043e\u0441 \u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u043f\u0441\u0435\u0432\u0434\u043e\u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0445 \u0447\u0438\u0441\u0435\u043b, \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0432\u0435\u0440\u044f\u0442\u044c. \u041b\u043e\u043c\u0430\u044f \u0433\u043e\u043b\u043e\u0432\u0443 \u043d\u0430\u0434 \u044d\u0442\u0438\u043c \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u043c, [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":24158,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-32343","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041e\u0442 \u0438\u0434\u0435\u0438 \u0434\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438: \u043c\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u0443\u0435\u043c \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0443\u044e \u0441\u0445\u0435\u043c\u0443 \u0446\u0438\u0444\u0440\u043e\u0432\u043e\u0439 \u043f\u043e\u0434\u043f\u0438\u0441\u0438 \u043d\u0430 \u044d\u043b\u043b\u0438\u043f\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043a\u0440\u0438\u0432\u043e\u0439, \u0447\u0442\u043e\u0431\u044b \u043e\u043d\u0430 \u0431\u044b\u043b\u0430 \u0434\u0435\u0442\u0435\u0440\u043c\u0438\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439, \u0438 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u043d\u0430 \u0435\u0451 \u043e\u0441\u043d\u043e\u0432\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c\u044b\u0445 \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u0431\u043b\u043e\u043a\u0447\u0435\u0439\u043d\u0430.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/cluchajnyj-orakul-na-osnove-tsifrovoj-podpisi-v-blokchejne\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"pl_PL\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47C\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0439 \u043e\u0440\u0430\u043a\u0443\u043b \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0446\u0438\u0444\u0440\u043e\u0432\u043e\u0439 \u043f\u043e\u0434\u043f\u0438\u0441\u0438 \u0432 \u0431\u043b\u043e\u043a\u0447\u0435\u0439\u043d\u0435 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041e\u0442 \u0438\u0434\u0435\u0438 \u0434\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438: \u043c\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u0443\u0435\u043c \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0443\u044e \u0441\u0445\u0435\u043c\u0443 \u0446\u0438\u0444\u0440\u043e\u0432\u043e\u0439 \u043f\u043e\u0434\u043f\u0438\u0441\u0438 \u043d\u0430 \u044d\u043b\u043b\u0438\u043f\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043a\u0440\u0438\u0432\u043e\u0439, \u0447\u0442\u043e\u0431\u044b \u043e\u043d\u0430 \u0431\u044b\u043b\u0430 \u0434\u0435\u0442\u0435\u0440\u043c\u0438\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439, \u0438 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u043d\u0430 \u0435\u0451 \u043e\u0441\u043d\u043e\u0432\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c\u044b\u0445 \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u0431\u043b\u043e\u043a\u0447\u0435\u0439\u043d\u0430.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/cluchajnyj-orakul-na-osnove-tsifrovoj-podpisi-v-blokchejne\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T18:46:27+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T18:46:27+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Losowy oracle oparty na cyfrowym podpisie w blokchainie | ProHoster","description":"Od pomys\u0142u do realizacji: modyfikujemy istniej\u0105cy schemat cyfrowego podpisu na krzywej eliptycznej, aby uczyni\u0107 go deterministycznym, a na tej podstawie oferujemy funkcje uzyskiwania weryfikowalnych w ramach blokchainu.","canonical_url":"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/cluchajnyj-orakul-na-osnove-tsifrovoj-podpisi-v-blokchejne","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"pl_PL","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47C\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0439 \u043e\u0440\u0430\u043a\u0443\u043b \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0446\u0438\u0444\u0440\u043e\u0432\u043e\u0439 \u043f\u043e\u0434\u043f\u0438\u0441\u0438 \u0432 \u0431\u043b\u043e\u043a\u0447\u0435\u0439\u043d\u0435 | ProHoster","og:description":"\u041e\u0442 \u0438\u0434\u0435\u0438 \u0434\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438: \u043c\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u0443\u0435\u043c \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0443\u044e \u0441\u0445\u0435\u043c\u0443 \u0446\u0438\u0444\u0440\u043e\u0432\u043e\u0439 \u043f\u043e\u0434\u043f\u0438\u0441\u0438 \u043d\u0430 \u044d\u043b\u043b\u0438\u043f\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043a\u0440\u0438\u0432\u043e\u0439, \u0447\u0442\u043e\u0431\u044b \u043e\u043d\u0430 \u0431\u044b\u043b\u0430 \u0434\u0435\u0442\u0435\u0440\u043c\u0438\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439, \u0438 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c \u043d\u0430 \u0435\u0451 \u043e\u0441\u043d\u043e\u0432\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c\u044b\u0445 \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u0431\u043b\u043e\u043a\u0447\u0435\u0439\u043d\u0430.","og:url":"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/cluchajnyj-orakul-na-osnove-tsifrovoj-podpisi-v-blokchejne","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T18:46:27+00:00","article:modified_time":"2019-10-31T18:46:27+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"32343","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-21 10:26:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 03:00:23","updated":"2026-01-21 10:26:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts\/32343","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/comments?post=32343"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts\/32343\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/media\/24158"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/media?parent=32343"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/categories?post=32343"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/tags?post=32343"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}