{"id":36157,"date":"2019-10-31T22:09:55","date_gmt":"2019-10-31T19:09:55","guid":{"rendered":"https:\/\/prohoster.info\/blog\/skolko-tps-v-vashem-blokchejne\/"},"modified":"2019-10-31T22:09:55","modified_gmt":"2019-10-31T19:09:55","slug":"skolko-tps-v-vashem-blokchejne","status":"publish","type":"post","link":"https:\/\/prohoster.info\/lv\/blog\/administrirovanie\/skolko-tps-v-vashem-blokchejne","title":{"rendered":"Cik TPS ir j\u016bsu blok\u0137\u0113d\u0113?","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>M\u012b\u013c\u0101kais jaut\u0101jums par jebkuru izplat\u012btu sist\u0113mu no netehnisk\u0101 speci\u0101lista ir \u201cCik tps ir j\u016bsu blok\u0137\u0113d\u0113?\u201d. Tom\u0113r, atbildes sniegtais skaitlis parasti ir \u013coti maz saist\u012bts ar to, ko jaut\u0101t\u0101js v\u0113l\u0113tos dzird\u0113t. Paties\u012bb\u0101 vi\u0146\u0161 v\u0113l\u0113j\u0101s vaic\u0101t \u201cvai j\u016bsu blok\u0137\u0113de atbilst man\u0101m biznesa pras\u012bb\u0101m\u201d, un \u0161\u012bs pras\u012bbas nav viens skaitlis, bet gan daudzi nosac\u012bjumi \u2014 \u0161eit ir gan t\u012bkla nep\u0101rtraukt\u012bba, gan gal\u012bguma pras\u012bbas, izm\u0113ri, dar\u012bjumu raksturi un daudzi citi parametri. T\u0101p\u0113c atbilde uz jaut\u0101jumu \u201ccik tps\u201d visticam\u0101k neb\u016bs vienk\u0101r\u0161a, un gandr\u012bz nekad neb\u016bs piln\u012bga. Izplat\u012bta sist\u0113ma ar desmitiem un simtiem mezglu, kas veic diezgan sare\u017e\u0123\u012btas apr\u0113\u0137inus, var atrasties milz\u012bg\u0101 skait\u0101 da\u017e\u0101du st\u0101vok\u013cu, kas saist\u012bti ar t\u012bkla st\u0101vokli, blok\u0137\u0113des saturu, tehniskajiem boj\u0101jumiem, ekonomisk\u0101m probl\u0113m\u0101m, uzbrukumiem t\u012bklam un daudz\u0101m cit\u0101m probl\u0113m\u0101m. F\u0101zes, kur\u0101s var rasties veiktsp\u0113jas probl\u0113mas at\u0161\u0137iras no tradicion\u0101lajiem pakalpojumiem, un blok\u0137\u0113des t\u012bkla serveris ir t\u012bkla pakalpojums, kas apvieno datu b\u0101zes, t\u012bmek\u013ca servera un torrent klienta funkcionalit\u0101ti, kas padara to \u0101rk\u0101rt\u012bgi sare\u017e\u0123\u012btu slodzes profila zi\u0146\u0101 vis\u0101m apak\u0161sist\u0113m\u0101m: procesoram, atmi\u0146ai, t\u012bklam, glab\u0101\u0161anai.<\/p>\n<p><\/p>\n<p>San\u0101cis t\u0101, ka decentraliz\u0113t\u0101s t\u012bklus un blok\u0137\u0113des ir diezgan specifiska un neparasta programmat\u016bra centraliz\u0113tu programmat\u016bras izstr\u0101d\u0101t\u0101jiem. T\u0101p\u0113c es v\u0113l\u0113tos izcelt svar\u012bgas aspektus par veiktsp\u0113ju un notur\u012bbu decentraliz\u0113t\u0101s t\u012bklos, pieejas to m\u0113r\u012b\u0161anai un pude\u013cu kaklu atkl\u0101\u0161anai. M\u0113s apskat\u012bsim da\u017e\u0101das veiktsp\u0113jas probl\u0113mas, kas ierobe\u017eo pakalpojumu snieg\u0161anas \u0101trumu blok\u0137\u0113d\u0113s un atz\u012bm\u0113sim \u012bpa\u0161\u012bbas, kas rakstur\u012bgas \u0161\u0101da veida programmat\u016brai.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2 id=\"etapy-zaprosa-servisa-klientom-blokcheyna\">Klienta piepras\u012bjuma posmi blok\u0137\u0113des pakalpojumiem<\/h2>\n<p><\/p>\n<p>Lai god\u012bgi run\u0101tu par jebkura sare\u017e\u0123\u012bt\u0101 pakalpojuma kvalit\u0101ti, j\u0101\u0146em v\u0113r\u0101 ne tikai vid\u0113jie r\u0101d\u012bt\u0101ji, bet ar\u012b maksim\u0101lie\/minim\u0101lie, medi\u0101nas, percentili. Teor\u0113tiski var run\u0101t par 1000 tps k\u0101d\u0101 blok\u0137\u0113d\u0113, bet, ja 900 dar\u012bjumi tika izpild\u012bti ar milz\u012bgu \u0101trumu, savuk\u0101rt 100 \u2013 palika \"iespr\u016bdu\u0161i\" uz da\u017e\u0101m sekund\u0113m, tad vid\u0113jais laiks, sav\u0101kts no visiem dar\u012bjumiem, nav glu\u017ei god\u012bga metrika klientam, kur\u0161 uz da\u017e\u0101m sekund\u0113m nevar\u0113ja pabeigt dar\u012bjumu. Laika \"bedres\", ko izraisa izlaistie konsensusa apg\u0101jieni vai t\u012bkla sadal\u012b\u0161an\u0101s, var nopietni saboj\u0101t pakalpojumu, kas testa vid\u0113 r\u0101d\u012bja lielisku sniegumu.<\/p>\n<p><\/p>\n<p>Lai identific\u0113tu \u0161\u0101dus bottleneckus, ir nepiecie\u0161ams labi izprast posmus, kuros re\u0101l\u0101 blok\u0137\u0113de var saskarties ar gr\u016bt\u012bb\u0101m klientu apkalpo\u0161an\u0101. Apskat\u012bsim dar\u012bjumu pieg\u0101des un apstr\u0101des ciklu, k\u0101 ar\u012b jauna blok\u0137\u0113des st\u0101vok\u013ca ieg\u016b\u0161anu, no kura klients var p\u0101rliecin\u0101ties, ka vi\u0146a dar\u012bjums ir apstr\u0101d\u0101ts un \u0146emts v\u0113r\u0101.<\/p>\n<p><\/p>\n<ol>\n<li>dar\u012bjums tiek veidots klient\u0101<\/li>\n<li>dar\u012bjums tiek parakst\u012bts klient\u0101<\/li>\n<li>klients izv\u0113las vienu no mezgliem un nos\u016bta taj\u0101 savu dar\u012bjumu<\/li>\n<li>klients parakst\u0101s uz mezgla state database atjaunin\u0101jumiem, gaidot, kad par\u0101d\u012bsies vi\u0146a dar\u012bjuma izpildes rezult\u0101ti<\/li>\n<li>mezgls izplata dar\u012bjumu pa p2p t\u012bklu<\/li>\n<li>da\u017ei vai viens BP (block producer) apstr\u0101d\u0101 uzkr\u0101tos dar\u012bjumus, atjauninot state database<\/li>\n<li>BP izveido jaunu bloku, apstr\u0101d\u0101jot nepiecie\u0161amo dar\u012bjumu skaitu<\/li>\n<li>BP izplata jauno bloku pa p2p t\u012bklu<\/li>\n<li>jaunais bloks tiek pieg\u0101d\u0101ts mezglam, uz kuru v\u0113r\u0161as klients<\/li>\n<li>mezgls atjaunina state database<\/li>\n<li>mezgls redz atjaunin\u0101jumu, kas attiecas uz klientu, un nos\u016bta vi\u0146am pazi\u0146ojumu par dar\u012bjumu<\/li>\n<\/ol>\n<p><\/p>\n<p>Tagad detaliz\u0113ti apl\u016bkosim \u0161os posmus un aprakst\u012bsim iesp\u0113jam\u0101s veiktsp\u0113jas probl\u0113mas katr\u0101 posm\u0101. At\u0161\u0137ir\u012bb\u0101 no centraliz\u0113t\u0101m sist\u0113m\u0101m, m\u0113s apl\u016bkosim ar\u012b koda izpildi t\u012bkla klientu pus\u0113. \u013boti bie\u017ei, m\u0113rot tps, dar\u012bjumu apstr\u0101des laiku v\u0101c no mezgliem, nevis no klienta \u2014 tas nav pavisam god\u012bgi. Klientam nav svar\u012bgi, cik \u0101tri mezgls apstr\u0101d\u0101ja vi\u0146a dar\u012bjumu, vissvar\u012bg\u0101kais ir tas br\u012bdis, kad ticama inform\u0101cija par \u0161o dar\u012bjumu, kas iek\u013cauta blok\u0137\u0113d\u0113, vi\u0146am k\u013c\u016bst pieejama. Tie\u0161i \u0161\u012b metrik\u0101 b\u016bt\u012bb\u0101 ir dar\u012bjuma izpildes laiks. Tas noz\u012bm\u0113, ka da\u017e\u0101di klienti, pat nos\u016btot vienu un to pa\u0161u dar\u012bjumu, var ieg\u016bt piln\u012bgi at\u0161\u0137ir\u012bgus laikus, kas atkar\u012bgi no kan\u0101la, noslodzes un mezgla tuvuma utt. T\u0101p\u0113c ir absol\u016bti nepiecie\u0161ams izm\u0113r\u012bt \u0161o laiku klientu pus\u0113, jo tie\u0161i \u0161o parametru ir nepiecie\u0161ams optimiz\u0113t.<\/p>\n<p><\/p>\n<h2 id=\"podgotovka-tranzakcii-na-storone-klienta\">Dar\u012bjuma sagatavo\u0161ana klienta pus\u0113<\/h2>\n<p><\/p>\n<p>S\u0101ksim ar pirmajiem diviem punktiem: dar\u012bjums tiek veidots un parakst\u012bts klienta pus\u0113. Neparasti, bet tie\u0161i \u0161\u012b f\u0101ze var b\u016bt blok\u0137\u0113des veiktsp\u0113jas \u0161aurs posms no klienta perspekt\u012bvas. Tas ir netipiski centraliz\u0113t\u0101m pakalpojumu sist\u0113m\u0101m, kur\u0101s visas apr\u0113\u0137in\u0101\u0161anas un datu oper\u0101cijas tiek apstr\u0101d\u0101tas centr\u0101li, bet klients vienk\u0101r\u0161i sagatavo \u012bsu piepras\u012bjumu, kas sp\u0113j piepras\u012bt lielu datu vai apr\u0113\u0137inu apjomu, sa\u0146emot gatavu rezult\u0101tu. Blok\u0137\u0113d\u0113s klienta kods k\u013c\u016bst arvien jaud\u012bg\u0101ks, bet blok\u0137\u0113des kodols \u2014 arvien viegls, un masveida apr\u0113\u0137inu uzdevumi tiek nodoti klienta programmat\u016brai. Blok\u0137\u0113d\u0113s ir klienti, kas var diezgan ilgi sagatavot vienu dar\u012bjumu (es run\u0101ju par da\u017e\u0101diem merkle pier\u0101d\u012bjumiem, succinct pier\u0101d\u012bjumiem, threshold parakstiem un cit\u0101m sare\u017e\u0123\u012bt\u0101m oper\u0101cij\u0101m klienta pus\u0113). Labs piem\u0113rs vieglai on-chain verifik\u0101cijai un smagai dar\u012bjumu sagatavo\u0161anai klient\u0101 ir pieder\u012bbas pier\u0101d\u012b\u0161ana sarakstam, balstoties uz Merkle-koku, \u0161eit <noindex><a rel=\"nofollow\" href=\"https:\/\/hackernoon.com\/evolution-of-airdrop-from-common-spam-to-the-merkle-tree-30caa2344170\">raksts<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>Ar\u012b nevajadz\u0113tu aizmirst, ka klientu kods ne tikai s\u016bta dar\u012bjumus blok\u0137\u0113d\u0113, bet vispirms pieprasa blok\u0137\u0113des st\u0101vokli \u2014 un \u0161\u012b darb\u012bba var ietekm\u0113t t\u012bkla noslodzi un blok\u0137\u0113des mezglus. T\u0101p\u0113c, veicot m\u0113r\u012bjumus, sapr\u0101t\u012bgi b\u016btu p\u0113c iesp\u0113jas piln\u012bg\u0101k emul\u0113t klientu koda uzved\u012bbu. Pat ja j\u016bsu blok\u0137\u0113d\u0113 ir parasti viegli klienti, kas veic parakst\u012b\u0161anu uz vienk\u0101r\u0161iem dar\u012bjumiem, lai p\u0101rs\u016bt\u012btu k\u0101du akt\u012bvu, ar katru gadu klientu puses apr\u0113\u0137inu apjoms tom\u0113r pieaug, kriptoval\u016btu algoritmi k\u013c\u016bst sp\u0113c\u012bg\u0101ki, un \u0161\u012b da\u013ca no apstr\u0101des var k\u013c\u016bt par noz\u012bm\u012bgu pude\u013cu kaklu n\u0101kotn\u0113. T\u0101d\u0113\u013c esiet uzman\u012bgi un nepalaidiet gar\u0101m situ\u0101ciju, kad dar\u012bjum\u0101, kas ilgst 3.5s, 2.5s iet uz sagatavo\u0161anu un parakst\u012b\u0161anu, un 1.0s \u2014 uz nos\u016bt\u012b\u0161anu t\u012bkl\u0101 un atbildes gaid\u012b\u0161anu. Lai nov\u0113rt\u0113tu riskus, kas saist\u012bti ar \u0161\u012b pude\u013cu kakla ra\u0161anos, j\u0101apkopo metrisk\u0101s v\u0113rt\u012bbas no klientu ma\u0161\u012bn\u0101m, ne tikai no blok\u0137\u0113des mezgliem.<\/p>\n<p><\/p>\n<h2 id=\"otpravka-tranzakcii-i-monitoring-ee-statusa\">Dar\u012bjuma nos\u016bt\u012b\u0161ana un t\u0101 statusa uzraudz\u012bba<\/h2>\n<p><\/p>\n<p>N\u0101kamais solis ir nos\u016bt\u012bt dar\u012bjumu izv\u0113l\u0113tajam blok\u0137\u0113des mezglam un sa\u0146emt t\u0101 statusu par pievieno\u0161anu dar\u012bjumu p\u016bl\u012b. \u0160is solis ir l\u012bdz\u012bgs parastai piek\u013cuvei datu b\u0101zei, mezglam j\u0101ieraksta dar\u012bjums p\u00fcl\u0101 un j\u0101s\u0101k izplat\u012bt inform\u0101ciju par to caur p2p t\u012bklu. Pieejas nov\u0113rt\u0113\u0161anai \u0161eit ir l\u012bdz\u012bga pieeja k\u0101 tradicion\u0101lo mikroservisu Web API darb\u012bbas nov\u0113rt\u0113\u0161anai, un pa\u0161i dar\u012bjumi blok\u0137\u0113d\u0113s var tikt atjaunin\u0101ti, akt\u012bvi mainot statusu. Kopum\u0101 inform\u0101cijas atjaunin\u0101\u0161ana par dar\u012bjumu da\u017e\u0101s blok\u0137\u0113d\u0113s var notikt vair\u0101kas reizes, piem\u0113ram, p\u0101rsl\u0113dzoties starp \u0137\u0113des hard fork'iem vai kad BP zi\u0146o par nodomu iek\u013caut dar\u012bjumu blok\u0101. Ierobe\u017eojumi uz p\u016b\u013ca apjomu un dar\u012bjumu skaitu taj\u0101 var ietekm\u0113t blok\u0137\u0113des veiktsp\u0113ju. Ja dar\u012bjumu p\u016blis ir piepild\u012bts l\u012bdz maksim\u0101li pieejamajam izm\u0113ram vai nav iek\u013caujams operat\u012bvaj\u0101 atmi\u0146\u0101 \u2014 t\u012bkla veiktsp\u0113ja var strauji samazin\u0101ties. Blok\u0137\u0113des nav centraliz\u0113tu aizsardz\u012bbas l\u012bdzek\u013cu pret nev\u0113lamu zi\u0146ojumu pl\u016bsmu, un, ja blok\u0137\u0113de atbalsta lielus dar\u012bjumus un zemas maksas, tas var novest pie dar\u012bjumu p\u016b\u013ca p\u0101rpild\u012b\u0161anas \u2014 tas ir v\u0113l viens potenci\u0101lais veiktsp\u0113jas pude\u013cu kakls.<\/p>\n<p><\/p>\n<p>Blok\u0137\u0113d\u0113s klients nos\u016bta dar\u012bjumu uz jebkuru vi\u0146am v\u0113lamo blok\u0137\u0113des mezglu, dar\u012bjuma hash parasti ir zin\u0101ms klientam v\u0113l pirms nos\u016bt\u012b\u0161anas, t\u0101p\u0113c viss, kas vi\u0146am nepiecie\u0161ams, ir izveidot savienojumu un p\u0113c tam gaid\u012bt, kad blok\u0137\u0113de main\u012bs savu st\u0101vokli, iek\u013caujot vi\u0146a dar\u012bjumu. J\u0101atz\u012bm\u0113, ka m\u0113rot &#171;tps&#187; var ieg\u016bt pavisam at\u0161\u0137ir\u012bgus rezult\u0101tus da\u017e\u0101diem savienojuma veidiem ar blok\u0137\u0113des mezglu. Tas var b\u016bt parasts HTTP RPC vai WebSocket, kas \u013cauj \u012bstenot &#171;subscribe&#187; modeli. Otraj\u0101 gad\u012bjum\u0101 klients sa\u0146ems pazi\u0146ojumu \u0101tr\u0101k, bet mezgls pat\u0113r\u0113s maz\u0101k resursu (galvenok\u0101rt atmi\u0146as un datu p\u0101rs\u016bt\u012b\u0161anas) atbild\u0113s par dar\u012bjuma st\u0101vokli. T\u0101d\u0113\u013c, m\u0113rot &#171;tps&#187;, ir j\u0101r\u0113\u0137in\u0101s ar klientu savienojuma veidu ar mezgliem. T\u0101p\u0113c blok\u0137\u0113des veiktsp\u0113jas nov\u0113rt\u0113\u0161anai j\u0101sp\u0113j emul\u0113t klientus gan ar WebSocket, gan ar HTTP RPC piepras\u012bjumiem, proporcij\u0101s, kas atbilst re\u0101lajiem t\u012bkliem, k\u0101 ar\u012b main\u012bt dar\u012bjumu raksturu un to apjomu.<\/p>\n<p><\/p>\n<p>Lai nov\u0113rt\u0113tu riskus saist\u012bb\u0101 ar \u0161o k\u013c\u016bmes punktu, ir ar\u012b j\u0101apkopo metri\u0137i no klientu ma\u0161\u012bn\u0101m, ne tikai no blok\u0137\u0113des mezgliem.<\/p>\n<p><\/p>\n<h2 id=\"peredacha-tranzakciy-i-blokov-po-p2p-seti\">Dar\u012bjumu un bloku p\u0101rs\u016bt\u012b\u0161ana pa p2p t\u012bklu<\/h2>\n<p><\/p>\n<p>Blok\u0137\u0113d\u0113s dar\u012bjumu un bloku p\u0101rs\u016bt\u012b\u0161anai starp dal\u012bbniekiem tiek izmantota peer-to-peer (p2p) t\u012bklo\u0161ana. Dar\u012bjumi tiek izplat\u012bti pa t\u012bklu, s\u0101kot no viena no mezgliem, l\u012bdz tie sasniedz peer-blokproducentus, kuri iepako dar\u012bjumus blokos un ar to pa\u0161u p2p izplata jaunus blokuss visiem t\u012bkla mezgliem. Liel\u0101k\u0101s da\u013cas m\u016bsdienu p2p t\u012bklu pamats ir da\u017e\u0101das Kademlia protokola modifik\u0101cijas. <noindex><a rel=\"nofollow\" href=\"https:\/\/cardanodocs.com\/technical\/protocols\/p2p\/\">\u0160eit<\/a><\/noindex> laba \u012bsa p\u0101rskats par \u0161o protokolu, un <noindex><a rel=\"nofollow\" href=\"https:\/\/web.njit.edu\/~dingxn\/papers\/BT-JSAC.pdf\">\u0161aj\u0101<\/a><\/noindex> \u2014 raksts ar da\u017e\u0101diem m\u0113r\u012bjumiem BitTorrent t\u012bkl\u0101, no kura var saprast, ka \u0161\u0101da veida t\u012bkli ir sare\u017e\u0123\u012bt\u0101ki un maz\u0101k prognoz\u0113jami, nek\u0101 stingri konfigur\u0113ts centraliz\u0113ta pakalpojuma t\u012bkls. T\u0101pat, <noindex><a rel=\"nofollow\" href=\"https:\/\/zanema.com\/papers\/imc18_ethpeers.pdf\">\u0161aj\u0101<\/a><\/noindex> raksts par da\u017e\u0101du interesantu metri\u0137u m\u0113r\u012b\u0161anu Ethereum mezglos.<\/p>\n<p><\/p>\n<p>Ja \u012bsi sakot, katrs peer \u0161\u0101d\u0101s t\u012bkl\u0101s uztur savu dinamisko citu peer sarakstu, no kuriem pieprasa inform\u0101cijas blokus, kas adres\u0113ti saturam. Sa\u0146emot piepras\u012bjumu, peer vai nu nodod vajadz\u012bgo inform\u0101ciju, vai ar\u012b nodod piepras\u012bjumu n\u0101kamajam pseidojaundzimu\u0161ajam peer no saraksta, un, kad sa\u0146em atbildi, to nos\u016bta piepras\u012bt\u0101jam un uz k\u0101du laiku ke\u0161\u0113, nododot \u0161o inform\u0101cijas bloku \u0101tr\u0101k n\u0101kamreiz. T\u0101d\u0113j\u0101di popul\u0101ra inform\u0101cija non\u0101k daudzos ke\u0161os pie daudziem peer, bet nepopul\u0101r\u0101 pak\u0101peniski tiek izsl\u0113gta. Peer uzskaita, cik daudz inform\u0101cijas katrs ir nodojis, un t\u012bkls cen\u0161as stimul\u0113t akt\u012bv\u0101s dal\u012b\u0161an\u0101s, paaugstinot vi\u0146u v\u0113rt\u0113jumu un nodro\u0161inot vi\u0146iem augst\u0101ku pakalpojumu l\u012bmeni, autom\u0101tiski izsl\u0113dzot neakt\u012bvus dal\u012bbniekus no peer sarakstiem.<\/p>\n<p><\/p>\n<p>T\u0101tad, tagad ir j\u0101izplata dar\u012bjums t\u012bkl\u0101, lai to redz\u0113tu block-producer un iek\u013cautu blok\u0101. Noda akt\u012bvi \u201eizdala\u201d jauno dar\u012bjumu visiem interesentiem un klaus\u0101s t\u012bklu, gaidot bloku, kur\u0101 par\u0101d\u012bsies vajadz\u012bgais dar\u012bjums, lai pazi\u0146otu gaido\u0161ajam klientam. Laiks, kam\u0113r t\u012bkls apmain\u0101s ar inform\u0101ciju par jauniem dar\u012bjumiem un blokiem p2p t\u012bklos, ir atkar\u012bgs no \u013coti daudziem faktoriem: god\u012bgu, blakus str\u0101d\u0101jo\u0161o (no t\u012bkla viedok\u013ca) nodo, \u0161o nodo ke\u0161u \u201esagatavot\u012bbas\u201d pak\u0101pes, bloku, dar\u012bjumu lieluma, izmai\u0146u rakstura, t\u012bkla \u0123eogr\u0101fijas, nodo skaita un v\u0113l daudziem citiem faktoriem. Kompleksai veiktsp\u0113jas metrikas m\u0113r\u012bjumiem \u0161\u0101d\u0101s t\u012bklos ir sare\u017e\u0123\u012bta lieta, nepiecie\u0161ams vienlaikus nov\u0113rt\u0113t piepras\u012bjumu apstr\u0101des laiku gan klientiem, gan peer (blockchain nodo). Probl\u0113mas k\u0101d\u0101 no p2p meh\u0101nismiem, nepareiza izsist\u012b\u0161ana un ke\u0161\u0113\u0161ana, neefekt\u012bva akt\u012bvo peer sarakstu p\u0101rvald\u012bba un daudzi citi faktori var izrais\u012bt aizkav\u0113\u0161anos, kas ietekm\u0113 visas t\u012bkla efektivit\u0101ti kopum\u0101, un \u0161is bottleneck ir visgr\u016bt\u0101kais analiz\u0113\u0161anai, test\u0113\u0161anai un rezult\u0101tu interpret\u0101cijai.<\/p>\n<p><\/p>\n<h2 id=\"processing-cepochki-blokov-i-obnovlenie-state-database\">Bloku \u0137\u0113des apstr\u0101de un state datu b\u0101zes atjaunin\u0101\u0161ana<\/h2>\n<p><\/p>\n<p>Svar\u012bg\u0101k\u0101 blok\u0137\u0113des darba sast\u0101vda\u013ca ir konsensa algoritms, t\u0101 piem\u0113ro\u0161ana jaunajiem, no t\u012bkla ieg\u016btajiem blokiem un transakciju apstr\u0101de ar rezult\u0101tu ierakstu state database. Jauna bloka pievieno\u0161an\u0101 \u0137\u0113dei un tam sekojo\u0161aj\u0101 galven\u0101s \u0137\u0113des izv\u0113l\u0113 j\u0101darbojas maksim\u0101li \u0101tri. Tom\u0113r, dz\u012bv\u0113 &#171;j\u0101&#187; nenoz\u012bm\u0113 &#171;darbojas&#187;, un var, piem\u0113ram, iedom\u0101ties situ\u0101ciju, kad divas garas konkur\u0113jo\u0161as \u0137\u0113des past\u0101v\u012bgi main\u0101s, mainot metadatus t\u016bksto\u0161iem transakciju katr\u0101 p\u0101rsl\u0113g\u0161an\u0101, un veicot nep\u0101rtrauktus state database st\u0101vok\u013ca atgriezienus. \u0160is posms, attiec\u012bb\u0101 uz bottleneck noteik\u0161anu, ir viegl\u0101ks nek\u0101 t\u012bkla p2p sl\u0101nis, jo transakciju izpilde un konsensa algoritms ir stingri determin\u0113ti, un \u0161eit ir viegl\u0101k kaut ko izm\u0113r\u012bt.<br \/>\nGalvenais ir nesajaukt \u0161\u012b posma nejau\u0161o veiktsp\u0113jas samazin\u0101\u0161anos ar t\u012bkla probl\u0113m\u0101m \u2014 mezgli l\u0113n\u0101k sniedz blok\u0101t un inform\u0101ciju par galveno \u0137\u0113di, un \u0101r\u0113jam klientam tas var \u0161\u0137ist k\u0101 l\u0113ns t\u012bkls, lai gan probl\u0113ma sl\u0113pjas pavisam cit\u0101 viet\u0101.<\/p>\n<p><\/p>\n<p>Lai optimiz\u0113tu veiktsp\u0113ju \u0161aj\u0101 posm\u0101, ir noder\u012bgi v\u0101kt un uzraudz\u012bt metrikas no pa\u0161iem mezgliem, un iek\u013caut taj\u0101s t\u0101s, kas attiecas uz state-database atjaunin\u0101jumiem: apstr\u0101d\u0101to bloku skaitu mezgl\u0101, to izm\u0113ru, transakciju skaitu, p\u0101rslogojumu skaitu starp \u0137\u0113des fork\u0101m, neder\u012bgu bloku skaitu, virtu\u0101l\u0101s ma\u0161\u012bnas darb\u012bbas laiku, datu fiks\u0113\u0161anas laiku utt. Tas pal\u012bdz\u0113s nesajaukt t\u012bkla probl\u0113mas ar k\u013c\u016bd\u0101m \u0137\u0113des apstr\u0101des algoritmos.<\/p>\n<p><\/p>\n<p>Transakciju apstr\u0101d\u0101jo\u0161\u0101 virtu\u0101l\u0101 ma\u0161\u012bna var b\u016bt noder\u012bgs inform\u0101cijas avots, kas sp\u0113j optimiz\u0113t blok\u0137\u0113des darb\u012bbu. Atmi\u0146as alok\u0101ciju skaits, las\u012b\u0161anas\/rakst\u012b\u0161anas instrukciju skaits un citas metrikas, kas attiecas uz l\u012bgumu koda izpildes efektivit\u0101ti, var sniegt daudz noder\u012bgas inform\u0101cijas izstr\u0101d\u0101t\u0101jiem. Taj\u0101 pa\u0161\u0101 laik\u0101 viedl\u012bgumi ir programmas, t\u0101d\u0113j\u0101di teor\u0113tiski t\u0101s var pat\u0113r\u0113t jebk\u0101dus resursus: cpu\/memory\/network\/storage, t\u0101p\u0113c transakciju apstr\u0101de ir diezgan nenoteikts posms, kas papildus \u013coti main\u0101s p\u0101rejot no versijas uz versiju un mainot l\u012bgumu kodu. T\u0101d\u0113\u013c metriskas, kas attiecas uz transakciju apstr\u0101di, ar\u012b ir nepiecie\u0161amas, lai efekt\u012bvi optimiz\u0113tu blok\u0137\u0113des veiktsp\u0113ju.<\/p>\n<p><\/p>\n<h2 id=\"poluchenie-klientom-uvedomleniya-o-vklyuchenii-tranzakcii-v-blokcheyn\">Klients sa\u0146em pazi\u0146ojumu par transakcijas iek\u013cau\u0161anu blok\u0137\u0113d\u0113<\/h2>\n<p><\/p>\n<p>Tas ir nosl\u0113dzo\u0161ais posms pakalpojuma sa\u0146em\u0161anai no blok\u0137\u0113des, sal\u012bdzinot ar citiem posmiem \u0161eit nav lielu izdevumu, ta\u010du tom\u0113r j\u0101\u0146em v\u0113r\u0101 iesp\u0113ja, ka klients sa\u0146em apjom\u012bgu atbildi no mezgla (piem\u0113ram, viedl\u012bgums, kas atgrie\u017e datu mas\u012bvu). Katr\u0101 zi\u0146\u0101 tie\u0161i \u0161is moments ir vissvar\u012bg\u0101kais tam, kur\u0161 uzdeva jaut\u0101jumu \u201ecik tps ir j\u016bsu blok\u0137\u0113d\u0113?\u201d, jo tie\u0161i \u0161aj\u0101 br\u012bd\u012b tiek fiks\u0113ts pakalpojuma sa\u0146em\u0161anas laiks. <\/p>\n<p><\/p>\n<p>\u0160aj\u0101 viet\u0101 oblig\u0101ti j\u0101b\u016bt nor\u0101dei uz kop\u0113jo laiku, kas klientam bija j\u0101sagaida atbilde no blok\u0137\u0113des, tie\u0161i \u0161o laiku lietot\u0101js gaid\u012bs apstiprin\u0101jumu sav\u0101 lietotn\u0113, un tie\u0161i t\u0101 optimiz\u0101cija ir galvenais izstr\u0101d\u0101t\u0101ju uzdevums.<\/p>\n<p><\/p>\n<h1 id=\"zaklyuchenie\">Secin\u0101jums<\/h1>\n<p><\/p>\n<p>Rezult\u0101t\u0101 var aprakst\u012bt oper\u0101ciju veidus, kas tiek veikti blok\u0137\u0113d\u0113s, un sadal\u012bt tos vair\u0101k\u0101s kategorij\u0101s:<\/p>\n<p><\/p>\n<ol>\n<li>kriptogr\u0101fisk\u0101s p\u0101rv\u0113rt\u012bbas, pier\u0101d\u012bjumu veido\u0161ana<\/li>\n<li>peer-to-peer t\u012bklo\u0161ana, transakciju un bloku replik\u0101cija<\/li>\n<li>transakciju apstr\u0101de, viedl\u012bgumu izpilde<\/li>\n<li>izmai\u0146u piem\u0113ro\u0161ana blok\u0137\u0113d\u0113 st\u0101vok\u013ca datu b\u0101zei, datu par transakcij\u0101m un blokiem atjaunin\u0101\u0161ana<\/li>\n<li>las\u012b\u0161anas piepras\u012bjumi uz st\u0101vok\u013ca datu b\u0101zi, blok\u0137\u0113des mezgla API, abon\u0113\u0161anas pakalpojumi <\/li>\n<\/ol>\n<p><\/p>\n<p>M\u016bsdienu blok\u0137\u0113\u017eu mezglu tehniskaj\u0101m pras\u012bb\u0101m ir \u013coti augstas \u2014 tas ir \u0101trs CPU \u0161ifr\u0113\u0161anai, liels operat\u012bv\u0101s atmi\u0146as apjoms, lai uzglab\u0101tu un \u0101tri piek\u013c\u016btu st\u0101vok\u013ca datu b\u0101zei, t\u012bkla mijiedarb\u012bba, kas izmanto lielu skaitu vienlaic\u012bgi atv\u0113rtu savienojumu, pla\u0161s uzglab\u0101\u0161anas apjoms. \u0160\u012bs augst\u0101s pras\u012bbas un da\u017e\u0101du oper\u0101ciju p\u0101rm\u0113r\u012bba neizb\u0113gami noved pie t\u0101, ka mezglam var tr\u016bkt resursu, un tad jebkura no iepriek\u0161 min\u0113taj\u0101m darb\u012bb\u0101m var k\u013c\u016bt par n\u0101kamo \u0161aur\u0101ko vietu (bottleneck) visp\u0101r\u0113j\u0101 t\u012bkla veiktsp\u0113j\u0101.<\/p>\n<p><\/p>\n<p>Izstr\u0101d\u0101jot un v\u0113rt\u0113jot blok\u0137\u0113\u017eu veiktsp\u0113ju, jums b\u016bs j\u0101\u0146em v\u0113r\u0101 visi \u0161ie aspekti. Tam ir nepiecie\u0161ams v\u0101k\u0161ana un anal\u012bze metrikas vienlaikus gan no klientiem, gan no t\u012bkla mezgliem, mekl\u0113jot korel\u0101cijas starp tiem, nov\u0113rt\u0113jot pakalpojumu snieg\u0161anas laiku klientiem, \u0146emot v\u0113r\u0101 visus galvenos resursus: CPU\/memory\/network\/storage, un saprast, k\u0101 tie tiek izmantoti un ietekm\u0113 viens otru. Viss \u0161is process padara da\u017e\u0101du blok\u0137\u0113\u017eu \u0101trumu sal\u012bdzin\u0101\u0161anu jaut\u0101jum\u0101 \u201ecik TPS\u201d \u0101rk\u0101rt\u012bgi pateic\u012bgu uzdevumu, jo past\u0101v milz\u012bgs skaits da\u017e\u0101du konfigur\u0101ciju un st\u0101vok\u013cu. Liel\u0101s centraliz\u0113t\u0101s sist\u0113m\u0101s, kas sast\u0101v no simtiem serveru, \u0161\u012bs probl\u0113mas ir tikpat sare\u017e\u0123\u012btas un prasa v\u0101kt lielu skaitu da\u017e\u0101du metrikas, bet blok\u0137\u0113d\u0113s, pateicoties P2P t\u012bkliem, virtu\u0101laj\u0101m ma\u0161\u012bn\u0101m, procesiem, kas apstr\u0101d\u0101 l\u012bgumus, iek\u0161\u0113jai ekonomikai, br\u012bv\u012bbas gr\u0101du skaits ir iev\u0113rojami liel\u0101ks, kas padara testu pat uz da\u017eiem serveriem par neuzticamu un r\u0101d\u012btu tikai \u013coti aptuvenas v\u0113rt\u012bbas, gandr\u012bz nav saist\u012btas ar realit\u0101ti.<\/p>\n<p><\/p>\n<p>T\u0101p\u0113c, izstr\u0101d\u0101jot blok\u0137\u0113\u017eu kodolu, lai nov\u0113rt\u0113tu veiktsp\u0113ju un atbild\u0113tu uz jaut\u0101jumu \u201evai tas ir uzlabojies sal\u012bdzin\u0101jum\u0101 ar iepriek\u0161\u0113jo reizi\u201d, m\u0113s izmantojam diezgan sare\u017e\u0123\u012btu programmat\u016bru, kas or\u0137estr\u0113 blok\u0137\u0113des palai\u0161anu ar desmitiem mezglu un autom\u0101tisku veiktsp\u0113jas testu un metrikas v\u0101k\u0161anu; bez \u0161\u012bs inform\u0101cijas ir \u013coti gr\u016bti optimiz\u0113t protokolus, kuri darbojas ar daudziem dal\u012bbniekiem.<\/p>\n<p><\/p>\n<p>T\u0101p\u0113c, sa\u0146emot jaut\u0101jumu \u201ecik TPS ir j\u016bsu blok\u0137\u0113d\u0113?\u201d, pied\u0101v\u0101jiet sarunbiedram t\u0113ju un preciz\u0113jiet, vai vi\u0146\u0161 ir gatavs iepaz\u012bties ar desmit grafikiem un noklaus\u012bties visas tr\u012bs liel\u0101s blok\u0137\u0113\u017eu veiktsp\u0113jas probl\u0113mas un j\u016bsu ieteikumus to risin\u0101\u0161anai\u2026<\/p>\n<p>Avots: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/459763\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041b\u044e\u0431\u0438\u043c\u044b\u043c \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u043c \u043e \u043b\u044e\u0431\u043e\u0439 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u043e\u0442 \u043d\u0435\u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0441\u0442\u0430 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u201c\u0421\u043a\u043e\u043b\u044c\u043a\u043e tps \u0432 \u0432\u0430\u0448\u0435\u043c \u0431\u043b\u043e\u043a\u0447\u0435\u0439\u043d\u0435?\u201d. \u041e\u0434\u043d\u0430\u043a\u043e, \u043d\u0430\u0437\u0432\u0430\u043d\u043d\u043e\u0435 \u0432 \u043e\u0442\u0432\u0435\u0442 \u0447\u0438\u0441\u043b\u043e \u043e\u0431\u044b\u0447\u043d\u043e \u0438\u043c\u0435\u0435\u0442 \u043c\u0430\u043b\u043e \u043e\u0431\u0449\u0435\u0433\u043e \u0441 \u0442\u0435\u043c, \u0447\u0442\u043e \u0445\u043e\u0442\u0435\u043b \u0431\u044b \u0443\u0441\u043b\u044b\u0448\u0430\u0442\u044c \u0432\u043e\u043f\u0440\u043e\u0448\u0430\u044e\u0449\u0438\u0439. \u041d\u0430 \u0434\u0435\u043b\u0435, \u043e\u043d \u0445\u043e\u0442\u0435\u043b \u0441\u043f\u0440\u043e\u0441\u0438\u0442\u044c \u201c\u043f\u043e\u0434\u043e\u0439\u0434\u0435\u0442 \u043b\u0438 \u0432\u0430\u0448 \u0431\u043b\u043e\u043a\u0447\u0435\u0439\u043d \u043f\u043e\u0434 \u043c\u043e\u0438 \u0431\u0438\u0437\u043d\u0435\u0441 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f\u201d, \u0438 \u044d\u0442\u0438 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f \u2014 \u044d\u0442\u043e \u043d\u0435 \u043e\u0434\u043d\u043e \u0447\u0438\u0441\u043b\u043e, \u0430 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0443\u0441\u043b\u043e\u0432\u0438\u0439 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-36157","post","type-post","status-publish","format-standard","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.5 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041b\u044e\u0431\u0438\u043c\u044b\u043c \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u043c \u043e \u043b\u044e\u0431\u043e\u0439 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u043e\u0442 \u043d\u0435\u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0441\u0442\u0430 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u201c\u0421\u043a\u043e\u043b\u044c\u043a\u043e tps \u0432 \u0432\u0430\u0448\u0435\u043c \u0431\u043b\u043e\u043a\u0447\u0435\u0439\u043d\u0435?\u201d.\" \/>\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\/lv\/blog\/administrirovanie\/skolko-tps-v-vashem-blokchejne\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.5\" \/>\n\t\t<meta property=\"og:locale\" content=\"lv_LV\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0421\u043a\u043e\u043b\u044c\u043a\u043e TPS \u0432 \u0432\u0430\u0448\u0435\u043c \u0431\u043b\u043e\u043a\u0447\u0435\u0439\u043d\u0435? | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041b\u044e\u0431\u0438\u043c\u044b\u043c \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u043c \u043e \u043b\u044e\u0431\u043e\u0439 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u043e\u0442 \u043d\u0435\u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0441\u0442\u0430 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u201c\u0421\u043a\u043e\u043b\u044c\u043a\u043e tps \u0432 \u0432\u0430\u0448\u0435\u043c \u0431\u043b\u043e\u043a\u0447\u0435\u0439\u043d\u0435?\u201d.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/lv\/blog\/administrirovanie\/skolko-tps-v-vashem-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-31T19:09:55+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:09:55+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\udd47Cik TPS ir j\u016bsu blok\u0137\u0113d\u0113? | ProHoster","description":"Visbie\u017e\u0101k uzdots jaut\u0101jums par jebkuru izplat\u012btu sist\u0113mu no netehniska speci\u0101lista ir: \u201cCik tps ir j\u016bsu blok\u0137\u0113d\u0113?\u201d.","canonical_url":"https:\/\/prohoster.info\/lv\/blog\/administrirovanie\/skolko-tps-v-vashem-blokchejne","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"lv_LV","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0421\u043a\u043e\u043b\u044c\u043a\u043e TPS \u0432 \u0432\u0430\u0448\u0435\u043c \u0431\u043b\u043e\u043a\u0447\u0435\u0439\u043d\u0435? | ProHoster","og:description":"\u041b\u044e\u0431\u0438\u043c\u044b\u043c \u0432\u043e\u043f\u0440\u043e\u0441\u043e\u043c \u043e \u043b\u044e\u0431\u043e\u0439 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u043e\u0442 \u043d\u0435\u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0441\u0442\u0430 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u201c\u0421\u043a\u043e\u043b\u044c\u043a\u043e tps \u0432 \u0432\u0430\u0448\u0435\u043c \u0431\u043b\u043e\u043a\u0447\u0435\u0439\u043d\u0435?\u201d.","og:url":"https:\/\/prohoster.info\/lv\/blog\/administrirovanie\/skolko-tps-v-vashem-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-31T19:09:55+00:00","article:modified_time":"2019-10-31T19:09:55+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"36157","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-22 02:15:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 01:49:44","updated":"2026-01-22 02:15:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/posts\/36157","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/comments?post=36157"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/posts\/36157\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/media?parent=36157"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/categories?post=36157"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/tags?post=36157"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}