TON: Rede Aberta de Telegramas. Parte 1: Introdução, camada de rede, ADNL, DHT, redes de sobreposição

TON: Rede Aberta de Telegramas. Parte 1: Introdução, camada de rede, ADNL, DHT, redes de sobreposição

Há duas semanas, o Runet vem fazendo barulho sobre o Telegram e a situação com seu bloqueio sem sentido e impiedoso por Roskomnadzor. O ricochete ofendeu muita gente, mas tudo isso são temas para postagens no Geektimes. Fiquei surpreso com outra coisa - ainda não vi uma única análise sobre Habré da rede TON planejada para lançamento com base no Telegram - Telegram Open Network. Queria suprir essa deficiência, porque lá há o que estudar - mesmo apesar da falta de declarações oficiais a respeito.

Deixe-me lembrá-lo de que há rumores de que o Telegram lançou um ICO fechado em grande escala, já tendo arrecadado quantias incríveis de dinheiro. Espera-se que a criptomoeda do Gram seja lançada este ano - e cada usuário do Telegram terá automaticamente uma carteira, o que por si só cria uma vantagem significativa sobre outras criptomoedas.

Infelizmente, uma vez que não existem declarações oficiais, só posso prosseguir documento de origem desconhecida, sobre o qual aviso imediatamente. Claro, pode acabar sendo uma falsificação muito habilidosa, mas também é possível que este seja um verdadeiro whitepaper do futuro sistema, escrito por Nikolai Durov (e vazado, provavelmente, por um dos investidores). Mas mesmo que seja falso, ninguém vai nos proibir de estudar e discutir, certo?

O que diz este documento? Tentarei recontá-lo com minhas próprias palavras, próximo ao texto, mas em russo e um pouco mais humano (que Nikolai me perdoe por sua tendência a entrar na matemática formal). Tenha em mente que mesmo que seja genuíno, este é um rascunho da descrição do sistema e muito provavelmente mudará no momento do lançamento público.

Aprendemos que além da criptomoeda, há muito mais que se espera. Vamos colocar isso em ordem.

  • TON Blockchain. Esta é a base de todo o sistema. Se você não sabe o que é блокчейн — Recomendo descobrir, porque haverá muitos blockchains aqui. Aninhados uns dentro dos outros, blockchains virtualmente fragmentados e até “verticais” dentro de blocos de outros blockchains. Haverá também alguns termos que soam legais, como Roteamento Instantâneo de Hipercubo и Paradigma de fragmentação infinita, mas falaremos mais sobre isso mais tarde. E, claro, prova de aposta e contratos inteligentes.
  • Rede TON P2P. Rede ponto a ponto com base na qual o sistema será construído. Ela será discutida primeiro nesta parte da história.
  • Armazenamento TON. Armazenamento de arquivos, que, independentemente do blockchain, será construído na rede peer-to-peer mencionada acima. Pode ser comparado a torrents.
  • Proxy TONELADAS. Este é um serviço que tem como objetivo aumentar o anonimato dos participantes da rede. Qualquer pacote pode ser enviado não diretamente, mas através de túneis intermediários com criptografia adicional - como I2P ou TOR.
  • TONELADAS DE DHT. Tabela hash distribuída para armazenar valores arbitrários. Também é construído em cima Rede TON (mas ao mesmo tempo é usado por ele) e ajuda Armazenamento TON encontrar nós de “distribuição” e Proxy TONELADAS — repetidores intermediários. Mas deve-se notar que, ao contrário do blockchain, esta tabela hash não é um armazenamento seguro – você não pode armazenar informações importantes nela.
  • Serviços TON. Plataforma para serviços personalizados. Em essência, esta é uma nova Internet além de tudo o que foi descrito acima. Troca de dados - via Rede TON/Proxy TONELADAS, e a lógica está nos contratos inteligentes do TON Blockchain. E uma interface com URLs bastante familiares.
  • TONELADA DNS. Como estamos falando de URLs familiares, também precisamos de um conversor delas para endereços de 256 bits - contas, contratos, serviços e nós.
  • Pagamentos TON. E é aqui que entra a questão do dinheiro. E não será apenas grama — como acontece com o éter, quaisquer “tokens” serão possíveis; Gramas serão apenas a moeda “padrão” aqui.

Esta é a primeira parte que descreve a camada “aterrada” do TON – sua parte de rede, construída sobre protocolos tradicionais. Na próxima parte falaremos sobre o “soft” - blockchain, que será suportado pelo sistema descrito abaixo. Assim, a minha ordem de recontagem é um pouco diferente daquela utilizada no documento acima mencionado (que começa imediatamente no nível abstrato).

Conceitos básicos

TL (Tipo Idioma). É um formato binário abstrato para estruturas de dados arbitrárias. É usado no protocolo Telegram e será usado ativamente no TON. Se você quiser conhecê-lo em detalhes - aqui está a descrição dele.

Hash (hash). Uma função que executa uma transformação irreversível de uma estrutura de dados arbitrária em um único número de comprimento fixo. Ao longo da documentação falamos sobre a função SHA-256.

Nó de rede (). Um nó é o software que garantirá o funcionamento do sistema. Em particular, presume-se que cada aplicação cliente Telegram incluirá um nó TON. Em um nível inferior, os nós possuem endereços IPv4/IPv6 e se comunicam usando o protocolo UDP; em um nível superior, eles possuem endereços abstratos e implementar o protocolo ADNL (sobre endereços abstratos e ADNL - veja abaixo). Quando se trata do fato de algumas partes do sistema fazerem algo ou armazenarem alguns dados, entende-se que isso é feito pelos nós da rede.

Endereço abstrato (ou simplesmente endereço, endereço). O endereço de um nó é determinado pela sua chave pública. Mais estritamente, é um hash de 256 bits (SHA256) da estrutura de dados que contém a chave pública (o algoritmo criptográfico específico não é especificado - curvas elípticas e RSA-2048 são dados como exemplos). Para que um nó se comunique com outro, ele precisa conhecer não só o endereço daquele, mas também esta estrutura de dados. Em teoria, um nó físico pode criar qualquer número de endereços (correspondendo a chaves diferentes).

Além disso, esse link é frequentemente usado: um “protótipo” na forma de uma estrutura TL (contendo quase todos os dados) e um hash de 256 bits dele, usado para endereçamento.

Bloccain (blockchain). Blockchain é uma estrutura de dados, elementos (blocos) que são ordenados em uma “cadeia”, e cada bloco subsequente da cadeia contém o hash do anterior. Desta forma, a integridade é alcançada - as alterações só podem ser feitas adicionando novos blocos.

Serviço (serviço). Os serviços dentro da TON podem ser de vários tipos, dependendo se usam blockchain ou não. Por exemplo, um (ou vários) nós da rede podem processar certas solicitações RPC usando o protocolo ADNL descrito abaixo, sem criar nenhum registro no blockchain – como os servidores web tradicionais. Incluindo a possibilidade de implementação de HTTP sobre ADNL, bem como a transição do próprio mensageiro para este protocolo. Por analogia com TOR ou I2P, isso o tornará mais resistente a vários bloqueios.

Ao mesmo tempo, vários serviços envolvem tanto a interação com o blockchain quanto o processamento de solicitações fora dele. Por exemplo, para TON Storage - armazenamento de arquivos - não é muito razoável armazenar os próprios arquivos no blockchain. Ele conterá apenas hashes de arquivos (junto com algumas metainformações sobre eles), e nós de rede especializados atuarão como “servidores de arquivos”, prontos para enviá-los para outros nós via ADNL.

Serviço de nevoeiro (serviço de neblina). Estamos a falar de alguns serviços que implicam descentralização e participação aberta nos mesmos. Por exemplo, TON Proxy é um serviço que pode ser suportado por qualquer participante que queira fornecer seu nó como um intermediário (proxy) de encaminhamento de pacotes entre outros nós. Se desejar, ele pode cobrar uma taxa por ele definida para isso - utilizando o sistema TON Payments para micropagamentos (que, por sua vez, também é um serviço de neblina).

ADNL: Camada de rede de datagrama abstrato

No nível mais baixo, a comunicação entre os nós será realizada através do protocolo UDP (embora outras opções sejam aceitáveis).

Conforme mencionado acima, para que um nó envie um pacote para outro, ele deve conhecer uma de suas chaves públicas (e, portanto, o endereço que define). Ele criptografa o pacote com esta chave e adiciona o endereço de destino de 256 bits ao início do pacote - como um nó pode ter vários desses endereços, isso permitirá determinar qual chave usar para descriptografia.

TON: Rede Aberta de Telegramas. Parte 1: Introdução, camada de rede, ADNL, DHT, redes de sobreposição

Além disso, em vez do endereço do destinatário, o início do pacote de dados pode conter o chamado. identificador canal. Nesse caso, o processamento do pacote já depende de acordos específicos entre os nós - por exemplo, os dados enviados para um determinado canal podem ser destinados a outro nó e devem ser encaminhados para ele (este é o serviço Proxy TONELADAS). Outro caso especial pode ser a interação direta entre nós, mas com criptografia utilizando um par de chaves individual para este canal (pré-gerado utilizando o protocolo Diffie-Hellman).

Finalmente, um caso especial é o canal “nulo” - se um nó ainda não conhece as chaves públicas de seus “vizinhos”, ele pode enviar-lhes pacotes sem criptografia alguma. Isto destina-se apenas à inicialização - uma vez que os nós enviam informações sobre suas chaves, elas devem ser usadas para comunicação posterior.

O protocolo descrito acima (256 bits de identificador de canal + conteúdo do pacote) é denominado ADNL. A documentação menciona a possibilidade de implementação de um análogo do TCP sobre ele ou de seu próprio add-on - RLDP (Reliable Large Datagram Protocol), mas não entra em detalhes sobre sua implementação.

TON DHT: Tabela de hash distribuída

Tal como acontece com outros sistemas distribuídos, o TON envolve a implementação de DHT - tabela hash distribuída. Mais especificamente, a tabela é Tipo Kademlia. Se você não está familiarizado com esse tipo de tabela hash, não se preocupe, a seguir descreverei aproximadamente como elas funcionam.

TON: Rede Aberta de Telegramas. Parte 1: Introdução, camada de rede, ADNL, DHT, redes de sobreposição

Em um sentido abstrato, o DHT mapeia chaves de 256 bits para valores binários de comprimento arbitrário. Nesse caso, as chaves da tabela são hashes de uma determinada estrutura TL (as próprias estruturas também são armazenadas junto com o DHT). Isto é muito semelhante à formação de endereços de nós - e eles podem de fato estar presentes no DHT (por exemplo, usando tal chave, o endereço IP de um nó correspondente a um determinado endereço abstrato, se ele não esconder). Mas no caso geral, “protótipos de chaves” (suas descrições, descrições principais) são metadados que indicam o “proprietário” de uma entrada em uma tabela hash (ou seja, a chave pública de algum nó), o tipo de valor armazenado e as regras pelas quais essa entrada pode ser posteriormente alterada. Por exemplo, uma regra pode permitir que apenas o proprietário altere o valor ou proibir a alteração do valor para baixo (para proteger contra ataques de repetição).

Além das chaves de 256 bits, é introduzido o conceito de endereços DHT. A diferença com os endereços de host regulares é que o endereço DHT está necessariamente vinculado a um endereço IP. Se um nó não ocultar seu IP, ele poderá usar um endereço normal para DHT. Porém, mais frequentemente, um endereço “semipermanente” separado será criado para as necessidades de DHT.
TON: Rede Aberta de Telegramas. Parte 1: Introdução, camada de rede, ADNL, DHT, redes de sobreposição
O conceito de distância é introduzido acima das chaves e endereços DHT - tudo coincide com as tabelas kademlia — a distância entre as chaves é igual ao XOR (OR exclusivo bit a bit) delas. Tal como nas tabelas Kademlia, o valor correspondente a uma determinada chave deve ser armazenado em s nós que têm a menor distância até esta chave (s aqui está um número relativamente pequeno).

Para que um nó DHT se comunique com outros nós, ele mantém na memória Tabela de roteamento DHT — Endereços DHT e IP dos nós com os quais interagiu anteriormente, agrupados por distância até eles. Existem 256 desses grupos (eles correspondem ao bit mais significativo definido no valor da distância - ou seja, nós a uma distância de 0 a 255 cairão em um grupo, de 256 a 65535 - no próximo, etc.). Dentro de cada grupo, um número limitado de “melhores” nós é armazenado (em termos de ping para eles).

TON: Rede Aberta de Telegramas. Parte 1: Introdução, camada de rede, ADNL, DHT, redes de sobreposição

Cada nó deve suportar diversas operações: armazenando um valor para uma chave, pesquisa de nó и procure por valores. A busca por nós envolve emitir, com base em uma determinada chave, os nós mais próximos a ela da tabela de roteamento; procurar valores é o mesmo, exceto quando o nó conhece o valor da chave (então ele apenas o retorna). Assim, se um nó deseja encontrar um valor por chave no DHT, ele envia solicitações para um pequeno número de nós mais próximos dessa chave a partir de sua tabela de roteamento. Se o valor requerido não estiver entre suas respostas, mas houver outros endereços de nós, a solicitação será repetida para eles.

TON DHT pode ser usado para vários fins, por exemplo, para implementar um armazenamento de arquivos semelhante ao torrent (consulte. Armazenamento TON); determinar os endereços dos nós que implementam determinados serviços; para armazenar informações sobre proprietários de contas no blockchain. Mas a aplicação mais importante é a descoberta de nós pelos seus endereços abstratos. Para fazer isso, o endereço é usado como uma chave cujo valor precisa ser encontrado. Como resultado da solicitação, ou o próprio nó será encontrado (se o endereço pesquisado for seu endereço DHT semipermanente), ou o valor será o endereço IP e a porta para conexão - ou outro endereço que deve ser usado como um túnel intermediário.

Redes de sobreposição em TON

O protocolo ADNL descrito acima implica a capacidade de qualquer nó trocar informações entre si - embora não necessariamente de maneira ideal. Podemos dizer que graças ao ADNL, todos os nós formam um gráfico TON global (idealmente conectado). Mas também é possível criar redes de sobreposição - subgráficos dentro deste gráfico.
TON: Rede Aberta de Telegramas. Parte 1: Introdução, camada de rede, ADNL, DHT, redes de sobreposição

Dentro de tal rede, a interação é realizada apenas diretamente - por meio de conexões pré-formadas entre os nós participantes da rede (por meio dos canais ADNL descritos acima). A formação dessas conexões entre vizinhos, a busca pelos próprios vizinhos, é um processo automático que busca manter a conectividade da rede sobreposta e minimizar atrasos na troca de dados nela.

Além disso, existe uma maneira de distribuir rapidamente grandes atualizações de transmissão na rede - elas são divididas em pedaços, complementadas com um código de correção de erros, e todos esses pedaços são enviados de um participante para outro. Assim, o participante não precisa obter todas as peças antes de enviá-las pela rede.

As redes de sobreposição podem ser públicas ou privadas. Tornar-se membro de uma rede pública não é difícil - você precisa encontrar uma estrutura TL que a descreva (pode ser pública ou acessível por uma determinada chave em DHT). No caso de uma rede privada, esta estrutura deve ser previamente conhecida pelo nó.

Para ser continuado

Decidi dividir a revisão da TON em vários artigos. É aqui que esta parte termina, e na próxima Passo a considerar a estrutura do blockchain (mais precisamente, blockchains) que constituirá o TON.

Fonte: habr.com

Adicionar um comentário