{"id":34632,"date":"2019-10-31T21:59:31","date_gmt":"2019-10-31T18:59:31","guid":{"rendered":"https:\/\/prohoster.info\/blog\/ton-telegram-open-network-chast-1-vstuplenie-setevoj-uroven-adnl-dht-overlejnye-seti\/"},"modified":"2019-10-31T21:59:31","modified_gmt":"2019-10-31T18:59:31","slug":"ton-telegram-open-network-chast-1-vstuplenie-setevoj-uroven-adnl-dht-overlejnye-seti","status":"publish","type":"post","link":"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/ton-telegram-open-network-chast-1-vstuplenie-setevoj-uroven-adnl-dht-overlejnye-seti","title":{"rendered":"TON: Telegram Open Network. Parte 1: Introdu\u00e7\u00e3o, n\u00edvel de rede, ADNL, DHT, redes de sobreposi\u00e7\u00e3o","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"TON: Telegram Open Network. Parte 1: Introdu\u00e7\u00e3o, n\u00edvel de rede, ADNL, DHT, redes de sobreposi\u00e7\u00e3o\" src=\"\/wp-content\/uploads\/2019\/05\/65710678b9e432476cf1b6e24348a7ac.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>J\u00e1 faz duas semanas que a Runet est\u00e1 agitada com o Telegram e a situa\u00e7\u00e3o de seu bloqueio sem sentido e implac\u00e1vel pelo Roskomnadzor. Muitos foram afetados indiretamente, mas tudo isso s\u00e3o temas para posts no Geektimes. O que me surpreendeu foi que at\u00e9 agora eu n\u00e3o vi nenhuma an\u00e1lise na Habr sobre a rede TON - Telegram Open Network, que est\u00e1 programada para ser lan\u00e7ada. Quis preencher essa lacuna, pois h\u00e1 muito o que estudar l\u00e1 - mesmo na aus\u00eancia de declara\u00e7\u00f5es oficiais sobre o tema.<\/p>\n<p><\/p>\n<p>S\u00f3 para relembrar - h\u00e1 rumores de que o Telegram lan\u00e7ou um ICO fechado muito amplo, j\u00e1 arrecadando quantias incr\u00edveis. Sup\u00f5e-se que ainda este ano ser\u00e1 lan\u00e7ada a pr\u00f3pria criptomoeda Gram - e cada usu\u00e1rio do Telegram receber\u00e1 automaticamente uma carteira, o que por si s\u00f3 cria uma grande vantagem em rela\u00e7\u00e3o \u00e0s outras criptomoedas.<\/p>\n<p><\/p>\n<p>Infelizmente, como n\u00e3o h\u00e1 declara\u00e7\u00f5es oficiais, a partir daqui s\u00f3 posso me basear em <noindex><a rel=\"nofollow\" href=\"https:\/\/denull.ru\/telegram\/ton-tech.pdf\">um documento de origem desconhecida<\/a><\/noindex>, sobre o que j\u00e1 o aviso de imediato. \u00c9 claro que pode ser uma falsifica\u00e7\u00e3o muito habilidosa, mas n\u00e3o se descarta a possibilidade de que este seja um verdadeiro whitepaper do futuro sistema, escrito por Nikolai Durov (e vazado, provavelmente, por algu\u00e9m de seus investidores). Mas mesmo que seja uma farsa, ningu\u00e9m nos pro\u00edbe de estud\u00e1-lo e discuti-lo, certo?<\/p>\n<p><\/p>\n<p>O que \u00e9 dito neste documento? Tentarei resumir com minhas pr\u00f3prias palavras, pr\u00f3ximo do texto, mas em portugu\u00eas e de uma forma um pouco mais amig\u00e1vel (que Nikolai me perdoe por sua tend\u00eancia a se aprofundar na matem\u00e1tica formal). Tenha em mente que mesmo se for aut\u00eantico, esta \u00e9 uma descri\u00e7\u00e3o preliminar do sistema e \u00e9 bastante prov\u00e1vel que mude at\u00e9 o momento do lan\u00e7amento p\u00fablico.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>Descobrimos que, al\u00e9m da criptomoeda, muitos outros aspectos est\u00e3o previstos. Vamos analisar isso em ordem.<\/p>\n<p><\/p>\n<ul>\n<li><strong>TON Blockchain<\/strong>. Esta \u00e9 a base de todo o sistema. Se voc\u00ea n\u00e3o sabe o que \u00e9 <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%91%D0%BB%D0%BE%D0%BA%D1%87%D0%B5%D0%B9%D0%BD\">blockchain<\/a><\/noindex> \u2014 recomendo que descubra, pois haver\u00e1 muitos blockchains aqui. Aninhados uns dentro dos outros, virtualmente fragmentados e at\u00e9 mesmo blockchains \"verticais\" dentro dos blocos de outros blockchains. Al\u00e9m disso, haver\u00e1 v\u00e1rios termos que soam legais, como <em>Instant Hypercube Routing<\/em> e <em>Infinite Sharding Paradigm<\/em>, mas falaremos sobre isso mais tarde. E, claro, proof-of-stake e contratos inteligentes.<\/li>\n<li><strong>TON P2P Network<\/strong>. A rede peer-to-peer na qual se basear\u00e1 o funcionamento do sistema. \u00c9 sobre isso que falaremos principalmente nesta parte da narrativa.<\/li>\n<li><strong>TON Storage<\/strong>. Um armazenamento de arquivos que, independentemente da blockchain, ser\u00e1 constru\u00eddo na rede peer-to-peer mencionada acima. Pode ser comparado a torrents.<\/li>\n<li><strong>TON Proxy<\/strong>. Este \u00e9 um servi\u00e7o cujo objetivo \u00e9 aumentar a anonimato dos participantes da rede. Qualquer pacote pode ser enviado de forma indireta, atrav\u00e9s de t\u00faneis intermedi\u00e1rios com criptografia adicional \u2014 semelhante ao I2P ou TOR. <\/li>\n<li><strong>TON DHT<\/strong>. Uma tabela hash distribu\u00edda para armazenar valores arbitr\u00e1rios. Ela tamb\u00e9m \u00e9 constru\u00edda sobre <em>TON Network<\/em> (mas utilizando-o) e ajuda a <strong>TON Storage<\/strong> encontrar n\u00f3s 'distribuidores', assim como <strong>TON Proxy<\/strong> os retransmissores intermedi\u00e1rios. Mas \u00e9 importante notar que, ao contr\u00e1rio da blockchain, esta tabela hash n\u00e3o \u00e9 um armazenamento seguro \u2014 n\u00e3o se deve armazenar informa\u00e7\u00f5es importantes nela.<\/li>\n<li><strong>TON Services<\/strong>. Uma plataforma para servi\u00e7os variados. Essencialmente, \u00e9 uma nova internet sobre tudo que foi descrito anteriormente. A troca de dados ocorre atrav\u00e9s de <strong>TON Network<\/strong>\/<strong>TON Proxy<\/strong>, enquanto a l\u00f3gica est\u00e1 nos contratos inteligentes do pr\u00f3prio <strong>TON Blockchain<\/strong>. E a interface com URLs bastante familiares.<\/li>\n<li><strong>TON DNS<\/strong>. J\u00e1 que falamos sobre URLs familiares, tamb\u00e9m \u00e9 necess\u00e1rio um conversor para os endere\u00e7os de 256 bits \u2014 contas, contratos, servi\u00e7os e n\u00f3s.<\/li>\n<li><strong>TON Payments<\/strong>. E \u00e9 aqui que a quest\u00e3o financeira surge. E n\u00e3o ser\u00e1 apenas <strong>gram<\/strong> \u2014 assim como com o Ethereum, qualquer 'token' ser\u00e1 poss\u00edvel; os gramas aqui ser\u00e3o apenas a moeda 'padr\u00e3o'.<\/li>\n<\/ul>\n<p><\/p>\n<p>Esta \u00e9 a primeira parte, descrevendo o n\u00edvel 'superficial' do TON \u2014 sua parte de rede, constru\u00edda sobre protocolos tradicionais. Na pr\u00f3xima parte, falaremos sobre o 'miolo' \u2014 a blockchain que ser\u00e1 suportada pelo sistema descrito a seguir. Assim, minha ordem de apresenta\u00e7\u00e3o difere do sistema utilizado no documento mencionado acima (que come\u00e7a imediatamente com o n\u00edvel abstrato).<\/p>\n<p><\/p>\n<h3 id=\"bazovye-ponyatiya\">Conceitos B\u00e1sicos<\/h3>\n<p><\/p>\n<p><strong>TL<\/strong> (Type Language). Este \u00e9 um formato bin\u00e1rio abstrato para estruturas de dados arbitr\u00e1rias. \u00c9 utilizado no protocolo do Telegram e ser\u00e1 ativamente utilizado no TON. Se quiser conhecer os detalhes, <noindex><a rel=\"nofollow\" href=\"https:\/\/core.telegram.org\/mtproto\/TL\">aqui est\u00e1 sua descri\u00e7\u00e3o<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p><strong>Hash<\/strong> (<em>hash<\/em>). Uma fun\u00e7\u00e3o que realiza uma transforma\u00e7\u00e3o irrevers\u00edvel de uma estrutura de dados arbitr\u00e1ria em um \u00fanico n\u00famero de comprimento fixo. No contexto da documenta\u00e7\u00e3o, sempre se faz refer\u00eancia \u00e0 fun\u00e7\u00e3o <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/SHA-2\">SHA-256<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p><strong>N\u00f3 da Rede<\/strong> (<em>node<\/em>). Um n\u00f3 \u00e9 um software que garantir\u00e1 o funcionamento do sistema. Em particular, espera-se que cada aplicativo cliente do Telegram inclua um n\u00f3 TON. Em um n\u00edvel mais baixo, os n\u00f3s possuem endere\u00e7os IPv4\/IPv6 e se comunicam por meio do protocolo UDP; em um n\u00edvel mais alto, possuem <em>endere\u00e7os abstratos<\/em> e implementam o protocolo ADNL (sobre endere\u00e7os abstratos e ADNL \u2014 veja abaixo). Quando se fala sobre partes do sistema que fazem algo ou armazenam dados, entende-se que isso \u00e9 feito pelos n\u00f3s da rede.<\/p>\n<p><\/p>\n<p><strong>Endere\u00e7o abstrato<\/strong> (ou apenas <em>endere\u00e7o<\/em>, <em>address<\/em>). O endere\u00e7o do n\u00f3 \u00e9 determinado por sua chave p\u00fablica. Mais estritamente, \u00e9 um hash de 256 bits (SHA256) da estrutura de dados que cont\u00e9m a chave p\u00fablica (o algoritmo criptogr\u00e1fico espec\u00edfico n\u00e3o \u00e9 especificado \u2014 como exemplo, s\u00e3o citadas curvas el\u00edpticas e RSA-2048). Para que um n\u00f3 interaja com outro, ele precisa conhecer n\u00e3o apenas o endere\u00e7o, mas tamb\u00e9m essa estrutura de dados. Teoricamente, um \u00fanico n\u00f3 f\u00edsico pode criar qualquer n\u00famero de endere\u00e7os (correspondentes a diferentes chaves).<\/p>\n<p><\/p>\n<p>Normalmente, \u00e9 usada exatamente essa combina\u00e7\u00e3o: uma \u2018imagem\u2019 na forma de uma estrutura TL (que pode conter praticamente qualquer dado) e um hash de 256 bits dela, utilizado para endere\u00e7amento.<\/p>\n<p><\/p>\n<p><strong>Blockchain<\/strong> (<em>blockchain<\/em>). Blockchain \u00e9 uma estrutura de dados cujos elementos (<em>blocos<\/em>) est\u00e3o organizados em uma 'cadeia', e cada bloco subsequente da cadeia cont\u00e9m o hash do anterior. Dessa forma, alcan\u00e7a-se a integridade \u2014 as altera\u00e7\u00f5es s\u00f3 podem ser feitas pela adi\u00e7\u00e3o de novos blocos.<\/p>\n<p><\/p>\n<p><strong>Servi\u00e7o<\/strong> (<em>servi\u00e7o<\/em>). Os servi\u00e7os dentro do TON podem ser de v\u00e1rios tipos \u2014 dependendo de usarem ou n\u00e3o blockchain. Por exemplo, um (ou v\u00e1rios) n\u00f3s da rede pode processar certas solicita\u00e7\u00f5es RPC usando o protocolo ADNL descrito abaixo, sem criar registros na blockchain \u2014 semelhante a servidores web tradicionais. Tamb\u00e9m \u00e9 considerada a possibilidade de implementar HTTP sobre ADNL, assim como a transi\u00e7\u00e3o do pr\u00f3prio mensageiro para esse protocolo. Por analogia com o TOR ou I2P, isso o tornaria mais resistente a diversas restri\u00e7\u00f5es.<\/p>\n<p><\/p>\n<p>Ao mesmo tempo, v\u00e1rios servi\u00e7os envolvem tanto a intera\u00e7\u00e3o com a blockchain quanto o processamento de solicita\u00e7\u00f5es fora dela. Por exemplo, para o TON Storage \u2014 um armazenamento de arquivos \u2014 n\u00e3o \u00e9 muito sensato armazenar os arquivos em si na blockchain. Apenas os hashes dos arquivos (junto com algumas metainforma\u00e7\u00f5es sobre eles) estar\u00e3o nela, enquanto n\u00f3s especializados na rede servir\u00e3o como \"servidores de arquivos\", prontos para entreg\u00e1-los a outros n\u00f3s via ADNL.<\/p>\n<p><\/p>\n<p><strong>Servi\u00e7o em Nuvem<\/strong> (<em>servi\u00e7o em nuvem<\/em>). Refere-se a alguns servi\u00e7os que envolvem descentraliza\u00e7\u00e3o e participa\u00e7\u00e3o aberta. Por exemplo, o TON Proxy \u2014 \u00e9 um servi\u00e7o que qualquer participante pode apoiar, desejando fornecer seu n\u00f3 como intermedi\u00e1rio (proxy), retransmitindo pacotes entre outros n\u00f3s. Se quiser, pode cobrar uma taxa fixa por isso \u2014 utilizando o sistema TON Payments para micropagamentos (que, por sua vez, tamb\u00e9m \u00e9 um servi\u00e7o em nuvem).<\/p>\n<p><\/p>\n<h3 id=\"adnl-abstract-datagram-network-layer\">ADNL: Camada de Rede de Datagramas Abstratos<\/h3>\n<p><\/p>\n<p>No n\u00edvel mais baixo, a intera\u00e7\u00e3o entre os n\u00f3s ser\u00e1 feita atrav\u00e9s do protocolo UDP (embora outras op\u00e7\u00f5es sejam permitidas).<\/p>\n<p><\/p>\n<p>Como mencionado acima, para que um n\u00f3 possa enviar um pacote para outro, deve conhecer uma de suas chaves p\u00fablicas (e, portanto, o endere\u00e7o que ela define). Ele criptografa o pacote com essa chave e adiciona no in\u00edcio do pacote um endere\u00e7o de 256 bits do destinat\u00e1rio \u2014 uma vez que um n\u00f3 pode ter v\u00e1rios desses endere\u00e7os, isso permitir\u00e1 que ele determine qual chave usar para a descriptografia.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TON: Telegram Open Network. Parte 1: Introdu\u00e7\u00e3o, n\u00edvel de rede, ADNL, DHT, redes de sobreposi\u00e7\u00e3o\" src=\"\/wp-content\/uploads\/2019\/05\/570ed97bb0745d074e806e84651af567.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Al\u00e9m disso, em vez do endere\u00e7o do destinat\u00e1rio, no in\u00edcio do pacote de dados pode haver um chamado identificador <em>de canal<\/em>. Nesse caso, o processamento do pacote j\u00e1 depende dos acordos espec\u00edficos entre os n\u00f3s \u2014 por exemplo, os dados enviados para um determinado canal podem ser destinados a outro n\u00f3 e devem ser redirecionados para ele (este \u00e9 o servi\u00e7o <em>TON Proxy<\/em>). Outro caso especial pode ser a intera\u00e7\u00e3o direta entre n\u00f3s, mas com criptografia baseada em um par de chaves individual para esse canal (pr\u00e9-formadas pelo protocolo Diffie-Hellman).<\/p>\n<p><\/p>\n<p>Finalmente, um caso especial \u00e9 o canal \u2018zero\u2019 \u2014 se o n\u00f3 ainda n\u00e3o conhece as chaves p\u00fablicas de seus \u2018vizinhos\u2019, ele pode enviar pacotes a eles sem criptografia alguma. Isso \u00e9 destinado apenas para a inicializa\u00e7\u00e3o \u2014 assim que os n\u00f3s enviarem informa\u00e7\u00f5es sobre suas chaves, elas devem ser usadas para intera\u00e7\u00e3o subsequente.<\/p>\n<p><\/p>\n<p>O protocolo descrito acima (256 bits para o identificador do canal + conte\u00fado do pacote) \u00e9 chamado de ADNL. A documenta\u00e7\u00e3o menciona a possibilidade de implementar um an\u00e1logo do TCP sobre ele ou uma pr\u00f3pria camada \u2014 RLDP (Reliable Large Datagram Protocol), mas n\u00e3o entra em detalhes sobre suas implementa\u00e7\u00f5es.<\/p>\n<p><\/p>\n<h3 id=\"ton-dht-raspredelyonnaya-hesh-tablica\">TON DHT: Tabela hash distribu\u00edda<\/h3>\n<p><\/p>\n<p>Assim como em outros sistemas distribu\u00eddos, o TON pressup\u00f5e a implementa\u00e7\u00e3o de DHT \u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%A0%D0%B0%D1%81%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D1%91%D0%BD%D0%BD%D0%B0%D1%8F_%D1%85%D0%B5%D1%88-%D1%82%D0%B0%D0%B1%D0%BB%D0%B8%D1%86%D0%B0\">tabela hash distribu\u00edda<\/a><\/noindex>. De maneira mais espec\u00edfica \u2014 a tabela \u00e9 <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/Kademlia\">semelhante ao Kademlia.<\/a><\/noindex>Se voc\u00ea n\u00e3o est\u00e1 familiarizado com esse tipo de tabelas hash \u2014 n\u00e3o se preocupe, a seguir vou descrever aproximadamente como elas funcionam.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TON: Telegram Open Network. Parte 1: Introdu\u00e7\u00e3o, n\u00edvel de rede, ADNL, DHT, redes de sobreposi\u00e7\u00e3o\" src=\"\/wp-content\/uploads\/2019\/05\/790d623466c72c78ee17fa298ac9d81d.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Em sentido abstrato, a DHT associa chaves de 256 bits a certos valores bin\u00e1rios de comprimento arbitr\u00e1rio. Nesse caso, as chaves na tabela s\u00e3o hashes de uma determinada estrutura TL (as pr\u00f3prias estruturas tamb\u00e9m s\u00e3o armazenadas junto com a DHT). Isso se assemelha muito \u00e0 forma\u00e7\u00e3o de endere\u00e7os de n\u00f3s \u2014 e eles realmente podem estar presentes na DHT (por exemplo, por essa chave pode estar o endere\u00e7o IP de um n\u00f3 correspondente ao dado <em>endere\u00e7o abstrato<\/em>, se ele n\u00e3o o ocultar). Mas, em geral, os \u201cprotot\u00f3tipos das chaves\u201d (seus <em>descri\u00e7\u00f5es<\/em>, <em>key descriptions<\/em>) s\u00e3o metadados que apontam para o \u201cpropriet\u00e1rio\u201d do registro na tabela hash (ou seja, a chave p\u00fablica de algum n\u00f3), o tipo de valor armazenado e as regras pelas quais esse registro pode ser posteriormente modificado. Por exemplo, uma regra pode permitir que apenas o propriet\u00e1rio altere o valor \u2014 ou proibir a diminui\u00e7\u00e3o do valor (para se proteger contra ataques de replay).<\/p>\n<p><\/p>\n<p>Al\u00e9m das chaves de 256 bits, introduz-se o conceito de endere\u00e7os DHT. A diferen\u00e7a em rela\u00e7\u00e3o aos endere\u00e7os comuns de n\u00f3s \u00e9 que o endere\u00e7o DHT deve estar necessariamente vinculado a um endere\u00e7o IP. Se o n\u00f3 n\u00e3o oculta seu IP, ele pode usar um endere\u00e7o comum para DHT. Mas, com mais frequ\u00eancia, ser\u00e1 criado um endere\u00e7o separado, \u201csemi-permanente\u201d, para as necessidades da DHT.<br \/>\n<img decoding=\"async\" alt=\"TON: Telegram Open Network. Parte 1: Introdu\u00e7\u00e3o, n\u00edvel de rede, ADNL, DHT, redes de sobreposi\u00e7\u00e3o\" src=\"\/wp-content\/uploads\/2019\/05\/93064abdf9dbfd5276502cd3aa6cf8f8.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nSobre as chaves e endere\u00e7os DHT, introduz-se o conceito de dist\u00e2ncia \u2014 nisso tudo coincide com as tabelas <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/Kademlia\">Kademlia<\/a><\/noindex> A dist\u00e2ncia entre as chaves \u00e9 igual ao XOR (OU exclusivo bit a bit) delas. Assim como nas tabelas Kademlia, o valor correspondente a uma chave deve ser armazenado em <em>s<\/em> n\u00f3s que t\u00eam a menor dist\u00e2ncia a essa chave (<em>s<\/em> aqui \u2014 um n\u00famero relativamente pequeno).<\/p>\n<p><\/p>\n<p>Para que um n\u00f3 DHT possa interagir com outros n\u00f3s semelhantes, ele mant\u00e9m em mem\u00f3ria <em>uma tabela de roteamento DHT<\/em> \u2014 endere\u00e7os DHT e IP dos n\u00f3s com os quais interagiu anteriormente, agrupados por dist\u00e2ncia at\u00e9 eles. Existem 256 grupos (que correspondem ao bit mais significativo no valor da dist\u00e2ncia \u2014 ou seja, n\u00f3s a uma dist\u00e2ncia de 0 a 255 caem em um grupo, de 256 a 65535 \u2014 no pr\u00f3ximo, e assim por diante). Dentro de cada grupo, um n\u00famero limitado de 'melhores' n\u00f3s \u00e9 mantido (em termos de lat\u00eancia para eles).<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TON: Telegram Open Network. Parte 1: Introdu\u00e7\u00e3o, n\u00edvel de rede, ADNL, DHT, redes de sobreposi\u00e7\u00e3o\" src=\"\/wp-content\/uploads\/2019\/05\/9db2fef6986010db046f797f1fe68130.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Cada n\u00f3 deve suportar v\u00e1rias opera\u00e7\u00f5es: <em>armazenamento de valor para uma chave<\/em>, <em>busca de n\u00f3s<\/em> e <em>busca de valores<\/em>. A busca de n\u00f3s implica em retornar os n\u00f3s mais pr\u00f3ximos na tabela de roteamento de acordo com a chave fornecida; a busca de valores \u00e9 a mesma coisa, exceto quando o n\u00f3 j\u00e1 conhece o valor da chave (nesse caso, ele simplesmente o retorna). Portanto, se um n\u00f3 quiser encontrar um valor DHT por meio de uma chave, ele envia solicita\u00e7\u00f5es a um pequeno n\u00famero de n\u00f3s mais pr\u00f3ximos dessa chave em sua tabela de roteamento. Se entre suas respostas n\u00e3o houver o valor procurado, mas houver outros endere\u00e7os de n\u00f3s, a solicita\u00e7\u00e3o \u00e9 repetida para eles.<\/p>\n<p><\/p>\n<p>O DHT do TON pode ser utilizado para diversos fins, como \u2014 para implementar um armazenamento de arquivos semelhante ao torrent (veja <em>TON Storage<\/em>); para determinar endere\u00e7os de n\u00f3s que implementam determinados servi\u00e7os; para armazenar informa\u00e7\u00f5es sobre propriet\u00e1rios de contas na blockchain. Mas a aplica\u00e7\u00e3o mais importante \u00e9 a descoberta de n\u00f3s por seus endere\u00e7os abstratos. Para isso, o endere\u00e7o \u00e9 utilizado como chave, o valor que precisa ser encontrado. Como resultado da solicita\u00e7\u00e3o, ou o pr\u00f3prio n\u00f3 ser\u00e1 encontrado (se o endere\u00e7o procurado era seu endere\u00e7o DHT semi-permanente), ou o valor ser\u00e1 o endere\u00e7o IP e a porta para conex\u00e3o \u2014 ou outro endere\u00e7o que deve ser usado como um t\u00fanel intermedi\u00e1rio.<\/p>\n<p><\/p>\n<h3 id=\"overleynye-seti-v-ton\">Redes sobrepostas no TON<\/h3>\n<p><\/p>\n<p>O protocolo ADNL descrito acima permite que quaisquer n\u00f3s troquem informa\u00e7\u00f5es entre si \u2014 embora n\u00e3o necessariamente pelos caminhos mais otimais. Pode-se afirmar que, gra\u00e7as ao ADNL, todos os n\u00f3s formam um gr\u00e1fico global do TON (idealmente \u2014 conexo). Al\u00e9m disso, \u00e9 poss\u00edvel criar redes sobrepostas \u2014 subgrafos dentro desse gr\u00e1fico.<br \/>\n<img decoding=\"async\" alt=\"TON: Telegram Open Network. Parte 1: Introdu\u00e7\u00e3o, n\u00edvel de rede, ADNL, DHT, redes de sobreposi\u00e7\u00e3o\" src=\"\/wp-content\/uploads\/2019\/05\/0badd85ba46517c04f63439f7dd1e8d7.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Dentro de tal rede, a intera\u00e7\u00e3o ocorre apenas diretamente \u2014 atrav\u00e9s de conex\u00f5es previamente estabelecidas entre os n\u00f3s participantes da rede (por meio dos canais ADNL, descritos acima). A forma\u00e7\u00e3o de tais conex\u00f5es entre vizinhos e a busca por esses vizinhos \u00e9 um processo autom\u00e1tico, que visa manter a conectividade da rede sobreposta e minimizar atrasos na troca de dados nela.<\/p>\n<p><\/p>\n<p>Al\u00e9m disso, h\u00e1 um m\u00e9todo para disseminar rapidamente grandes atualiza\u00e7\u00f5es de difus\u00e3o dentro da rede \u2014 elas s\u00e3o divididas em partes, complementadas com c\u00f3digos de corre\u00e7\u00e3o de erros, e todos esses peda\u00e7os s\u00e3o enviados de um participante para outro. Assim, um participante n\u00e3o precisa receber todas as partes completamente antes de encaminh\u00e1-las adiante na rede.<\/p>\n<p><\/p>\n<p>As redes sobrepostas podem ser p\u00fablicas ou privadas. Tornar-se um participante de uma rede p\u00fablica n\u00e3o \u00e9 dif\u00edcil \u2014 \u00e9 necess\u00e1rio encontrar a estrutura TL que a descreva (pode ser p\u00fablica \u2014 ou acess\u00edvel por uma chave espec\u00edfica no DHT). No caso de uma rede privada, essa estrutura deve ser conhecida pelo n\u00f3 com anteced\u00eancia.<\/p>\n<p><\/p>\n<h3 id=\"prodolzhenie-sleduet\">Continua<\/h3>\n<p><\/p>\n<p>Decidi dividir a an\u00e1lise do TON em v\u00e1rios artigos. Esta parte termina aqui, e <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/post\/354568\/\">na pr\u00f3xima<\/a><\/noindex> eu passarei a discutir a estrutura da blockchain (mais especificamente, as blockchains) das quais o TON ser\u00e1 composto.<\/p>\n<p>Fonte: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/354366\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0423\u0436\u0435 \u0434\u0432\u0435 \u043d\u0435\u0434\u0435\u043b\u0438 \u0420\u0443\u043d\u0435\u0442 \u0448\u0443\u043c\u0438\u0442 \u043f\u0440\u043e Telegram \u0438 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044e \u0441 \u0435\u0433\u043e \u0431\u0435\u0441\u0441\u043c\u044b\u0441\u043b\u0435\u043d\u043d\u043e\u0439 \u0438 \u0431\u0435\u0441\u043f\u043e\u0449\u0430\u0434\u043d\u043e\u0439 \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u043e\u0439 \u0420\u043e\u0441\u043a\u043e\u043c\u043d\u0430\u0434\u0437\u043e\u0440\u043e\u043c. \u0420\u0438\u043a\u043e\u0448\u0435\u0442\u043e\u043c \u0437\u0430\u0434\u0435\u043b\u043e \u043c\u043d\u043e\u0433\u0438\u0445, \u043d\u043e \u0432\u0441\u0451 \u044d\u0442\u043e \u2014 \u0442\u0435\u043c\u044b \u0434\u043b\u044f \u043f\u043e\u0441\u0442\u043e\u0432 \u043d\u0430 Geektimes. \u041c\u0435\u043d\u044f \u0436\u0435 \u0443\u0434\u0438\u0432\u0438\u043b\u043e \u0434\u0440\u0443\u0433\u043e\u0435 \u2014 \u044f \u0434\u043e \u0441\u0438\u0445 \u043f\u043e\u0440 \u043d\u0435 \u0432\u0438\u0434\u0435\u043b \u043d\u0430 \u0425\u0430\u0431\u0440\u0435 \u043d\u0438 \u043e\u0434\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u0431\u043e\u0440\u0430 \u0437\u0430\u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u043a \u0432\u044b\u0445\u043e\u0434\u0443 \u043d\u0430 \u0431\u0430\u0437\u0435 Telegram \u0441\u0435\u0442\u0438 TON \u2014 Telegram Open [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":26099,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-34632","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-1-vstuplenie-setevoj-uroven-adnl-dht-overlejnye-seti\" \/>\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 1: \u0412\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u0435, \u0441\u0435\u0442\u0435\u0432\u043e\u0439 \u0443\u0440\u043e\u0432\u0435\u043d\u044c, ADNL, DHT, \u043e\u0432\u0435\u0440\u043b\u0435\u0439\u043d\u044b\u0435 \u0441\u0435\u0442\u0438 | ProHoster\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/ton-telegram-open-network-chast-1-vstuplenie-setevoj-uroven-adnl-dht-overlejnye-seti\" \/>\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 1: Introdu\u00e7\u00e3o, n\u00edvel de rede, ADNL, DHT, redes sobrepostas | ProHoster","description":"","canonical_url":"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/ton-telegram-open-network-chast-1-vstuplenie-setevoj-uroven-adnl-dht-overlejnye-seti","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 1: \u0412\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u0435, \u0441\u0435\u0442\u0435\u0432\u043e\u0439 \u0443\u0440\u043e\u0432\u0435\u043d\u044c, ADNL, DHT, \u043e\u0432\u0435\u0440\u043b\u0435\u0439\u043d\u044b\u0435 \u0441\u0435\u0442\u0438 | ProHoster","og:url":"https:\/\/prohoster.info\/pt\/blog\/administrirovanie\/ton-telegram-open-network-chast-1-vstuplenie-setevoj-uroven-adnl-dht-overlejnye-seti","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":"34632","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\/34632","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=34632"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts\/34632\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/media\/26099"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/media?parent=34632"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/categories?post=34632"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/tags?post=34632"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}