{"id":30639,"date":"2019-10-31T21:36:39","date_gmt":"2019-10-31T18:36:39","guid":{"rendered":"https:\/\/prohoster.info\/blog\/waveskit-php-frejmvork-dlya-raboty-s-blokchejnom-waves\/"},"modified":"2019-10-31T21:36:39","modified_gmt":"2019-10-31T18:36:39","slug":"waveskit-php-frejmvork-dlya-raboty-s-blokchejnom-waves","status":"publish","type":"post","link":"https:\/\/prohoster.info\/sl\/blog\/administrirovanie\/waveskit-php-frejmvork-dlya-raboty-s-blokchejnom-waves","title":{"rendered":"WavesKit \u2014 PHP okvir za delo s blokchainom Waves","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>V\u0161e mi to vyhovuje <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/PHP\">PHP<\/a><\/noindex> za rychlost v\u00fdvoje a skv\u011blou p\u0159enosnost. Je skv\u011bl\u00e9 m\u00edt v\u017edy po ruce n\u00e1stroj p\u0159ipraven\u00fd k \u0159e\u0161en\u00ed \u00faloh.<\/p>\n<p><\/p>\n<p>Bylo mi docela l\u00edto, kdy\u017e jsem se sezn\u00e1mil s dom\u00e1c\u00edm blockchainem <noindex><a rel=\"nofollow\" href=\"https:\/\/wavesplatform.com\">Waves Platform<\/a><\/noindex> , v jeho\u017e arsen\u00e1lu chyb\u011bl hotov\u00fd SDK pro PHP. Nu co\u017e, musel jsem ho napsat.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>Zpo\u010d\u00e1tku jsem musel pou\u017e\u00edvat <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.wavesplatform.com\/en\/waves-full-node\/what-is-a-full-node.html\">nodovi<\/a><\/noindex> pro podepisov\u00e1n\u00ed transakc\u00ed. Tak jsem musel spustit t\u0159i uzly pro spr\u00e1vu t\u0159\u00ed adres\u2026 Bylo to \u017ealostn\u00e9, i kdy\u017e to \u0159e\u0161ilo n\u011bkter\u00e9 probl\u00e9my. Dokud nep\u0159i\u0161lo pochopen\u00ed, \u017ee spol\u00e9hat se na uzly je slep\u00e1 uli\u010dka. Za prv\u00e9, kv\u016fli omezen\u00e9 funk\u010dnosti <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.wavesplatform.com\/en\/waves-api-and-sdk\/waves-node-rest-api.html\">API<\/a><\/noindex>, za druh\u00e9, kv\u016fli rychlosti (v t\u011bch dnech byly uzly velmi pomal\u00e9).<\/p>\n<p><\/p>\n<p>Zah\u00e1jil jsem dv\u011b paraleln\u00ed pr\u00e1ce. Jedna byla vytvo\u0159it prohl\u00ed\u017ee\u010d blockchainu, kter\u00fd bude rychl\u00fd a zcela nez\u00e1visl\u00fd na API uzl\u016f. Druh\u00e1 byla shrom\u00e1\u017edit v\u0161echny funkce pro pr\u00e1ci s Waves Platform na jednom m\u00edst\u011b. Tak vznikly projekty <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/deemru\/w8io\">w8io<\/a><\/noindex> in <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/deemru\/WavesKit\">WavesKit<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>Prvn\u00edm krokem do z\u00e1kulis\u00ed blockchainu Waves byl <noindex><a rel=\"nofollow\" href=\"https:\/\/w8io.ru\">prohl\u00ed\u017ee\u010d w8io<\/a><\/noindex>. Nebylo to snadn\u00e9, ale p\u0159esto se poda\u0159ilo napsat nez\u00e1visl\u00fd v\u00fdpo\u010det v\u0161ech z\u016fstatk\u016f a dokonce naj\u00edt chybu ve v\u00fdpo\u010dtech na origin\u00e1ln\u00edch uzlech (<noindex><a rel=\"nofollow\" href=\"https:\/\/forum.wavesplatform.com\/t\/bug-bounty-program\/1127\">program bug-bounty<\/a><\/noindex> , ostatn\u011b u nich funguje, za nalezen\u00e9 chyby plat\u00ed). M\u016f\u017eete si podrobn\u011b prozkoumat funk\u010dnost prohl\u00ed\u017ee\u010de w8io v tomto t\u00e9matu: <noindex><a rel=\"nofollow\" href=\"https:\/\/forum.wavesplatform.com\/t\/w8io-waves-explorer-based-on-php-sqlite\">https:\/\/forum.wavesplatform.com\/t\/w8io-waves-explorer-based-on-php-sqlite<\/a><\/noindex><\/p>\n<p><\/p>\n<p>B\u011bhem pr\u00e1ce na w8io jsem m\u011bl u\u017e pochybnosti, ale kdy\u017e pr\u00e1ce dosp\u011bla do logick\u00e9ho konce a j\u00e1 za\u010dal vytv\u00e1\u0159et SDK, pochybnosti se potvrdily. Nikde jsem nemohl naj\u00edt n\u011bkter\u00e9 funkce, v\u010detn\u011b t\u011bch nejd\u016fle\u017eit\u011bj\u0161\u00edch, kryptografick\u00fdch. Tak jsem za\u010dal vytv\u00e1\u0159et sv\u00e9 vlastn\u00ed bloky pro z\u00e1klad. Tak se zrodily: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/deemru\/ABCode\">ABCode<\/a><\/noindex> pro k\u00f3dov\u00e1n\u00ed do base58 (ve skute\u010dnosti pro k\u00f3dov\u00e1n\u00ed jak\u00e9hokoli abecedn\u00edho slova do jak\u00e9hokoli), <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/deemru\/Curve25519\">Curve25519<\/a><\/noindex> pro vytv\u00e1\u0159en\u00ed a ov\u011b\u0159ov\u00e1n\u00ed kompatibiln\u00edch podpis\u016f (s variantami <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/deemru\/Curve25519\/blob\/0ba56fa566f4a29b06126465b9ebbe59c915ffbd\/src\/Curve25519.php#L104\">na steroidech<\/a><\/noindex>), <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/deemru\/Blake2b\">Blake2b<\/a><\/noindex> pro v\u00fdpo\u010det jednoho z hash\u016f (kter\u00fd byl k dispozici a\u017e od PHP 7.2) atd.<\/p>\n<p><\/p>\n<p>Zde bych m\u011bl pod\u011bkovat <noindex><a rel=\"nofollow\" href=\"https:\/\/twitter.com\/ikardanoff\">Inalu Kardanovi<\/a><\/noindex> za n\u011bkolik cenn\u00fdch rad, kter\u00e9 m\u011b nasm\u011brovaly k <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Composer_(software)\">composer<\/a><\/noindex> nam\u00edsto pro m\u011b obvykl\u00fdch, ale zastaral\u00fdch, include soubor\u016f.<\/p>\n<p><\/p>\n<p>Po n\u011bkolika m\u011bs\u00edc\u00edch <noindex>WavesKit spat\u0159il sv\u011btlo sv\u011bta<\/noindex>, opustil <noindex><a rel=\"nofollow\" href=\"https:\/\/twitter.com\/ikardanoff\/status\/1091241637706190848\">beta verzi<\/a><\/noindex> a nyn\u00ed je p\u0159ipraven k pr\u00e1ci se v\u0161emi standardn\u00edmi funkcemi platformy Waves. V\u0161e dostupn\u00e9 v <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.wavesplatform.com\/en\/waves-environment\/waves-mainnet.html\">hlavn\u00ed s\u00edti<\/a><\/noindex> Transakcije lahko enostavno ustvarimo, podpi\u0161emo in po\u0161ljemo z mo\u010djo enega samega paketa, ki deluje na vseh 64-bitnih razli\u010dicah PHP od vklju\u010dno 5.6.<\/p>\n<p><\/p>\n<p>Povezujemo WavesKit v svoj projekt:<\/p>\n<p><\/p>\n<pre><code class=\"php\">composer require deemru\/waveskit<\/code><\/pre>\n<p><\/p>\n<p>Uporabljamo:<\/p>\n<p><\/p>\n<pre><code class=\"php\">use deemruWavesKit;\n$wk = new WavesKit( 'T' );\n$wk-&gt;setSeed( 'manage manual recall harvest series desert melt police rose hollow moral pledge kitten position add' );\n$tx = $wk-&gt;txBroadcast( $wk-&gt;txSign( $wk-&gt;txTransfer( 'test', 1 ) ) );\n$tx = $wk-&gt;ensure( $tx );<\/code><\/pre>\n<p><\/p>\n<p>V zgoraj navedenem primeru ustvarjamo objekt WavesKit, ki deluje v testnem omre\u017eju &#171;T&#187;. Nastavimo seed frazo, iz katere se samodejno izra\u010dunajo klju\u010di in naslov ra\u010duna na osnovi javnega klju\u010da. Nato ustvarimo prenosno transakcijo 0.00000001 Waves z avtomatsko izra\u010dunanega naslova po seed frazi na naslov aliasa &#171;test&#187;, jo posredujemo na podpis z zasebnim klju\u010dem in jo po\u0161ljemo v omre\u017eje. Po tem se prepri\u010damo, da je transakcija uspe\u0161no potrjena v omre\u017eju.<\/p>\n<p><\/p>\n<p>Delo s transakcijami je osredoto\u010deno na <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/deemru\/WavesKit\/blob\/master\/docs\/WavesKit.md#waveskittxaddressscript\">funkcije, ki se za\u010dnejo s tx<\/a><\/noindex>. Za bolj\u0161e razumevanje dela s transakcijami lahko preu\u010dite <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/deemru\/WavesKit\/blob\/master\/docs\/WavesKit.md\">dokumentacijo WavesKit<\/a><\/noindex> ali se takoj sklicujete na jasne primere v <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/deemru\/WavesKit\/blob\/2c4937199c88bc4ae105f60657b1389482471c1f\/test\/selftest.php#L237\">testih neprekinjenega integriranja<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>Ker se je WavesKit razvijal v razmerah realne uporabe, je \u017ee dobil napredne funkcije. Prva killer funkcija je <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/deemru\/WavesKit\/blob\/master\/docs\/WavesKit.md#waveskitensure\">funkcija ensure<\/a><\/noindex>, ki nadzira dosego potrebne stopnje zaupanja, da transakcija ni izginila, temve\u010d je bila potrjena in dosegla potrebno \u0161tevilo potrditev v omre\u017eju.<\/p>\n<p><\/p>\n<p>Drugi neprebojni mehanizem je, kako WavesKit komunicira z vozli. V idealnih pogojih okvir deluje le z glavnim vozlom, s katerim ohranja stalno povezavo, vendar se ob napakah lahko samodejno preklopi na rezervna. \u010ce nastavite niz rezervnih vozlov, lahko pokli\u010dete funkcijo <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/deemru\/WavesKit\/blob\/master\/docs\/WavesKit.md#waveskitsetbestnode\">setBestNode<\/a><\/noindex> za dolo\u010ditev najbolj\u0161ega vozla kot glavnega glede na najvi\u0161jo trenutno vi\u0161ino in hitrost odgovora. Zdaj dodajte k temu notranji predpomnilnik zahtevkov in poskrbite za skrb tako za uporabnike kot za lastnike vozlov.<\/p>\n<p><\/p>\n<p>Eden od zadnjih naprednih mehanizmov je funkcija <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/deemru\/WavesKit\/blob\/master\/docs\/WavesKit.md#waveskittxmonitor\">txMonitor<\/a><\/noindex>. Pojavila se je zaradi potrebe po reagiranju na prihajajo\u010de transakcije v realnem \u010dasu. Ta funkcija popolnoma re\u0161uje vse vidike povezane z obdelavo transakcij v blockchainu. Ni ve\u010d bole\u010dine, preprosto nastavite svojo callback funkcijo z \u017eeljenimi mo\u017enostmi in \u010dakate na nove transakcije, ki za\u017eenejo va\u0161e procese. Na primer, \u0161e en moj projekt <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/deemru\/VECRO\">VECRO<\/a><\/noindex> popolnoma zgrajen okoli te funkcije, lahko mirno preu\u010dite, kako deluje neposredno <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/deemru\/VECRO\/blob\/85d8373de56baff7c05697475211633b521bca7d\/src\/VECRO.php#L80\">v kodi projekta<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>V\u0161e\u010d mi je odprtokodna programska oprema, to je ena najve\u010djih dose\u017ekov \u010dlove\u0161tva. Ker sem edini razvijalec in sem dosegel stanje, da so vse moje potrebe re\u0161ene, vas vabim, da uporabite in prispevate k <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/deemru\/WavesKit\">WavesKit<\/a><\/noindex>.<\/p>\n<p>Izvor: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/446110\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041c\u043d\u0435 \u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f PHP \u0437\u0430 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0438 \u043e\u0442\u043b\u0438\u0447\u043d\u0443\u044e \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0438\u043c\u043e\u0441\u0442\u044c. \u042d\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u0445\u043e\u0440\u043e\u0448\u043e, \u043a\u043e\u0433\u0434\u0430 \u0432 \u043a\u0430\u0440\u043c\u0430\u043d\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u0438\u043c\u0435\u0435\u0442\u0441\u044f \u0433\u043e\u0442\u043e\u0432\u044b\u0439 \u043a \u0440\u0435\u0448\u0435\u043d\u0438\u044e \u0437\u0430\u0434\u0430\u0447 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442. \u0411\u044b\u043b\u043e \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043e\u0431\u0438\u0434\u043d\u043e, \u043a\u043e\u0433\u0434\u0430 \u043f\u0440\u0438 \u0437\u043d\u0430\u043a\u043e\u043c\u0441\u0442\u0432\u0435 \u0441 \u043e\u0442\u0435\u0447\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c \u0431\u043b\u043e\u043a\u0447\u0435\u0439\u043d\u043e\u043c Waves Platform \u0432 \u0435\u0433\u043e \u0430\u0440\u0441\u0435\u043d\u0430\u043b\u0435 \u043d\u0435 \u043e\u043a\u0430\u0437\u0430\u043b\u043e\u0441\u044c \u0433\u043e\u0442\u043e\u0432\u043e\u0433\u043e SDK \u043d\u0430 PHP. \u0427\u0442\u043e \u0436, \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0435\u0433\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c. \u041f\u043e\u043d\u0430\u0447\u0430\u043b\u0443 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u043b\u043e\u0441\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u043e\u0434\u044b \u0434\u043b\u044f \u043f\u043e\u0434\u043f\u0438\u0441\u0438 \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0439. \u0422\u0430\u043a, [&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-30639","post","type-post","status-publish","format-standard","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.4 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041c\u043d\u0435 \u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f PHP \u0437\u0430 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0438 \u043e\u0442\u043b\u0438\u0447\u043d\u0443\u044e \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0438\u043c\u043e\u0441\u0442\u044c.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/sl\/blog\/administrirovanie\/waveskit-php-frejmvork-dlya-raboty-s-blokchejnom-waves\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.4\" \/>\n\t\t<meta property=\"og:locale\" content=\"sl_SI\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47WavesKit \u2014 PHP \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0431\u043b\u043e\u043a\u0447\u0435\u0439\u043d\u043e\u043c Waves | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041c\u043d\u0435 \u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f PHP \u0437\u0430 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0438 \u043e\u0442\u043b\u0438\u0447\u043d\u0443\u044e \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0438\u043c\u043e\u0441\u0442\u044c.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/sl\/blog\/administrirovanie\/waveskit-php-frejmvork-dlya-raboty-s-blokchejnom-waves\" \/>\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:36:39+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T18:36:39+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\udd47WavesKit \u2014 PHP ogrodje za delo z blockchainom Waves | ProHoster","description":"V\u0161e\u010d mi je PHP zaradi hitrosti razvoja in odli\u010dne prenosljivosti.","canonical_url":"https:\/\/prohoster.info\/sl\/blog\/administrirovanie\/waveskit-php-frejmvork-dlya-raboty-s-blokchejnom-waves","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sl_SI","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47WavesKit \u2014 PHP \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u0431\u043b\u043e\u043a\u0447\u0435\u0439\u043d\u043e\u043c Waves | ProHoster","og:description":"\u041c\u043d\u0435 \u043d\u0440\u0430\u0432\u0438\u0442\u0441\u044f PHP \u0437\u0430 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0438 \u043e\u0442\u043b\u0438\u0447\u043d\u0443\u044e \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0438\u043c\u043e\u0441\u0442\u044c.","og:url":"https:\/\/prohoster.info\/sl\/blog\/administrirovanie\/waveskit-php-frejmvork-dlya-raboty-s-blokchejnom-waves","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:36:39+00:00","article:modified_time":"2019-10-31T18:36:39+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"30639","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 02:15:25","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 03:31:24","updated":"2026-01-21 02:15:25","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/posts\/30639","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/comments?post=30639"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/posts\/30639\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/media?parent=30639"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/categories?post=30639"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/tags?post=30639"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}