{"id":34631,"date":"2019-10-31T21:59:31","date_gmt":"2019-10-31T18:59:31","guid":{"rendered":"https:\/\/prohoster.info\/blog\/ton-telegram-open-network-chast-2-blokchejny-shardirovanie\/"},"modified":"2019-10-31T21:59:31","modified_gmt":"2019-10-31T18:59:31","slug":"ton-telegram-open-network-chast-2-blokchejny-shardirovanie","status":"publish","type":"post","link":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/ton-telegram-open-network-chast-2-blokchejny-shardirovanie","title":{"rendered":"TON: Telegram Open Network. Parte 2: Blockchain e Sharding","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"TON: Telegram Open Network. Parte 2: Blockchain e Sharding\" src=\"\/wp-content\/uploads\/2019\/05\/e2a24aa1dda6a435e60da257af662853.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Questo testo \u00e8 il proseguimento di una serie di articoli in cui analizzo la struttura (presumibilmente) della rete decentralizzata Telegram Open Network (TON) che dovrebbe essere rilasciata quest'anno. In <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/post\/354366\/\">parte precedente<\/a><\/noindex> ho descritto il suo livello pi\u00f9 basilare: il modo in cui i nodi interagiscono tra loro.<\/p>\n<p><\/p>\n<p>Per sicurezza, ricordo che non ho alcun legame con lo sviluppo di questa rete e tutto il materiale \u00e8 stato tratto da una fonte aperta (anche se non verificata) \u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/denull.ru\/telegram\/ton-tech.pdf\">documento<\/a><\/noindex> (c'\u00e8 anche un <noindex><a rel=\"nofollow\" href=\"https:\/\/denull.ru\/telegram\/ton.pdf\">brochure<\/a><\/noindex>, che espone brevemente i punti principali), pubblicato alla fine dello scorso anno. Il volume di informazioni in questo documento, a mio avviso, testimonia la sua autenticit\u00e0, sebbene non ci siano conferme ufficiali.<\/p>\n<p><\/p>\n<p>Oggi daremo un'occhiata al componente principale di TON \u2014 blockchain.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h3 id=\"bazovye-ponyatiya\">Concetti di base<\/h3>\n<p><\/p>\n<p><strong>Account<\/strong> (<em>account<\/em>). Un insieme di dati, identificato da un numero a 256 bit <em>account_id<\/em> (di solito si tratta della chiave pubblica del proprietario dell'account). Nel caso di base (vedi sotto <em>blockchain nullo<\/em>), questi dati rappresentano il saldo dell'utente. Chiunque pu\u00f2 \"prendere in prestito\" un determinato <em>account_id<\/em> ma il suo valore pu\u00f2 essere modificato solo secondo determinate regole.<\/p>\n<p><\/p>\n<p><strong>Smart contract<\/strong> (<em>smart-contract<\/em>). In effetti, \u00e8 un caso particolare di account, arricchito da codice di smart contract e da una repository delle sue variabili. Nel caso del \"wallet\" si possono accreditare e addebitare soldi da esso secondo regole relativamente semplici e prestabilite, mentre nel caso dello smart contract queste regole sono scritte sotto forma del suo codice (in un linguaggio di programmazione Turing completo).<\/p>\n<p><\/p>\n<p><strong>Stato della blockchain<\/strong> (<em>state of blockchain<\/em>). Insieme degli stati di tutti gli account\/smart contracts (in senso astratto \u2014 una tabella hash, dove le chiavi sono gli identificatori degli account e i valori sono i dati memorizzati negli account).<\/p>\n<p><\/p>\n<p><strong>Messaggio<\/strong> (<em>message<\/em>). Ho utilizzato sopra l'espressione \"accreditare e addebitare soldi\" \u2014 questo \u00e8 un esempio particolare di messaggio (\"trasferire <em>N grammi<\/em> da account <em>account_1<\/em> a account <em>account_2<\/em>\"). \u00c8 evidente che solo un nodo in possesso della chiave privata dell'account pu\u00f2 inviare un tale messaggio. <em>account_1<\/em> \u2014 e in grado di confermarlo con la propria firma. Il risultato della consegna di tali messaggi a un account normale \u00e8 l'aumento del suo saldo, mentre per il contratto intelligente \u00e8 l'esecuzione del suo codice (che gestir\u00e0 la ricezione del messaggio). Ovviamente, possono esistere anche altri messaggi (che trasferiscono dati arbitrari tra contratti intelligenti, non somme di denaro).<\/p>\n<p><\/p>\n<p><strong>La transazione<\/strong> (<em>transazione<\/em>). Il fatto che un messaggio venga consegnato \u00e8 chiamato transazione. Le transazioni modificano lo stato della blockchain. \u00c8 proprio dalle transazioni (registrazioni di consegna dei messaggi) che sono costituiti i blocchi nella blockchain. In questo senso, si pu\u00f2 considerare lo stato della blockchain come un database incrementale: tutti i blocchi sono \"diff\" che devono essere applicati in sequenza per ottenere lo stato attuale del DB. Si parler\u00e0 della specificit\u00e0 dell'imballaggio di questi \"diff\" (e del ripristino dello stato completo da essi) nel prossimo articolo.<\/p>\n<p><\/p>\n<h3 id=\"blokcheyn-v-ton-chto-eto-i-zachem\">Blockchain in TON: che cos'\u00e8 e a cosa serve?<\/h3>\n<p><\/p>\n<p>Come accennato nell'articolo precedente, <em>la blockchain \u00e8 una struttura dati i cui elementi (blocchi) sono disposti in una \"catena\", e ogni blocco successivo della catena contiene l'hash di quello precedente<\/em>. Nei commenti \u00e8 stata posta la domanda: a cosa serve questa struttura dati, quando abbiamo gi\u00e0 una DHT \u2014 una tabella hash distribuita? \u00c8 chiaro che alcuni dati possono essere memorizzati anche nella DHT, ma questo \u00e8 adatto solo per informazioni non troppo \"sensibili\". Non si possono memorizzare i saldi delle criptovalute nella DHT, prima di tutto a causa dell'assenza di controlli su <em>integrit\u00e0<\/em>. In effetti, tutta la complessit\u00e0 della struttura della blockchain si sviluppa per prevenire interferenze nei dati memorizzati al suo interno.<\/p>\n<p><\/p>\n<p>Tuttavia, la blockchain in TON appare ancora pi\u00f9 complessa rispetto alla maggior parte degli altri sistemi distribuiti \u2014 e ci sono due motivi per questo. Il primo \u00e8 la volont\u00e0 di ridurre al minimo la necessit\u00e0 di <em>fork<\/em>. Nelle criptovalute tradizionali, tutti i parametri sono definiti all'inizio e qualsiasi tentativo di cambiarli porta di fatto alla creazione di un \"universo alternativo della criptovaluta\". Il secondo motivo \u00e8 il supporto del partizionamento (<em>sharding<\/em>, <em>)<\/em>) blockchain. Il blockchain \u00e8 una struttura che non pu\u00f2 ridursi nel tempo; e di solito ogni nodo responsabile del funzionamento della rete \u00e8 costretto a conservarlo completamente. Nelle tradizionali (centralizzate) sistemi, per affrontare simili problemi si utilizza lo sharding: parte dei record nel database risiede su un server, parte su un altro, e cos\u00ec via. Nel caso delle criptovalute, questa funzionalit\u00e0 \u00e8 ancora piuttosto rara, soprattutto perch\u00e9 \u00e8 difficile implementare lo sharding in un sistema dove non era stato pianificato fin dall'inizio.<\/p>\n<p><\/p>\n<p>In che modo TON intende affrontare entrambe le problematiche descritte sopra?<\/p>\n<p><\/p>\n<h3 id=\"soderzhimoe-blokcheyna-vorkcheyny\">Contenuto del blockchain. Workchains.<\/h3>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TON: Telegram Open Network. Parte 2: Blockchain e Sharding\" src=\"\/wp-content\/uploads\/2019\/05\/c4f0f6e6702322ad4312cb262b3a0fab.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Per cominciare, parliamo di cosa si prevede si conservi nel blockchain. Qui saranno memorizzati gli stati degli account (i 'portafogli' nel caso base) e dei contratti intelligenti (per semplicit\u00e0 consideriamo che siano la stessa cosa degli account). In sostanza, sar\u00e0 una normale tabella hash \u2014 le chiavi saranno gli identificatori <strong>account_id<\/strong>, e i valori saranno strutture dati contenenti cose come:<\/p>\n<p><\/p>\n<ul>\n<li>saldo;<\/li>\n<li>codice del contratto intelligente (solo per i contratti intelligenti);<\/li>\n<li>memoria dei dati del contratto intelligente (solo per i contratti intelligenti);<\/li>\n<li>statistiche;<\/li>\n<li>(<em>opzionalmente<\/em>) chiave pubblica per trasferimenti dall'account, per impostazione predefinita account_id;<\/li>\n<li>coda dei messaggi in uscita (qui vengono messi per essere inviati ai destinatari);<\/li>\n<li>lista degli ultimi messaggi recapitati a questo account.<\/li>\n<\/ul>\n<p><\/p>\n<p>Come detto sopra, i blocchi consistono essenzialmente in transazioni \u2014 messaggi inviati a diversi account account_id. Tuttavia, oltre a account_id, i messaggi contengono anche un campo a 32 bit <em>workchain_id<\/em> \u2014 identificatore del cosiddetto <strong>workchain<\/strong> (<em>workchain<\/em>, <em>working blockchain<\/em>). Questo consente di avere diversi blockchain indipendenti l'uno dall'altro con configurazioni diverse. In questo contesto, workchain_id = 0 \u00e8 considerato un caso speciale, <strong>workchain nullo<\/strong> \u2014 infatti i saldi in esso corrisponderanno alla criptovaluta TON (Grams). \u00c8 probabile che inizialmente non esisteranno altri workchains.<\/p>\n<p><\/p>\n<h3 id=\"shardcheyny-infinite-sharding-paradigm\">Shardchains. Infinite Sharding Paradigm.<\/h3>\n<p><\/p>\n<p>Ma la crescita del numero di blockchain non si ferma qui. Approfondiamo il concetto di sharding. Immaginiamo che a ciascun account (account_id) sia assegnata la propria blockchain \u2014 in essa si trovano tutti i messaggi in arrivo \u2014 e lo stato di tutte queste blockchain \u00e8 conservato su nodi separati.<\/p>\n<p><\/p>\n<p>Certo, questo \u00e8 piuttosto dispendioso: \u00e8 probabile che in ciascuna di queste <strong>shardchain<\/strong> (<em>shardchain<\/em>, <em>blockchain shard<\/em>) le transazioni arriveranno molto raramente, e ci saranno bisogno di molti nodi potenti (anticipando, segnalo che non si parla semplicemente di client su telefoni cellulari, ma di server seri).<\/p>\n<p><\/p>\n<p>Pertanto, le shardchain raggruppano gli account in base ai prefissi binari dei loro identificatori: se una shardchain ha un prefisso 0110, allora ricever\u00e0 le transazioni di tutti gli account che iniziano con queste cifre. Questo <em>shard_prefix<\/em> pu\u00f2 avere una lunghezza da 0 a 60 bit \u2014 e la cosa principale \u00e8 che pu\u00f2 cambiare dinamicamente.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TON: Telegram Open Network. Parte 2: Blockchain e Sharding\" src=\"\/wp-content\/uploads\/2019\/05\/568aec7ad3d8cc3e268f0e60d453b502.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Non appena una delle shardchain inizia a ricevere un numero eccessivo di transazioni, i nodi che operano su di essa \"dividono\" la shardchain in due figlie secondo regole predefinite \u2014 i loro prefissi saranno pi\u00f9 lunghi di un bit (e per uno di essi questo bit sar\u00e0 0, mentre per l'altro sar\u00e0 1). Ad esempio, <em>shard_prefix<\/em> = <u>0110<\/u>b si divider\u00e0 in <u>0110<\/u>0b e <u>0110<\/u>1b. A sua volta, se due shardchain \"vicine\" iniziano a sentirsi abbastanza a loro agio (per un certo periodo di tempo), si fonderanno di nuovo.<\/p>\n<p><\/p>\n<p>In questo modo, lo sharding viene fatto \"dal basso verso l'alto\" \u2014 presumiamo che ciascun account possieda il proprio shard, ma essi sono - fino a un certo punto - \"incollati\" dai prefissi. Questo implica <strong>Infinite Sharding Paradigm<\/strong> (<em>paradigma di sharding infinito<\/em>).<\/p>\n<p><\/p>\n<p>Voglio sottolineare che le workchain esistono solo virtualmente \u2014 in realt\u00e0, <em>workchain_id<\/em> \u00e8 parte dell\u2019identificatore di una specifica shardchain. Parlando in termini formali, ogni shardchain \u00e8 definita da una coppia di numeri (<em>workchain_id<\/em>, <em>shard_prefix<\/em>).<\/p>\n<p><\/p>\n<h3 id=\"ispravlenie-oshibok-vertikalnye-blokcheyny\">Correzione degli errori. Blockchain verticali.<\/h3>\n<p><\/p>\n<p>Tradizionalmente si considera che ogni transazione in una blockchain sia \"incisa nella pietra\". Tuttavia, nel caso di TON \u00e8 prevista la possibilit\u00e0 di \"riscrivere la storia\" \u2014 nel caso in cui qualcuno (il cosiddetto <em>nodo \"pescatore\"<\/em>) dimostrer\u00e0 che uno dei blocchi \u00e8 stato firmato in modo errato. In questo caso, un blocco correttivo speciale viene aggiunto al corrispondente sharding chain, contenente l'hash del blocco stesso da correggere (e non dell'ultimo blocco nello sharding chain). Rappresentando lo sharding chain come una catena di blocchi disposta orizzontalmente, si pu\u00f2 dire che il blocco correttivo si attacca al blocco errato non a destra, ma sopra \u2014 pertanto si considera che diventi parte di un piccolo 'blockchain verticale'. Cos\u00ec, si pu\u00f2 dire che gli sharding chain sono <em>blockchain bidimensionali<\/em>.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TON: Telegram Open Network. Parte 2: Blockchain e Sharding\" src=\"\/wp-content\/uploads\/2019\/05\/eda526705f5febd37995901b5542264c.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Nel caso in cui dopo un blocco errato le modifiche apportate da esso siano state richiamate da blocchi successivi (cio\u00e8, siano state effettuate nuove transazioni basate su dati non validi), a questi blocchi vengono anche aggiunti correttivi 'dall'alto'. Se i blocchi non hanno toccato le informazioni 'colpite', le 'onde correttive' non si diffondono su di essi. Ad esempio, nell'illustrazione sopra, la transazione del primo blocco, che aumenta il saldo dell'account C, \u00e8 stata riconosciuta come errata \u2014 quindi la transazione che diminuisce il saldo di questo account nel terzo blocco deve anch'essa essere annullata e un blocco correttivo deve essere registrato sopra il blocco stesso.<\/p>\n<p><\/p>\n<p>Va notato che, sebbene i blocchi correttivi siano rappresentati come posizionati 'sopra' gli originali, in realt\u00e0 saranno aggiunti alla fine del corrispondente blockchain (l\u00ec dove dovrebbero trovarsi cronologicamente). La disposizione bidimensionale mostra solo a quale punto nella blockchain saranno 'agganciati' (tramite l'hash del blocco originale contenuto in essi).<\/p>\n<p><\/p>\n<p>Si pu\u00f2 filosofeggiare separatamente su quanto sia buona la decisione di 'cambiare il passato'. Sembrerebbe che, se tolleriamo la possibilit\u00e0 che si verifichi un blocco errato nello sharding chain, non si possa escludere nemmeno la possibilit\u00e0 di un blocco correttivo errato. Qui, per quanto posso giudicare, la differenza sta nel numero di nodi che devono raggiungere il consenso riguardo ai nuovi blocchi \u2014 su ogni sharding chain lavorer\u00e0 un relativamente piccolo '<em>gruppo di lavoro<\/em>' di nodi (che cambia abbastanza frequentemente), mentre l'inserimento di blocchi correttivi richieder\u00e0 il consenso di tutti <em>i nodi validatori<\/em>. Parler\u00f2 di pi\u00f9 sui validatori, gruppi di lavoro e altri ruoli dei nodi nel prossimo articolo.<\/p>\n<p><\/p>\n<h3 id=\"odin-blokcheyn-chtob-pravit-vsemi\">Un blockchain per governarli tutti<\/h3>\n<p><\/p>\n<p>Le informazioni varie sui diversi tipi di blockchain sopra citate devono essere anch'esse archiviate da qualche parte. In particolare, si tratta delle seguenti informazioni:<\/p>\n<p><\/p>\n<ul>\n<li>sul numero e le configurazioni dei workchains;<\/li>\n<li>s sul numero di shardchains e i loro prefissi;<\/li>\n<li>sui nodi attualmente responsabili di quali shardchains;<\/li>\n<li>hash degli ultimi blocchi aggiunti a tutti gli shardchains.<\/li>\n<\/ul>\n<p><\/p>\n<p>Come potreste aver intuito, tutte queste informazioni vengono registrate in un altro blockchain di archiviazione\u2014 <strong>masterchain<\/strong> (<em>masterchain<\/em>, <em>master blockchain<\/em>). Grazie alla presenza negli suoi blocchi degli hash di tutti i blocchi degli shardchains, rende il sistema fortemente interconnesso. Ci\u00f2 significa anche che la generazione di un nuovo blocco nel masterchain avverr\u00e0 immediatamente dopo la generazione dei blocchi negli shardchains, con l'aspettativa che i blocchi negli shardchains compaiano quasi simultaneamente circa ogni 5 secondi, e il successivo blocco nel masterchain un secondo dopo.<\/p>\n<p><\/p>\n<p>Ma chi sar\u00e0 responsabile per l'implementazione di tutto questo lavoro titanico - per l'invio di messaggi, l'esecuzione di contratti smart, la formazione di blocchi negli shardchains e nel masterchain, e persino il controllo dei blocchi per errori? Saranno davvero i telefoni di milioni di utenti con il client di Telegram installato a farlo in silenzio? O forse il team di Durov rinuncer\u00e0 alle idee di decentralizzazione e lo faranno i loro server in modo tradizionale?<\/p>\n<p><\/p>\n<p>In realt\u00e0, nessuna delle due risposte \u00e8 corretta. Ma gli spazi di questo articolo stanno rapidamente esaurendosi, quindi la discussione sui vari ruoli dei nodi (avrete gi\u00e0 notato alcuni riferimenti a loro) e sulle meccaniche del loro funzionamento proseguir\u00e0 nella prossima parte.<\/p>\n<p>Fonte: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/354568\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0414\u0430\u043d\u043d\u044b\u0439 \u0442\u0435\u043a\u0441\u0442 \u2014 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u0435 \u0441\u0435\u0440\u0438\u0438 \u0441\u0442\u0430\u0442\u0435\u0439, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u044f \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u044e \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443 (\u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u043e) \u0433\u043e\u0442\u043e\u0432\u044f\u0449\u0435\u0439\u0441\u044f \u043a \u0432\u044b\u0445\u043e\u0434\u0443 \u0432 \u044d\u0442\u043e\u043c \u0433\u043e\u0434\u0443 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0439 \u0441\u0435\u0442\u0438 Telegram Open Network (TON). \u0412 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0447\u0430\u0441\u0442\u0438 \u044f \u043e\u043f\u0438\u0441\u0430\u043b \u0435\u0451 \u0441\u0430\u043c\u044b\u0439 \u0431\u0430\u0437\u043e\u0432\u044b\u0439 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u2014 \u0441\u043f\u043e\u0441\u043e\u0431 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0443\u0437\u043b\u043e\u0432 \u043c\u0435\u0436\u0434\u0443 \u0441\u043e\u0431\u043e\u0439. \u041d\u0430 \u0432\u0441\u044f\u043a\u0438\u0439 \u0441\u043b\u0443\u0447\u0430\u0439 \u043d\u0430\u043f\u043e\u043c\u043d\u044e, \u0447\u0442\u043e \u043a \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u044d\u0442\u043e\u0439 \u0441\u0435\u0442\u0438 \u044f \u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u044f \u043d\u0435 \u0438\u043c\u0435\u044e \u0438 \u0432\u0435\u0441\u044c \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":26098,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-34631","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.1.1 - 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\/it\/blog\/administrirovanie\/ton-telegram-open-network-chast-2-blokchejny-shardirovanie\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"it_IT\" \/>\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\udd47TON: Telegram Open Network. \u0427\u0430\u0441\u0442\u044c 2: \u0411\u043b\u043e\u043a\u0447\u0435\u0439\u043d\u044b, \u0448\u0430\u0440\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 | ProHoster\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/ton-telegram-open-network-chast-2-blokchejny-shardirovanie\" \/>\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:59:31+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T18:59:31+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\udd47TON: Telegram Open Network. Parte 2: Blockchain, sharding | ProHoster","description":"","canonical_url":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/ton-telegram-open-network-chast-2-blokchejny-shardirovanie","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"it_IT","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\udd47TON: Telegram Open Network. \u0427\u0430\u0441\u0442\u044c 2: \u0411\u043b\u043e\u043a\u0447\u0435\u0439\u043d\u044b, \u0448\u0430\u0440\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 | ProHoster","og:url":"https:\/\/prohoster.info\/it\/blog\/administrirovanie\/ton-telegram-open-network-chast-2-blokchejny-shardirovanie","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:59:31+00:00","article:modified_time":"2019-10-31T18:59:31+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"34631","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 20:00:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 02:17:24","updated":"2026-01-21 20:00:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/34631","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/comments?post=34631"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/34631\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media\/26098"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media?parent=34631"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/categories?post=34631"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/tags?post=34631"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}