{"id":38856,"date":"2019-10-31T22:26:22","date_gmt":"2019-10-31T19:26:22","guid":{"rendered":"https:\/\/prohoster.info\/blog\/publichnyj-test-reshenie-dlya-privatnosti-i-masshtabiruemosti-v-efiriume\/"},"modified":"2019-10-31T22:26:22","modified_gmt":"2019-10-31T19:26:22","slug":"publichnyj-test-reshenie-dlya-privatnosti-i-masshtabiruemosti-v-efiriume","status":"publish","type":"post","link":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/publichnyj-test-reshenie-dlya-privatnosti-i-masshtabiruemosti-v-efiriume","title":{"rendered":"Test publik: zgjidhje p\u00ebr privat\u00ebsin\u00eb dhe shkall\u00ebzueshm\u00ebrin\u00eb n\u00eb Ethereum","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><b>Blockchain<\/b> \u2014 nj\u00eb teknologji inovative q\u00eb premton t\u00eb p\u00ebrmir\u00ebsoj\u00eb shum\u00eb aspekte t\u00eb jet\u00ebs njer\u00ebzore. Ajo transferon procese dhe produkte reale n\u00eb hap\u00ebsir\u00ebn digjitale, siguron shpejt\u00ebsi dhe besueshm\u00ebri n\u00eb operacionet financiare, ul kostot e tyre, si dhe mund\u00ebson krijimin e aplikacioneve moderne DAPP duke p\u00ebrdorur kontrata inteligjente n\u00eb rrjeta t\u00eb decentralizuara.<\/p>\n<p>Duke pasur parasysh p\u00ebrfitimet e shumta dhe aplikacionet e ndryshme t\u00eb blockchain, mund t\u00eb duket e \u00e7uditshme q\u00eb kjo teknologji premtuese nuk ka dep\u00ebrtuar ende n\u00eb t\u00eb gjitha sektoret. Problemi \u00ebsht\u00eb se blockchain-et e decentralizuar modern\u00eb i mang\u00ebsin shkall\u00ebzueshm\u00ebris\u00eb. Ethereum proceson rreth 20 transaksione n\u00eb sekond\u00eb, q\u00eb \u00ebsht\u00eb e pamjaftueshme p\u00ebr t\u00eb p\u00ebrmbushur nevojat e biznesit dinamik modern. N\u00eb t\u00eb nj\u00ebjt\u00ebn koh\u00eb, kompanit\u00eb q\u00eb p\u00ebrdorin teknologjin\u00eb blockchain nuk guxojn\u00eb t\u00eb dor\u00ebzojn\u00eb Ethereum p\u00ebr shkak t\u00eb nivelit t\u00eb tij t\u00eb lart\u00eb t\u00eb siguris\u00eb ndaj hakimeve dhe d\u00ebshtimeve t\u00eb rrjetit.<\/p>\n<p>P\u00ebr t\u00eb siguruar decentralizimin, sigurin\u00eb dhe shkall\u00ebzueshm\u00ebrin\u00eb n\u00eb blockchain, duke zgjidhur k\u00ebshtu Trilemm\u00ebn e Shkall\u00ebzueshm\u00ebris\u00eb, ekipi i zhvilluesve <noindex><a rel=\"nofollow\" href=\"https:\/\/opporty.com\/\">Opporty<\/a><\/noindex> krijoi Plasma Cash \u2014 nj\u00eb zinxhir derivativ q\u00eb p\u00ebrb\u00ebhet nga nj\u00eb kontrat\u00eb inteligjente dhe nj\u00eb rrjet privat t\u00eb bazuar n\u00eb Node.js, i cili transferon periodikisht gjendjen e tij n\u00eb zinxhirin kryesor (Ethereum).<\/p>\n<p><img decoding=\"async\" alt=\"Test publik: zgjidhje p\u00ebr privat\u00ebsin\u00eb dhe shkall\u00ebzueshm\u00ebrin\u00eb n\u00eb Ethereum\" src=\"\/wp-content\/uploads\/2019\/10\/02cc45df3474179d0936c2a86fb7dee3.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>Proceset kryesore n\u00eb Plasma Cash<\/h2>\n<p>\n<b>1. <\/b>P\u00ebrdoruesi th\u00ebrret funksionin e kontrat\u00ebs inteligjente `deposit`, duke i kaluar nj\u00eb shum\u00eb n\u00eb ETH q\u00eb ai d\u00ebshiron t\u00eb depozitoj\u00eb n\u00eb tokenin Plasma Cash. Funksioni i kontrat\u00ebs inteligjente krijon tokenin dhe gjeneron nj\u00eb ngjarje n\u00eb lidhje me k\u00ebt\u00eb.<\/p>\n<p><b>2. <\/b>Nodet e Plasma Cash, q\u00eb jan\u00eb shkruar p\u00ebr ngjarjet e kontrat\u00ebs inteligjente, marrin ngjarjen e krijimit t\u00eb depozit\u00ebs dhe shtojn\u00eb n\u00eb rezervuar transaksionin e krijimit t\u00eb tokenit.<\/p>\n<p><b>3. <\/b>Periodikisht, nodet speciale t\u00eb Plasma Cash marrin t\u00eb gjitha transaksionet nga rezervuari ( deri n\u00eb 1 milion) dhe formojn\u00eb nga ato nj\u00eb bllok, llogarisin pem\u00ebn Merkle dhe, p\u00ebr rrjedhoj\u00eb, hash-in. Ky bllok d\u00ebrgohet te nodet e tjera p\u00ebr verifikim. Nodet kontrollojn\u00eb n\u00ebse hash-i Merkle \u00ebsht\u00eb valid, n\u00ebse transaksionet jan\u00eb valide (p.sh., n\u00ebse d\u00ebrguesi i tokenit \u00ebsht\u00eb pronari i tij). Pas verifikimit t\u00eb bllokut, nodi th\u00ebrret funksionin `submitBlock` t\u00eb kontrat\u00ebs inteligjente, e cila ruan n\u00eb zinxhirin kryesor numrin dhe hash-in Merkle t\u00eb bllokut. Kontrata inteligjente gjeneron nj\u00eb ngjarje p\u00ebr shtimin e suksessh\u00ebm t\u00eb bllokut. Transaksionet fshihen nga rezervuari. <\/p>\n<p><b>4. <\/b>Nodet q\u00eb marrin nj\u00eb ngjarje p\u00ebr d\u00ebrgimin e bllokut fillojn\u00eb t\u00eb aplikojn\u00eb transaksionet q\u00eb u jan\u00eb shtuar bllokut.<\/p>\n<p><b>5. <\/b>N\u00eb nj\u00eb moment, pronari (ose nj\u00eb person tjet\u00ebr) i simbolit d\u00ebshiron ta t\u00ebrheq\u00eb at\u00eb nga Plasma Cash. P\u00ebr k\u00ebt\u00eb, ai th\u00ebrret funksionin `startExit`, duke i kaluar informacionet p\u00ebr dy transaksionet e fundit t\u00eb simbolit, t\u00eb cilat konfirmojn\u00eb se ai \u00ebsht\u00eb pronari i simbolit. Kontrata inteligjente, duke p\u00ebrdorur hashin Merkle, verifikon pranin\u00eb e transaksioneve n\u00eb blloqe dhe d\u00ebrgon simbolin p\u00ebr t\u00ebrheqje, e cila do t\u00eb ndodhi pas dy jav\u00ebsh.<\/p>\n<p><b>6. <\/b>N\u00ebse operacioni i t\u00ebrheqjes s\u00eb simbolit ndodhi me shkelje (simboli u shpenzua pas fillimit t\u00eb procedur\u00ebs s\u00eb t\u00ebrheqjes ose simboli para t\u00ebrheqjes ishte tashm\u00eb i huaj), pronari i simbolit mund ta mohoj\u00eb t\u00ebrheqjen brenda dy jav\u00ebsh.<\/p>\n<p><img decoding=\"async\" alt=\"Test publik: zgjidhje p\u00ebr privat\u00ebsin\u00eb dhe shkall\u00ebzueshm\u00ebrin\u00eb n\u00eb Ethereum\" src=\"\/wp-content\/uploads\/2019\/10\/0626ca6b010eb847175dbfb0b6d7b357.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h2>Privat\u00ebsia arrihet n\u00eb dy m\u00ebnyra.<\/h2>\n<p>\n<b>1. <\/b>Zgjidhja rr\u00ebnj\u00ebsore nuk di asgj\u00eb p\u00ebr transaksionet q\u00eb formohen dhe d\u00ebrgohen brenda zgjidhjes dyt\u00ebsore. Informacioni publik mbetet p\u00ebr ata q\u00eb kan\u00eb depozituar dhe t\u00ebrheqin ETH n\u00eb\/nga Plasma Cash.<\/p>\n<p><b>2. <\/b>Zgjidhja dyt\u00ebsore lejon organizimin e transaksioneve anonime duke p\u00ebrdorur zk-SNARKs.<\/p>\n<h2>Stoku teknologjik<\/h2>\n<p><\/p>\n<ul>\n<li>NodeJS<\/li>\n<li>Redis<\/li>\n<li>Etherium<\/li>\n<li>Soild<\/li>\n<\/ul>\n<p><\/p>\n<h2>Testimi <\/h2>\n<p>\nDuke zhvilluar Plasma Cash, ne testuam shpejt\u00ebsin\u00eb e funksionimit t\u00eb sistemit dhe mor\u00ebm k\u00ebto rezultate:<\/p>\n<ul>\n<li>deri n\u00eb 35,000 transaksione n\u00eb sekond\u00eb shtohen n\u00eb rezervuar;<\/li>\n<li>deri n\u00eb 1,000,000 transaksione mund t\u00eb ruhet n\u00eb bllok.<\/li>\n<\/ul>\n<p>\nTestet u kryen n\u00eb 3 serverat e m\u00ebposht\u00ebm:<\/p>\n<p><i>1. Intel Core i7-6700 Quad-Core Skylake p\u00ebrfshir\u00eb NVMe SSD \u2014 512 GB, 64 GB DDR4 RAM<\/i><br \/>\n U ngrit\u00ebn 3 nodet verifikuese t\u00eb Plasma Cash.<\/p>\n<p><i>2. AMD Ryzen 7 1700X Octa-Core \u00abSummit Ridge\u00bb (Zen), SATA SSD \u2014 500 GB, 64 GB DDR4 RAM<\/i><br \/>\n U ngrit nj\u00eb nod Ropsten testnet ETH.<br \/>\n U ngrit\u00ebn 3 nodet verifikuese t\u00eb Plasma Cash.<\/p>\n<p><i>3. Intel Core i9-9900K Octa-Core p\u00ebrfshir\u00eb NVMe SSD \u2014 1 TB, 64 GB DDR4 RAM<\/i><br \/>\n U ngrit nj\u00eb nod submit t\u00eb Plasma Cash.<br \/>\n U ngrit\u00ebn 3 nodet verifikuese t\u00eb Plasma Cash.<br \/>\n U realizua testi p\u00ebr shtimin e transaksioneve n\u00eb rrjetin Plasma Cash.<\/p>\n<p><b>N\u00eb p\u00ebrmbledhje: <\/b>10 nodet Plasma Cash n\u00eb rrjetin privat.<\/p>\n<h3>Testi 1<\/h3>\n<p>\nKa nj\u00eb limit prej 1 milion transaksionesh n\u00eb bllok. Prandaj 1 milion transaksione nisen n\u00eb 2 blloqe (pasi sistemi arrin t\u00eb marr\u00eb nj\u00eb pjes\u00eb t\u00eb transaksioneve dhe t'i paraqes\u00eb nd\u00ebrsa ato d\u00ebrgohen).<\/p>\n<p><center><div class=\"youtube-placeholder\" data-id=\"pKwqyGkEgdQ\" onclick=\"loadVideo(this)\">\r\n        <img decoding=\"async\" src=\"https:\/\/img.youtube.com\/vi\/pKwqyGkEgdQ\/hqdefault.jpg\" alt=\"Luaj videon\" loading=\"lazy\" width=\"480\" height=\"360\" style=\"width:100%;height:auto;\">\r\n        <div class=\"play-button\"><\/div>\r\n    <\/div><\/center><br \/>\nGjendja fillestare: blloku i fundit #7; n\u00eb baz\u00ebn e t\u00eb dh\u00ebnave jan\u00eb ruajtur 1 milion transaksione dhe tokena.<\/p>\n<p>00:00 \u2014 nisja e skenarit p\u00ebr gjenerimin e transaksioneve<br \/>\n01:37 \u2014 jan\u00eb krijuar 1 milion transaksione dhe ka filluar d\u00ebrgimi n\u00eb nod<br \/>\n01:46 \u2014 nodi i submitit mori nga rezervuari 240k transaksione dhe po formon bllokun #8. Gjithashtu shohim se n\u00eb rezervuar shtohen 320k transaksione brenda 10 sekondash.<br \/>\n01:58 \u2014 blloku #8 \u00ebsht\u00eb n\u00ebnshkruar dhe d\u00ebrguar p\u00ebr validim<br \/>\n02:03 \u2014 blloku #8 \u00ebsht\u00eb validuar dhe funksioni `submitBlock` i smart kontraktit \u00ebsht\u00eb thirrur me hash-in Merkle dhe numrin e bllokut<br \/>\n02:10 \u2014 skripti demo ka p\u00ebrfunduar pun\u00ebn, i cili d\u00ebrgoi 1 milion transaksione n\u00eb 32 sekonda<br \/>\n02:33 \u2014 nodet filluan t\u00eb marrin informacion se blloku #8 \u00ebsht\u00eb shtuar n\u00eb zinxhirin rr\u00ebnj\u00ebsor dhe filluan t\u00eb ekzekutojn\u00eb 240,000 transaksione<br \/>\n02:40 \u2014 nga piscina jan\u00eb hequr 240,000 transaksione, t\u00eb cilat tashm\u00eb jan\u00eb n\u00eb bllokun #8<br \/>\n02:56 \u2014 nod\u00eb e n\u00ebnshkrimit mori nga piscina 760,000 transaksione t\u00eb mbetura dhe filloi t\u00eb llogaris\u00eb hash-in Merkle dhe t\u00eb n\u00ebnshkruaj\u00eb bllokun #9<br \/>\n03:20 \u2014 t\u00eb gjitha nodet p\u00ebrmbajn\u00eb 1 milion 240,000 transaksione dhe token<br \/>\n03:35 \u2014 blloku #9 \u00ebsht\u00eb n\u00ebnshkruar dhe d\u00ebrgohet p\u00ebr validim n\u00eb nodet e tjera <br \/>\n03:41 \u2014 ndodhi nj\u00eb gabim n\u00eb rrjet<br \/>\n04:40 \u2014 p\u00ebr shkak t\u00eb koh\u00ebs s\u00eb pritur, pritja p\u00ebr validimin e bllokut #9 \u00ebsht\u00eb nd\u00ebrprer\u00eb<br \/>\n04:54 \u2014 nod\u00eb e n\u00ebnshkrimit mori nga piscina 760,000 transaksione t\u00eb mbetura dhe filloi t\u00eb llogaris\u00eb hash-in Merkle dhe t\u00eb n\u00ebnshkruaj\u00eb bllokun #9<br \/>\n05:32 \u2014 blloku #9 \u00ebsht\u00eb n\u00ebnshkruar dhe d\u00ebrgohet p\u00ebr validim n\u00eb nodet e tjera<br \/>\n05:53 \u2014 blloku #9 \u00ebsht\u00eb validuar dhe d\u00ebrguar n\u00eb zinxhirin rr\u00ebnj\u00ebsor<br \/>\n06:17 \u2014 nodet filluan t\u00eb marrin informacion se blloku #9 \u00ebsht\u00eb shtuar n\u00eb zinxhirin rr\u00ebnj\u00ebsor dhe filluan t\u00eb ekzekutojn\u00eb 760,000 transaksione<br \/>\n06:47 \u2014 pika u pastruar nga transaksionet, q\u00eb ishin n\u00eb bllokun #9<br \/>\n09:06 \u2014 t\u00eb gjith\u00eb nodet p\u00ebrmbajn\u00eb 2 milion transaksione dhe tokena<\/p>\n<h3>Test 2<\/h3>\n<p>\nKa nj\u00eb limit prej 350k p\u00ebr bllok. Si rezultat, kemi 3 blloqe.<\/p>\n<p><center><div class=\"youtube-placeholder\" data-id=\"mpTfTPKYRIc\" onclick=\"loadVideo(this)\">\r\n        <img decoding=\"async\" src=\"https:\/\/img.youtube.com\/vi\/mpTfTPKYRIc\/hqdefault.jpg\" alt=\"Luaj videon\" loading=\"lazy\" width=\"480\" height=\"360\" style=\"width:100%;height:auto;\">\r\n        <div class=\"play-button\"><\/div>\r\n    <\/div><\/center><br \/>\nGjykuar gjendja fillestare: blloku i fundit #9; n\u00eb baz\u00eb jan\u00eb ruajtur 2 milion transaksione dhe tokena<\/p>\n<p>00:00 \u2014 skripti i gjenerimit t\u00eb transaksioneve \u00ebsht\u00eb aktivizuar tashm\u00eb<br \/>\n00:44 \u2014 jan\u00eb krijuar 1 milion transaksione dhe ka filluar d\u00ebrgimi n\u00eb nod<br \/>\n00:56 \u2014 nodi i d\u00ebrgimit ka marr\u00eb nga pika 320k transaksione dhe po formon bllokun #10. Po ashtu shohim se n\u00eb pik\u00eb shtohen 320k transaksione p\u00ebr 10 sekonda<br \/>\n01:12 \u2014 blloku #10 \u00ebsht\u00eb n\u00ebnshkruar dhe po d\u00ebrgohet te nodet e tjera p\u00ebr validim<br \/>\n01:18 \u2014 skripti demo p\u00ebrfundoi pun\u00ebn, i cili d\u00ebrgoi 1 milion transaksione p\u00ebr 34 sekonda<br \/>\n01:20 \u2014 blloku #10 \u00ebsht\u00eb validuar dhe d\u00ebrguar n\u00eb zinxhirin kryesor <br \/>\n01:51 \u2014 t\u00eb gjith\u00eb nodet mor\u00ebn nga zinxhiri kryesor informacionin se blloku #10 \u00ebsht\u00eb shtuar dhe fillojn\u00eb t\u00eb aplikojn\u00eb 320k transaksione<br \/>\n02:01 \u2014 pika u pastrua nga 320k transaksione, q\u00eb u shtuan n\u00eb bllokun #10<br \/>\n02:15 \u2014 nodi i d\u00ebrgimit ka marr\u00eb nga pika 350k transaksione dhe po formon bllokun #11<br \/>\n02:34 \u2014 blloku #11 \u00ebsht\u00eb n\u00ebnshkruar dhe po d\u00ebrgohet nodet e tjera p\u00ebr validim<br \/>\n02:51 \u2014 blloku #11 \u00ebsht\u00eb validuar dhe d\u00ebrguar n\u00eb zinxhirin kryesor <br \/>\n02:55 \u2014 nodi i fundit ka realizuar transaksionet nga bloku #10<br \/>\n10:59 \u2014 nj\u00eb transaksion me dor\u00ebzim t\u00eb blokut #9 zgjati shum\u00eb n\u00eb zinxhirin kryesor, por ai u ekzekutua dhe t\u00eb gjitha nodet mor\u00ebn informacionin dhe filluan t\u00eb realizonin 350k transaksione<br \/>\n11:05 \u2014 pool-i u pastrua me 320k transaksione, t\u00eb cilat u shtuan n\u00eb blokun #11<br \/>\n12:10 \u2014 t\u00eb gjitha nodet p\u00ebrmbajn\u00eb 1 milion 670k transaksione dhe tokene<br \/>\n12:17 \u2014 nodi i dor\u00ebzimit mori nga pool 330k transaksione dhe po formon blokun #12<br \/>\n12:32 \u2014 bloku #12 \u00ebsht\u00eb n\u00ebnshkruar dhe po d\u00ebrgohet tek nodet e tjera p\u00ebr validim<br \/>\n12:39 \u2014 bloku #12 \u00ebsht\u00eb validuar dhe d\u00ebrguar n\u00eb zinxhirin kryesor <br \/>\n13:44 \u2014 t\u00eb gjitha nodet mor\u00ebn informacion nga zinxhiri kryesor q\u00eb bloku #12 \u00ebsht\u00eb shtuar dhe fillojn\u00eb t\u00eb aplikojn\u00eb 330k transaksione<br \/>\n14:50 \u2014 t\u00eb gjitha nodet p\u00ebrmbajn\u00eb 2 milion transaksione dhe tokene<\/p>\n<h3>Test 3<\/h3>\n<p>\nN\u00eb server\u00ebt e par\u00eb dhe t\u00eb dyt\u00eb, nj\u00eb nod validues u z\u00ebvend\u00ebsua me nj\u00eb nod dor\u00ebzimi. <\/p>\n<p><center><div class=\"youtube-placeholder\" data-id=\"w5QHab3heIc\" onclick=\"loadVideo(this)\">\r\n        <img decoding=\"async\" src=\"https:\/\/img.youtube.com\/vi\/w5QHab3heIc\/hqdefault.jpg\" alt=\"Luaj videon\" loading=\"lazy\" width=\"480\" height=\"360\" style=\"width:100%;height:auto;\">\r\n        <div class=\"play-button\"><\/div>\r\n    <\/div><\/center><br \/>\nStadi i par\u00eb: bloku i fundit #84; n\u00eb baz\u00eb jan\u00eb ruajtur 0 transaksione dhe tokene<\/p>\n<p>00:00 \u2014 Jan\u00eb nisur 3 skripta q\u00eb gjenerojn\u00eb dhe d\u00ebrgojn\u00eb nga 1 milion transaksione<br \/>\n01:38 \u2014 jan\u00eb krijuar 1 milion transaksione dhe ka filluar d\u00ebrgimi n\u00eb nodin e dor\u00ebzimit #3<br \/>\n01:50 \u2014 nodi i dor\u00ebzimit #3 ka marr\u00eb nga pool 330k transaksionesh dhe po formon bllokun #85 (f21). Po ashtu, shohim se n\u00eb pool po shtohet 350k transaksionesh brenda 10 sekondave.<br \/>\n01:53 \u2014 u krijua 1 milion transaksionesh dhe filloi d\u00ebrgesa n\u00eb nodin e dor\u00ebzimit #1.<br \/>\n01:50 \u2014 nodi i dor\u00ebzimit #3 ka marr\u00eb nga pool 330k transaksionesh dhe po formon bllokun #85 (f21). Po ashtu, shohim se n\u00eb pool po shtohet 350k transaksionesh brenda 10 sekondave.<br \/>\n02:01 \u2014 nodi i dor\u00ebzimit #1 ka marr\u00eb nga pool 250k transaksionesh dhe po formon bllokun #85 (65e).<br \/>\n02:06 \u2014 blloku #85 (f21) \u00ebsht\u00eb n\u00ebnshkruar dhe po d\u00ebrgohet n\u00eb nodet e tjera p\u00ebr verifikim.<br \/>\n02:08 \u2014 ka p\u00ebrfunduar pun\u00ebn skripti demo i serverit #3, i cili d\u00ebrgoi 1 milion transaksionesh brenda 30 sekondash.<br \/>\n02:14 \u2014 blloku #85 (f21) \u00ebsht\u00eb verifikuar dhe d\u00ebrguar n\u00eb zinxhirin kryesor. <br \/>\n02:19 \u2014 blloku #85 (65e) \u00ebsht\u00eb n\u00ebnshkruar dhe po d\u00ebrgohet n\u00eb nodet e tjera p\u00ebr verifikim.<br \/>\n02:22 \u2014 u krijua 1 milion transaksionesh dhe filloi d\u00ebrgesa n\u00eb nodin e dor\u00ebzimit #2.<br \/>\n02:27 \u2014 blloku #85 (65e) \u00ebsht\u00eb verifikuar dhe d\u00ebrguar n\u00eb zinxhirin kryesor. <br \/>\n02:29 \u2014 nodi i dor\u00ebzimit #2 ka marr\u00eb nga pool 111855 transaksionesh dhe po formon bllokun #85 (256).<br \/>\n02:36 \u2014 blloku #85 (256) \u00ebsht\u00eb n\u00ebnshkruar dhe po d\u00ebrgohet n\u00eb nodet e tjera p\u00ebr verifikim.<br \/>\n02:36 \u2014 ka p\u00ebrfunduar pun\u00ebn skripti demo i serverit #1, i cili d\u00ebrgoi 1 milion transaksionesh brenda 42.5 sekondash.<br \/>\n02:38 \u2014 blloku #85 (256) \u00ebsht\u00eb verifikuar dhe d\u00ebrguar n\u00eb zinxhirin kryesor.<br \/>\n03:08 \u2014 ka p\u00ebrfunduar pun\u00ebn skripti demo i serverit #2, i cili d\u00ebrgoi 1 milion transaksionesh brenda 47 sekondash. <br \/>\n03:38 \u2014 t\u00eb gjitha nodet mor\u00ebn nga zinxhiri rr\u00ebnj\u00ebsor informacionin se blloqet #85 (f21), #86(65e), #87(256) u shtuan dhe fillojn\u00eb t\u00eb aplikojn\u00eb 330k, 250k, 111855 transaksione<br \/>\n03:49 \u2014 pool-i u pastrua me 330k, 250k, 111855 transaksione, t\u00eb cilat u shtuan n\u00eb blloqet #85 (f21), #86(65e), #87(256)<br \/>\n03:59 \u2014 submit nodi #1 mori nga pool-i 888145 transaksione dhe po formon bllokun #88 (214), submit nodi #2 mori nga pool-i 750k transaksione dhe po formon bllokun #88 (50a), submit nodi #3 mori nga pool-i 670k transaksione dhe po formon bllokun #88 (d3b)<br \/>\n04:44 \u2014 blloku #88 (d3b) u n\u00ebnshkrua dhe d\u00ebrgohet nodet e tjera p\u00ebr validim<br \/>\n04:58 \u2014 blloku #88 (214) u n\u00ebnshkrua dhe d\u00ebrgohet nodet e tjera p\u00ebr validim<br \/>\n05:11 \u2014 blloku #88 (50a) u n\u00ebnshkrua dhe d\u00ebrgohet nodet e tjera p\u00ebr validim<br \/>\n05:11 \u2014 blloku #85 (d3b) u validua dhe u d\u00ebrgua n\u00eb zinxhirin rr\u00ebnjor <br \/>\n05:36 \u2014 blloku #85 (214) u validua dhe u d\u00ebrgua n\u00eb zinxhirin rr\u00ebnjor <br \/>\n05:43 \u2014 t\u00eb gjitha nodet mor\u00ebn nga zinxhiri rr\u00ebnj\u00ebsor informacionin se blloqet #88 (d3b), #89(214) u shtuan dhe fillojn\u00eb t\u00eb aplikojn\u00eb 670k, 750k transaksione<br \/>\n06:50 \u2014 p\u00ebr shkak t\u00eb nd\u00ebrprerjes s\u00eb lidhjes, blloku #85 (50a) nuk u validua<br \/>\n06:55 \u2014 submit nodi #2 mori nga pool 888145 transaksione dhe po formon bllokun #90 (50a)<br \/>\n08:14 \u2014 blloku #90 (50a) u n\u00ebnshkrua dhe d\u00ebrgohet nodet e tjera p\u00ebr validim<br \/>\n09:04 \u2014 blloku #90 (50a) \u00ebsht\u00eb validuar dhe d\u00ebrguar n\u00eb zinxhirin rr\u00ebnjor <br \/>\n11:23 \u2014 t\u00eb gjitha nodet mor\u00ebn nga zinxhirin rr\u00ebnjor informacionin se blloku #90 (50a) \u00ebsht\u00eb shtuar dhe fillojn\u00eb t\u00eb zbatojn\u00eb 888145 transaksione. N\u00eb k\u00ebt\u00eb moment, serveri #3 ka zbatuar tashm\u00eb transaksionet nga blloqet #88 (d3b), #89 (214)<br \/>\n12:11 \u2014 t\u00eb gjitha pool-at jan\u00eb bosh<br \/>\n13:41 \u2014 t\u00eb gjitha nodet e serverit #3 p\u00ebrmbajn\u00eb 3 milion transaksione dhe tokena<br \/>\n14:35 \u2014 t\u00eb gjitha nodet e serverit #1 p\u00ebrmbajn\u00eb 3 milion transaksione dhe tokena<br \/>\n19:24 \u2014 t\u00eb gjitha nodet e serverit #2 p\u00ebrmbajn\u00eb 3 milion transaksione dhe tokena <\/p>\n<h2>Pengesat<\/h2>\n<p>\nGjat\u00eb zhvillimit t\u00eb Plasma Cash, ne u p\u00ebrball\u00ebm me problemet e m\u00ebposhtme, t\u00eb cilat i zgjidhim gradualisht:<\/p>\n<p><b>1.<\/b> Konflikti i nd\u00ebrveprimit t\u00eb funksioneve t\u00eb ndryshme t\u00eb sistemit. P\u00ebr shembull, funksioni i shtimit t\u00eb transaksioneve n\u00eb pool bllokonte pun\u00ebn e d\u00ebrgimit dhe validimit t\u00eb blloqeve dhe anasjelltas, \u00e7ka \u00e7onte n\u00eb nj\u00eb r\u00ebnie t\u00eb shpejt\u00ebsis\u00eb.<\/p>\n<p><b>2. <\/b>Nuk ishte e qart\u00eb se si t\u00eb d\u00ebrgohej nj\u00eb num\u00ebr i madh transaksionesh dhe nj\u00ebkoh\u00ebsisht t\u00eb minimalizoheshin shpenzimet p\u00ebr transferimin e t\u00eb dh\u00ebnave.<\/p>\n<p><b>3. <\/b>Nuk ishte e qart\u00eb se si dhe ku t\u00eb ruheshin t\u00eb dh\u00ebnat p\u00ebr t\u00eb arritur rezultate t\u00eb larta.<\/p>\n<p><b>4. <\/b>Nuk ishte e qart\u00eb se si t\u00eb organizohej rrjeti midis nodave, pasi madh\u00ebsia e bllokut me 1 milion transaksione z\u00eb rreth 100 MB.<\/p>\n<p><b>5.<\/b> Puna n\u00eb m\u00ebnyr\u00eb nj\u00ebnj\u00ebr\u00eb shk\u00ebput lidhjen mes node-ve kur ndodhin llogaritje t\u00eb gjat\u00eb (p.sh., nd\u00ebrtimi i pem\u00ebs Merkle dhe llogaritja e hash-it t\u00eb saj).<\/p>\n<h2>Si e zgjidh\u00ebm k\u00ebt\u00eb?<\/h2>\n<p>\nVersioni i par\u00eb i nod\u00ebs Plasma Cash ishte nj\u00eb kombinim q\u00eb mund t\u00eb b\u00ebnte gjith\u00e7ka nj\u00ebkoh\u00ebsisht: pranonte transaksionet, d\u00ebrgonte dhe validonte blloqet, siguronte nj\u00eb API p\u00ebr qasje n\u00eb t\u00eb dh\u00ebna. Duke qen\u00eb se NodeJS \u00ebsht\u00eb fillimisht nj\u00eb nj\u00ebnj\u00ebr\u00ebshe, funksioni i r\u00ebnd\u00eb i llogaritjes s\u00eb pem\u00ebs Merkle bllokonte funksionin e shtimit t\u00eb transaksionit. Ne shihnim dy opsione p\u00ebr t\u00eb zgjidhur k\u00ebt\u00eb problem:<\/p>\n<p><b>1. <\/b>T\u00eb nisnim disa procese NodeJS, secili prej t\u00eb cil\u00ebve kryen funksione t\u00eb caktuara.<\/p>\n<p><b>2. <\/b>T\u00eb p\u00ebrdornim worker_threads dhe t\u00eb nxirrnim ekzekutimin e pjes\u00ebs s\u00eb kodit n\u00ebThreads.<\/p>\n<p>M\u00eb n\u00eb fund, ne p\u00ebrdor\u00ebm t\u00eb dyja opsionet nj\u00ebkoh\u00ebsisht: e ndam\u00eb logjikisht nj\u00eb nod n\u00eb 3 pjes\u00eb q\u00eb mund t\u00eb punojn\u00eb ve\u00e7mas, por nj\u00ebkoh\u00ebsisht dhe n\u00eb harmoni.<\/p>\n<p><b>1.<\/b> Nod\u00eb e d\u00ebrgimit, q\u00eb pranon transaksione n\u00eb pool dhe merret me krijimin e blloqeve.<\/p>\n<p><b>2.<\/b> Nod\u00eb valide, q\u00eb kontrollon vlefshm\u00ebrin\u00eb e nodes.<\/p>\n<p><b>3. <\/b>Nod\u00eb API - ofron API p\u00ebr qasje n\u00eb t\u00eb dh\u00ebna.<\/p>\n<p>\u00c7do nod\u00eb mund t\u00eb lidhet p\u00ebrmes unix socket-i duke p\u00ebrdorur cli.<\/p>\n<p>Operacionet e m\u00ebdha, si llogaritja e pem\u00ebs Merkle, i kemi nxjerr\u00eb n\u00eb nj\u00eb thread t\u00eb ve\u00e7ant\u00eb.<\/p>\n<p>K\u00ebshtu arrit\u00ebm q\u00eb t\u00eb funksionojm\u00eb t\u00eb gjitha funksionet e Plasma Cash n\u00eb t\u00eb nj\u00ebjt\u00ebn koh\u00eb dhe pa nd\u00ebrprerje.<\/p>\n<p>Sa her\u00eb q\u00eb sistemi filloi t\u00eb funksiononte, filluam t\u00eb testonim shpejt\u00ebsin\u00eb dhe, p\u00ebr fat t\u00eb keq, mor\u00ebm rezultate t\u00eb pak\u00ebnaqshme: 5,000 transaksione p\u00ebr sekond\u00eb dhe deri n\u00eb 50,000 transaksione n\u00eb bllok. Duhej t\u00eb zbulojm\u00eb se \u00e7far\u00eb ishte implementuar gabim.<\/p>\n<p>S\u00eb pari, filluam t\u00eb testonim mekanizmin e komunikimit me Plasma Cash p\u00ebr t\u00eb zbuluar kapacitetin maksimal t\u00eb sistemit. M\u00eb par\u00eb kishim shkruar se nod\u00eb Plasma Cash ofron nj\u00eb nd\u00ebrfaqe unix socket. Fillimisht, ajo ishte tekstuale. Objektet json d\u00ebrgoheshin duke p\u00ebrdorur `JSON.parse()` dhe `JSON.stringify()`. <\/p>\n<pre><code class=\"plaintext\">```json\n{\n  \"action\": \"sendTransaction\",\n  \"payload\":{\n    \"prevHash\": \"0x8a88cc4217745fd0b4eb161f6923235da10593be66b841d47da86b9cd95d93e0\",\n    \"prevBlock\": 41,\n    \"tokenId\": \"57570139642005649136210751546585740989890521125187435281313126554130572876445\",\n    \"newOwner\": \"0x200eabe5b26e547446ae5821622892291632d4f4\",\n    \"type\": \"pay\",\n    \"data\": \"\",\n    \"signature\": \"0xd1107d0c6df15e01e168e631a386363c72206cb75b233f8f3cf883134854967e1cd9b3306cc5c0ce58f0a7397ae9b2487501b56695fe3a3c90ec0f61c7ea4a721c\"\n  }\n}\n```\n<\/code><\/pre>\n<p>\nNe kemi matur shpejt\u00ebsin\u00eb e transferimit t\u00eb k\u00ebtyre objekteve dhe kemi marr\u00eb ~ 130,000 n\u00eb sekond\u00eb. Provuam t\u00eb z\u00ebvend\u00ebsonim funksionet standarde p\u00ebr pun\u00ebn me json, por performance nuk u p\u00ebrmir\u00ebsua. Duhet t\u00eb jet\u00eb q\u00eb motori V8 \u00ebsht\u00eb optimizuar mir\u00eb p\u00ebr k\u00ebto operacione.<\/p>\n<p>Puna me transaksionet, token\u00ebt, blloqet u realizua p\u00ebrmes klasave. Gjat\u00eb krijimit t\u00eb k\u00ebtyre klasave, performanca ra dyfish, gj\u00eb q\u00eb tregon se OOP nuk na p\u00ebrshtatet. Na duhej t\u00eb riprogramonim gjith\u00e7ka n\u00eb nj\u00eb qasje t\u00eb past\u00ebr funksionale.<\/p>\n<h2>Shkruaj n\u00eb baz\u00ebn e t\u00eb dh\u00ebnave<\/h2>\n<p>\nFillimisht p\u00ebr ruajtjen e t\u00eb dh\u00ebnave u zgjodh Redis si nj\u00eb nga zgjidhjet m\u00eb t\u00eb produeshuara, q\u00eb p\u00ebrmbush k\u00ebrkesat tona: depo e \u00e7el\u00ebset-vlerat, pun\u00eb me tabela hash, grupe. Lansuam redis-benchmark dhe mor\u00ebm ~80,000 operacione n\u00eb sekond\u00eb n\u00eb reimin 1 pipelining.<\/p>\n<p>P\u00ebr performanc\u00eb t\u00eb lart\u00eb, e kemi konfiguruar Redis m\u00eb holl\u00ebsisht: <\/p>\n<ul>\n<li>Vendos\u00ebm lidhjen unix socket.<\/li>\n<li>Kemi \u00e7aktivizuar ruajtjen e gjendjes n\u00eb disk (p\u00ebr siguri, mund t\u00eb konfigurojm\u00eb nj\u00eb replik\u00eb dhe tashm\u00eb n\u00eb nj\u00eb Redis t\u00eb ve\u00e7ant\u00eb t\u00eb b\u00ebjm\u00eb ruajtjen n\u00eb disk).<\/li>\n<\/ul>\n<p>\nN\u00eb Redis, nj\u00eb pool \u00ebsht\u00eb nj\u00eb tabel\u00eb hash, pasi kemi nevoj\u00eb p\u00ebr mund\u00ebsin\u00eb p\u00ebr t\u00eb marr\u00eb t\u00eb gjitha transaksionet me nj\u00eb k\u00ebrkes\u00eb dhe p\u00ebr t\u00eb fshir\u00eb transaksionet nj\u00eb nga nj\u00eb. Provuam t\u00eb p\u00ebrdorim nj\u00eb list\u00eb t\u00eb zakonshme, por ajo funksionon m\u00eb ngadal\u00eb kur del lista e plot\u00eb. <\/p>\n<p>Duke p\u00ebrdorur bibliotek\u00ebn standarde NodeJS p\u00ebr Redis, arrit\u00ebm nj\u00eb performanc\u00eb prej 18k transaksionesh n\u00eb sekond\u00eb. Shpejt\u00ebsia ra 9 her\u00eb. <\/p>\n<p>Duke par\u00eb q\u00eb benchmarku na tregoi nj\u00eb performanc\u00eb deri n\u00eb 5 her\u00eb m\u00eb shum\u00eb, filluam t\u00eb optimizojm\u00eb. Nd\u00ebmoruam bibliotek\u00ebn n\u00eb ioredis dhe arrit\u00ebm 25k n\u00eb sekond\u00eb. Transaksionet i shtonim nj\u00eb nga nj\u00eb, duke p\u00ebrdorur komand\u00ebn `hset`. K\u00ebshtu, krijonim shum\u00eb k\u00ebrkesa n\u00eb Redis. Erdh\u00ebn n\u00eb mendje nj\u00eb ide p\u00ebr t\u00eb bashkuar transaksionet n\u00eb grupe dhe p\u00ebr t'i d\u00ebrguar ato me nj\u00eb komand\u00eb `hmset`. Rezultati \u2014 32k n\u00eb sekond\u00eb. <\/p>\n<p>\u041f\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c \u043f\u0440\u0438\u0447\u0438\u043d\u0430\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u043f\u0438\u0448\u0435\u043c \u043d\u0438\u0436\u0435, \u0441 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u043c\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f `Buffer` \u0438, \u043a\u0430\u043a \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c, \u0435\u0441\u043b\u0438 \u0435\u0433\u043e \u043f\u0435\u0440\u0435\u0432\u0435\u0441\u0442\u0438 \u0432 \u0442\u0435\u043a\u0441\u0442 (`buffer.toString(&#8216;hex&#8217;)`) \u043f\u0435\u0440\u0435\u0434 \u0437\u0430\u043f\u0438\u0441\u044c\u044e, \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043f\u043e\u0432\u044b\u0441\u0438\u0442\u044c \u0434\u043e 35\u043a \u0432 \u0441\u0435\u043a\u0443\u043d\u0434\u0443. \u041d\u0430 \u0434\u0430\u043d\u043d\u044b\u0439 \u043c\u043e\u043c\u0435\u043d\u0442, \u0440\u0435\u0448\u0438\u043b\u0438 \u043f\u0440\u0438\u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0443\u044e \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u044e.<\/p>\n<p>Na duhej q\u00ebndruam te protokolli binar pasi:<\/p>\n<p><b>1. <\/b>Sistemi shpesh llogarit hash-e, n\u00ebnshkrime dhe t\u00eb ngjashme, dhe p\u00ebr k\u00ebt\u00eb i nevojiten t\u00eb dh\u00ebnat n\u00eb `Buffer.<\/p>\n<p><b>2.<\/b> Kur d\u00ebrgohen midis sh\u00ebrbimeve, t\u00eb dh\u00ebnat binare peshojn\u00eb m\u00eb pak se tekstualet. P\u00ebr shembull, kur d\u00ebrgohet nj\u00eb bllok me 1 milion transaksione, t\u00eb dh\u00ebnat n\u00eb tekst mund t\u00eb z\u00ebn\u00eb m\u00eb shum\u00eb se 300 megabajt.<\/p>\n<p><b>3.<\/b> Transformimi konstant i t\u00eb dh\u00ebnave ndikon n\u00eb performanc\u00eb.<\/p>\n<p>Prandaj, ne mor\u00ebm si baz\u00eb nj\u00eb protokoll t\u00eb ndrysh\u00ebm binar p\u00ebr ruajtjen dhe transmetimin e t\u00eb dh\u00ebnave, t\u00eb zhvilluar mbi bibliotek\u00ebn e shk\u00eblqyer `binary-data.<\/p>\n<p>Si rezultat, kemi krijuar strukturat e m\u00ebposhtme t\u00eb t\u00eb dh\u00ebnave:<\/p>\n<h3> \u2014 Transaksioni<\/h3>\n<p><\/p>\n<pre><code class=\"plaintext\">  ```json\n  {\n    prevHash: BD.types.buffer(20),\n    prevBlock: BD.types.uint24le,\n    tokenId: BD.types.string(null),\n    type: BD.types.uint8,\n    newOwner: BD.types.buffer(20),\n    dataLength: BD.types.uint24le,\n    data: BD.types.buffer(({current}) =&gt; current.dataLength),\n    signature: BD.types.buffer(65),\n    hash: BD.types.buffer(32),\n    blockNumber: BD.types.uint24le,\n    timestamp: BD.types.uint48le,\n  }\n  ```\n<\/code><\/pre>\n<p><\/p>\n<h3> \u2014 Tokeni<\/h3>\n<p><\/p>\n<pre><code class=\"plaintext\">  ```json\n  {\n    id: BD.types.string(null),\n    owner: BD.types.buffer(20),\n    block: BD.types.uint24le,\n    amount: BD.types.string(null),\n  }\n  ```\n<\/code><\/pre>\n<p><\/p>\n<h3> \u2014 Blloku<\/h3>\n<p><\/p>\n<pre><code class=\"plaintext\">  ```json\n  {\n    number: BD.types.uint24le,\n    merkleRootHash: BD.types.buffer(32),\n    signature: BD.types.buffer(65),\n    countTx: BD.types.uint24le,\n    transactions: BD.types.array(Transaction.Protocol, ({current}) =&gt; current.countTx),\n    timestamp: BD.types.uint48le,\n  }\n  ```\n<\/code><\/pre>\n<p>\nMe komandat e zakonshme `BD.encode(block, Protocol).slice();` dhe `BD.decode(buffer, Protocol)` ne transformojm\u00eb t\u00eb dh\u00ebnat n\u00eb `Buffer` p\u00ebr t'i ruajtur n\u00eb Redis ose p\u00ebr t'i d\u00ebrguar n\u00eb nodin tjet\u00ebr dhe p\u00ebr t'i t\u00ebrhequr t\u00eb dh\u00ebnat p\u00ebrs\u00ebri.<\/p>\n<p>Gjithashtu, ne kemi 2 protokolle binar p\u00ebr transferimin e t\u00eb dh\u00ebnave midis sh\u00ebrbimeve:<\/p>\n<p><i> \u2014 Protokolli p\u00ebr nd\u00ebrveprimin me Plasma Node p\u00ebrmes socket unix<\/i><\/p>\n<pre><code class=\"plaintext\">  ```json\n  {\n    type: BD.types.uint8,\n    messageId: BD.types.uint24le,\n    error: BD.types.uint8,\n    length: BD.types.uint24le,\n    payload: BD.types.buffer(({node}) =&gt; node.length)\n  }\n  ```\n<\/code><\/pre>\n<p>\n ku:<\/p>\n<ul>\n<li> <b>`type`<\/b> \u2014 veprimi q\u00eb duhet t\u00eb kryhet, p\u00ebr shembull, 1 \u2014 sendTransaction, 2 \u2014 getTransaction;<\/li>\n<li> <b>`payload`<\/b> \u2014 t\u00eb dh\u00ebnat q\u00eb duhet t\u00eb d\u00ebrgohen n\u00eb funksionin p\u00ebrkat\u00ebs;<\/li>\n<li> <b>`messageId`<\/b> \u2014 ID e mesazhit, p\u00ebr t\u00eb identifikuar p\u00ebrgjigjen. <\/li>\n<\/ul>\n<p>\n<i> \u2014 Protokolli i nd\u00ebrveprimit midis nod\u00ebve<\/i><\/p>\n<pre><code class=\"plaintext\">  ```json\n  {\n    code: BD.types.uint8,\n    versionProtocol: BD.types.uint24le,\n    seq: BD.types.uint8,\n    countChunk: BD.types.uint24le,\n    chunkNumber: BD.types.uint24le,\n    length: BD.types.uint24le,\n    payload: BD.types.buffer(({node}) =&gt; node.length)\n  }\n  ```\n<\/code><\/pre>\n<p>\n ku:<\/p>\n<ul>\n<li> <b>`code`<\/b> \u2014 kodi i mesazhit, p\u00ebr shembull 6 \u2014 PREPARE_NEW_BLOCK, 7 \u2014 BLOCK_VALID, 8 \u2014 BLOCK_COMMIT;<\/li>\n<li> <b>`versionProtocol`<\/b> \u2014 versioni i protokollit, pasi n\u00eb rrjet mund t\u00eb jen\u00eb aktivizuar nod\u00eb me versione t\u00eb ndryshme dhe ato mund t\u00eb punojn\u00eb ndryshe;<\/li>\n<li> <b>`seq`<\/b> \u2014 identifikuesi i mesazhit;<\/li>\n<li> <b>`countChunk`<\/b> dhe <b>`chunkNumber`<\/b> nevojiten p\u00ebr ndarjen e mesazheve t\u00eb m\u00ebdha;<\/li>\n<li> <b>`length`<\/b> dhe <b>`payload`<\/b> gjat\u00ebsia dhe t\u00eb dh\u00ebnat vet\u00eb.<\/li>\n<\/ul>\n<p>\nDuke qen\u00eb se ne i kemi tipizuar t\u00eb dh\u00ebnat paraprakisht, sistemi p\u00ebrfundimtar funksionon m\u00eb shpejt se biblioteka `rlp` e Ethereumit. Fatkeq\u00ebsisht, nuk kemi arritur ende t\u00eb heqim dor\u00eb prej saj, pasi \u00ebsht\u00eb e nevojshme t\u00eb p\u00ebrmir\u00ebsojm\u00eb kontrat\u00ebn e smart, q\u00eb ne planifikojm\u00eb ta b\u00ebjm\u00eb n\u00eb t\u00eb ardhmen.<\/p>\n<p>N\u00ebse kemi arritur t\u00eb p\u00ebrfundojm\u00eb shpejt\u00ebsin\u00eb <b>35 000<\/b> transaksioneve p\u00ebr sekond\u00eb, gjithashtu na nevojitet t'i p\u00ebrpunojm\u00eb ato n\u00eb nj\u00eb koh\u00eb optimale. Duke qen\u00eb se koha e p\u00ebraf\u00ebrt p\u00ebr formimin e bllokut \u00ebsht\u00eb 30 sekonda, \u00ebsht\u00eb e nevojshme t\u00eb p\u00ebrfshijm\u00eb n\u00eb bllok <b>1 000 000<\/b> transaksione, q\u00eb do t\u00eb thot\u00eb d\u00ebrgimi i m\u00eb shum\u00eb <b>100<\/b> mb t\u00eb dh\u00ebnash. <\/p>\n<p>Fillimisht, ne p\u00ebrdor\u00ebm bibliotek\u00ebn `ethereumjs-devp2p` p\u00ebr komunikimin e nod\u00ebve, por ajo nuk p\u00ebrballonte nj\u00eb num\u00ebr t\u00eb till\u00eb t\u00eb madh t\u00eb dh\u00ebnash. Si rezultat, ne p\u00ebrdor\u00ebm bibliotek\u00ebn `ws` dhe konfigurav\u00ebm d\u00ebrgimin e t\u00eb dh\u00ebnave binar p\u00ebrmes websocket. Sigurisht, ne gjithashtu u p\u00ebrball\u00ebm me probleme gjat\u00eb d\u00ebrgimit t\u00eb pakove t\u00eb m\u00ebdha t\u00eb t\u00eb dh\u00ebnave, por ne i ndam\u00eb ato n\u00eb seksione dhe tani k\u00ebto probleme nuk ekzistojn\u00eb m\u00eb.<\/p>\n<p>Po ashtu, formimi i pem\u00ebs Merkle dhe llogaritja e hash-it <b>1 000 000<\/b> t\u00eb transaksioneve k\u00ebrkon rreth<b> 10<\/b> sekonda t\u00eb llogaritjes s\u00eb pand\u00ebrprer\u00eb. Gjat\u00eb k\u00ebsaj kohe, e gjith\u00eb lidhja me nodet nd\u00ebrpritet. U vendos t\u00eb transferohet kjo llogaritje n\u00eb nj\u00eb thread t\u00eb ve\u00e7ant\u00eb.<\/p>\n<h2>Konkluzione:<\/h2>\n<p>\nN\u00eb t\u00eb v\u00ebrtet\u00eb, p\u00ebrfundimet tona nuk jan\u00eb t\u00eb reja, por p\u00ebr nj\u00eb arsye t\u00eb \u00e7uditshme shum\u00eb specialist\u00eb i harrojn\u00eb ato gjat\u00eb zhvillimit. <\/p>\n<ul>\n<li>P\u00ebrdorimi i Programimit Funksional n\u00eb vend t\u00eb Programimit t\u00eb Orientuar ndaj Objektit rrit efikasitetin.<\/li>\n<li>Monoliti \u00ebsht\u00eb m\u00eb i keq se arkitektura e sh\u00ebrbimeve p\u00ebr nj\u00eb sistem t\u00eb fuqish\u00ebm n\u00eb NodeJS.<\/li>\n<li>P\u00ebrdorimi i `worker_threads` p\u00ebr kalkulime t\u00eb r\u00ebnda p\u00ebrmir\u00ebson reagimin e sistemit, ve\u00e7an\u00ebrisht gjat\u00eb operacioneve i\/o.<\/li>\n<li>unix socket \u00ebsht\u00eb m\u00eb stabil dhe m\u00eb i shpejt\u00eb se k\u00ebrkesat http.<\/li>\n<li>N\u00ebse duhet t\u00eb transferoni shpejt t\u00eb dh\u00ebna t\u00eb m\u00ebdha p\u00ebrmes rrjetit, \u00ebsht\u00eb m\u00eb mir\u00eb t\u00eb p\u00ebrdorni websocket dhe t\u00eb d\u00ebrgoni t\u00eb dh\u00ebna binare t\u00eb ndara n\u00eb chanks, t\u00eb cilat mund t\u00eb d\u00ebrgohen n\u00ebse nuk arrijn\u00eb dhe pastaj t\u00eb bashkohen n\u00eb nj\u00eb mesazh.<\/li>\n<\/ul>\n<p>\nJu ftojm\u00eb t\u00eb vizitoni <b>GitHub<\/b> projekti: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/opporty-com\/Plasma-Cash\/tree\/new-version\">https:\/\/github.com\/opporty-com\/Plasma-Cash\/tree\/new-version<\/a><\/noindex><\/p>\n<p>Artikulli \u00ebsht\u00eb shkruar n\u00eb bashk\u00ebautori me <i>Aleksand\u00ebr Naishivan<\/i>, zhvillues t\u00eb lart\u00eb <noindex><a rel=\"nofollow\" href=\"https:\/\/clever-solution.com\/\">Clever Solution Inc<\/a><\/noindex>.<br \/>\n<br \/>Burimi: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/471096\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0411\u043b\u043e\u043a\u0447\u0435\u0439\u043d \u2014 \u0438\u043d\u043d\u043e\u0432\u0430\u0446\u0438\u043e\u043d\u043d\u0430\u044f \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u044f, \u043e\u0431\u0435\u0449\u0430\u044e\u0449\u0430\u044f \u0443\u043b\u0443\u0447\u0448\u0438\u0442\u044c \u043c\u043d\u043e\u0433\u0438\u0435 \u0441\u0444\u0435\u0440\u044b \u0447\u0435\u043b\u043e\u0432\u0435\u0447\u0435\u0441\u043a\u043e\u0439 \u0436\u0438\u0437\u043d\u0438. \u041e\u043d\u0430 \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0438\u0442 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u044b \u0438 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u044b \u0432 \u0446\u0438\u0444\u0440\u043e\u0432\u043e\u0435 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e, \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0438 \u043d\u0430\u0434\u0435\u0436\u043d\u043e\u0441\u0442\u044c \u0444\u0438\u043d\u0430\u043d\u0441\u043e\u0432\u044b\u0445 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439, \u0441\u043d\u0438\u0436\u0430\u0435\u0442 \u0438\u0445 \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u044c, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 DAPP \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0438\u043d\u0442\u0435\u043b\u043b\u0435\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u043e\u0432 \u0432 \u0434\u0435\u0446\u0435\u043d\u0442\u0440\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0441\u0435\u0442\u044f\u0445. \u0423\u0447\u0438\u0442\u044b\u0432\u0430\u044f \u043c\u043d\u043e\u0433\u043e\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u0435 \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u0430 \u0438 \u0440\u0430\u0437\u043d\u043e\u043e\u0431\u0440\u0430\u0437\u043d\u044b\u0435 \u0441\u0444\u0435\u0440\u044b \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0431\u043b\u043e\u043a\u0447\u0435\u0439\u043d, \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c\u0441\u044f \u0441\u0442\u0440\u0430\u043d\u043d\u044b\u043c, \u0447\u0442\u043e \u044d\u0442\u0430 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":29146,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-38856","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.10 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0411\u043b\u043e\u043a\u0447\u0435\u0439\u043d \u2014 \u0438\u043d\u043d\u043e\u0432\u0430\u0446\u0438\u043e\u043d\u043d\u0430\u044f \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u044f, \u043e\u0431\u0435\u0449\u0430\u044e\u0449\u0430\u044f \u0443\u043b\u0443\u0447\u0448\u0438\u0442\u044c \u043c\u043d\u043e\u0433\u0438\u0435 \u0441\u0444\u0435\u0440\u044b \u0447\u0435\u043b\u043e\u0432\u0435\u0447\u0435\u0441\u043a\u043e\u0439 \u0436\u0438\u0437\u043d\u0438. \u041e\u043d\u0430 \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0438\u0442 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u044b \u0438 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u044b \u0432 \u0446\u0438\u0444\u0440\u043e\u0432\u043e\u0435 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e, \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0438 \u043d\u0430\u0434\u0435\u0436\u043d\u043e\u0441\u0442\u044c \u0444\u0438\u043d\u0430\u043d\u0441\u043e\u0432\u044b\u0445 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439, \u0441\u043d\u0438\u0436\u0430\u0435\u0442 \u0438\u0445 \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u044c, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 DAPP \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0438\u043d\u0442\u0435\u043b\u043b\u0435\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u043e\u0432 \u0432 \u0434\u0435\u0446\u0435\u043d\u0442\u0440\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0441\u0435\u0442\u044f\u0445. \u0423\u0447\u0438\u0442\u044b\u0432\u0430\u044f \u043c\u043d\u043e\u0433\u043e\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u0435 \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u0430 \u0438 \u0440\u0430\u0437\u043d\u043e\u043e\u0431\u0440\u0430\u0437\u043d\u044b\u0435 \u0441\u0444\u0435\u0440\u044b \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0431\u043b\u043e\u043a\u0447\u0435\u0439\u043d, \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c\u0441\u044f \u0441\u0442\u0440\u0430\u043d\u043d\u044b\u043c, \u0447\u0442\u043e \u044d\u0442\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\/publichnyj-test-reshenie-dlya-privatnosti-i-masshtabiruemosti-v-efiriume\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\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\udd47\u041f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0439 \u0442\u0435\u0441\u0442: \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u043f\u0440\u0438\u0432\u0430\u0442\u043d\u043e\u0441\u0442\u0438 \u0438 \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u0443\u0435\u043c\u043e\u0441\u0442\u0438 \u0432 \u042d\u0444\u0438\u0440\u0438\u0443\u043c\u0435 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0411\u043b\u043e\u043a\u0447\u0435\u0439\u043d \u2014 \u0438\u043d\u043d\u043e\u0432\u0430\u0446\u0438\u043e\u043d\u043d\u0430\u044f \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u044f, \u043e\u0431\u0435\u0449\u0430\u044e\u0449\u0430\u044f \u0443\u043b\u0443\u0447\u0448\u0438\u0442\u044c \u043c\u043d\u043e\u0433\u0438\u0435 \u0441\u0444\u0435\u0440\u044b \u0447\u0435\u043b\u043e\u0432\u0435\u0447\u0435\u0441\u043a\u043e\u0439 \u0436\u0438\u0437\u043d\u0438. \u041e\u043d\u0430 \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0438\u0442 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u044b \u0438 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u044b \u0432 \u0446\u0438\u0444\u0440\u043e\u0432\u043e\u0435 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e, \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0438 \u043d\u0430\u0434\u0435\u0436\u043d\u043e\u0441\u0442\u044c \u0444\u0438\u043d\u0430\u043d\u0441\u043e\u0432\u044b\u0445 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439, \u0441\u043d\u0438\u0436\u0430\u0435\u0442 \u0438\u0445 \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u044c, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 DAPP \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0438\u043d\u0442\u0435\u043b\u043b\u0435\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u043e\u0432 \u0432 \u0434\u0435\u0446\u0435\u043d\u0442\u0440\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0441\u0435\u0442\u044f\u0445. \u0423\u0447\u0438\u0442\u044b\u0432\u0430\u044f \u043c\u043d\u043e\u0433\u043e\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u0435 \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u0430 \u0438 \u0440\u0430\u0437\u043d\u043e\u043e\u0431\u0440\u0430\u0437\u043d\u044b\u0435 \u0441\u0444\u0435\u0440\u044b \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0431\u043b\u043e\u043a\u0447\u0435\u0439\u043d, \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c\u0441\u044f \u0441\u0442\u0440\u0430\u043d\u043d\u044b\u043c, \u0447\u0442\u043e \u044d\u0442\u0430\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/publichnyj-test-reshenie-dlya-privatnosti-i-masshtabiruemosti-v-efiriume\" \/>\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-31T19:26:22+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:26:22+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\udd47Testi publik: zgjidhja p\u00ebr privat\u00ebsin\u00eb dhe shkall\u00ebzueshm\u00ebrin\u00eb n\u00eb Ethereum | ProHoster","description":"Bllok\u00e7eni \u00ebsht\u00eb nj\u00eb teknologji inovative q\u00eb premton t\u00eb p\u00ebrmir\u00ebsoj\u00eb shum\u00eb sfera t\u00eb jet\u00ebs njer\u00ebzore. Ajo transferon procese dhe produkte reale n\u00eb hap\u00ebsir\u00ebn dixhitale, siguron shpejt\u00ebsi dhe besueshm\u00ebri n\u00eb operacionet financiare, ul kostot e tyre, si dhe leht\u00ebson krijimin e aplikacioneve moderne DAPP duke p\u00ebrdorur kontrata inteligjente n\u00eb rrjeta t\u00eb decentralizuara. Duke marr\u00eb parasysh avantajet e shumta dhe aplikimet e ndryshme t\u00eb bllok\u00e7enit, mund t\u00eb duket e \u00e7uditshme se kjo","canonical_url":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/publichnyj-test-reshenie-dlya-privatnosti-i-masshtabiruemosti-v-efiriume","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\udd47\u041f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0439 \u0442\u0435\u0441\u0442: \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u043f\u0440\u0438\u0432\u0430\u0442\u043d\u043e\u0441\u0442\u0438 \u0438 \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u0443\u0435\u043c\u043e\u0441\u0442\u0438 \u0432 \u042d\u0444\u0438\u0440\u0438\u0443\u043c\u0435 | ProHoster","og:description":"\u0411\u043b\u043e\u043a\u0447\u0435\u0439\u043d \u2014 \u0438\u043d\u043d\u043e\u0432\u0430\u0446\u0438\u043e\u043d\u043d\u0430\u044f \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u044f, \u043e\u0431\u0435\u0449\u0430\u044e\u0449\u0430\u044f \u0443\u043b\u0443\u0447\u0448\u0438\u0442\u044c \u043c\u043d\u043e\u0433\u0438\u0435 \u0441\u0444\u0435\u0440\u044b \u0447\u0435\u043b\u043e\u0432\u0435\u0447\u0435\u0441\u043a\u043e\u0439 \u0436\u0438\u0437\u043d\u0438. \u041e\u043d\u0430 \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0438\u0442 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u044b \u0438 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u044b \u0432 \u0446\u0438\u0444\u0440\u043e\u0432\u043e\u0435 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e, \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0438 \u043d\u0430\u0434\u0435\u0436\u043d\u043e\u0441\u0442\u044c \u0444\u0438\u043d\u0430\u043d\u0441\u043e\u0432\u044b\u0445 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0439, \u0441\u043d\u0438\u0436\u0430\u0435\u0442 \u0438\u0445 \u0441\u0442\u043e\u0438\u043c\u043e\u0441\u0442\u044c, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 DAPP \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0438\u043d\u0442\u0435\u043b\u043b\u0435\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u043e\u0432 \u0432 \u0434\u0435\u0446\u0435\u043d\u0442\u0440\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0441\u0435\u0442\u044f\u0445. \u0423\u0447\u0438\u0442\u044b\u0432\u0430\u044f \u043c\u043d\u043e\u0433\u043e\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u0435 \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u0430 \u0438 \u0440\u0430\u0437\u043d\u043e\u043e\u0431\u0440\u0430\u0437\u043d\u044b\u0435 \u0441\u0444\u0435\u0440\u044b \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0431\u043b\u043e\u043a\u0447\u0435\u0439\u043d, \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c\u0441\u044f \u0441\u0442\u0440\u0430\u043d\u043d\u044b\u043c, \u0447\u0442\u043e \u044d\u0442\u0430","og:url":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/publichnyj-test-reshenie-dlya-privatnosti-i-masshtabiruemosti-v-efiriume","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-31T19:26:22+00:00","article:modified_time":"2019-10-31T19:26:22+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"38856","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-23 23:42:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 12:15:36","updated":"2026-01-23 23:42:19"},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/38856","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=38856"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/38856\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media\/29146"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media?parent=38856"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/categories?post=38856"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/tags?post=38856"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}