{"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\/da\/blog\/administrirovanie\/waveskit-php-frejmvork-dlya-raboty-s-blokchejnom-waves","title":{"rendered":"WavesKit \u2014 PHP-rammev\u00e6rk til arbejde med blockchain Waves","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Jeg kan godt lide <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/PHP\">PHP<\/a><\/noindex> n\u00e5r det g\u00e6lder udviklingshastighed og fremragende b\u00e6rbarhed. Det er virkelig godt, n\u00e5r man altid har et v\u00e6rkt\u00f8j klar til at l\u00f8se opgaver.<\/p>\n<p><\/p>\n<p>Det var temmelig frustrerende, da jeg st\u00f8dte p\u00e5 den indenlandske blockchain <noindex><a rel=\"nofollow\" href=\"https:\/\/wavesplatform.com\">Waves Platform<\/a><\/noindex> og der ikke var noget klart SDK til PHP tilg\u00e6ngeligt. N\u00e5, men s\u00e5 m\u00e5tte jeg skrive det selv.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>I starten m\u00e5tte jeg bruge <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.wavesplatform.com\/en\/waves-full-node\/what-is-a-full-node.html\">noder<\/a><\/noindex> til at signere transaktioner. S\u00e5, for at administrere tre adresser, m\u00e5tte jeg starte tre noder... Det var et s\u00f8rgeligt syn, men det l\u00f8ste nogle opgaver. Indtil jeg inds\u00e5, at det var en blindgyde at stole p\u00e5 noder. For det f\u00f8rste p\u00e5 grund af det begr\u00e6nsede funktionalitet, <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.wavesplatform.com\/en\/waves-api-and-sdk\/waves-node-rest-api.html\">API<\/a><\/noindex>, og for det andet p\u00e5 grund af hastigheden (dengang var noderne meget langsomme).<\/p>\n<p><\/p>\n<p>Jeg begyndte to parallelle projekter. Det f\u00f8rste var at lave en blockchain-udforsker, der ville v\u00e6re hurtig og helt uafh\u00e6ngig af API'erne fra noderne. Det andet var at samle alle funktioner til arbejde med Waves Platform \u00e9t sted. S\u00e5danne projekter kom til live <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/deemru\/w8io\">w8io<\/a><\/noindex> og <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/deemru\/WavesKit\">WavesKit<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>Det f\u00f8rste skridt bag kulisserne p\u00e5 Waves blockchain var <noindex><a rel=\"nofollow\" href=\"https:\/\/w8io.ru\">udforskeren w8io<\/a><\/noindex>. Det var ikke nemt, men jeg form\u00e5ede alligevel at skrive en uafh\u00e6ngig beregning af alle saldi og endda finde en fejl i beregningerne p\u00e5 de originale noder (<noindex><a rel=\"nofollow\" href=\"https:\/\/forum.wavesplatform.com\/t\/bug-bounty-program\/1127\">bug-bounty programmet<\/a><\/noindex> , for \u00f8vrigt har de det, de betaler for fundne fejl). Du kan l\u00e6re mere om funktionaliteten i w8io-udforskeren i dette emne: <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>Under arbejdet med w8io havde jeg allerede mine tvivl, men da arbejdet n\u00e5ede den logiske konklusion, og jeg begyndte at skabe SDK'et, blev mine tvivl bekr\u00e6ftet. Jeg kunne ikke finde nogle funktioner, herunder de mest essentielle kryptografiske. S\u00e5 jeg begyndte at skabe mine egne grundl\u00e6ggende byggesten. S\u00e5 blev f\u00f8lgende til: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/deemru\/ABCode\">ABCode<\/a><\/noindex> til kodning i base58 (faktisk til kodning af ethvert alfabet i hver som helst), <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/deemru\/Curve25519\">Curve25519<\/a><\/noindex> til at skabe og verificere kompatible signaturer (med varianter <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/deemru\/Curve25519\/blob\/0ba56fa566f4a29b06126465b9ebbe59c915ffbd\/src\/Curve25519.php#L104\">p\u00e5 steroider<\/a><\/noindex>), <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/deemru\/Blake2b\">Blake2b<\/a><\/noindex> til beregning af en af hashene (som kun var tilg\u00e6ngelig fra PHP 7.2) osv.<\/p>\n<p><\/p>\n<p>Her skylder jeg <noindex><a rel=\"nofollow\" href=\"https:\/\/twitter.com\/ikardanoff\">Inal Kardanov<\/a><\/noindex> tak for flere v\u00e6rdifulde r\u00e5d, der ledte mig mod <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Composer_(software)\">composer<\/a><\/noindex> i stedet for de for mig velkendte, men for\u00e6ldede, include-filer.<\/p>\n<p><\/p>\n<p>Efter et par m\u00e5neder <noindex>WavesKit s\u00e5 dagens lys<\/noindex>, kom ud af <noindex><a rel=\"nofollow\" href=\"https:\/\/twitter.com\/ikardanoff\/status\/1091241637706190848\">af beta-versionen<\/a><\/noindex> og er nu klar til at arbejde med al den standardfunktionalitet, der findes p\u00e5 Waves-platformen. Alt tilg\u00e6ngeligt i <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.wavesplatform.com\/en\/waves-environment\/waves-mainnet.html\">hovednetv\u00e6rket<\/a><\/noindex> Transaktioner kan nemt oprettes, signeres og sendes af \u00e9t eneste paket, der k\u00f8rer p\u00e5 alle 64-bit versioner af PHP fra 5.6 og frem.<\/p>\n<p><\/p>\n<p>Tilslut WavesKit til dit projekt:<\/p>\n<p><\/p>\n<pre><code class=\"php\">composer require deemru\/waveskit<\/code><\/pre>\n<p><\/p>\n<p>Brug:<\/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>I eksemplet ovenfor opretter vi et WavesKit-objekt, som arbejder i testnetv\u00e6rket &#171;T&#187;. Vi indstiller frasen, hvorfra n\u00f8gler og kontoens adresse automatisk beregnes baseret p\u00e5 den offentlige n\u00f8gle. Derefter opretter vi en overf\u00f8rselstransaktion p\u00e5 0.00000001 Waves fra den automatisk beregnede adresse baseret p\u00e5 frasen til aliasadressen &#171;test&#187;, underskriver den med den private n\u00f8gle og sender den til netv\u00e6rket. Efterf\u00f8lgende bekr\u00e6fter vi, at transaktionen er blevet succesfuldt bekr\u00e6ftet af netv\u00e6rket.<\/p>\n<p><\/p>\n<p>Arbejdet med transaktioner er koncentreret i <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/deemru\/WavesKit\/blob\/master\/docs\/WavesKit.md#waveskittxaddressscript\">funktioner, der starter med tx<\/a><\/noindex>. For bedre forst\u00e5else af arbejdet med transaktioner kan du studere <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/deemru\/WavesKit\/blob\/master\/docs\/WavesKit.md\">WavesKit-dokumentationen<\/a><\/noindex> eller straks se p\u00e5 de illustrative eksempler i <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/deemru\/WavesKit\/blob\/2c4937199c88bc4ae105f60657b1389482471c1f\/test\/selftest.php#L237\">kontinuerlige integrationstests<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>Da WavesKit er blevet udviklet under reelle brugsforhold, har det allerede nogle avancerede funktioner. Den f\u00f8rste killerfunktion er <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/deemru\/WavesKit\/blob\/master\/docs\/WavesKit.md#waveskitensure\">funktionen ensure<\/a><\/noindex>, som kontrollerer opn\u00e5elsen af det \u00f8nskede sikkerhedsniveau, s\u00e5 transaktionen ikke g\u00e5r tabt, men tv\u00e6rtimod bliver bekr\u00e6ftet og n\u00e5r det n\u00f8dvendige antal bekr\u00e6ftelser i netv\u00e6rket.<\/p>\n<p><\/p>\n<p>En anden kuglesikker mekanisme er, hvordan WavesKit kommunikerer med noderne. Under kontrollerede forhold arbejder rammev\u00e6rket kun med hovednoden og opretholder en konstant forbindelse, men kan automatisk skifte til reserve noder ved fejl. Hvis du indstiller et array af reserve noder, kan du kalde funktionen <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/deemru\/WavesKit\/blob\/master\/docs\/WavesKit.md#waveskitsetbestnode\">setBestNode<\/a><\/noindex> for at bestemme den bedste node som hovednoden baseret p\u00e5 den maksimalev\u00e6rdi af den aktuelle h\u00f8jder og svartider. Nu skal du tilf\u00f8je den interne foresp\u00f8rgselscache, og du vil opleve omsorg for b\u00e5de brugerne og node-ejerne.<\/p>\n<p><\/p>\n<p>En af de sidste avancerede mekanismer er funktionen <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/deemru\/WavesKit\/blob\/master\/docs\/WavesKit.md#waveskittxmonitor\">txMonitor<\/a><\/noindex>. Det opstod i forbindelse med behovet for at reagere p\u00e5 indg\u00e5ende transaktioner i realtid. Denne funktion l\u00f8ser fuldt ud alle nuancer relateret til behandling af transaktioner i blokchain. Ingen flere problemer, du skal bare indstille din callback-funktion med \u00f8nskede indstillinger og vente p\u00e5 nye transaktioner, der aktiverer dine processer. For eksempel, et andet af mine projekter <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/deemru\/VECRO\">VECRO<\/a><\/noindex> er helt bygget omkring denne funktion, s\u00e5 du kan frit udforske, hvordan den fungerer direkte <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/deemru\/VECRO\/blob\/85d8373de56baff7c05697475211633b521bca7d\/src\/VECRO.php#L80\">i projektets kode<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>Jeg elsker open source, det er en af de st\u00f8rste pr\u00e6stationer i menneskehedens historie. Eftersom jeg er den eneste udvikler og har opn\u00e5et en tilstand, hvor alle mine behov er d\u00e6kket, inviterer jeg dig til at bruge og bidrage til <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/deemru\/WavesKit\">WavesKit<\/a><\/noindex>.<\/p>\n<p>Kilde: <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.3 - 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\/da\/blog\/administrirovanie\/waveskit-php-frejmvork-dlya-raboty-s-blokchejnom-waves\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"da_DK\" \/>\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\/da\/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 framework til arbejdet med Waves blockchain | ProHoster","description":"Jeg elsker PHP for dets udviklingshastighed og fremragende transportabilitet.","canonical_url":"https:\/\/prohoster.info\/da\/blog\/administrirovanie\/waveskit-php-frejmvork-dlya-raboty-s-blokchejnom-waves","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"da_DK","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\/da\/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\/da\/wp-json\/wp\/v2\/posts\/30639","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/comments?post=30639"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts\/30639\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/media?parent=30639"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/categories?post=30639"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/tags?post=30639"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}