TON : Telegram Open Network. Partie 1 : Introduction, niveau réseau, ADNL, DHT, réseaux superposés

TON : Telegram Open Network. Partie 1 : Introduction, niveau réseau, ADNL, DHT, réseaux superposés

Depuis deux semaines, Runet parle de Telegram et de la situation concernant son blocage absurde et impitoyable par Roskomnadzor. Cela a touchĂ© beaucoup de gens en ricochet, mais tout cela constitue des sujets pour des publications sur Geektimes. Ce qui m'a surpris, c'est que je n'ai toujours pas vu sur Habr une seule analyse du rĂ©seau TON — Telegram Open Network, qui est prĂ©vu sur la base de Telegram. J'ai voulu pallier ce manque, car il y a beaucoup Ă  Ă©tudier lĂ -bas — mĂȘme sans dĂ©clarations officielles Ă  son sujet.

Je rappelle que des rumeurs circulent selon lesquelles Telegram aurait lancĂ© un ICO fermĂ© de grande envergure, ayant dĂ©jĂ  rassemblĂ© des sommes incroyables. On suppose que dĂšs cette annĂ©e, une cryptomonnaie nommĂ©e Gram sera lancĂ©e — et chaque utilisateur de Telegram aura automatiquement un portefeuille, ce qui crĂ©e en soi un avantage considĂ©rable par rapport aux autres cryptomonnaies.

Malheureusement, comme il n'y a pas de dĂ©clarations officielles, je ne peux me baser que sur un document d'origine inconnue, ce dont je vous avertis tout de suite. Bien sĂ»r, il pourrait s'agir d'un faux trĂšs habile, mais il se peut Ă©galement que ce soit un vĂ©ritable livre blanc du futur systĂšme, Ă©crit par Nikolai Durov (et probablement divulguĂ© par quelqu'un des investisseurs). Mais mĂȘme si c'est un 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 rĂ©sumer avec mes propres mots, fidĂšlement au texte, mais en français et de maniĂšre un peu plus humaine (que Nikolai me pardonne pour sa tendance Ă  s'Ă©garer dans les mathĂ©matiques formelles). Gardez Ă  l'esprit que mĂȘme en cas d'authenticitĂ©, il s'agit d'une description prĂ©liminaire du systĂšme, et il est trĂšs probable qu'elle change d'ici au lancement public.

Nous découvrons qu'en plus de la cryptomonnaie, il est prévu encore beaucoup, beaucoup d'autres choses. Détaillons cela dans l'ordre.

  • TON Blockchain. C'est la base du systĂšme entier. Si vous ne savez absolument pas ce qu'est un blockchain , je vous recommande de vous renseigner, car il y aura de nombreux blockchains ici. ImbriquĂ©s les uns dans les autres, virtuellement fragmentĂ©s et mĂȘme des blockchains « verticaux » Ă  l'intĂ©rieur des blocs d'autres blockchains. Et il y aura aussi plusieurs termes qui sonnent bien, comme Instant Hypercube Routing et Infinite Sharding Paradigm, mais nous en reparlerons plus tard. Et bien sĂ»r, la preuve d'enjeu et les contrats intelligents.
  • TON P2P Network. Un rĂ©seau pair-Ă -pair, sur la base duquel le fonctionnement du systĂšme sera construit. C'est de cela qu'il sera principalement question dans cette partie de la narration.
  • Stockage TON. Un stockage de fichiers qui sera construit indĂ©pendamment de la blockchain sur le rĂ©seau peer-to-peer mentionnĂ© ci-dessus. On peut le comparer aux torrents.
  • Proxy TON. C'est un service dont le but est d'augmenter l'anonymat des participants au rĂ©seau. Tout paquet peut ĂȘtre envoyĂ© non pas directement, mais par des tunnels intermĂ©diaires avec un chiffrement supplĂ©mentaire — similaire Ă  I2P ou TOR.
  • DHT TON. Une table de hachage distribuĂ©e pour stocker des valeurs arbitraires. Elle est Ă©galement construite au-dessus de RĂ©seau TON (mais l'utilise Ă©galement) et aide Stockage TON Ă  trouver des nƓuds « partageurs », et Proxy TON — des relais intermĂ©diaires. Cependant, il convient de noter qu'Ă  la diffĂ©rence de la blockchain, cette table de hachage n'est pas un espace de stockage sĂ©curisĂ© — il ne faut pas y conserver d'informations importantes.
  • Services TON. Une plateforme pour des services variĂ©s. En fait, c'est un nouvel internet par-dessus tout ce qui a Ă©tĂ© dĂ©crit prĂ©cĂ©demment. L'Ă©change de donnĂ©es se fait par RĂ©seau TON/Proxy TON, et la logique rĂ©side dans les smart contracts eux-mĂȘmes TON Blockchain. Et l'interface avec des URL assez familiĂšres.
  • DNS TON. Puisqu'il s'agit des URL familiĂšres, il faut Ă©galement un convertisseur de celles-ci en adresses de 256 bits — comptes, contrats, services et nƓuds.
  • Paiements TON. Et c'est ici que la question monĂ©taire entre en jeu. Ce ne sera pas seulement gram — comme avec l'Ethereum, tous les « tokens » seront possibles ; les grams ne seront qu'une monnaie « par dĂ©faut ».

C'est la premiĂšre partie dĂ©crivant le niveau « terrestre » du TON — sa partie rĂ©seau, construite au-dessus de protocoles traditionnels. La prochaine partie traitera de la « chair » — blockchain qui sera soutenue par le systĂšme dĂ©crit ci-dessous. Ainsi, mon ordre de rĂ©cit diffĂšre quelque peu de celui utilisĂ© dans le document mentionnĂ© ci-dessus (qui commence directement par le niveau abstrait).

Concepts de base

TL (Type Language). C'est un format binaire abstrait pour des structures de donnĂ©es arbitraires. Il est utilisĂ© dans le protocole de Telegram et sera activement utilisĂ© dans le TON. Si vous voulez vous familiariser avec lui en dĂ©tail — voici sa description.

Hachage (hash). Une fonction qui produit une transformation irréversible d'une structure de données arbitraire en un numéro unique de longueur fixe. Dans la documentation, on parle beaucoup de la fonction SHA-256.

NƓud du rĂ©seau (node). Un nƓud est un logiciel qui assurera le fonctionnement du systĂšme. En particulier, il est prĂ©vu que chaque application cliente de Telegram intĂšgre un nƓud de TON. À un niveau bas, les nƓuds ont des adresses IPv4/IPv6 et communiquent via le protocole UDP, Ă  un niveau plus Ă©levĂ©, ils possĂšdent des adresses abstraites et mettent en Ɠuvre le protocole ADNL (pour plus d'informations sur les adresses abstraites et ADNL, voir ci-dessous). Lorsque l'on parle de certaines parties du systĂšme effectuant des actions ou stockant des donnĂ©es, cela signifie que ce sont les nƓuds du rĂ©seau qui le font.

Adresse abstraite (ou simplement adresse, address). 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 citĂ©es comme exemples). Pour qu'un nƓud puisse interagir avec un autre, il doit connaĂźtre non seulement l'adresse de celui-ci, mais aussi cette structure de donnĂ©es. ThĂ©oriquement, un nƓud physique peut crĂ©er un nombre illimitĂ© d'adresses (correspondant Ă  diffĂ©rentes clĂ©s).

Ensuite, une telle association est souvent utilisée : une « pré-image » sous forme de structure TL (contenant pratiquement toutes les données), et un hachage de 256 bits de celle-ci, utilisé pour l'adressage.

Blockchain (blockchain). La blockchain est une structure de donnĂ©es dont les Ă©lĂ©ments (blocs) sont ordonnĂ©s en une « chaĂźne », chaque bloc suivant de la chaĂźne contenant le hachage du prĂ©cĂ©dent. Cela assure l'intĂ©gritĂ© — les modifications ne peuvent ĂȘtre effectuĂ©es que par l'ajout de nouveaux blocs.

Service (service). Les services dans le cadre de TON peuvent ĂȘtre de diffĂ©rents types, en fonction de leur utilisation ou non de la blockchain. Par exemple, un (ou plusieurs) nƓud du rĂ©seau peut traiter certaines demandes RPC via le protocole ADNL dĂ©crit ci-dessous, sans crĂ©er de nouvelles entrĂ©es dans la blockchain — comme des serveurs web traditionnels. Il est Ă©galement envisagĂ© de mettre en Ɠuvre HTTP sur ADNL, ainsi que de faire passer le messager lui-mĂȘme Ă  ce protocole. À l'instar de TOR ou I2P, cela le rendra plus rĂ©sistant Ă  diverses censures.

Dans le mĂȘme temps, plusieurs services impliquent Ă  la fois l'interaction avec la blockchain et le traitement des requĂȘtes en dehors de celle-ci. Par exemple, pour TON Storage — un stockage de fichiers — il n'est pas trĂšs judicieux de stocker les fichiers eux-mĂȘmes dans la blockchain. Seuls les hachages des fichiers (ainsi que certaines mĂ©tainformations Ă  leur sujet) seront contenus, et des nƓuds spĂ©cialisĂ©s du rĂ©seau agiront en tant que « serveurs de fichiers » prĂȘts Ă  les fournir Ă  d'autres nƓuds via ADNL.

Service brouillard (fog service). Il s'agit de certains services qui supposent la dĂ©centralisation et la participation ouverte. Par exemple, TON Proxy est un service qui peut ĂȘtre soutenu par tout participant souhaitant fournir son nƓud en tant qu'intermĂ©diaire (proxy) pour transmettre des paquets entre d'autres nƓuds. S'il le dĂ©sire, il peut exiger un tarif qu'il a fixĂ© — en utilisant le systĂšme TON Payments pour les micropaiements (qui, Ă  son tour, est Ă©galement un service de brouillard).

ADNL : Abstract Datagram Network Layer

Au niveau le plus bas, l'interaction entre les nƓuds se fera via le protocole UDP (bien que d'autres options soient acceptables).

Comme mentionnĂ© ci-dessus, afin qu'un nƓud puisse envoyer un paquet Ă  un autre, il doit connaĂźtre l'une de ses clĂ©s publiques (et, par consĂ©quent, l'adresse qui lui est associĂ©e). Il chiffre le paquet avec cette clĂ© et ajoute au dĂ©but du paquet une adresse de 256 bits du destinataire — puisque chaque nƓud peut avoir plusieurs adresses de ce type, cela lui permettra de dĂ©terminer quelle clĂ© utiliser pour le dĂ©cryptage.

TON : Telegram Open Network. Partie 1 : Introduction, niveau réseau, ADNL, DHT, réseaux superposés

De plus, au lieu de l'adresse du destinataire, un identifiant peut se trouver au dĂ©but du paquet de donnĂ©es. canal. Dans ce cas, le traitement du paquet dĂ©pendra des accords spĂ©cifiques entre les nƓuds — par exemple, les donnĂ©es envoyĂ©es dans un certain canal peuvent ĂȘtre destinĂ©es Ă  un autre nƓud et doivent lui ĂȘtre rĂ©adressĂ©es (c'est cela le service Proxy TON). Un autre cas particulier peut ĂȘtre une interaction directe entre les nƓuds, mais avec un cryptage selon une paire de clĂ©s individuelle pour ce canal (prĂ©alablement formĂ©es selon le protocole de Diffie-Hellman).

Enfin, un cas spĂ©cial est le canal « zĂ©ro » — si un nƓud ne connaĂźt pas encore les clĂ©s publiques de ses « voisins », il peut leur envoyer des paquets sans aucun chiffrement. Cela est prĂ©vu uniquement pour l'initialisation — une fois que les nƓuds auront envoyĂ© des informations sur leurs clĂ©s, celles-ci doivent ĂȘtre utilisĂ©es pour les interactions futures.

Le protocole dĂ©crit ci-dessus (256 bits d'identifiant de canal + contenu du paquet) s'appelle ADNL. La documentation mentionne la possibilitĂ© de mettre en Ɠuvre un Ă©quivalent de TCP au-dessus de celui-ci ou une superstructure propre — RLDP (Reliable Large Datagram Protocol), mais ne donne pas de dĂ©tails sur leur mise en Ɠuvre.

TON DHT : Table de hachage distribuée

Comme dans d'autres systĂšmes distribuĂ©s, TON prĂ©voit la mise en Ɠuvre d'une DHT — table de hachage distribuĂ©e. Plus prĂ©cisĂ©ment — la table est de type Kademlia.Si vous n'ĂȘtes pas familiarisĂ© avec ce type de tables de hachage — ne vous inquiĂ©tez pas, je vais expliquer briĂšvement comment elles fonctionnent.

TON : Telegram Open Network. Partie 1 : Introduction, niveau réseau, ADNL, DHT, réseaux superposés

Au sens abstrait, la DHT associe des clĂ©s de 256 bits Ă  certaines valeurs binaires de longueur arbitraire. Les clĂ©s dans la table sont des hachages d'une structure TL dĂ©finie (ces structures elles-mĂȘmes sont Ă©galement stockĂ©es avec la DHT). Cela ressemble beaucoup Ă  la formation des adresses des nƓuds — et elles peuvent effectivement apparaĂźtre dans la DHT (par exemple, une adresse IP d'un nƓud correspondant Ă  une adresse abstraite, si elle ne la masque pas). Mais dans l'ensemble, les « prototypes de clĂ©s » (leurs des descriptions, descriptions de clĂ©s) sont des mĂ©tadonnĂ©es qui pointent vers le « propriĂ©taire » de l'enregistrement dans la table de hachage (c'est-Ă -dire la clĂ© publique d'un nƓud quelconque), le type de valeur stockĂ©e et les rĂšgles selon lesquelles cet enregistrement peut ensuite ĂȘtre modifiĂ©. Par exemple, une rĂšgle peut autoriser la modification de la valeur uniquement par le propriĂ©taire — ou interdire de rĂ©duire la valeur (pour se protĂ©ger des attaques par rĂ©pĂ©tition).

En plus des clĂ©s de 256 bits, le concept d'adresses DHT est introduit. La diffĂ©rence avec les adresses de nƓuds classiques est que l'adresse DHT est toujours liĂ©e Ă  une adresse IP. Si un nƓud ne cache pas son IP, il peut utiliser une adresse classique pour la DHT. Cependant, plus souvent pour les besoins de la DHT, une adresse distincte, « semi-permanente », sera créée.
TON : Telegram Open Network. Partie 1 : Introduction, niveau réseau, ADNL, DHT, réseaux superposés
Un concept de distance est introduit pour les clĂ©s et les adresses DHT — tout cela est conforme aux tables. Kademlia La distance entre les clĂ©s est Ă©gale au XOR (OU exclusif Bit Ă  Bit) de celles-ci. Comme dans les tables Kademlia, la valeur correspondante Ă  une clĂ© donnĂ©e doit ĂȘtre stockĂ©e sur s les nƓuds ayant la distance la plus courte Ă  cette clĂ© (s ici — un nombre relativement petit).

Pour qu'un nƓud DHT puisse interagir avec d'autres nƓuds similaires, il maintient en mĂ©moire une table de routage DHT — les adresses DHT et IP des nƓuds avec lesquels il a interagi auparavant, regroupĂ©es par distance. Il y a 256 de ces groupes (correspondant au bit le plus significatif de la valeur de distance — c'est-Ă -dire que les nƓuds Ă  une distance de 0 Ă  255 iront dans un groupe, de 256 Ă  65535 dans le suivant, etc.). À l'intĂ©rieur de chaque groupe, un nombre limitĂ© de « meilleurs » nƓuds (en termes de latence) est stockĂ©.

TON : Telegram Open Network. Partie 1 : Introduction, niveau réseau, ADNL, DHT, réseaux superposés

Chaque nƓud doit supporter plusieurs opĂ©rations : stockage de valeur pour une clĂ©, recherche de nƓuds et recherche de valeurs. La recherche de nƓuds implique de renvoyer les nƓuds les plus proches d'une clĂ© donnĂ©e Ă  partir de la table de routage ; la recherche de valeurs est similaire, sauf dans le cas oĂč le nƓud connaĂźt la valeur d'une clĂ© (il la renvoie simplement). Par consĂ©quent, si un nƓud veut trouver une valeur dans le DHT pour une clĂ©, il envoie des requĂȘtes Ă  un petit nombre de nƓuds les plus proches de cette clĂ© dans sa table de routage. Si parmi leurs rĂ©ponses, la valeur recherchĂ©e n’est pas trouvĂ©e, mais qu’il y a d'autres adresses de nƓuds, la requĂȘte est rĂ©pĂ©tĂ©e Ă  ces derniers.

Le DHT TON peut ĂȘtre utilisĂ© Ă  diverses fins, par exemple pour mettre en Ɠuvre un stockage de fichiers similaire au torrent (voir Stockage TON); pour dĂ©terminer les adresses des nƓuds mettant 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 de nƓuds par leurs adresses abstraites. Pour cela, l'adresse est utilisĂ©e comme clĂ©, et la valeur Ă  trouver est nĂ©cessaire. À la suite d'une 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 une adresse IP et un port pour la connexion — ou une autre adresse Ă  utiliser comme tunnel intermĂ©diaire.

Les réseaux superposés dans TON

Le protocole ADNL dĂ©crit ci-dessus permet Ă  n'importe quel nƓud d'Ă©changer des informations avec les autres — certes, pas nĂ©cessairement par les chemins les plus optimaux. On peut dire qu'avec ADNL, tous les nƓuds forment un graphe global TON (idĂ©alement — connexe). Mais il est Ă©galement prĂ©vu de crĂ©er des rĂ©seaux superposĂ©s — des sous-graphes Ă  l'intĂ©rieur de ce graphe.
TON : Telegram Open Network. Partie 1 : Introduction, niveau réseau, ADNL, DHT, réseaux superposés

À l'intĂ©rieur de ce rĂ©seau, l'interaction se fait uniquement directement — Ă  travers des connexions prĂ©alablement Ă©tablies entre les nƓuds participants du rĂ©seau (via les canaux ADNL dĂ©crits ci-dessus). La formation de ces connexions entre voisins et la recherche de ces voisins est un processus automatique qui vise Ă  maintenir la connectivitĂ© du rĂ©seau superposĂ© et Ă  minimiser les latences lors des Ă©changes de donnĂ©es.

De plus, un moyen est prĂ©vu pour diffuser rapidement de grandes mises Ă  jour en mode broadcast Ă  l'intĂ©rieur du rĂ©seau — elles sont dĂ©coupĂ©es en morceaux, complĂ©tĂ©es par un code de correction d'erreurs, et toutes ces parties sont transmises d'un participant Ă  un autre. Ainsi, un participant n'a pas besoin de recevoir toutes les parties en entier avant de les transmettre plus loin dans le rĂ©seau.

Les rĂ©seaux superposĂ©s peuvent ĂȘtre publics ou privĂ©s. Devenir participant d'un rĂ©seau public n'est pas difficile — il suffit de trouver une structure TL la dĂ©crivant (elle peut ĂȘtre publique — ou accessible par une certaine clĂ© dans le DHT). Dans le cas d'un rĂ©seau privĂ©, cette structure doit ĂȘtre connue du nƓud Ă  l'avance.

La suite Ă  suivre

J'ai décidé de diviser la présentation de TON en plusieurs articles. Cette partie se termine ici, et dans le suivant, je passe à l'examen de la structure de la blockchain (plus précisément, des blockchains) qui composera TON.

Source : habr.com

Acheter un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS đŸ”„ Acheter un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster