{"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\/pt\/blog\/administrirovanie\/ton-telegram-open-network-chast-2-blokchejny-shardirovanie","title":{"rendered":"TON: Telegram Open Network. Parte 2: Blockchains, Sharding","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"TON: Telegram Open Network. Parte 2: Blockchains, Sharding\" src=\"\/wp-content\/uploads\/2019\/05\/e2a24aa1dda6a435e60da257af662853.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Este texto \u00e9 a continua\u00e7\u00e3o de uma s\u00e9rie de artigos nos quais analiso a estrutura (presumivelmente) da rede descentralizada Telegram Open Network (TON), que deve ser lan\u00e7ada este ano. <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/post\/354366\/\">parte anterior<\/a><\/noindex> Descrevi seu n\u00edvel mais b\u00e1sico \u2014 a forma como os n\u00f3s interagem entre si.<\/p>\n<p><\/p>\n<p>Apenas para lembrar, n\u00e3o tenho qualquer rela\u00e7\u00e3o com o desenvolvimento dessa rede e todo o material foi retirado de uma fonte p\u00fablica (embora n\u00e3o verificada) \u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/denull.ru\/telegram\/ton-tech.pdf\">do documento.<\/a><\/noindex> (ainda existe um <noindex><a rel=\"nofollow\" href=\"https:\/\/denull.ru\/telegram\/ton.pdf\">panfleto<\/a><\/noindex>, que resume os principais pontos), que apareceu no final do ano passado. A quantidade de informa\u00e7\u00f5es neste documento, na minha opini\u00e3o, atesta sua autenticidade, embora n\u00e3o haja confirma\u00e7\u00f5es oficiais para isso.<\/p>\n<p><\/p>\n<p>Hoje, vamos analisar o componente principal da TON \u2014 o blockchain.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h3 id=\"bazovye-ponyatiya\">Conceitos B\u00e1sicos<\/h3>\n<p><\/p>\n<p><strong>Conta<\/strong> (<em>account<\/em>). Um conjunto de dados, identificado por um n\u00famero de 256 bits <em>account_id<\/em> (geralmente, \u00e9 a chave p\u00fablica do propriet\u00e1rio da conta). No caso b\u00e1sico (veja abaixo <em>blockchain zero<\/em>), esses dados referem-se ao saldo do usu\u00e1rio. \"Pegar empr\u00e9stimo\" de um espec\u00edfico <em>account_id<\/em> pode qualquer um, mas seu valor s\u00f3 pode ser alterado de acordo com regras espec\u00edficas.<\/p>\n<p><\/p>\n<p><strong>Contrato inteligente<\/strong> (<em>smart-contract<\/em>). Essencialmente, \u00e9 um caso particular de conta, complementado pelo c\u00f3digo do contrato inteligente e pelo armazenamento de suas vari\u00e1veis. Se, no caso de uma \"carteira\", \u00e9 poss\u00edvel depositar e retirar dinheiro dela por regras relativamente simples e predefinidas, no caso do contrato inteligente essas regras est\u00e3o escritas na forma de seu c\u00f3digo (em uma linguagem de programa\u00e7\u00e3o que \u00e9 Turing-completa).<\/p>\n<p><\/p>\n<p><strong>Estado do blockchain<\/strong> (<em>state of blockchain<\/em>). Conjunto de estados de todas as contas\/contratos inteligentes (em um sentido abstrato \u2014 uma tabela hash, onde as chaves s\u00e3o identificadores de contas e os valores s\u00e3o os dados armazenados nas contas).<\/p>\n<p><\/p>\n<p><strong>Mensagem<\/strong> (<em>message<\/em>). Acima, usei a express\u00e3o \"depositar e retirar dinheiro\" \u2014 este \u00e9 um exemplo espec\u00edfico de mensagem (\"transferir <em>N gramas<\/em> da conta <em>account_1<\/em> para a conta <em>account_2<\/em>\"). Obviamente, apenas um n\u00f3 que possui a chave privada da conta pode enviar tal mensagem. <em>account_1<\/em> \u2014 e capaz de confirmar isso com uma assinatura. O resultado da entrega de tais mensagens a uma conta comum \u00e9 o aumento de seu saldo, enquanto ao contrato inteligente \u2014 a execu\u00e7\u00e3o de seu c\u00f3digo (que processar\u00e1 a recep\u00e7\u00e3o da mensagem). \u00c9 claro que outras mensagens tamb\u00e9m podem ser enviadas (n\u00e3o transferindo quantias monet\u00e1rias, mas dados arbitr\u00e1rios entre contratos inteligentes).<\/p>\n<p><\/p>\n<p><strong>A transa\u00e7\u00e3o<\/strong> (<em>transa\u00e7\u00e3o<\/em>). O fato da entrega da mensagem \u00e9 chamado de transa\u00e7\u00e3o. Transa\u00e7\u00f5es alteram o estado da blockchain. \u00c9 exatamente a partir das transa\u00e7\u00f5es (registros de entrega de mensagens) que os blocos na blockchain s\u00e3o formados. Nesse aspecto, pode-se imaginar o estado da blockchain como um banco de dados incremental \u2014 todos os blocos s\u00e3o 'deltas' que precisam ser aplicados sequencialmente para obter o estado atual do BD. Sobre a especificidade da embalagem desses 'deltas' (e a restaura\u00e7\u00e3o do estado completo a partir deles) falaremos no pr\u00f3ximo artigo.<\/p>\n<p><\/p>\n<h3 id=\"blokcheyn-v-ton-chto-eto-i-zachem\">Blockchain no TON: o que \u00e9 e para que serve?<\/h3>\n<p><\/p>\n<p>Como mencionado no artigo anterior, <em>a blockchain \u00e9 uma estrutura de dados, cujos elementos (blocos) est\u00e3o organizados em uma 'cadeia', e cada bloco subsequente da cadeia cont\u00e9m o hash do bloco anterior<\/em>. Nos coment\u00e1rios, foi feita a pergunta: para que uma tal estrutura de dados \u00e9 necess\u00e1ria, quando j\u00e1 temos o DHT - tabela hash distribu\u00edda? \u00c9 evidente que alguns dados podem ser armazenados no DHT, mas isso s\u00f3 \u00e9 adequado para informa\u00e7\u00f5es que n\u00e3o s\u00e3o muito 'sens\u00edveis'. N\u00e3o se pode armazenar saldos de criptomoedas no DHT \u2014 principalmente devido \u00e0 falta de verifica\u00e7\u00f5es sobre <em>integridade<\/em>. De fato, toda a complexidade da estrutura da blockchain cresce para prevenir interfer\u00eancias nos dados armazenados nela.<\/p>\n<p><\/p>\n<p>No entanto, a blockchain no TON parece ainda mais complexa do que na maioria dos outros sistemas distribu\u00eddos \u2014 e isso se deve a duas raz\u00f5es. A primeira \u00e9 a busca por minimizar a necessidade de <em>forks<\/em>. Nas criptomoedas tradicionais, todos os par\u00e2metros s\u00e3o definidos na fase inicial, e qualquer tentativa de alter\u00e1-los resulta, na verdade, na cria\u00e7\u00e3o de um 'universo alternativo de criptomoeda'. A segunda raz\u00e3o \u00e9 o suporte \u00e0 fragmenta\u00e7\u00e3o (<em>sharding<\/em>, <em>shardiza\u00e7\u00e3o<\/em>) do blockchain. O blockchain \u00e9 uma estrutura que n\u00e3o pode diminuir com o tempo; e normalmente, cada n\u00f3 respons\u00e1vel pela opera\u00e7\u00e3o da rede \u00e9 obrigado a armazen\u00e1-lo totalmente. Em sistemas tradicionais (centralizados), para resolver problemas semelhantes, utiliza-se o sharding: parte dos registros no banco de dados fica em um servidor, parte em outro, e assim por diante. No caso das criptomoedas, tal funcionalidade ainda \u00e9 bastante rara \u2014 em particular, devido \u00e0 dificuldade de adicionar sharding a um sistema onde n\u00e3o foi planejado desde o in\u00edcio.<\/p>\n<p><\/p>\n<p>Como o TON planeja resolver ambos os problemas descritos acima?<\/p>\n<p><\/p>\n<h3 id=\"soderzhimoe-blokcheyna-vorkcheyny\">Conte\u00fado do blockchain. Workchains.<\/h3>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TON: Telegram Open Network. Parte 2: Blockchains, Sharding\" src=\"\/wp-content\/uploads\/2019\/05\/c4f0f6e6702322ad4312cb262b3a0fab.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Primeiramente, vamos falar sobre o que est\u00e1 planejado para ser armazenado no blockchain. Estar\u00e3o l\u00e1 os estados das contas (\u2018carteiras\u2019 no caso b\u00e1sico) e contratos inteligentes (para simplificar, consideraremos que isso \u00e9 o mesmo que contas). Em ess\u00eancia, ser\u00e1 uma tabela hash comum \u2014 suas chaves ser\u00e3o os identificadores <strong>account_id<\/strong>, e os valores ser\u00e3o estruturas de dados que cont\u00eam coisas como:<\/p>\n<p><\/p>\n<ul>\n<li>saldo;<\/li>\n<li>c\u00f3digo do contrato inteligente (apenas para contratos inteligentes);<\/li>\n<li>armazenamento de dados do contrato inteligente (apenas para contratos inteligentes);<\/li>\n<li>estat\u00edsticas;<\/li>\n<li>(<em>opcionalmente<\/em>) chave p\u00fablica para transfer\u00eancias da conta, por padr\u00e3o account_id;<\/li>\n<li>fila de mensagens de sa\u00edda (aqui elas s\u00e3o armazenadas para envio ao destinat\u00e1rio);<\/li>\n<li>lista das \u00faltimas mensagens entregues a esta conta.<\/li>\n<\/ul>\n<p><\/p>\n<p>Como mencionado acima, os blocos consistem diretamente de transa\u00e7\u00f5es \u2014 mensagens enviadas para v\u00e1rias contas account_id. No entanto, al\u00e9m do account_id, as mensagens tamb\u00e9m cont\u00eam um campo de 32 bits <em>workchain_id<\/em> \u2014 identificador do chamado <strong>workchain<\/strong> (<em>workchain<\/em>, <em>blockchain de trabalho<\/em>). Isso permite ter v\u00e1rios blockchains independentes uns dos outros com diferentes configura\u00e7\u00f5es. Nesse caso, workchain_id = 0 \u00e9 considerado um caso especial, <strong>workchain nulo<\/strong> \u2014 \u00e9 neste que os saldos corresponder\u00e3o \u00e0 criptomoeda TON (Grams). A probabilidade \u00e9 que, nos primeiros tempos, n\u00e3o haver\u00e1 outros workchains.<\/p>\n<p><\/p>\n<h3 id=\"shardcheyny-infinite-sharding-paradigm\">Shardchains. Infinite Sharding Paradigm.<\/h3>\n<p><\/p>\n<p>Mas o crescimento no n\u00famero de blockchains n\u00e3o para por a\u00ed. Vamos entender o shard. Vamos imaginar que cada conta (account_id) tenha seu pr\u00f3prio blockchain \u2014 onde est\u00e3o todas as mensagens recebidas \u2014 e o estado de todos esses blockchains \u00e9 armazenado em n\u00f3s separados.<\/p>\n<p><\/p>\n<p>Claro, isso \u00e9 bastante dispendioso: provavelmente, em cada um desses <strong>shardchains<\/strong> (<em>shardchain<\/em>, <em>shard blockchain<\/em>) as transa\u00e7\u00f5es ser\u00e3o recebidas com pouca frequ\u00eancia, e ser\u00e1 necess\u00e1rio ter muitos n\u00f3s potentes (adiantando um pouco, vale ressaltar que n\u00e3o se trata apenas de clientes em telefones m\u00f3veis \u2014 mas de servidores robustos).<\/p>\n<p><\/p>\n<p>Portanto, os shardchains agrupam contas por prefixos bin\u00e1rios de seus identificadores: se um shardchain tem o prefixo 0110, ent\u00e3o ele incluir\u00e1 transa\u00e7\u00f5es de todos os account_id que come\u00e7am com esses d\u00edgitos. Este <em>shard_prefix<\/em> pode ter um comprimento de 0 a 60 bits \u2014 e o principal \u00e9 que ele pode mudar dinamicamente.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TON: Telegram Open Network. Parte 2: Blockchains, Sharding\" src=\"\/wp-content\/uploads\/2019\/05\/568aec7ad3d8cc3e268f0e60d453b502.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Assim que um dos shardchains come\u00e7ar a receber uma quantidade excessiva de transa\u00e7\u00f5es, os n\u00f3s trabalhando nele, de acordo com regras previamente definidas, 'dividem' ele em dois filiais \u2014 seus prefixos ser\u00e3o um bit mais longos (e para um deles esse bit ser\u00e1 0, e para o outro ser\u00e1 1). Por exemplo, <em>shard_prefix<\/em> = <u>0110<\/u>b se dividir\u00e1 em <u>0110<\/u>0b e <u>0110<\/u>1b. Por sua vez, se dois shardchains 'vizinhos' come\u00e7arem a se sentir confort\u00e1veis o suficiente (durante um certo per\u00edodo), eles se fundir\u00e3o novamente.<\/p>\n<p><\/p>\n<p>Assim, o shard tem uma constru\u00e7\u00e3o 'de baixo para cima' \u2014 presumimos que cada conta possui seu pr\u00f3prio shard, mas eles est\u00e3o, por um tempo, 'colados' por prefixos. Isso \u00e9 o que implica a <strong>Infinite Sharding Paradigm<\/strong> (<em>paradigma de sharding infinito<\/em>).<\/p>\n<p><\/p>\n<p>\u00c9 importante enfatizar que os workchains existem apenas virtualmente \u2014 na verdade, <em>workchain_id<\/em> isso \u00e9 parte do identificador de um shardchain espec\u00edfico. Em termos formais, cada shardchain \u00e9 definido por um par de n\u00fameros (<em>workchain_id<\/em>, <em>shard_prefix<\/em>).<\/p>\n<p><\/p>\n<h3 id=\"ispravlenie-oshibok-vertikalnye-blokcheyny\">Corre\u00e7\u00e3o de erros. Blockchains verticais.<\/h3>\n<p><\/p>\n<p>Tradicionalmente, considera-se que qualquer transa\u00e7\u00e3o em um blockchain \u00e9 'esculpida em pedra'. No entanto, no caso do TON, existe a possibilidade de 'reescrever a hist\u00f3ria' \u2014 caso algu\u00e9m (o chamado <em>n\u00f3 'pescador')<\/em>) comprova que um dos blocos foi assinado incorretamente. Nesse caso, um bloco corretivo especial \u00e9 adicionado \u00e0 respectiva shardchain, contendo o hash do bloco que est\u00e1 sendo corrigido (e n\u00e3o do \u00faltimo bloco na shardchain). Representando a shardchain como uma cadeia de blocos disposta horizontalmente, pode-se dizer que o bloco corretivo \u00e9 anexado ao bloco incorreto n\u00e3o \u00e0 direita, mas por cima \u2014 por isso, \u00e9 considerado parte de um pequeno 'blockchain vertical'. Assim, pode-se dizer que as shardchains s\u00e3o <em>blockchains bidimensionais<\/em>.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TON: Telegram Open Network. Parte 2: Blockchains, Sharding\" src=\"\/wp-content\/uploads\/2019\/05\/eda526705f5febd37995901b5542264c.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Caso ap\u00f3s o bloco incorreto as mudan\u00e7as que ele fez tenham sido referenciadas por blocos subsequentes (ou seja, novas transa\u00e7\u00f5es foram realizadas com base em dados inv\u00e1lidos), blocos corretivos tamb\u00e9m s\u00e3o adicionados 'por cima' desses blocos. Se os blocos n\u00e3o afetaram as informa\u00e7\u00f5es 'afetadas', essas 'ondas corretivas' n\u00e3o se espalham sobre eles. Por exemplo, na ilustra\u00e7\u00e3o acima, a transa\u00e7\u00e3o do primeiro bloco, que aumenta o saldo da conta C, foi considerada incorreta \u2014 portanto, a transa\u00e7\u00e3o que diminui o saldo dessa conta no terceiro bloco tamb\u00e9m deve ser anulada, e um bloco corretivo deve ser registrado sobre o pr\u00f3prio bloco.<\/p>\n<p><\/p>\n<p>\u00c9 importante notar \u2014 embora os blocos corretivos sejam representados como localizados 'acima' dos originais, na verdade, eles ser\u00e3o adicionados ao final da respectiva blockchain (para onde deveriam estar cronologicamente). A disposi\u00e7\u00e3o bidimensional apenas mostra a que ponto na blockchain eles ser\u00e3o 'anexados' (por meio do hash do bloco original que est\u00e1 neles).<\/p>\n<p><\/p>\n<p>Pode-se filosofar separadamente sobre qu\u00e3o boa \u00e9 a solu\u00e7\u00e3o de 'mudar o passado'. Parece que, se permitimos a possibilidade de um bloco incorreto aparecer na shardchain, n\u00e3o podemos tamb\u00e9m excluir a possibilidade de um bloco corretivo err\u00f4neo surgir. Aqui, pelo que posso julgar, a diferen\u00e7a est\u00e1 no n\u00famero de n\u00f3s que devem alcan\u00e7ar consenso sobre novos blocos \u2014 em cada shardchain, trabalha-se com um relativamente pequeno '<em>grupo de trabalho<\/em>' de n\u00f3s (que frequentemente altera sua composi\u00e7\u00e3o), enquanto a adi\u00e7\u00e3o de blocos corretivos exigir\u00e1 o consentimento de todos <em>n\u00f3s-validadores<\/em>. Farei mais detalhes sobre validadores, grupos de trabalho e outras fun\u00e7\u00f5es dos n\u00f3s no pr\u00f3ximo artigo.<\/p>\n<p><\/p>\n<h3 id=\"odin-blokcheyn-chtob-pravit-vsemi\">Uma blockchain para governar todas<\/h3>\n<p><\/p>\n<p>Acima foi mencionada muita informa\u00e7\u00e3o sobre os diferentes tipos de blockchains, que tamb\u00e9m precisam ser armazenadas em algum lugar. Em particular, fala-se sobre as seguintes informa\u00e7\u00f5es:<\/p>\n<p><\/p>\n<ul>\n<li>sobre a quantidade e configura\u00e7\u00f5es de workchains;<\/li>\n<li>sobre a quantidade de shardchains e seus prefixos;<\/li>\n<li>sobre quais n\u00f3s est\u00e3o atualmente respons\u00e1veis por quais shardchains;<\/li>\n<li>os hashes dos \u00faltimos blocos adicionados a todos os shardchains.<\/li>\n<\/ul>\n<p><\/p>\n<p>Como voc\u00ea j\u00e1 poderia ter adivinhado, todas essas informa\u00e7\u00f5es s\u00e3o registradas em mais um armazenamento-blockchain \u2014 <strong>masterchain<\/strong> (<em>masterchain<\/em>, <em>master blockchain<\/em>). Devido \u00e0 presen\u00e7a de hashes de blocos de todos os shardchains em seus blocos, ele torna o sistema fortemente interconectado. Isso significa que a gera\u00e7\u00e3o de um novo bloco na masterchain ocorrer\u00e1 imediatamente ap\u00f3s a gera\u00e7\u00e3o de blocos nos shardchains \u2014 espera-se que os blocos nos shardchains apare\u00e7am quase simultaneamente a cada 5 segundos, e o pr\u00f3ximo bloco na masterchain \u2014 um segundo depois disso.<\/p>\n<p><\/p>\n<p>Mas quem ser\u00e1 respons\u00e1vel pela implementa\u00e7\u00e3o de todo esse trabalho tit\u00e2nico \u2014 pelo envio de mensagens, execu\u00e7\u00e3o de contratos inteligentes, forma\u00e7\u00e3o de blocos nos shardchains e na masterchain, e ainda verificar os blocos quanto a erros? Ser\u00e1 que tudo isso ser\u00e1 feito silenciosamente pelos telefones de milh\u00f5es de usu\u00e1rios com o cliente do Telegram instalado? Ou talvez a equipe dos Durov desista das ideias de descentraliza\u00e7\u00e3o e isso ser\u00e1 feito pelos servidores deles da maneira tradicional?<\/p>\n<p><\/p>\n<p>Na verdade, nem uma nem outra resposta est\u00e1 correta. Mas o espa\u00e7o deste artigo est\u00e1 rapidamente se esgotando, ent\u00e3o a conversa sobre os diferentes pap\u00e9is dos n\u00f3s (voc\u00ea pode j\u00e1 ter notado algumas men\u00e7\u00f5es a eles), bem como sobre os mecanismos de seu funcionamento, ir\u00e1 para a pr\u00f3xima 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.3 - 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\/pt\/blog\/administrirovanie\/ton-telegram-open-network-chast-2-blokchejny-shardirovanie\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"pt_PT\" \/>\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\/pt\/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: Blockchains, shardifica\u00e7\u00e3o | ProHoster","description":"","canonical_url":"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/ton-telegram-open-network-chast-2-blokchejny-shardirovanie","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"pt_PT","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\/pt\/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\/pt\/wp-json\/wp\/v2\/posts\/34631","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/comments?post=34631"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts\/34631\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/media\/26098"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/media?parent=34631"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/categories?post=34631"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/tags?post=34631"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}