TON: Telegram Open Network. Teil 1: Einführung, Netzwerkschicht, ADNL, DHT, Overlay-Netzwerke

TON: Telegram Open Network. Teil 1: Einführung, Netzwerkschicht, ADNL, DHT, Overlay-Netzwerke

Seit zwei Wochen macht das Runet Lärm über Telegram und die Situation mit seiner sinnlosen und gnadenlosen Blockierung durch Roskomnadzor. Der Abpraller hat viele Menschen beleidigt, aber all das sind Themen für Beiträge auf Geektimes. Mich hat noch etwas anderes überrascht: Ich habe auf Habré noch keine einzige Analyse des TON-Netzwerks gesehen, dessen Veröffentlichung auf der Basis von Telegram – Telegram Open Network – geplant ist. Diesen Mangel wollte ich ausgleichen, denn da gibt es etwas zu studieren – auch wenn es keine offiziellen Stellungnahmen dazu gibt.

Ich möchte Sie daran erinnern, dass es Gerüchte gibt, dass Telegram ein sehr großes geschlossenes ICO gestartet hat und dabei bereits unglaubliche Geldbeträge gesammelt hat. Es wird erwartet, dass die eigene Kryptowährung von Gram noch in diesem Jahr eingeführt wird – und jeder Telegram-Benutzer automatisch über eine Wallet verfügt, was an sich schon einen erheblichen Vorteil gegenüber anderen Kryptowährungen darstellt.

Da es leider keine offiziellen Aussagen gibt, kann ich nur davon ausgehen Dokument unbekannter Herkunft, wovor ich Sie sofort warne. Natürlich könnte es sich um eine sehr geschickte Fälschung handeln, aber es ist auch möglich, dass es sich um ein echtes Whitepaper des zukünftigen Systems handelt, das von Nikolai Durov verfasst wurde (und wahrscheinlich von einem der Investoren durchgesickert ist). Aber selbst wenn es eine Fälschung ist, wird uns doch niemand verbieten, es zu studieren und darüber zu diskutieren, oder?

Was sagt dieses Dokument? Ich werde versuchen, es mit meinen eigenen Worten nachzuerzählen, nah am Text, aber auf Russisch und etwas menschlicher (möge Nikolai mir seine Tendenz, sich der formalen Mathematik zu widmen, verzeihen). Beachten Sie, dass es sich, auch wenn es sich um eine echte Version handelt, um einen Entwurf einer Systembeschreibung handelt, der sich bis zur Veröffentlichung höchstwahrscheinlich ändern wird.

Wir erfahren, dass neben der Kryptowährung noch viel mehr erwartet wird. Gehen wir es der Reihe nach an.

  • TON Blockchain. Dies ist die Grundlage des gesamten Systems. Wenn Sie nicht wissen, was es ist блокчейн — Ich empfehle, es herauszufinden, da es hier viele Blockchains geben wird. Ineinander verschachtelte, virtuell fragmentierte und sogar „vertikale“ Blockchains innerhalb von Blöcken anderer Blockchains. Es wird auch einige cool klingende Begriffe geben wie Sofortiges Hypercube-Routing и Unendliches Sharding-Paradigma, aber dazu später mehr. Und natürlich Proof-of-Stake und Smart Contracts.
  • TON P2P-Netzwerk. Peer-to-Peer-Netzwerk, auf dessen Grundlage das System aufgebaut wird. Sie wird in diesem Teil der Geschichte zuerst besprochen.
  • TON Speicher. Dateispeicher, der unabhängig von der Blockchain auf dem oben genannten Peer-to-Peer-Netzwerk aufgebaut wird. Kann mit Torrents verglichen werden.
  • TON-Proxy. Hierbei handelt es sich um einen Dienst, dessen Zweck es ist, die Anonymität der Netzwerkteilnehmer zu erhöhen. Jedes Paket kann nicht direkt, sondern über Zwischentunnel mit zusätzlicher Verschlüsselung gesendet werden – wie I2P oder TOR.
  • TON DHT. Verteilte Hash-Tabelle zum Speichern beliebiger Werte. Es ist auch oben gebaut TON-Netzwerk (aber gleichzeitig wird es von ihm genutzt) und hilft TON Speicher Finden Sie „verteilende“ Knoten und TON-Proxy — Zwischenverstärker. Es ist jedoch zu beachten, dass diese Hash-Tabelle im Gegensatz zur Blockchain kein sicherer Speicher ist – Sie können darin keine wichtigen Informationen speichern.
  • TON-Dienste. Plattform für individuelle Dienstleistungen. Im Wesentlichen handelt es sich hierbei um ein neues Internet zusätzlich zu allem, was oben beschrieben wurde. Datenaustausch - über TON-Netzwerk/TON-Proxy, und die Logik liegt in den Smart Contracts der TON Blockchain. Und eine Schnittstelle mit ziemlich vertrauten URLs.
  • TON-DNS. Da es sich um bekannte URLs handelt, benötigen wir auch einen Konverter von diesen in 256-Bit-Adressen – Konten, Verträge, Dienste und Knoten.
  • TON-Zahlungen. Und hier kommt die Geldfrage ins Spiel. Und das wird nicht nur so sein Gramm – Wie bei Ether sind alle „Tokens“ möglich; Gramm wird hier nur die „Standard“-Währung sein.

Dies ist der erste Teil, der die „geerdete“ Schicht von TON beschreibt – seinen Netzwerkteil, der auf traditionellen Protokollen aufbaut. Im nächsten Teil werden wir über die „Soft“-Blockchain sprechen, die von dem unten beschriebenen System unterstützt wird. Daher unterscheidet sich meine Reihenfolge der Nacherzählung etwas von der im oben genannten Dokument (das unmittelbar auf der abstrakten Ebene beginnt).

Grundlegende Konzepte

TL (Typsprache). Es ist ein abstraktes Binärformat für beliebige Datenstrukturen. Es wird im Telegram-Protokoll verwendet und wird in TON aktiv genutzt. Wenn Sie es im Detail kennenlernen möchten - hier ist seine Beschreibung.

Hasch (Hash-). Eine Funktion, die eine irreversible Transformation einer beliebigen Datenstruktur in eine einzelne Zahl fester Länge durchführt. In der gesamten Dokumentation sprechen wir über die Funktion SHA-256.

Netzwerkknoten (Knoten). Ein Knoten ist die Software, die den Betrieb des Systems gewährleistet. Insbesondere wird davon ausgegangen, dass jede Telegram-Clientanwendung einen TON-Knoten enthält. Auf einer niedrigen Ebene verfügen Knoten über IPv4/IPv6-Adressen und kommunizieren über das UDP-Protokoll, auf einer höheren Ebene bereits abstrakte Adressen und implementieren Sie das ADNL-Protokoll (über abstrakte Adressen und ADNL – siehe unten). Wenn es darum geht, dass einige Teile des Systems etwas tun oder Daten speichern, versteht man davon, dass dies durch Netzwerkknoten erfolgt.

Abstrakte Adresse (oder einfach Adresse, Adresse). Die Adresse eines Knotens wird durch seinen öffentlichen Schlüssel bestimmt. Genauer gesagt handelt es sich um einen 256-Bit-Hash (SHA256) der Datenstruktur, die den öffentlichen Schlüssel enthält (der spezifische kryptografische Algorithmus ist nicht angegeben – elliptische Kurven und RSA-2048 werden als Beispiele angegeben). Damit ein Knoten mit einem anderen kommunizieren kann, muss er nicht nur die Adresse dieses Knotens, sondern auch diese Datenstruktur kennen. Theoretisch kann ein physischer Knoten eine beliebige Anzahl von Adressen (entsprechend unterschiedlichen Schlüsseln) erstellen.

Darüber hinaus wird häufig genau ein solcher Link verwendet: ein „Prototyp“ in Form einer TL-Struktur (die fast alle Daten enthält) und ein 256-Bit-Hash daraus, der zur Adressierung verwendet wird.

Blockchain (Blockchain). Blockchain ist eine Datenstruktur, Elemente (Blöcke), die in einer „Kette“ angeordnet sind, und jeder nachfolgende Block der Kette enthält den Hash des vorherigen. Auf diese Weise wird Integrität erreicht – Änderungen können nur durch das Hinzufügen neuer Blöcke vorgenommen werden.

Service ( ). Dienste innerhalb von TON können unterschiedlicher Art sein, je nachdem, ob sie Blockchain verwenden oder nicht. Beispielsweise können ein (oder mehrere) Netzwerkknoten bestimmte RPC-Anfragen mithilfe des unten beschriebenen ADNL-Protokolls verarbeiten, ohne dass Datensätze in der Blockchain erstellt werden – wie bei herkömmlichen Webservern. Einschließlich der Möglichkeit, HTTP über ADNL zu implementieren, sowie der Umstellung des Messengers selbst auf dieses Protokoll. Analog zu TOR oder I2P wird es dadurch widerstandsfähiger gegen verschiedene Blockierungen.

Gleichzeitig beinhalten eine Reihe von Diensten sowohl die Interaktion mit der Blockchain als auch die Verarbeitung von Anfragen außerhalb dieser. Für TON Storage – Dateispeicherung – ist es beispielsweise nicht sehr sinnvoll, die Dateien selbst auf der Blockchain zu speichern. Es enthält nur Datei-Hashes (zusammen mit einigen Metainformationen darüber), und spezialisierte Netzwerkknoten fungieren als „Dateiserver“, die bereit sind, sie über ADNL an andere Knoten zu senden.

Nebelservice (Nebelservice). Wir sprechen über einige Dienste, die Dezentralisierung und offene Teilnahme an ihnen implizieren. Beispielsweise ist TON Proxy ein Dienst, der von jedem Teilnehmer unterstützt werden kann, der seinen Knoten als Vermittler (Proxy) für die Weiterleitung von Paketen zwischen anderen Knoten bereitstellen möchte. Auf Wunsch kann er hierfür eine von ihm festgelegte Gebühr erheben – über das TON Payments-System für Mikrozahlungen (das wiederum auch ein Nebeldienst ist).

ADNL: Abstrakte Datagramm-Netzwerkschicht

Auf der untersten Ebene erfolgt die Kommunikation zwischen Knoten über das UDP-Protokoll (obwohl auch andere Optionen akzeptabel sind).

Wie oben erwähnt, muss ein Knoten, damit er ein Paket an einen anderen senden kann, einen seiner öffentlichen Schlüssel (und damit die von ihm definierte Adresse) kennen. Es verschlüsselt das Paket mit diesem Schlüssel und fügt die 256-Bit-Zieladresse am Anfang des Pakets hinzu. Da ein Knoten mehrere dieser Adressen haben kann, kann er so bestimmen, welcher Schlüssel für die Entschlüsselung verwendet werden soll.

TON: Telegram Open Network. Teil 1: Einführung, Netzwerkschicht, ADNL, DHT, Overlay-Netzwerke

Darüber hinaus kann der Anfang des Datenpakets anstelle der Empfängeradresse das sogenannte enthalten. Identifikator der Kanal. In diesem Fall hängt die Verarbeitung des Pakets bereits von bestimmten Vereinbarungen zwischen Knoten ab – beispielsweise können an einen bestimmten Kanal gesendete Daten für einen anderen Knoten bestimmt sein und müssen an diesen weitergeleitet werden (dies ist der Dienst). TON-Proxy). Ein weiterer Sonderfall kann die direkte Interaktion zwischen Knoten sein, jedoch mit Verschlüsselung unter Verwendung eines individuellen Schlüsselpaars für diesen Kanal (vorgeneriert mithilfe des Diffie-Hellman-Protokolls).

Ein Sonderfall schließlich ist der „Null“-Kanal – wenn ein Knoten die öffentlichen Schlüssel seiner „Nachbarn“ noch nicht kennt, kann er ihnen Pakete ohne Verschlüsselung senden. Dies ist nur zur Initialisierung gedacht – sobald die Knoten Informationen über ihre Schlüssel senden, sollten diese für die weitere Kommunikation verwendet werden.

Das oben beschriebene Protokoll (256 Bit Kanalkennung + Paketinhalt) heißt ADNL. In der Dokumentation wird die Möglichkeit erwähnt, darüber ein TCP-Analogon oder ein eigenes Add-on zu implementieren – RLDP (Reliable Large Datagram Protocol), geht jedoch nicht näher auf deren Implementierung ein.

TON DHT: Verteilte Hash-Tabelle

Wie bei anderen verteilten Systemen beinhaltet TON die Implementierung von DHT – verteilte Hash-Tabelle. Genauer gesagt ist die Tabelle Kademlia-artig. Wenn Sie mit dieser Art von Hash-Tabelle nicht vertraut sind, machen Sie sich keine Sorgen, im Folgenden beschreibe ich grob, wie sie funktionieren.

TON: Telegram Open Network. Teil 1: Einführung, Netzwerkschicht, ADNL, DHT, Overlay-Netzwerke

Im abstrakten Sinne ordnet DHT 256-Bit-Schlüssel binären Werten beliebiger Länge zu. In diesem Fall sind die Schlüssel in der Tabelle Hashes aus einer bestimmten TL-Struktur (die Strukturen selbst werden auch zusammen mit dem DHT gespeichert). Dies ist der Bildung von Knotenadressen sehr ähnlich – und diese können tatsächlich im DHT vorhanden sein (z. B. mithilfe eines solchen Schlüssels, der der IP-Adresse eines Knotens entspricht). abstrakte Adresse, wenn er es nicht verheimlicht). Aber im Allgemeinen sind „Prototypen von Schlüsseln“ (ihre Beschreibungen, Schlüsselbeschreibungen) sind Metadaten, die den „Eigentümer“ eines Eintrags in einer Hash-Tabelle (d. h. den öffentlichen Schlüssel eines Knotens), die Art des gespeicherten Werts und die Regeln angeben, nach denen dieser Eintrag anschließend geändert werden kann. Beispielsweise kann eine Regel nur dem Eigentümer erlauben, den Wert zu ändern, oder eine Änderung des Werts nach unten verbieten (zum Schutz vor Replay-Angriffen).

Zusätzlich zu 256-Bit-Schlüsseln wird das Konzept der DHT-Adressen eingeführt. Der Unterschied zu regulären Hostadressen besteht darin, dass die DHT-Adresse notwendigerweise an eine IP-Adresse gebunden ist. Wenn ein Knoten seine IP nicht verbirgt, kann er eine reguläre Adresse für DHT verwenden. Häufiger wird jedoch eine separate, „semipermanente“ Adresse für DHT-Anforderungen erstellt.
TON: Telegram Open Network. Teil 1: Einführung, Netzwerkschicht, ADNL, DHT, Overlay-Netzwerke
Über den Schlüsseln und DHT-Adressen wird das Konzept der Distanz eingeführt – dabei stimmt alles mit den Tabellen überein Kademlia — Der Abstand zwischen den Schlüsseln ist gleich dem XOR (bitweises Exklusiv-ODER) von ihnen. Wie in Kademlia-Tabellen muss der Wert, der einem bestimmten Schlüssel entspricht, gespeichert werden s Knoten, die den kürzesten Abstand zu diesem Schlüssel haben (s hier ist eine relativ kleine Zahl).

Damit ein DHT-Knoten mit anderen Knoten dieser Art kommunizieren kann, bleibt er im Speicher DHT-Routing-Tabelle – DHT- und IP-Adressen von Knoten, mit denen es zuvor interagiert hat, gruppiert nach Entfernung zu ihnen. Es gibt 256 solcher Gruppen (sie entsprechen dem höchstwertigen Bit, das im Abstandswert gesetzt ist – das heißt, Knoten mit einem Abstand von 0 bis 255 fallen in eine Gruppe, von 256 bis 65535 – in die nächste usw.). Innerhalb jeder Gruppe wird eine begrenzte Anzahl der „besten“ Knoten gespeichert (in Bezug auf den Ping an sie).

TON: Telegram Open Network. Teil 1: Einführung, Netzwerkschicht, ADNL, DHT, Overlay-Netzwerke

Jeder Knoten muss mehrere Operationen unterstützen: Speichern eines Werts für einen Schlüssel, Knotensuche и Suche nach Werten. Bei der Suche nach Knoten werden anhand eines bestimmten Schlüssels die ihm am nächsten liegenden Knoten aus der Routing-Tabelle ausgegeben. Das Nachschlagen von Werten ist dasselbe, außer wenn der Knoten den Wert für den Schlüssel kennt (dann gibt er ihn einfach zurück). Wenn ein Knoten dementsprechend einen Wert anhand des Schlüssels im DHT finden möchte, sendet er Anfragen aus seiner Routing-Tabelle an eine kleine Anzahl von Knoten, die diesem Schlüssel am nächsten liegen. Wenn der erforderliche Wert nicht in ihren Antworten enthalten ist, aber andere Knotenadressen vorhanden sind, wird die Anfrage an sie wiederholt.

TON DHT kann für verschiedene Zwecke verwendet werden, beispielsweise um einen Torrent-ähnlichen Dateispeicher zu implementieren (siehe. TON Speicher); um die Adressen von Knoten zu ermitteln, die bestimmte Dienste implementieren; um Informationen über Kontoinhaber in der Blockchain zu speichern. Die wichtigste Anwendung ist jedoch die Erkennung von Knoten anhand ihrer abstrakten Adressen. Dazu wird die Adresse als Schlüssel verwendet, dessen Wert gefunden werden muss. Als Ergebnis der Anfrage wird entweder der Knoten selbst gefunden (wenn die gesuchte Adresse seine semipermanente DHT-Adresse war), oder der Wert ist die IP-Adresse und der Port für die Verbindung – oder eine andere Adresse, die als verwendet werden soll Zwischentunnel.

Overlay-Netzwerke in TON

Das oben beschriebene ADNL-Protokoll impliziert die Fähigkeit aller Knoten, Informationen untereinander auszutauschen – wenn auch nicht unbedingt auf optimale Weise. Wir können sagen, dass dank ADNL alle Knoten einen globalen TON-Graphen bilden (idealerweise verbunden). Es ist aber zusätzlich möglich, Overlay-Netzwerke – Untergraphen innerhalb dieses Diagramms zu erstellen.
TON: Telegram Open Network. Teil 1: Einführung, Netzwerkschicht, ADNL, DHT, Overlay-Netzwerke

Innerhalb eines solchen Netzwerks erfolgt die Interaktion nur direkt – über vorgefertigte Verbindungen zwischen am Netzwerk teilnehmenden Knoten (über die oben beschriebenen ADNL-Kanäle). Die Bildung solcher Verbindungen zwischen Nachbarn, die Suche nach Nachbarn selbst, ist ein automatischer Prozess, der darauf abzielt, die Konnektivität des Overlay-Netzwerks aufrechtzuerhalten und Verzögerungen beim Datenaustausch darin zu minimieren.

Darüber hinaus gibt es eine Möglichkeit, große Broadcast-Updates schnell innerhalb des Netzwerks zu verteilen: Sie werden in Teile zerlegt, mit Fehlerkorrekturcode ergänzt und alle diese Teile werden von einem Teilnehmer zum anderen gesendet. Somit muss der Teilnehmer nicht alle Teile vollständig besorgen, bevor er sie weiter entlang des Netzwerks sendet.

Overlay-Netzwerke können öffentlich oder privat sein. Mitglied eines öffentlichen Netzwerks zu werden ist nicht schwierig – Sie müssen eine TL-Struktur finden, die es beschreibt (sie kann öffentlich oder über einen bestimmten Schlüssel in DHT zugänglich sein). Bei einem privaten Netzwerk muss diese Struktur dem Knoten vorab bekannt sein.

To be continued

Ich habe beschlossen, die TON-Rezension in mehrere Artikel aufzuteilen. Hier endet dieser Teil, und im nächsten Ich gehe weiter und betrachte die Struktur der Blockchain (genauer gesagt der Blockchains), aus der TON bestehen wird.

Source: habr.com

Kommentar hinzufügen