TON: Telegram Open Network. Teil 1: EinfĂŒhrung, Netzwerkebene, ADNL, DHT, Overlay-Netzwerke

TON: Telegram Open Network. Teil 1: EinfĂŒhrung, Netzwerkebene, ADNL, DHT, Overlay-Netzwerke

Seit zwei Wochen wird im Runet ĂŒber Telegram und die sinnlose und gnadenlose Blockade durch Roskomnadsor diskutiert. Viele wurden dabei collateral getroffen, aber das ist alles Material fĂŒr Posts auf Geektimes. Mich ĂŒberraschte jedoch etwas anderes — ich habe bisher auf HabrĂ© keinen einzigen Beitrag zur anstehenden Veröffentlichung des auf Telegram basierenden TON-Netzwerks — Telegram Open Network — gesehen. Ich wollte diesen Mangel beheben, denn es gibt viel zu erforschen — auch wenn es keine offiziellen Aussagen dazu gibt.

Ich erinnere daran — es gibt GerĂŒchte, dass Telegram ein sehr umfangreiches privates ICO gestartet hat und bereits unglaubliche Summen gesammelt hat. Es wird angenommen, dass noch in diesem Jahr die eigene KryptowĂ€hrung Gram eingefĂŒhrt wird — und jeder Telegram-Nutzer automatisch ein Wallet haben wird, was an sich einen erheblichen Vorteil gegenĂŒber anderen KryptowĂ€hrungen darstellt.

Leider kann ich, da es keine offiziellen Aussagen gibt, nur von einem Dokument unbekannter Herkunft, ausgehen, worauf ich Sie gleich hinweise. NatĂŒrlich könnte es sich als sehr geschickte FĂ€lschung herausstellen, aber es ist auch nicht ausgeschlossen, dass dies das echte Whitepaper des zukĂŒnftigen Systems ist, verfasst von Nikolai Durov (und wahrscheinlich von jemandem der Investoren geleakt). Aber selbst wenn es ein Fake ist, wird uns niemand verbieten, ihn zu studieren und zu diskutieren, oder?

Was steht also in diesem Dokument? Ich werde versuchen, es mit meinen Worten wiederzugeben, nah am Text, aber auf Deutsch und etwas menschlicher (Nikolai möge mir mit seiner Neigung zur formalen Mathematik verzeihen). Beachten Sie, dass dies selbst im Falle seiner Echtheit eine vorlĂ€ufige Beschreibung des Systems ist und sich mit großer Wahrscheinlichkeit bis zur öffentlichen EinfĂŒhrung Ă€ndern wird.

Wir erfahren, dass neben der KryptowÀhrung noch wirklich sehr viel mehr geplant ist. Lassen Sie uns der Reihe nach darauf eingehen.

  • TON Blockchain. Dies ist die Grundlage des gesamten Systems. Wenn Sie ĂŒberhaupt nicht wissen, was ein Blockchain ist — ich empfehle, es herauszufinden, denn hier wird es viele Blockchains geben. Ineinander geschachtelt, virtuell fragmentiert und sogar "vertikale" Blockchains innerhalb anderer Blockchains. Und es wird auch mehrere cool klingende Begriffe geben, wie Instant Hypercube Routing und Infinite Sharding Paradigm, aber dazu spĂ€ter mehr. Und natĂŒrlich Proof-of-Stake und Smart Contracts.
  • TON P2P Network. Ein Peer-to-Peer-Netzwerk, auf dessen Grundlage das System arbeiten wird. DarĂŒber wird in diesem Abschnitt des ErzĂ€hlens in erster Linie die Rede sein.
  • TON Speicher. Ein Dateispeicher, der unabhĂ€ngig von der Blockchain auf dem oben genannten Peer-to-Peer-Netzwerk basieren wird. Vergleichbar mit Torrents.
  • TON Proxy. Dieser Dienst hat das Ziel, die AnonymitĂ€t der Netzwerkteilnehmer zu erhöhen. Jedes Paket kann nicht direkt, sondern ĂŒber Tunnel-Proxy-Server mit zusĂ€tzlicher VerschlĂŒsselung gesendet werden – Ă€hnlich wie bei I2P oder TOR.
  • TON DHT. Eine verteilte Hash-Tabelle zur Speicherung beliebiger Werte. Sie ist ebenfalls auf TON Netzwerk (nutzt aber auch dasselbe) und hilft dabei, TON Speicher die „verteilenden“ Knoten zu finden, sowie TON Proxy zwischenliegende Relais. Es ist jedoch zu beachten, dass diese Hash-Tabelle im Gegensatz zur Blockchain kein geschĂŒtzter Speicher ist – wichtige Informationen sollten dort nicht aufbewahrt werden.
  • TON Dienste. Eine Plattform fĂŒr beliebige Dienste. Im Grunde genommen ist es das neue Internet ĂŒber all dem, was zuvor beschrieben wurde. Datenaustausch erfolgt ĂŒber TON Netzwerk/TON Proxy, wĂ€hrend die Logik in den Smart Contracts des TON Blockchain. Und die Schnittstelle weist recht vertraute URLs auf.
  • TON DNS. Da wir jetzt ĂŒber vertraute URLs sprechen, benötigen wir auch einen Umwandler von diesen in 256-Bit-Adressen – fĂŒr Konten, VertrĂ€ge, Dienste und Knoten.
  • TON Zahlungen. Hier wird erst die Finanzfrage berĂŒhrt. Und es wird nicht nur gram geben – wie bei Ether werden beliebige „Token“ möglich sein; Gramm werden hier nur die „Standard“-WĂ€hrung sein.

Das ist der erste Teil, der die „bodenstĂ€ndige“ Ebene von TON beschreibt – seinen Netzwerkteil, der auf traditionellen Protokollen basiert. Im nĂ€chsten Teil wird es um das „KernstĂŒck“ gehen – die Blockchain, die von dem weiter unten beschriebenen System unterstĂŒtzt wird. Daher unterscheidet sich meine ErzĂ€hlreihenfolge ein wenig von der im oben genannten Dokument verwendeten (das sofort mit der abstrakten Ebene beginnt).

Grundbegriffe

TL (Type Language). Dies ist ein abstraktes binĂ€res Format fĂŒr beliebige Datenstrukturen. Es wird im Telegram-Protokoll verwendet und wird aktiv in TON eingesetzt. Wer sich ausfĂŒhrlich damit vertraut machen möchte – hier ist die Beschreibung.

Hash (hash). Eine Funktion, die eine irreversible Umwandlung einer beliebigen Datenstruktur in eine feste LĂ€nge von Zahlen durchfĂŒhrt. In der Dokumentation wird hĂ€ufig von der Funktion SHA-256.

Netzwerkknoten (node). Ein Knoten ist eine Software, die den Betrieb des Systems gewĂ€hrleistet. Insbesondere wird davon ausgegangen, dass jede Clientanwendung von Telegram einen Knoten des TON enthalten wird. Auf niedriger Ebene haben die Knoten IPv4/IPv6-Adressen und kommunizieren ĂŒber das UDP-Protokoll, auf höherer Ebene verfĂŒgen sie ĂŒber abstrakte Adressen und implementieren das ADNL-Protokoll (ĂŒber abstrakte Adressen und ADNL – siehe unten). Wenn es darum geht, dass Teile des Systems etwas tun oder Daten speichern, wird davon ausgegangen, dass dies durch die Knoten des Netzwerks geschieht.

Abstrakte Adresse (oder einfach Adresse, address). Die Adresse eines Knotens wird durch seinen öffentlichen SchlĂŒssel bestimmt. Genauer gesagt ist dies ein 256-Bit-Hash (SHA256) der Datenstruktur, die den öffentlichen SchlĂŒssel enthĂ€lt (der spezifische kryptografische Algorithmus wird dabei nicht nĂ€her spezifiziert – als Beispiele werden elliptische Kurven und RSA-2048 genannt). Damit ein Knoten mit einem anderen interagieren kann, muss er nicht nur die Adresse des anderen kennen, sondern auch diese Datenstruktur. Theoretisch kann ein physischer Knoten eine beliebige Anzahl von Adressen (entsprechend verschiedenen SchlĂŒsseln) erstellen.

HĂ€ufig wird genau diese VerknĂŒpfung verwendet: das „Vorbild“ in Form einer TL-Struktur (die praktisch beliebige Daten enthĂ€lt) und der 256-Bit-Hash davon, der zur Adressierung verwendet wird.

Blockchain (blockchain). Die Blockchain ist eine Datenstruktur, deren Elemente (Blöcke) in einer „Kette“ angeordnet sind, wobei jeder folgende Block der Kette den Hash des vorherigen enthĂ€lt. So wird IntegritĂ€t erreicht – Änderungen können nur durch HinzufĂŒgen neuer Blöcke vorgenommen werden.

Dienst (service). Die Dienste im Rahmen von TON können unterschiedlicher Art sein – je nachdem, ob sie die Blockchain nutzen oder nicht. Zum Beispiel kann einer (oder mehrere) der Knoten des Netzwerks bestimmte RPC-Anfragen nach dem im Folgenden beschriebenen ADNL-Protokoll bearbeiten, ohne dabei irgendwelche EintrĂ€ge in der Blockchain zu erstellen – Ă€hnlich wie traditionelle Webserver. Auch wird die Möglichkeit in Betracht gezogen, HTTP ĂŒber ADNL zu implementieren sowie den Messenger selbst auf dieses Protokoll umzustellen. Ähnlich wie bei TOR oder I2P wĂŒrde dies ihn resistenter gegen verschiedene Blockierungen machen.

Gleichzeitig setzen einige Dienste sowohl auf Interaktion mit der Blockchain als auch auf die Bearbeitung von Anfragen außerhalb davon. FĂŒr TON Storage – ein Dateispeicher – ist es beispielsweise nicht sehr sinnvoll, die Dateien selbst in der Blockchain zu speichern. Dort werden nur die Hashes der Dateien (zusammen mit einigen Metainformationen) gespeichert, wĂ€hrend spezialisierte Knoten im Netzwerk als "Dateiserver" fungieren, die bereit sind, diese an andere Knoten ĂŒber ADNL weiterzugeben.

Nebendienst (fog service). Es handelt sich um einige Dienste, die Dezentralisierung und offene Teilnahme daran implizieren. Zum Beispiel ist TON Proxy ein Dienst, den jeder Teilnehmer unterstĂŒtzen kann, der seinen Knoten als Vermittler (Proxy) zur VerfĂŒgung stellen möchte, um Pakete zwischen anderen Knoten weiterzuleiten. Bei Wunsch kann er dafĂŒr eine von ihm festgelegte GebĂŒhr erheben – unter Verwendung des TON Payments-Systems fĂŒr Mikropayments (das seinerseits ebenfalls ein Nebendienst ist).

ADNL: Abstract Datagram Network Layer

Auf der niedrigsten Ebene findet die Interaktion zwischen den Knoten ĂŒber das UDP-Protokoll statt (es sind auch andere Varianten zulĂ€ssig).

Wie oben erwĂ€hnt, muss ein Knoten, um ein Paket an einen anderen zu senden, einen seiner öffentlichen SchlĂŒssel kennen (und damit die Adresse, die damit zugeordnet ist). Er verschlĂŒsselt das Paket mit diesem SchlĂŒssel und fĂŒgt am Anfang des Pakets die 256-Bit-Adresse des EmpfĂ€ngers hinzu – da ein Knoten mehrere solcher Adressen haben kann, ermöglicht dies ihm zu bestimmen, welchen SchlĂŒssel er fĂŒr die EntschlĂŒsselung verwenden soll.

TON: Telegram Open Network. Teil 1: EinfĂŒhrung, Netzwerkebene, ADNL, DHT, Overlay-Netzwerke

DarĂŒber hinaus könnte am Anfang des Datenpakets anstelle der EmpfĂ€ngeradresse ein sogenannter Identifikator stehen Kanal. In diesem Fall hĂ€ngt die Verarbeitung des Pakets bereits von den spezifischen Vereinbarungen zwischen den Knoten ab – beispielsweise können die in einen bestimmten Kanal gesendeten Daten fĂŒr einen anderen Knoten bestimmt sein und mĂŒssen an diesen weitergeleitet werden (das ist der Dienst TON Proxy). Ein anderes spezielles Beispiel könnte die direkte Interaktion zwischen Knoten sein, jedoch mit VerschlĂŒsselung durch ein individuelles SchlĂŒsselpaar fĂŒr diesen Kanal (vorher gebildet nach dem Diffie-Hellman-Protokoll).

Schließlich ist ein spezieller Fall der "Null"-Kanal — wenn ein Knoten noch keine öffentlichen SchlĂŒssel seiner "Nachbarn" kennt, kann er ihnen Pakete völlig unverschlĂŒsselt senden. Dies dient nur zur Initialisierung — sobald die Knoten Informationen ĂŒber ihre SchlĂŒssel senden, sollten diese fĂŒr die weitere Interaktion verwendet werden.

Das oben beschriebene Protokoll (256-Bit-Kanal-ID + Paketinhalt) wird ADNL genannt. Die Dokumentation erwĂ€hnt die Möglichkeit, einen TCP-Ă€hnlichen Analog oder eine eigene Erweiterung — RLDP (Reliable Large Datagram Protocol) — darĂŒber zu implementieren, geht jedoch nicht auf die Details ihrer Implementierung ein.

TON DHT: Verteilte Hash-Tabelle

Wie bei anderen verteilten Systemen sieht TON die Implementierung einer DHT vor — der verteilten Hash-Tabelle. Genauer gesagt — die Tabelle ist kademlia-Ă€hnlich. Wenn Sie mit dieser Art von Hash-Tabellen nicht vertraut sind — machen Sie sich keine Sorgen, ich werde im Folgenden ungefĂ€hr beschreiben, wie sie aufgebaut sind.

TON: Telegram Open Network. Teil 1: EinfĂŒhrung, Netzwerkebene, ADNL, DHT, Overlay-Netzwerke

Im abstrakten Sinne ordnet eine DHT 256-Bit-SchlĂŒsseln bestimmte binĂ€re Werte beliebiger LĂ€nge zu. Dabei sind die SchlĂŒssel in der Tabelle Hashes einer bestimmten TL-Struktur (die Strukturen selbst werden ebenfalls zusammen mit der DHT gespeichert). Dies Ă€hnelt sehr der Bildung von Knotenadressen — und sie können tatsĂ€chlich in der DHT vorhanden sein (zum Beispiel kann unter einem solchen SchlĂŒssel die IP-Adresse des Knotens mit der angegebenen abstrakten Adresse, wenn er diese nicht verbirgt, gefunden werden). Aber im Allgemeinen sind "Abbilder von SchlĂŒsseln" (ihre Beschreibungen, key descriptions) Metadaten, die auf den "Besitzer" des Eintrages in der Hash-Tabelle verweisen (also den öffentlichen SchlĂŒssel eines bestimmten Knotens), den Typ des gespeicherten Wertes und die Regeln, nach denen dieser Eintrag spĂ€ter geĂ€ndert werden kann. Zum Beispiel kann eine Regel festlegen, dass nur der EigentĂŒmer den Wert Ă€ndern darf — oder die Änderung des Wertes in eine geringere Richtung untersagen (um sich vor Replay-Angriffen zu schĂŒtzen).

Neben den 256-Bit-SchlĂŒsseln wird das Konzept von DHT-Adressen eingefĂŒhrt. Der Unterschied zu normalen Knotenadressen besteht darin, dass eine DHT-Adresse unbedingt an eine IP-Adresse gebunden ist. Wenn ein Knoten seine IP nicht verbirgt, kann er eine normale Adresse fĂŒr die DHT verwenden. HĂ€ufiger wird jedoch fĂŒr die Zwecke der DHT eine separate, "halb-permanente" Adresse eingerichtet.
TON: Telegram Open Network. Teil 1: EinfĂŒhrung, Netzwerkebene, ADNL, DHT, Overlay-Netzwerke
FĂŒr SchlĂŒssel und DHT-Adressen wird das Konzept der Distanz eingefĂŒhrt — in dieser Hinsicht stimmen sie mit den Tabellen ĂŒberein Kademlia — der Abstand zwischen den SchlĂŒsseln entspricht dem XOR (exklusives Oder) von ihnen. Wie in den Kademlia-Tabellen muss der Wert, der einem bestimmten SchlĂŒssel zugeordnet ist, auf s Knoten gespeichert werden, die den geringsten Abstand zu diesem SchlĂŒssel haben (s hier — eine relativ kleine Zahl).

Damit ein DHT-Knoten mit anderen solchen Knoten interagieren kann, speichert er eine DHT-Routetabelle — DHT- und IP-Adressen von Knoten, mit denen er zuvor interagiert hat, gruppiert nach ihrem Abstand zu ihnen. Es gibt 256 solcher Gruppen (sie entsprechen dem höchsten gesetzten Bit im Abstandswert — das heißt, Knoten, die einen Abstand von 0 bis 255 haben, fallen in eine Gruppe, von 256 bis 65535 in die nĂ€chste usw.). Innerhalb jeder Gruppe wird eine begrenzte Anzahl von "besten" Knoten gespeichert (in Bezug auf den Ping zu ihnen).

TON: Telegram Open Network. Teil 1: EinfĂŒhrung, Netzwerkebene, ADNL, DHT, Overlay-Netzwerke

Jeder Knoten muss mehrere Operationen unterstĂŒtzen: Wert fĂŒr einen SchlĂŒssel speichern, Knoten suchen und Werte suchen. Knoten suchen bedeutet, dass die nĂ€chstgelegenen Knoten zur angegebenen SchlĂŒssel in der Routetabelle zurĂŒckgegeben werden; Werte suchen ist dasselbe, außer wenn dem Knoten der Wert fĂŒr den SchlĂŒssel bekannt ist (dann gibt er ihn einfach zurĂŒck). Wenn also ein Knoten einen Wert im DHT fĂŒr einen SchlĂŒssel finden möchte, sendet er Anfragen an eine kleine Anzahl von Knoten, die seinem Routentabelle am nĂ€chsten liegen. Wenn unter ihren Antworten der gesuchte Wert nicht vorhanden ist, aber andere Adressen von Knoten vorhanden sind, wird die Anfrage erneut an diese gesendet.

TON DHT kann fĂŒr verschiedene Zwecke verwendet werden, zum Beispiel — zur Implementierung eines torrent-Ă€hnlichen Dateispeichers (siehe TON Speicher); zur Bestimmung der Adressen von Knoten, die bestimmte Dienste anbieten; zur Speicherung von Informationen ĂŒber Kontoinhaber in der Blockchain. Aber die wichtigste Anwendung ist die Entdeckung von Knoten anhand ihrer abstrakten Adressen. DafĂŒr wird die Adresse als SchlĂŒssel verwendet, dessen Wert gefunden werden soll. Infolge der Anfrage wird entweder der Knoten selbst gefunden (wenn die gesuchte Adresse seine halb-stĂ€ndige DHT-Adresse war) oder der Wert besteht aus der IP-Adresse und dem Port fĂŒr die Verbindung — oder einer anderen Adresse, die als Tunnel-Middleware verwendet werden soll.

Overlay-Netze in TON

Das oben beschriebene ADNL-Protokoll ermöglicht es allen Knoten, Informationen direkt miteinander auszutauschen – allerdings nicht unbedingt auf optimalen Wegen. Man kann sagen, dass durch ADNL alle Knoten ein globales TON-Diagramm bilden (idealerweise – zusammenhĂ€ngend). DarĂŒber hinaus besteht die Möglichkeit, Überlagernetzwerke – Teilgraphen innerhalb dieses Diagramms – zu erstellen.
TON: Telegram Open Network. Teil 1: EinfĂŒhrung, Netzwerkebene, ADNL, DHT, Overlay-Netzwerke

Innerhalb eines solchen Netzwerks erfolgt die Interaktion nur direkt – ĂŒber zuvor gebildete Verbindungen zwischen den Knoten, die an dem Netzwerk teilnehmen (ĂŒber die oben beschriebenen ADNL-KanĂ€le). Die Bildung solcher Verbindungen zwischen Nachbarn und die Suche nach Nachbarn ist ein automatischer Prozess, der darauf abzielt, die ZusammenhĂ€ngbarkeit des Überlagernetzwerks zu erhalten und Verzögerungen beim Datenaustausch darin zu minimieren.

DarĂŒber hinaus gibt es eine Methode, um große Broadcast-Updates schnell innerhalb des Netzwerks zu verbreiten – diese werden in Teile zerlegt, mit Fehlerkorrekturcode ergĂ€nzt und all diese StĂŒcke werden von einem Teilnehmer zum anderen weitergeleitet. So muss der Teilnehmer nicht alle Teile vollstĂ€ndig erhalten, bevor er sie weiter im Netzwerk verschickt.

Überlagernetzwerke können öffentlich und privat sein. Es ist nicht schwierig, Teilnehmer eines öffentlichen Netzwerks zu werden – man muss die TL-Struktur finden, die es beschreibt (sie kann öffentlich sein – oder ĂŒber einen bestimmten SchlĂŒssel im DHT zugĂ€nglich sein). Im Fall eines privaten Netzwerks muss diese Struktur dem Knoten im Voraus bekannt sein.

Fortsetzung folgt

Ich habe beschlossen, die Übersicht ĂŒber TON auf mehrere Artikel aufzuteilen. An dieser Stelle endet dieser Teil, und im nĂ€chsten werde ich die Struktur der Blockchain (genauer gesagt, der Blockchains), aus denen TON bestehen wird, betrachten.

Quelle: habr.com

60GB SSD 8Gb DDR4