TON : Réseau ouvert de télégrammes. Partie 1 : Introduction, couche réseau, ADNL, DHT, réseaux superposés

TON : Réseau ouvert de télégrammes. Partie 1 : Introduction, couche réseau, ADNL, DHT, réseaux superposés

Depuis deux semaines, Runet fait du bruit à propos de Telegram et de la situation avec son blocage insensé et impitoyable par Roskomnadzor. Le ricochet a offensé de nombreuses personnes, mais ce sont tous des sujets de publications sur Geektimes. J'ai été surpris par autre chose - je n'ai toujours pas vu une seule analyse sur Habré du réseau TON dont la sortie est prévue sur la base de Telegram - Telegram Open Network. Je voulais combler cette lacune, car il y a quelque chose à étudier là-bas - même malgré le manque de déclarations officielles à ce sujet.

Permettez-moi de vous rappeler qu'il y a des rumeurs selon lesquelles Telegram aurait lancé une ICO fermée à très grande échelle, après avoir déjà collecté des sommes incroyables. Il est prévu que la propre crypto-monnaie de Gram soit lancée cette année - et chaque utilisateur de Telegram disposera automatiquement d'un portefeuille, ce qui en soi crée un avantage significatif par rapport aux autres crypto-monnaies.

Malheureusement, en l'absence de déclarations officielles, je ne peux que m'éloigner davantage de document d'origine inconnue, dont je vous préviens immédiatement. Bien sûr, il peut s'agir d'un faux très habile, mais il est également possible qu'il s'agisse d'un véritable livre blanc sur le futur système, rédigé par Nikolai Durov (et divulgué, probablement, par l'un des investisseurs). Mais même si c’est faux, personne ne nous interdira de l’étudier et d’en discuter, n’est-ce pas ?

Que dit ce document ? Je vais essayer de le raconter avec mes propres mots, proches du texte, mais en russe et un peu plus humainement (que Nikolaï me pardonne sa tendance à entrer dans les mathématiques formelles). Gardez à l’esprit que même si cela est authentique, il s’agit d’un projet de description du système et sera très probablement modifié au moment du lancement public.

Nous apprenons qu’en plus de la cryptomonnaie, on attend bien d’autres choses encore. Prenons-le dans l'ordre.

  • TON Blockchain. C’est la base de tout le système. Si tu ne sais pas ce que c'est блокчейн — Je recommande de le découvrir, car il y aura beaucoup de blockchains ici. Des blockchains imbriquées les unes dans les autres, virtuellement fragmentées et même « verticales » au sein de blocs d’autres blockchains. Il y aura aussi des termes sympas comme Routage Hypercube instantané и Paradigme de partage infini, Mais plus là-dessus plus tard. Et bien sûr, des preuves de participation et des contrats intelligents.
  • Réseau P2P TON. Réseau peer-to-peer sur la base duquel le système sera construit. Elle sera abordée en premier dans cette partie de l'histoire.
  • Stockage TON. Le stockage de fichiers qui, quelle que soit la blockchain, sera construit sur le réseau peer-to-peer mentionné ci-dessus. Peut être comparé aux torrents.
  • Proxy TON. Il s'agit d'un service dont le but est d'augmenter l'anonymat des participants au réseau. N'importe quel paquet peut être envoyé non pas directement, mais via des tunnels intermédiaires avec un cryptage supplémentaire - comme I2P ou TOR.
  • TONNES DHT. Table de hachage distribuée pour stocker des valeurs arbitraires. Il est également construit au-dessus Réseau TON (mais en même temps il l'utilise) et aide Stockage TON trouver des nœuds « distributeurs », et Proxy TON — répéteurs intermédiaires. Mais il convient de noter que, contrairement à la blockchain, cette table de hachage n'est pas un stockage sécurisé : vous ne pouvez pas y stocker d'informations importantes.
  • TON Services. Plateforme de services personnalisés. Il s’agit essentiellement d’un nouvel Internet qui s’ajoute à tout ce qui est décrit ci-dessus. Échange de données - via Réseau TON/Proxy TON, et la logique réside dans les contrats intelligents du TON Blockchain. Et une interface avec des URL assez familières.
  • DNS TON. Puisque nous parlons d'URL familières, nous avons également besoin d'un convertisseur d'entre elles en adresses 256 bits - comptes, contrats, services et nœuds.
  • Paiements TON. Et c’est là qu’intervient la question de l’argent. Et ce ne sera pas seulement gramme — comme pour l'éther, tous les « jetons » seront possibles ; Les grammes ne seront ici que la monnaie « par défaut ».

Il s'agit de la première partie qui décrit la couche « mise à la terre » de TON - sa partie réseau, construite sur les protocoles traditionnels. Dans la partie suivante, nous parlerons du « soft » - la blockchain, qui sera pris en charge par le système décrit ci-dessous. Ainsi, mon ordre de récit est quelque peu différent de celui utilisé dans le document mentionné ci-dessus (qui commence immédiatement au niveau abstrait).

Concepts de base

TL (Tapez la langue). Il s'agit d'un format binaire abstrait pour les structures de données arbitraires. Il est utilisé dans le protocole Telegram et sera activement utilisé dans TON. Si vous souhaitez en connaître en détail - voici sa description.

Hachage (hachage). Fonction qui effectue une transformation irréversible d'une structure de données arbitraire en un nombre unique d'une longueur fixe. Tout au long de la documentation nous parlons de la fonction SHA-256.

Nœud de réseau (nœud). Un nœud est le logiciel qui assurera le fonctionnement du système. En particulier, il est supposé que chaque application client Telegram inclura un nœud TON. A un niveau bas, les nœuds possèdent des adresses IPv4/IPv6 et communiquent via le protocole UDP ; à un niveau supérieur, ils ont adresses abstraites et implémentez le protocole ADNL (à propos des adresses abstraites et de l'ADNL - voir ci-dessous). Lorsqu'il s'agit du fait que certaines parties du système font quelque chose ou stockent des données, il est entendu que cela est effectué par les nœuds du réseau.

Adresse abstraite (ou simplement Adresse, propos). L'adresse d'un nœud est déterminée par sa clé publique. Plus strictement, il s'agit d'un hachage de 256 bits (SHA256) de la structure de données contenant la clé publique (l'algorithme cryptographique spécifique n'est pas précisé - les courbes elliptiques et RSA-2048 sont données à titre d'exemple). Pour qu’un nœud puisse communiquer avec un autre, il doit connaître non seulement l’adresse de celui-ci, mais également cette structure de données. En théorie, un nœud physique peut créer n'importe quel nombre d'adresses (correspondant à différentes clés).

De plus, c'est précisément un tel lien qui est souvent utilisé : un « prototype » sous la forme d'une structure TL (contenant presque toutes les données) et un hachage de 256 bits de celui-ci, utilisé pour l'adressage.

Blockchain (blockchain). La blockchain est une structure de données, des éléments (blocs) qui sont classés dans une « chaîne », et chaque bloc suivant de la chaîne contient le hachage du précédent. De cette manière, l'intégrité est atteinte : les modifications ne peuvent être apportées qu'en ajoutant de nouveaux blocs.

Service (service). Les services au sein de TON peuvent être de différents types, selon qu'ils utilisent ou non la blockchain. Par exemple, un (ou plusieurs) nœuds de réseau peuvent traiter certaines requêtes RPC à l'aide du protocole ADNL décrit ci-dessous, sans créer d'enregistrement dans la blockchain, comme les serveurs Web traditionnels. Y compris la possibilité d'implémenter HTTP sur ADNL, ainsi que la transition du messager lui-même vers ce protocole. Par analogie avec TOR ou I2P, cela le rendra plus résistant aux blocages divers.

Dans le même temps, un certain nombre de services impliquent à la fois une interaction avec la blockchain et le traitement de requêtes en dehors de celle-ci. Par exemple, pour TON Storage - stockage de fichiers - il n'est pas très raisonnable de stocker les fichiers eux-mêmes sur la blockchain. Il ne contiendra que des hachages de fichiers (ainsi que quelques méta-informations les concernant), et les nœuds de réseau spécialisés agiront comme des « serveurs de fichiers », prêts à les envoyer à d'autres nœuds via ADNL.

Service de brouillard (service de brouillard). Nous parlons de certains services qui impliquent une décentralisation et une participation ouverte à ceux-ci. Par exemple, TON Proxy est un service qui peut être pris en charge par tout participant souhaitant fournir son nœud comme intermédiaire (proxy) pour transmettre des paquets entre d'autres nœuds. S'il le souhaite, il peut facturer des frais qu'il a fixés à cet effet - en utilisant le système de micropaiement TON Payments (qui, à son tour, est également un service de brouillard).

ADNL : Couche réseau de datagrammes abstraits

Au niveau le plus bas, la communication entre les nœuds s'effectuera à l'aide du protocole UDP (bien que d'autres options soient acceptables).

Comme mentionné ci-dessus, pour qu'un nœud puisse envoyer un paquet à un autre, il doit connaître l'une de ses clés publiques (et donc l'adresse qu'il définit). Il crypte le paquet avec cette clé et ajoute l'adresse de destination de 256 bits au début du paquet - puisqu'un nœud peut avoir plusieurs de ces adresses, cela lui permettra de déterminer quelle clé utiliser pour le déchiffrement.

TON : Réseau ouvert de télégrammes. Partie 1 : Introduction, couche réseau, ADNL, DHT, réseaux superposés

De plus, au lieu de l'adresse du destinataire, le début du paquet de données peut contenir ce qu'on appelle. identifiant canal. Dans ce cas, le traitement du paquet dépend déjà d'accords spécifiques entre les nœuds - par exemple, les données envoyées vers un certain canal peuvent être destinées à un autre nœud et doivent lui être transmises (c'est le service Proxy TON). Un autre cas particulier peut être une interaction directement entre nœuds, mais avec un chiffrement utilisant une paire de clés individuelle pour ce canal (pré-générée à l'aide du protocole Diffie-Hellman).

Enfin, un cas particulier est le canal « nul » : si un nœud ne connaît pas encore les clés publiques de ses « voisins », il peut leur envoyer des paquets sans aucun cryptage. Ceci est destiné uniquement à l'initialisation : une fois que les nœuds envoient des informations sur leurs clés, elles doivent être utilisées pour une communication ultérieure.

Le protocole décrit ci-dessus (256 bits d'identifiant de canal + contenu du paquet) est appelé ADNL. La documentation mentionne la possibilité d'implémenter un analogue de TCP par-dessus ou son propre module complémentaire - RLDP (Reliable Large Datagram Protocol), mais n'entre pas dans les détails de leur implémentation.

TON DHT : table de hachage distribuée

Comme c'est le cas pour d'autres systèmes distribués, TON implique la mise en œuvre de DHT - table de hachage distribuée. Plus précisément, le tableau est Comme Kademlia. Si vous n’êtes pas familier avec ce type de table de hachage, ne vous inquiétez pas, je vais décrire ci-dessous grossièrement leur fonctionnement.

TON : Réseau ouvert de télégrammes. Partie 1 : Introduction, couche réseau, ADNL, DHT, réseaux superposés

Dans un sens abstrait, DHT mappe les clés de 256 bits à des valeurs binaires de longueur arbitraire. Dans ce cas, les clés du tableau sont des hachages d'une certaine structure TL (les structures elles-mêmes sont également stockées avec le DHT). Ceci est très similaire à la formation des adresses de nœuds - et elles peuvent en effet être présentes dans le DHT (par exemple, en utilisant une telle clé l'adresse IP d'un nœud correspondant à un adresse abstraite, s'il ne le cache pas). Mais dans le cas général, les « prototypes de clés » (leurs des descriptions, descriptions clés) sont des métadonnées qui indiquent le « propriétaire » d'une entrée dans une table de hachage (c'est-à-dire la clé publique d'un nœud), le type de valeur stockée et les règles selon lesquelles cette entrée peut ensuite être modifiée. Par exemple, une règle peut autoriser uniquement le propriétaire à modifier la valeur, ou interdire de modifier la valeur à la baisse (pour se protéger contre les attaques par réexécution).

En plus des clés de 256 bits, le concept d'adresses DHT est introduit. La différence avec les adresses d'hôte classiques est que l'adresse DHT est nécessairement liée à une adresse IP. Si un nœud ne cache pas son IP, il peut utiliser une adresse normale pour DHT. Mais le plus souvent, une adresse distincte, « semi-permanente », sera créée pour les besoins du DHT.
TON : Réseau ouvert de télégrammes. Partie 1 : Introduction, couche réseau, ADNL, DHT, réseaux superposés
La notion de distance est introduite au-dessus des clés et des adresses DHT - en cela tout coïncide avec les tableaux kademlia — la distance entre les clés est égale à leur XOR (OU exclusif au niveau du bit). Comme dans les tables Kademlia, la valeur correspondant à une certaine clé doit être stockée sur s nœuds qui ont la distance la plus courte à cette clé (s voici un nombre relativement petit).

Pour qu'un nœud DHT puisse communiquer avec d'autres nœuds similaires, il garde en mémoire Table de routage DHT — Adresses DHT et IP des nœuds avec lesquels il a interagi auparavant, regroupées par distance par rapport à eux. Il existe 256 groupes de ce type (ils correspondent au bit le plus significatif défini dans la valeur de distance - c'est-à-dire que les nœuds situés à une distance de 0 à 255 tomberont dans un groupe, de 256 à 65535 - dans le suivant, etc.). Au sein de chaque groupe, un nombre limité de « meilleurs » nœuds sont stockés (en termes de ping vers eux).

TON : Réseau ouvert de télégrammes. Partie 1 : Introduction, couche réseau, ADNL, DHT, réseaux superposés

Chaque nœud doit prendre en charge plusieurs opérations : stocker une valeur pour une clé, recherche de nœud и rechercher des valeurs. La recherche de nœuds consiste à émettre, en fonction d'une clé donnée, les nœuds les plus proches de celle-ci depuis la table de routage ; la recherche de valeurs est la même chose, sauf lorsque le nœud connaît la valeur de la clé (il la renvoie alors simplement). Ainsi, si un nœud souhaite retrouver une valeur par clé dans la DHT, il envoie des requêtes à un petit nombre de nœuds les plus proches de cette clé depuis sa table de routage. Si la valeur requise ne figure pas parmi leurs réponses, mais qu'il existe d'autres adresses de nœud, alors la demande leur est répétée.

TON DHT peut être utilisé à diverses fins, par exemple pour implémenter un stockage de fichiers de type torrent (voir. Stockage TON); pour déterminer les adresses des nœuds qui mettent en œuvre certains services ; pour stocker des informations sur les propriétaires de comptes dans la blockchain. Mais l’application la plus importante est la découverte des nœuds grâce à leurs adresses abstraites. Pour ce faire, l'adresse est utilisée comme une clé dont il faut trouver la valeur. À la suite de la requête, soit le nœud lui-même sera trouvé (si l'adresse recherchée était son adresse DHT semi-permanente), soit la valeur sera l'adresse IP et le port de connexion - ou une autre adresse qui doit être utilisée comme tunnel intermédiaire.

Réseaux superposés dans TON

Le protocole ADNL décrit ci-dessus implique la possibilité pour tous les nœuds d'échanger des informations entre eux – mais pas nécessairement de manière optimale. On peut dire que grâce à ADNL, tous les nœuds forment un graphe TON global (idéalement connecté). Mais il est également possible de créer des réseaux superposés – des sous-graphes au sein de ce graphe.
TON : Réseau ouvert de télégrammes. Partie 1 : Introduction, couche réseau, ADNL, DHT, réseaux superposés

Au sein d'un tel réseau, l'interaction s'effectue uniquement directement - via des connexions préformées entre les nœuds participant au réseau (via les canaux ADNL décrits ci-dessus). La formation de telles connexions entre voisins, la recherche des voisins eux-mêmes, est un processus automatique qui cherche à maintenir la connectivité du réseau superposé et à minimiser les retards dans l'échange de données.

De plus, il existe un moyen de distribuer rapidement des mises à jour de diffusion volumineuses au sein du réseau - elles sont divisées en morceaux, complétées par un code de correction d'erreur, et tous ces éléments sont envoyés d'un participant à l'autre. Ainsi, le participant n'a pas besoin d'obtenir entièrement toutes les pièces avant de les envoyer plus loin sur le réseau.

Les réseaux superposés peuvent être publics ou privés. Devenir membre d'un réseau public n'est pas difficile - vous devez trouver une structure TL qui le décrit (elle peut être publique ou accessible par une certaine clé en DHT). Dans le cas d'un réseau privé, cette structure doit être connue au préalable du nœud.

se poursuivre

J'ai décidé de diviser la revue TON en plusieurs articles. C'est ici que se termine cette partie, et ensuite Je passe ensuite à la structure de la blockchain (plus précisément des blockchains) qui constituera TON.

Source: habr.com

Ajouter un commentaire