{"id":52506,"date":"2019-11-10T00:00:00","date_gmt":"2019-11-09T21:00:00","guid":{"rendered":"https:\/\/prohoster.info\/blog\/blog_prohoster\/kak-napisat-smart-kontrakt-na-python-v-seti-ontology-chast-1-blockchain-block-api"},"modified":"2020-02-18T14:00:15","modified_gmt":"2020-02-18T11:00:15","slug":"kak-napisat-smart-kontrakt-na-python-v-seti-ontology-chast-1-blockchain-block-api","status":"publish","type":"post","link":"https:\/\/prohoster.info\/es\/blog\/administrirovanie\/kak-napisat-smart-kontrakt-na-python-v-seti-ontology-chast-1-blockchain-block-api","title":{"rendered":"C\u00f3mo escribir un contrato inteligente en Python en la red Ontology. Parte 1: Blockchain &amp; Block API","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"C\u00f3mo escribir un contrato inteligente en Python en la red Ontology. Parte 1: API de Blockchain y Bloque\" src=\"\/wp-content\/uploads\/2019\/11\/4748f7bfd5e6c0b7a17ec511d22313df.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nEsta es la primera parte de una serie de art\u00edculos educativos sobre c\u00f3mo crear contratos inteligentes en Python en la red blockchain de Ontology utilizando la herramienta de desarrollo de contratos inteligentes. <noindex><a rel=\"nofollow\" href=\"https:\/\/smartx.ont.io\/\">SmartX<\/a><\/noindex>. <\/p>\n<p>En este art\u00edculo, comenzaremos a familiarizarnos con la API de contratos inteligentes de Ontology. La API de contratos inteligentes de Ontology se divide en 7 m\u00f3dulos: <\/p>\n<ol>\n<li>Blockchain &amp; Block API, <\/li>\n<li>Runtime API, <\/li>\n<li>Storage API, <\/li>\n<li>Native API, <\/li>\n<li>Upgrade API, <\/li>\n<li>Execution Engine API y <\/li>\n<li>Static &amp; Dynamic Call API.<\/li>\n<\/ol>\n<p>\nBlockchain &amp; Block API es la parte principal del sistema de contratos inteligentes de Ontology. La API de Blockchain admite operaciones b\u00e1sicas de consulta blockchain, como la obtenci\u00f3n de la altura actual del bloque, mientras que la API de Block admite operaciones b\u00e1sicas de consulta de bloques, como la solicitud de la cantidad de transacciones para un bloque dado.<\/p>\n<p><b>\u00a1Vamos a empezar!<\/b><\/p>\n<p>Primero, crea un nuevo contrato en <noindex><a rel=\"nofollow\" href=\"https:\/\/smartx.ont.io\/#\">SmartX<\/a><\/noindex>, y luego sigue las instrucciones a continuaci\u00f3n.<br \/>\n <noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h3>1. C\u00f3mo usar la API de Blockchain<\/h3>\n<p>\nLos enlaces a las funciones de los contratos inteligentes son id\u00e9nticos a los enlaces de Python. Puedes introducir las funciones correspondientes seg\u00fan sea necesario. Por ejemplo, la siguiente instrucci\u00f3n introduce GetHeight, la funci\u00f3n para obtener la altura actual del bloque, y GetHeader, la funci\u00f3n para obtener el encabezado del bloque.<\/p>\n<pre><code class=\"python\">from ontology.interop.System.Blockchain import GetHeight, GetHeader<\/code><\/pre>\n<p><\/p>\n<h4>GetHeight<\/h4>\n<p>\nGetHeight se utiliza para obtener el \u00faltimo n\u00famero secuencial del bloque en la blockchain, como se muestra en el ejemplo a continuaci\u00f3n. En el \u00faltimo ejemplo, por conveniencia, omitir\u00e9 la funci\u00f3n Main, pero puedes agregarla si es necesario.<\/p>\n<pre><code class=\"python\">from ontology.interop.System.Runtime import Notify\nfrom ontology.interop.System.Blockchain import GetHeight\ndef Main(operation):\n    if operation == 'demo':\n        return demo()\n    return False\n\ndef demo():\n    height=GetHeight()\n    Notify(height) # print height\n    return height #return height after running the function<\/code><\/pre>\n<p><\/p>\n<h4>GetHeader<\/h4>\n<p>\nGetHeader se utiliza para obtener el encabezado del bloque, cuyo par\u00e1metro es el n\u00famero secuencial del bloque en la blockchain. Ejemplo:<\/p>\n<pre><code class=\"python\">from ontology.interop.System.Runtime import Notify\nfrom ontology.interop.System.Blockchain import GetHeader\ndef demo():\n    block_height=10\n    header=GetHeader(block_height) \n    Notify(header)\nreturn header<\/code><\/pre>\n<p><\/p>\n<h4>GetTransactionByHash<\/h4>\n<p>\nGetTransactionByHash se utiliza para obtener una transacci\u00f3n mediante el hash de la transacci\u00f3n. El hash de la transacci\u00f3n se env\u00eda a <i>GetTransactionByHash <\/i>como par\u00e1metros en formato bytearray. La clave para esta funci\u00f3n es convertir el hash de la transacci\u00f3n en formato hex a un hash de transacci\u00f3n en formato bytearray. Este es un paso importante. De lo contrario, recibir\u00edas un error que indica que no hay bloque con ese hash. Tomemos un hash de transacci\u00f3n en formato hex, por ejemplo, para convertirlo a formato bytearray. El ejemplo es el siguiente:<\/p>\n<pre><code class=\"python\">9f270aa3a4c13c46891ff0e1a2bdb3ea0525669d414994aadf2606734d0c89c1<\/code><\/pre>\n<p>\nPrimero, invierte el hash de la transacci\u00f3n:<\/p>\n<pre><code class=\"python\">c1890c4d730626dfaa9449419d662505eab3bda2e1f01f89463cc1a4a30a279<\/code><\/pre>\n<p>\nLos desarrolladores pueden realizar este paso utilizando la herramienta de conversi\u00f3n Hex Number (little endian) que proporciona SmartX.<\/p>\n<p>Luego, convierte el resultado obtenido en formato bytearray:<\/p>\n<pre><code class=\"python\">{0xc1,0x89,0x0c,0x4d,0x73,0x06,0x26,0xdf,0xaa,0x94,0x49,0x41,0x9d,0x66,0x25,0x05,0xea,0xb3,0xbd,0xa2,0xe1,0xf0,0x1f,0x89,0x46,0x3c,0xc1,0xa4,0xa3,0x0a,0x27,0x9f}<\/code><\/pre>\n<p>\nEsto se puede hacer mediante la herramienta de conversi\u00f3n String Byte Array que ofrece SmartX. Finalmente, convierte el bytearray obtenido en una cadena similar:<\/p>\n<pre><code class=\"python\">xc1x89x0cx4dx73x06x26xdfxaax94x49x41x9dx66x25x05xeaxb3xbdxa2xe1xf0x1fx89x46x3cxc1xa4xa3x0ax27x9f<\/code><\/pre>\n<p>\nA continuaci\u00f3n se muestra un ejemplo de la funci\u00f3n GetTransactionByHash, que obtiene una transacci\u00f3n mediante el hash de la transacci\u00f3n:<\/p>\n<pre><code class=\"python\">from ontology.interop.System.Blockchain import GetTransactionByHash\ndef demo():\n    # tx_hash=\"9f270aa3a4c13c46891ff0e1a2bdb3ea0525669d414994aadf2606734d0c89c1\"    \n    tx_hash=bytearray(b\"xc1x89x0cx4dx73x06x26xdfxaax94x49x41x9dx66x25x05xeaxb3xbdxa2xe1xf0x1fx89x46x3cxc1xa4xa3x0ax27x9f\")\n    tx=GetTransactionByHash(tx_hash)\n    return tx<\/code><\/pre>\n<h4>GetTransactionHeight<\/h4>\n<p>\nGetTransactionHeight se utiliza para obtener la altura de la transacci\u00f3n mediante el hash de la transacci\u00f3n. Tomemos el hash del ejemplo anterior:<\/p>\n<pre><code class=\"python\">from ontology.interop.System.Blockchain import GetTransactionHeight\ndef demo():\n    #   tx_hash=\"9f270aa3a4c13c46891ff0e1a2bdb3ea0525669d414994aadf2606734d0c89c1\"    \n    tx_hash=bytearray(b\"xc1x89x0cx4dx73x06x26xdfxaax94x49x41x9dx66x25x05xeaxb3xbdxa2xe1xf0x1fx89x46x3cxc1xa4xa3x0ax27x9f\")\n    height=GetTransactionHeight(tx_hash)\n    return height<\/code><\/pre>\n<p><\/p>\n<h4>GetContract<\/h4>\n<p>\nLos desarrolladores pueden utilizar la funci\u00f3n GetContract para obtener un contrato mediante el hash del contrato. El proceso de conversi\u00f3n del hash del contrato es similar al proceso de conversi\u00f3n del hash de la transacci\u00f3n mencionado anteriormente.<\/p>\n<pre><code class=\"python\">from ontology.interop.System.Blockchain import GetContract\ndef demo():\n    # contract_hash=\"d81a75a5ff9b95effa91239ff0bb3232219698fa\"    \n    contract_hash=bytearray(b\"xfax98x96x21x32x32xbbxf0x9fx23x91xfaxefx95x9bxffxa5x75x1axd8\")\n    contract=GetContract(contract_hash)\n    return contract<\/code><\/pre>\n<p><\/p>\n<h4>GetBlock<\/h4>\n<p>\nGetBlock se utiliza para obtener un bloque. Hay dos formas de obtener un bloque espec\u00edfico.<\/p>\n<p><b>1. Obtener un bloque por la altura del bloque:<\/b><\/p>\n<pre><code class=\"python\">from ontology.interop.System.Blockchain import GetBlock\ndef demo():\n    block=GetBlock(1408)\n    return block<\/code><\/pre>\n<p>\n<b>2. Obtener un bloque por el hash del bloque:<\/b><\/p>\n<pre><code class=\"python\">from ontology.interop.System.Blockchain import GetBlock\ndef demo():    \n    block_hash=bytearray(b'x16xe0xc5x40x82x79x77x30x44xeax66xc8xc4x5dx17xf7x17x73x92x33x6dx54xe3x48x46x0bxc3x2fxe2x15x03xe4')\n    block=GetBlock(block_hash)<\/code><\/pre>\n<p><\/p>\n<h3>2. C\u00f3mo utilizar la API de Block<\/h3>\n<p>\nHay tres funciones disponibles en la API de Block: <i>GetTransactions<\/i>, <i>GetTransactionCount<\/i>como <i>GetTransactionByIndex<\/i>. Las analizaremos una por una.<\/p>\n<h4>GetTransactionCount<\/h4>\n<p>\nGetTransactionCount se utiliza para obtener la cantidad de transacciones para un bloque dado.<\/p>\n<pre><code class=\"python\">from ontology.interop.System.Blockchain import GetBlock\nfrom ontology.interop.System.Block import GetTransactionCount\ndef demo():\n    block=GetBlock(1408)\n    count=GetTransactionCount(block)\n    return count<\/code><\/pre>\n<p><\/p>\n<h3>GetTransactions<\/h3>\n<p>\nLos desarrolladores pueden utilizar la funci\u00f3n GetTransactions para obtener todas las transacciones en este bloque.<\/p>\n<pre><code class=\"python\">from ontology.interop.System.Blockchain import GetBlock\nfrom ontology.interop.System.Block import GetTransactions \ndef demo():\n    block=GetBlock(1408)\n    txs=GetTransactions(block)\n    return txs<\/code><\/pre>\n<p><\/p>\n<h4>GetTransactionByIndex<\/h4>\n<p>\nGetTransactionByIndex se utiliza para obtener una transacci\u00f3n espec\u00edfica en este bloque.<\/p>\n<pre><code class=\"python\">from ontology.interop.System.Blockchain import GetBlock\nfrom ontology.interop.System.Block import GetTransactionByIndex\ndef demo():\n    block=GetBlock(1408)\n    tx=GetTransactionByIndex(block,0) # el \u00edndice comienza desde 0.\n    return tx<\/code><\/pre>\n<p>\nLa gu\u00eda completa se puede encontrar en nuestro <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/punicasuite\/tutorials\/blob\/master\/smart-contracts-docs-cn\/course04_use_blockchain_api_in_smart_contract.md\">GitHub<\/a><\/noindex>.<\/p>\n<h3>P\u00f3scrito<\/h3>\n<p>\nLa API de Blockchain &amp; Block es una parte indispensable de los contratos inteligentes, ya que puede utilizarlas para solicitar datos del blockchain y datos de bloques en los contratos inteligentes. En los siguientes art\u00edculos, discutiremos c\u00f3mo usar el resto de las API y c\u00f3mo interact\u00faan con el blockchain de Ontology.<\/p>\n<blockquote><p>El art\u00edculo fue traducido por el equipo de Hashrate&amp;Shares especialmente para OntologyRussia. <noindex><a rel=\"nofollow\" href=\"https:\/\/hashrate-and-shares.ru\/kak-razrabotat-smart-kontrakt-s-pomoshchyu-python-v-seti-ontology-chast-pervaya\">clic<\/a><\/noindex> <\/p><\/blockquote>\n<p> \u00bfEres desarrollador? \u00danete a nuestra comunidad t\u00e9cnica en <noindex><a rel=\"nofollow\" href=\"https:\/\/discord.gg\/4TQujHj\">Discord<\/a><\/noindex>. Adem\u00e1s, echa un vistazo al <noindex><a rel=\"nofollow\" href=\"https:\/\/developer.ont.io\/\">Centro de Desarrolladores<\/a><\/noindex> en nuestro sitio, all\u00ed puedes encontrar herramientas para desarrolladores, documentaci\u00f3n y mucho m\u00e1s.<\/p>\n<h4>Ontology<\/h4>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/ont.io\/\">sitio web de Ontology<\/a><\/noindex> <\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/ontio\/\">GitHub<\/a><\/noindex> \/ <noindex><a rel=\"nofollow\" href=\"https:\/\/discord.gg\/pQRHtbD\">Discord<\/a><\/noindex><\/li>\n<li>Telegram <noindex><a rel=\"nofollow\" href=\"https:\/\/t.me\/OntologyNetwork\">Ingl\u00e9s<\/a><\/noindex> \/ <noindex><a rel=\"nofollow\" href=\"https:\/\/t.me\/OntologyAnnouncementsRu\">Ruso<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/twitter.com\/OntologyNetwork\">Twitter <\/a><\/noindex> \/ <noindex><a rel=\"nofollow\" href=\"https:\/\/www.reddit.com\/r\/OntologyNetwork\/\">Reddit <\/a><\/noindex><\/li>\n<\/ul>\n<p>Fuente: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/474966\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u042d\u0442\u043e \u043f\u0435\u0440\u0432\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0438\u0437 \u0441\u0435\u0440\u0438\u0438 \u043e\u0431\u0443\u0447\u0430\u044e\u0449\u0438\u0445 \u0441\u0442\u0430\u0442\u0435\u0439 \u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u0441\u043c\u0430\u0440\u0442-\u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u043e\u0432 \u043d\u0430 Python \u0432 \u0431\u043b\u043e\u043a\u0447\u0435\u0439\u043d \u0441\u0435\u0442\u0438 Ontology \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0441\u043c\u0430\u0440\u0442-\u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u043e\u0432 SmartX. \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043c\u044b \u043d\u0430\u0447\u043d\u0451\u043c \u0437\u043d\u0430\u043a\u043e\u043c\u0441\u0442\u0432\u043e \u0441 API \u0441\u043c\u0430\u0440\u0442-\u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u0430 Ontology. API \u0441\u043c\u0430\u0440\u0442-\u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442\u0430 Ontology \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d \u043d\u0430 7 \u043c\u043e\u0434\u0443\u043b\u0435\u0439: Blockchain &amp; Block API, Runtime API, Storage API, Native API, Upgrade API, Execution Engine API \u0438 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":52507,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-52506","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.2 - aioseo.com -->\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/es\/blog\/administrirovanie\/kak-napisat-smart-kontrakt-na-python-v-seti-ontology-chast-1-blockchain-block-api\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2\" \/>\n\t\t<meta property=\"og:locale\" content=\"es_ES\" \/>\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\u041a\u0430\u043a \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0441\u043c\u0430\u0440\u0442-\u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442 \u043d\u0430 Python \u0432 \u0441\u0435\u0442\u0438 Ontology. \u0427\u0430\u0441\u0442\u044c 1: Blockchain &amp; Block API | ProHoster\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/es\/blog\/administrirovanie\/kak-napisat-smart-kontrakt-na-python-v-seti-ontology-chast-1-blockchain-block-api\" \/>\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-11-09T21:00:00+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-02-18T11:00:15+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\udd47C\u00f3mo escribir un contrato inteligente en Python en la red Ontology. Parte 1: API de Blockchain y Bloque | ProHoster","description":"","canonical_url":"https:\/\/prohoster.info\/es\/blog\/administrirovanie\/kak-napisat-smart-kontrakt-na-python-v-seti-ontology-chast-1-blockchain-block-api","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"es_ES","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\u041a\u0430\u043a \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0441\u043c\u0430\u0440\u0442-\u043a\u043e\u043d\u0442\u0440\u0430\u043a\u0442 \u043d\u0430 Python \u0432 \u0441\u0435\u0442\u0438 Ontology. \u0427\u0430\u0441\u0442\u044c 1: Blockchain &amp; Block API | ProHoster","og:url":"https:\/\/prohoster.info\/es\/blog\/administrirovanie\/kak-napisat-smart-kontrakt-na-python-v-seti-ontology-chast-1-blockchain-block-api","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-11-09T21:00:00+00:00","article:modified_time":"2020-02-18T11:00:15+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"52506","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-24 03:50:21","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 20:42:42","updated":"2026-01-24 03:50:21","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts\/52506","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/comments?post=52506"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts\/52506\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/media\/52507"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/media?parent=52506"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/categories?post=52506"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/tags?post=52506"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}