
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 , 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 , 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 â .
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 .
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.

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 â . Plus prĂ©cisĂ©ment â la table est 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.

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.

Un concept de distance est introduit pour les clĂ©s et les adresses DHT â tout cela est conforme aux tables. 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Ă©.

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.

Ă 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 je passe à l'examen de la structure de la blockchain (plus précisément, des blockchains) qui composera TON.
Source : habr.com
