{"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\/sq\/blog\/administrirovanie\/cluchajnyj-orakul-na-osnove-tsifrovoj-podpisi-v-blokchejne","title":{"rendered":"Orakulli rast\u00ebsor n\u00eb baz\u00eb t\u00eb n\u00ebnshkrimit digjital n\u00eb blockchain","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Nga ideja n\u00eb realizim: ne modifikojm\u00eb skem\u00ebn ekzistuese t\u00eb n\u00ebnshkrimit digjital n\u00eb kurb\u00ebn ellipti q\u00eb t\u00eb jet\u00eb e caktuar dhe ofrojm\u00eb mbi t\u00eb funksione p\u00ebr t\u00eb marr\u00eb numra pseudo-rast\u00ebsor\u00eb t\u00eb verifikuesh\u00ebm brenda bllok\u00e7ain.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Orakulli rast\u00ebsor n\u00eb baz\u00eb t\u00eb n\u00ebnshkrimit digjital n\u00eb blockchain\" 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\">Ideja<\/h1>\n<p><\/p>\n<p>N\u00eb vjesht\u00ebn e vitit 2018 n\u00eb bllok\u00e7ain Waves u aktivizuan <noindex><a rel=\"nofollow\" href=\"https:\/\/blog.wavesplatform.com\/smart-accounts-finally-activated-on-waves-mainnet-8bb7c7b67beb\">kontratat e para inteligjente<\/a><\/noindex>, menj\u00ebher\u00eb u shfaq pyetja p\u00ebr mund\u00ebsin\u00eb e marrjes <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\">numrave pseudo-rast\u00ebsor\u00eb<\/a><\/noindex>, t\u00eb cil\u00ebve mund t\u2019u besohet.<\/p>\n<p><\/p>\n<p>Duke thyer kok\u00ebn mbi k\u00ebt\u00eb \u00e7\u00ebshtje, p\u00ebrfundimisht arrita n\u00eb p\u00ebrfundimin: \u00e7do bllok\u00e7ain \u00ebsht\u00eb nj\u00eb kafaz, \u00ebsht\u00eb e pamundur t\u00eb marr\u00ebsh nj\u00eb burim t\u00eb besuesh\u00ebm entropi n\u00eb nj\u00eb sistem t\u00eb mbyllur.<\/p>\n<p><\/p>\n<p>Por nj\u00eb ide m\u00eb p\u00eblqeu: n\u00ebse <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\">nj\u00eb orakull rast\u00ebsor<\/a><\/noindex> do t\u00eb n\u00ebnshkruante t\u00eb dh\u00ebnat e p\u00ebrdoruesit me nj\u00eb algorit\u00ebm t\u00eb caktuar, at\u00ebher\u00eb p\u00ebrdoruesi gjithmon\u00eb do t\u00eb mund t\u00eb verifikonte at\u00eb n\u00ebnshkrim me \u00e7el\u00ebsin publik dhe do t\u00eb ishte i sigurt se vlera e marr\u00eb \u00ebsht\u00eb unike. Orakulli, sa do t\u00eb donte, nuk \u00ebsht\u00eb n\u00eb gjendje t\u00eb ndryshoj\u00eb asgj\u00eb; algoritmi jep nj\u00eb rezultat t\u00eb qart\u00eb. N\u00eb thelb, p\u00ebrdoruesi regjistron rezultatin, por nuk e di at\u00eb deri sa orakulli ta publikoj\u00eb. K\u00ebshtu, rezulton se mund t\u00eb mos i besosh fare orakullit, por t\u00eb verifikosh rezultatin e pun\u00ebs s\u00eb tij. At\u00ebher\u00eb, n\u00eb rast t\u00eb verifikimit t\u00eb suksessh\u00ebm, nj\u00eb n\u00ebnshkrim i till\u00eb mund t\u00eb konsiderohet nj\u00eb burim entropie p\u00ebr numrin pseudo-rast\u00ebsor.<\/p>\n<p><\/p>\n<p>N\u00eb platform\u00ebn bllok\u00e7ain Waves p\u00ebrdoret nj\u00eb skem\u00eb n\u00ebnshkrimi <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/EdDSA\">EdDSA<\/a><\/noindex> nj\u00eb variant <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/EdDSA#Ed25519\">Ed25519<\/a><\/noindex>. N\u00eb k\u00ebt\u00eb skem\u00eb n\u00ebnshkrimi p\u00ebrb\u00ebhet nga vlerat R dhe S, ku R varet nga nj\u00eb vler\u00eb rast\u00ebsore, nd\u00ebrsa S llogaritet mbi baz\u00ebn e mesazhit t\u00eb n\u00ebnshkruar, \u00e7el\u00ebsit privat dhe t\u00eb nj\u00ebjtat numra rast\u00ebsor\u00eb si R. K\u00ebshtu, nuk ka nj\u00eb var\u00ebsi t\u00eb qart\u00eb; p\u00ebr nj\u00eb mesazh t\u00eb nj\u00ebjt\u00eb p\u00ebrdoruesi ekzistojn\u00eb shum\u00eb n\u00ebnshkrime valide.<\/p>\n<p><\/p>\n<p>\u00cbsht\u00eb e qart\u00eb se nj\u00eb n\u00ebnshkrim i till\u00eb n\u00eb form\u00ebn e past\u00ebr nuk mund t\u00eb p\u00ebrdoret si burim numrash pseudo-rast\u00ebsor\u00eb, sepse \u00ebsht\u00eb jodeterminist dhe, si rezultat, mund t\u00eb jet\u00eb leht\u00ebsisht e ekspozuar ndaj manipulimeve nga ana e orakullit.<\/p>\n<p><\/p>\n<p>Por, si\u00e7 doli, \u00ebsht\u00eb e mundur ta b\u00ebsh at\u00eb t\u00eb caktuar n\u00eb t\u00eb v\u00ebrtet\u00eb.<\/p>\n<p><\/p>\n<p>Shpresat e m\u00ebdha i kam pasur p\u00ebr <noindex><a rel=\"nofollow\" href=\"https:\/\/tools.ietf.org\/html\/draft-irtf-cfrg-vrf-04\">funkcionin e rast\u00ebsis\u00eb t\u00eb verifikuesh\u00ebm (VRF)<\/a><\/noindex>, por pasi studimi t\u00eb materialeve, u detyruam t\u00eb heqim dor\u00eb nga ky variant. Edhe pse VRF ofron nj\u00eb variant t\u00eb caktuar t\u00eb n\u00ebnshkrimit dhe prov\u00ebs s\u00eb tij, algoritmi p\u00ebrmban nj\u00eb vend t\u00eb \u00e7uditsh\u00ebm q\u00eb hap nj\u00eb vrim\u00eb t\u00eb zez\u00eb p\u00ebr manipulimin nga orakulli. Sakt\u00ebsisht, gjat\u00eb llogaritjes s\u00eb vler\u00ebs k (<noindex><a rel=\"nofollow\" href=\"https:\/\/tools.ietf.org\/html\/draft-irtf-cfrg-vrf-04#section-5.1\">seksioni 5.1<\/a><\/noindex>) p\u00ebrdoret nj\u00eb \u00e7el\u00ebs privat, i cili mbetet i panjohur p\u00ebr p\u00ebrdoruesin, q\u00eb do t\u00eb thot\u00eb se p\u00ebrdoruesi nuk mund ta verifikoj\u00eb sakt\u00ebsin\u00eb e llogaritjes s\u00eb k, q\u00eb do t\u00eb thot\u00eb se orakulli mund t\u00eb p\u00ebrdor\u00eb \u00e7do vler\u00eb k q\u00eb d\u00ebshiron dhe nj\u00ebkoh\u00ebsisht t\u00eb mbaj\u00eb nj\u00eb baz\u00eb t\u00eb dh\u00ebnash p\u00ebr p\u00ebrputhjet e k dhe t\u00eb dh\u00ebnave t\u00eb n\u00ebnshkruara, p\u00ebr t\u00eb qen\u00eb n\u00eb gjendje t\u00eb ri-llogaris\u00eb gjithmon\u00eb rezultatin e sakt\u00eb sipas VRF. N\u00ebse shihni nj\u00eb loj\u00eb t\u00eb bazuar n\u00eb VRF pa zbuluar \u00e7el\u00ebsin privat, mund t\u00eb ndiheni inteligjent\u00eb: t\u00eb theksoni nevoj\u00ebn p\u00ebr t\u00eb zbuluar \u00e7el\u00ebsin ose p\u00ebr ta p\u00ebrjashtuar at\u00eb nga llogaritja e k, at\u00ebher\u00eb \u00e7el\u00ebsi privat do t\u00eb zbulohet automatikisht me n\u00ebnshkrimin e par\u00eb. N\u00eb p\u00ebrgjith\u00ebsi, si\u00e7 \u00ebsht\u00eb th\u00ebn\u00eb m\u00eb par\u00eb, nj\u00eb skem\u00eb e \u00e7uditshme p\u00ebr nj\u00eb orakull t\u00eb rast\u00ebsish\u00ebm.<\/p>\n<p><\/p>\n<p>Pas disa reflektimeve dhe mb\u00ebshtetjes nga analist\u00ebt lokal\u00eb, lindi skema e funksionimit t\u00eb VECRO.<\/p>\n<p><\/p>\n<p>VECRO \u00ebsht\u00eb nj\u00eb akronim p\u00ebr Verifiable Elliptic Curve Random Oracle, q\u00eb n\u00eb shqip do t\u00eb thot\u00eb orakull i rast\u00ebsish\u00ebm i verifikuesh\u00ebm mbi kurba eliptike.<\/p>\n<p><\/p>\n<p>Gjith\u00e7ka rezultoi mjaft e thjesht\u00eb; p\u00ebr t\u00eb arritur determinimin, \u00ebsht\u00eb e nevojshme t\u00eb fijosh vler\u00ebn R para shfaqjes s\u00eb mesazhit t\u00eb n\u00ebnshkruar. N\u00ebse R \u00ebsht\u00eb fijuar dhe \u00ebsht\u00eb pjes\u00eb e mesazhit t\u00eb n\u00ebnshkruar, q\u00eb garanton gjithashtu fijimin e R n\u00eb vet\u00eb mesazhin e n\u00ebnshkruar, vlera S p\u00ebrcaktohet qartazi nga mesazhi i p\u00ebrdoruesit dhe, p\u00ebr pasoj\u00eb, mund t\u00eb p\u00ebrdoret si nj\u00eb burim p\u00ebr numra pseudo-rast\u00ebsor\u00eb.<\/p>\n<p><\/p>\n<p>N\u00eb nj\u00eb skem\u00eb t\u00eb till\u00eb, nuk ka r\u00ebnd\u00ebsi si e fiksoni R, kjo mbetet n\u00eb p\u00ebrgjegj\u00ebsin\u00eb e orakullit. E r\u00ebnd\u00ebsishme \u00ebsht\u00eb q\u00eb S p\u00ebrcaktohet qartazi nga p\u00ebrdoruesi, por vlera e tij mbetet e panjohur derisa orakulli ta publikoj\u00eb. Ashtu si\u00e7 d\u00ebshiruam!<\/p>\n<p><\/p>\n<p>Duke folur p\u00ebr R t\u00eb fiksuar, vini re se <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/jedisct1\/libsodium\/issues\/170\">R i p\u00ebrdorur m\u00eb par\u00eb<\/a><\/noindex> n\u00eb n\u00ebnshkrimin e mesazheve t\u00eb ndryshme, ky proces p\u00ebrkufizon qart\u00eb \u00e7el\u00ebsin e fsheht\u00eb n\u00eb skem\u00ebn EdDSA. P\u00ebr pronarin e orakullit, \u00ebsht\u00eb thelb\u00ebsore t\u00eb p\u00ebrjashtoj\u00eb mund\u00ebsin\u00eb e rip\u00ebrdorimit t\u00eb R p\u00ebr n\u00ebnshkrimin e mesazheve t\u00eb ndryshme nga p\u00ebrdoruesi. K\u00ebshtu, n\u00eb \u00e7do manipulim ose marr\u00ebveshje, orakulli gjithmon\u00eb do t\u00eb rrezikoj\u00eb humbjen e \u00e7el\u00ebsit t\u00eb tij t\u00eb fsheht\u00eb.<\/p>\n<p><\/p>\n<p>Pra, orakulli duhet t'u ofroj\u00eb p\u00ebrdoruesve dy funksione: inicializimin q\u00eb regjistron vler\u00ebn R, dhe n\u00ebnshkrimin q\u00eb kthen vler\u00ebn S. N\u00eb k\u00ebt\u00eb m\u00ebnyr\u00eb, \u00e7ifti R, S \u00ebsht\u00eb nj\u00eb n\u00ebnshkrim i verifikuesh\u00ebm i mesazhit t\u00eb p\u00ebrdoruesit q\u00eb p\u00ebrmban vler\u00ebn e fiksuar R dhe t\u00eb dh\u00ebna t\u00eb rast\u00ebsishme nga p\u00ebrdoruesi.<\/p>\n<p><\/p>\n<p>Mund t\u00eb argumentohet se kjo skem\u00eb p\u00ebr blockchain nuk \u00ebsht\u00eb asgj\u00eb tjet\u00ebr p\u00ebrve\u00e7se nj\u00eb <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/348838\/\">skem\u00eb angazhim-zbules\u00eb<\/a><\/noindex>. N\u00eb thelb, po, kjo \u00ebsht\u00eb ajo. Por ka disa nuanca. S\u00eb pari, orakulli gjithmon\u00eb punon me t\u00eb nj\u00ebjtin \u00e7el\u00ebs n\u00eb t\u00eb gjitha operacionet, p\u00ebr shembull, kjo \u00ebsht\u00eb e leht\u00eb p\u00ebr t'u p\u00ebrdorur n\u00eb kontrata. S\u00eb dyti, ekziston rreziku nga humbja e \u00e7el\u00ebsit t\u00eb fsheht\u00eb nga orakulli n\u00eb rast t\u00eb nj\u00eb sjelljeje t\u00eb pap\u00ebrshtatshme, p\u00ebr shembull, n\u00ebse orakulli lejon t\u00eb b\u00ebhen mostra t\u00eb rezultatit, at\u00ebher\u00eb mjafton t\u00eb b\u00ebhen vet\u00ebm dy mostra p\u00ebr t\u00eb zbuluar \u00e7el\u00ebsin e fsheht\u00eb dhe p\u00ebr t\u00eb marr\u00eb qasje t\u00eb plot\u00eb n\u00eb portofol. S\u00eb treti, n\u00ebnshkrimi q\u00eb \u00ebsht\u00eb natyrsh\u00ebm i verifikuesh\u00ebm n\u00eb blockchain, i cili \u00ebsht\u00eb burimi i rast\u00ebsis\u00eb \u2014 \u00ebsht\u00eb e bukur.<\/p>\n<p><\/p>\n<p>P\u00ebr gjasht\u00eb muaj, ideja e realizimit u zhvillua n\u00eb mendje, derisa m\u00eb n\u00eb fund u shfaq motivimi n\u00eb form\u00ebn e <noindex><a rel=\"nofollow\" href=\"https:\/\/medium.com\/waves-lab\/waves-labs-announces-first-grant-recipients-7568f01fec22\">nj\u00eb granti nga Waves Labs<\/a><\/noindex>. Me nj\u00eb grant t\u00eb madh vjen nj\u00eb p\u00ebrgjegj\u00ebsi e madhe, pra projekti do t\u00eb ekzistoj\u00eb!<\/p>\n<p><\/p>\n<h1 id=\"realizaciya\">Implementimi<\/h1>\n<p><\/p>\n<p>K\u00ebshtu, n\u00eb k\u00ebt\u00eb projekt <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/deemru\/VECRO\">VECRO u realizua<\/a><\/noindex> n\u00eb blockchain Waves n\u00eb modin k\u00ebrkes\u00eb-p\u00ebrgjigje p\u00ebrmes transaksioneve t\u00eb transferit mes p\u00ebrdoruesit dhe orakullit. N\u00eb k\u00ebt\u00eb rast, n\u00eb llogarin\u00eb e orakullit \u00ebsht\u00eb instaluar nj\u00eb skenar q\u00eb kontrollon pun\u00ebn n\u00eb p\u00ebrputhje t\u00eb ngusht\u00eb me logjik\u00ebn e p\u00ebrshkruar m\u00eb sip\u00ebr. Transaksionet e orakullit kalojn\u00eb nj\u00eb verifikim me rifitimin e gjith\u00eb zinxhirin e nd\u00ebrveprimit me p\u00ebrdoruesin. N\u00eb verifikimin e vler\u00ebs p\u00ebrfundimtare marrin pjes\u00eb t\u00eb katra transaksion, smart kontrata i lidh ato n\u00eb nj\u00eb vij\u00eb verifikimi strikte, hap pas hapi duke kontrolluar t\u00eb gjitha vlerat dhe duke mos l\u00ebn\u00eb hap\u00ebsir\u00eb p\u00ebr ndonj\u00eb manipulim.<\/p>\n<p><\/p>\n<p>Nj\u00eb her\u00eb tjet\u00ebr, q\u00eb t\u00eb mbetet e qart\u00eb dhe t\u00eb jet\u00eb m\u00eb e kuptueshme. Orakulli nuk punon thjesht sipas skem\u00ebs s\u00eb propozuar. Puna e tij kontrollohet plot\u00ebsisht n\u00eb nivelin e blockchain nga nj\u00eb sistem i vendosur. <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/deemru\/VECRO\/blob\/master\/vecro.ride\">kontrakt i menaxhuar nga nj\u00eb smart kontrat\u00eb<\/a><\/noindex>. Nj\u00eb hap n\u00eb t\u00eb majt\u00eb, dhe transaksioni thjesht nuk do t\u00eb kaloj\u00eb. Prandaj, n\u00ebse transaksioni ka hyr\u00eb n\u00eb blockchain, p\u00ebrdoruesi nuk ka nevoj\u00eb t\u00eb kontrolloj\u00eb asgj\u00eb, sepse gjith\u00e7ka \u00ebsht\u00eb verifikuar tashm\u00eb nga qindra nyje t\u00eb rrjetit.<\/p>\n<p><\/p>\n<p>Aktualisht n\u00eb rrjetin kryesor t\u00eb Waves \u00ebsht\u00eb aktiv nj\u00eb VECRO (mund t\u00eb filloni t\u00eb tuajin, nuk \u00ebsht\u00eb e v\u00ebshtir\u00eb, thjesht <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/deemru\/VECRO\/blob\/master\/config.sample.php\">shikoni nj\u00eb shembull konfigurimi<\/a><\/noindex>). Kodi aktual funksionon n\u00eb PHP (n\u00eb <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/deemru\/WavesKit\">WavesKit<\/a><\/noindex>, p\u00ebr t\u00eb cilin <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/446110\/\">kam folur m\u00eb par\u00eb<\/a><\/noindex>).<\/p>\n<p><\/p>\n<p>P\u00ebr t\u00eb p\u00ebrdorur sh\u00ebrbimin e orakullit duhet:<\/p>\n<p><\/p>\n<ul>\n<li>T\u00eb regjistroni R;\n<ul>\n<li>D\u00ebrgoni minimum 0.005 Waves n\u00eb alias-in e orakullit init@vecr;<\/li>\n<li>Merrni R-code n\u00eb fush\u00ebn e bashk\u00ebngjitjes n\u00eb transferimin e 1 R-vecr tokenit nga orakulli p\u00ebr p\u00ebrdoruesin;<\/li>\n<\/ul>\n<\/li>\n<li>Merrni n\u00ebnshkrimin;\n<ul>\n<li>D\u00ebrgoni minimum 0.005 Waves n\u00eb alias-in e orakullit random@vecr, dhe gjithashtu T\u00cb JET\u00cb OBLIGUAR t\u00eb tregoni n\u00eb fush\u00ebn e bashk\u00ebngjitjes R-code t\u00eb marr\u00eb m\u00eb par\u00eb dhe t\u00eb dh\u00ebna t\u00eb tjera p\u00ebrdoruesi;<\/li>\n<li>Merrni S-code n\u00eb fush\u00ebn e bashk\u00ebngjitjes n\u00eb transferimin e 1 S-vecr tokenit nga orakulli p\u00ebr p\u00ebrdoruesin;<\/li>\n<\/ul>\n<\/li>\n<li>P\u00ebrdorni S-code si burim t\u00eb numrit pseudo-t\u00eb rast\u00ebsish\u00ebm.<\/li>\n<\/ul>\n<p><\/p>\n<p>Detajet e realizimit aktual:<\/p>\n<p><\/p>\n<ul>\n<li>Waves e d\u00ebrguar orakullit p\u00ebrdoret si komision p\u00ebr transferimin e kund\u00ebrt te p\u00ebrdoruesi, deri n\u00eb maksimum 1 Waves;<\/li>\n<li>R-code \u00ebsht\u00eb bashkimi i bajtit t\u00eb simbolit \u2018R\u2019 dhe vler\u00ebs 32-bajt R n\u00eb kodimin base58;<\/li>\n<li>R-code n\u00eb bashk\u00ebngjitje duhet t\u00eb jet\u00eb i pari, t\u00eb dh\u00ebnat e p\u00ebrdoruesit vijn\u00eb pas R-code;<\/li>\n<li>S-code \u00ebsht\u00eb bashkimi i bajtit t\u00eb simbolit \u2018S\u2019 dhe vler\u00ebs 32-bajt S n\u00eb kodimin base58;<\/li>\n<li>S \u00ebsht\u00eb rezultati i ndarjes modulo, prandaj nuk mund t\u00eb p\u00ebrdoret S si nj\u00eb num\u00ebr pseudo-t\u00eb rast\u00ebsish\u00ebm 256-bit\u00ebsh i plot\u00eb (ky num\u00ebr mund t\u00eb konsiderohet maksimum 252-bit\u00ebsh si num\u00ebr pseudo-t\u00eb rast\u00ebsish\u00ebm);<\/li>\n<li>M\u00ebnyra m\u00eb e thjesht\u00eb \u00ebsht\u00eb t\u00eb p\u00ebrdorni hash-in nga S-code si nj\u00eb num\u00ebr pseudo-t\u00eb rast\u00ebsish\u00ebm.<\/li>\n<\/ul>\n<p><\/p>\n<p>Shembulli i marrjes s\u00eb S-code:<\/p>\n<p><\/p>\n<ul>\n<li>Inicimi: <noindex><a rel=\"nofollow\" href=\"https:\/\/wavesexplorer.com\/tx\/8gc8jwM7JrPNehoDs7NVyos7BsufYktvkwVW1B6FAY6\">https:\/\/wavesexplorer.com\/tx\/8gc8jwM7JrPNehoDs7NVyos7BsufYktvkwVW1B6FAY6<\/a><\/noindex><\/li>\n<li>Marrja e R-code: <noindex><a rel=\"nofollow\" href=\"https:\/\/wavesexplorer.com\/tx\/9eB25SbzEwvHEbm8pcKj7MGDrYv1u3Fxpj696FkJ96hd\">https:\/\/wavesexplorer.com\/tx\/9eB25SbzEwvHEbm8pcKj7MGDrYv1u3Fxpj696FkJ96hd<\/a><\/noindex><\/li>\n<li>K\u00ebrkesa p\u00ebr rezultatin e n\u00ebnshkrimit t\u00eb R-code dhe t\u00eb dh\u00ebnave p\u00ebrdoruesi 'random': <noindex><a rel=\"nofollow\" href=\"https:\/\/wavesexplorer.com\/tx\/6faoFJobEsugDFYmYmfsbtQYABmckNuE2kevaLh7ifzz\">https:\/\/wavesexplorer.com\/tx\/6faoFJobEsugDFYmYmfsbtQYABmckNuE2kevaLh7ifzz<\/a><\/noindex><\/li>\n<li>Marrja e 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>Nga pik\u00ebpamja teknike, orakulli \u00ebsht\u00eb plot\u00ebsisht i gatsh\u00ebm p\u00ebr t'u p\u00ebrdorur, mund ta p\u00ebrdorni pa frik\u00eb. Nga k\u00ebndv\u00ebshtrimi i p\u00ebrdoruesit t\u00eb zakonsh\u00ebm, mungon nj\u00eb nd\u00ebrfaqe grafike e p\u00ebrshtatshme, p\u00ebr k\u00ebt\u00eb do t\u00eb duhet t\u00eb presim.<\/p>\n<p><\/p>\n<p>Do t\u00eb isha i lumtur t\u00eb p\u00ebrgjigjem n\u00eb pyetje dhe t\u00eb pranoja v\u00ebrejtje, faleminderit.<\/p>\n<p>Burimi: <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.2 - 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\/sq\/blog\/administrirovanie\/cluchajnyj-orakul-na-osnove-tsifrovoj-podpisi-v-blokchejne\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2\" \/>\n\t\t<meta property=\"og:locale\" content=\"sq_AL\" \/>\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\/sq\/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\udd47Orakulli rast\u00ebsor i bazuar n\u00eb n\u00ebnshkrimin dixhital n\u00eb blockchain | ProHoster","description":"Nga ideja n\u00eb realizim: modifikojm\u00eb skem\u00ebn ekzistuese t\u00eb n\u00ebnshkrimit dixhital mbi kurb\u00ebn eliptike p\u00ebr ta b\u00ebr\u00eb at\u00eb t\u00eb p\u00ebrcaktuar, dhe ofrojm\u00eb n\u00eb baz\u00eb t\u00eb saj funksione p\u00ebr marrjen e verifikueshme brenda blockchain-it.","canonical_url":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/cluchajnyj-orakul-na-osnove-tsifrovoj-podpisi-v-blokchejne","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sq_AL","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\/sq\/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\/sq\/wp-json\/wp\/v2\/posts\/32343","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/comments?post=32343"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/32343\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media\/24158"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media?parent=32343"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/categories?post=32343"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/tags?post=32343"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}