
Seit zwei Wochen wird im russischen Internet ĂŒber Telegram und die sinnlose und gnadenlose Blockierung durch Roskomnadsor diskutiert. Viele sind betroffen, doch all das sind Themen fĂŒr BeitrĂ€ge auf Geektimes. Was mich jedoch ĂŒberrascht hat, ist, dass ich bisher keinen einzigen Artikel ĂŒber das geplante Netzwerk TON â Telegram Open Network auf HabrĂ© gesehen habe, das auf Telegram basiert. Ich wollte diese LĂŒcke schlieĂen, denn es gibt viel zu erkunden â selbst trotz der fehlenden offiziellen AnkĂŒndigungen dazu.
Ich erinnere daran, dass GerĂŒchte die Runde machen, dass Telegram ein sehr umfangreiches, geheimes ICO gestartet hat, bei dem bereits unglaubliche Summen gesammelt wurden. Es wird angenommen, dass noch in diesem Jahr die eigene KryptowĂ€hrung Gram lanciert wird â und jeder Telegram-Nutzer automatisch eine Wallet erhalten wird, was an sich schon einen erheblichen Vorteil gegenĂŒber anderen KryptowĂ€hrungen schafft.
Leider kann ich, da es keine offiziellen ErklĂ€rungen gibt, nur von , worauf ich Sie sofort hinweisen möchte. NatĂŒrlich könnte es sich um eine sehr kunstvolle FĂ€lschung handeln, aber es ist ebenso möglich, dass dies ein echter Whitepaper der zukĂŒnftigen Systeme ist, verfasst von Nikolai Durov (und möglicherweise von jemandem aus dem Investorenteam geleakt). Doch selbst wenn es ein Fake ist, wird uns niemand verbieten, ihn zu studieren und zu diskutieren, oder?
Was steht in diesem Dokument? Ich werde versuchen, es mit eigenen Worten nÀherzubringen, nah am Original, aber auf Deutsch und etwas menschlicher (möge mir Nikolai mit seiner Neigung zur formalen Mathematik verzeihen). Seien Sie sich bewusst, dass selbst im Falle seiner Echtheit dies eine vorlÀufige Beschreibung des Systems ist und sie sich sehr wahrscheinlich bis zum öffentlichen Start Àndern wird.
Wir erfahren, dass neben der KryptowÀhrung noch sehr viel mehr vorgesehen ist. Lassen Sie uns der Reihe nach durchgehen.
- TON Blockchain. Das ist das Fundament des gesamten Systems. Wenn Sie absolut keine Ahnung haben, was ein ist â ich empfehle Ihnen, sich darĂŒber zu informieren, denn hier wird es viele Blockchains geben. Ineinander verschachtelt, virtuell fragmentiert und sogar âvertikaleâ Blockchains innerhalb anderer Blockchains. Und zudem wird es einige cool klingende Begriffe wie Instant Hypercube Routing und Unendliches Sharding-Paradigma, aber dazu spĂ€ter. Und natĂŒrlich Proof-of-Stake und Smart Contracts.
- TON P2P-Netzwerk. Ein Peer-to-Peer-Netzwerk, auf dem das System aufgebaut werden soll. DarĂŒber wird in diesem Abschnitt des Berichts hauptsĂ€chlich gesprochen.
- TON Storage. Ein Dateispeicher, der unabhÀngig von der Blockchain auf dem zuvor genannten Peer-to-Peer-Netzwerk basieren wird. Man kann es mit Torrents vergleichen.
- TON Proxy. Dieser Dienst hat das Ziel, die AnonymitĂ€t der Netzwerkteilnehmer zu erhöhen. Jeder Paket kann nicht direkt, sondern ĂŒber Tunnel-Proxy-Dienste mit zusĂ€tzlicher VerschlĂŒsselung gesendet werden â Ă€hnlich wie I2P oder TOR.
- TON DHT. Eine verteilte Hash-Tabelle zur Speicherung beliebiger Werte. Sie ist ebenfalls aufgebaut auf TON Network (verwendet jedoch dessen Infrastruktur) und hilft TON Storage die "Seed"-Knoten zu finden, und TON Proxy â Zwischen-Relais. Es ist jedoch zu beachten, dass diese Hash-Tabelle im Gegensatz zur Blockchain kein sicheres Lager ist â wichtige Informationen sollten darin nicht aufbewahrt werden.
- TON Services. Eine Plattform fĂŒr beliebige Dienste. Im Grunde genommen ist dies das neue Internet ĂŒber all dem, was oben beschrieben wurde. Datenaustausch erfolgt ĂŒber TON Network/TON Proxy, wĂ€hrend die Logik in den Smart Contracts selbst liegt. TON Blockchain. Und die BenutzeroberflĂ€che mit relativ vertrauten URLs.
- TON DNS. Da wir gerade von vertrauten URLs sprechen, benötigt man auch einen Umwandler zu 256-Bit-Adressen â fĂŒr Konten, VertrĂ€ge, Dienstleistungen und Knoten.
- TON Payments. Und hier wird das finanzielle Thema angesprochen. Und es wird nicht nur gram â wie bei Ethereum werden alle möglichen âTokenâ möglich sein; die Grams werden hier lediglich die âStandardwĂ€hrungâ sein.
Dies ist der erste Teil, der die âbodenstĂ€ndigeâ Ebene von TON beschreibt â seinen Netzwerkteil, der auf traditionellen Protokollen aufgebaut ist. Im nĂ€chsten Teil wird es um das âKernstĂŒckâ gehen â die Blockchain, die von dem nachfolgend beschriebenen System unterstĂŒtzt wird. Somit stimmt meine ErzĂ€hlreihenfolge etwas von der im oben genannten Dokument ab (das sofort mit der abstrakten Ebene beginnt).
Grundlagen
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. Wenn Sie sich nĂ€her damit vertrautmachen möchten â .
Hash (hash). Eine Funktion, die eine irreversible Umwandlung beliebiger Datenstrukturen in eine feste LĂ€nge Zahl durchfĂŒhrt. In der Dokumentation wird hĂ€ufig ĂŒber diese Funktion gesprochen. .
Netzknoten (node). Ein Knoten ist eine Software, die den Betrieb des Systems sicherstellt. Insbesondere wird angenommen, dass jede Clientanwendung von Telegram einen TON-Knoten enthalten wird. Auf niedriger Ebene haben 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 (zu abstrakten Adressen und ADNL â siehe unten). Wenn darĂŒber gesprochen wird, dass bestimmte Teile des Systems etwas tun oder Daten speichern, wird damit angedeutet, dass dies durch die Netzknoten erfolgt.
Abstrakte Adresse (oder einfach Adresse, address). 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 wird hierbei nicht nĂ€her spezifiziert â als Beispiele werden elliptische Kurven und RSA-2048 genannt). Damit ein Knoten mit einem anderen interagieren kann, muss nicht nur die Adresse des anderen bekannt sein, sondern auch diese Datenstruktur. Theoretisch kann ein physischer Knoten beliebig viele Adressen (entsprechend verschiedener SchlĂŒssel) erstellen.
DarĂŒber hinaus wird hĂ€ufig genau diese Kombination verwendet: ein «Abbild» 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 vorhergehenden enthĂ€lt. Dadurch wird IntegritĂ€t erreicht â Ănderungen können nur durch das HinzufĂŒgen neuer Blöcke vorgenommen werden.
Dienste (service). Die Dienste innerhalb von TON können verschiedene Typen haben â abhĂ€ngig davon, ob sie Blockchain nutzen oder nicht. Zum Beispiel kann ein (oder mehrere) Knoten im Netzwerk bestimmte RPC-Anfragen ĂŒber das weiter unten beschriebene ADNL-Protokoll verarbeiten, ohne dass irgendwelche EintrĂ€ge in der Blockchain erstellt werden â Ă€hnlich wie traditionelle Webserver. Es wird auch die Möglichkeit geprĂŒft, HTTP ĂŒber ADNL zu implementieren sowie den Messenger selbst auf dieses Protokoll umzustellen. Ăhnlich wie bei TOR oder I2P wĂŒrde dies ihn widerstandsfĂ€higer gegen verschiedene Blockaden machen.
Gleichzeitig impliziert eine Reihe von Diensten sowohl die Interaktion mit der Blockchain als auch die Verarbeitung von Anfragen auĂerhalb davon. Zum Beispiel wĂ€re es fĂŒr TON Storage â das Dateispeichersystem â nicht besonders sinnvoll, die Dateien selbst in der Blockchain zu speichern. Dort werden nur die Hashes der Dateien (neben einigen Metainformationen) enthalten sein, wĂ€hrend spezialisierte Knoten im Netzwerk als âDateiserverâ fungieren, die bereit sind, sie ĂŒber ADNL an andere Knoten auszugeben.
Fog-Dienst (fog service). Es handelt sich um einige Dienste, die Dezentralisierung und offene Teilnahme vorsehen. Zum Beispiel ist der TON Proxy ein Dienst, den jeder Teilnehmer unterstĂŒtzen kann, der seinen Knoten als Vermittler (Proxy) bereitstellen 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 Mikrozahlungen (das seinerseits auch ein dezentrales Dienst ist).
ADNL: Abstrakte Datagramm-Netzwerkschicht
Auf der tiefsten Ebene erfolgt die Interaktion zwischen den Knoten ĂŒber das UDP-Protokoll (obwohl auch andere Optionen zulĂ€ssig sind).
Wie oben erwĂ€hnt, um ein Paket von einem Knoten zu einem anderen zu senden, muss dieser einen seiner öffentlichen SchlĂŒssel (und damit die Adresse, die ihm zugeordnet ist) kennen. 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 die Bestimmung, welchen SchlĂŒssel zur EntschlĂŒsselung verwendet werden soll.

DarĂŒber hinaus kann anstelle der EmpfĂ€ngeradresse zu Beginn des Datenpakets eine sogenannte Identifikationsnummer stehen des Kanals. In diesem Fall hĂ€ngt die Verarbeitung des Pakets von den spezifischen Vereinbarungen zwischen den Knoten ab â beispielsweise können die Daten, die an einen bestimmten Kanal gesendet werden, fĂŒr einen anderen Knoten bestimmt sein und mĂŒssen an diesen weitergeleitet werden (das ist der Dienst). TON Proxy). Ein weiterer spezifischer Fall kann die direkte Interaktion zwischen Knoten sein, jedoch mit VerschlĂŒsselung ĂŒber ein individuelles SchlĂŒsselpaar fĂŒr diesen Kanal (vorab gebildet gemÀà dem Diffie-Hellman-Protokoll).
SchlieĂlich gibt es einen speziellen Fall, der als ânullâ Kanal bezeichnet wird â wenn ein Knoten die öffentlichen SchlĂŒssel seiner âNachbarnâ noch nicht kennt, kann er Pakete ohne jegliche VerschlĂŒsselung an sie senden. Dies dient nur der Initialisierung â sobald die Knoten Informationen ĂŒber ihre SchlĂŒssel gesendet haben, sollten diese fĂŒr die weitere Interaktion verwendet werden.
Das oben beschriebene Protokoll (256 Bit Kanal-Identifikator + Paketinhalt) nennt sich ADNL. Die Dokumentation erwĂ€hnt die Möglichkeit, ein TCP-Ă€hnliches Protokoll darauf zu implementieren oder eine eigene Erweiterung â RLDP (Reliable Large Datagram Protocol) â zu nutzen, geht jedoch nicht nĂ€her auf deren Implementierung ein.
TON DHT: Verteilte Hash-Tabelle
Wie bei anderen verteilten Systemen implementiert TON ein DHT â . Genauer gesagt handelt es sich um eine . Wenn Sie mit dieser Art von Hashtabellen nicht vertraut sind, keine Sorge, ich werde Ihnen gleich eine grobe Beschreibung geben, wie sie aufgebaut sind.

Im abstrakten Sinne ordnet DHT 256-Bit-SchlĂŒssel bestimmten BinĂ€rwerten variabler LĂ€nge zu. Dabei sind die SchlĂŒssel in der Tabelle Hashes von bestimmten TL-Strukturen (diese Strukturen werden ebenfalls zusammen mit dem DHT gespeichert). Das Ă€hnelt der Bildung von Adressen fĂŒr Knoten â und sie können tatsĂ€chlich im DHT vorhanden sein (zum Beispiel könnte unter einem solchen SchlĂŒssel die IP-Adresse des Knotens zu finden sein, die dem angegebenen abstrakten Adresse, vorausgesetzt, sie versteckt sie nicht). Aber im Allgemeinen sind die âAbbilder der SchlĂŒsselâ (ihre Beschreibungen, key descriptions) â sind Metadaten, die den «EigentĂŒmer» des Eintrags in der Hashtabelle angeben (das heiĂt, den öffentlichen SchlĂŒssel eines Knotens), den Typ des gespeicherten Wertes sowie die Regeln, nach denen dieser Eintrag spĂ€ter geĂ€ndert werden kann. Zum Beispiel kann eine Regel vorsehen, dass nur der EigentĂŒmer den Wert Ă€ndern darf â oder die Ănderung des Wertes in eine geringere Richtung verbieten (um sich vor Replay-Angriffen zu schĂŒtzen).
Neben 256-Bit-SchlĂŒsseln wird das Konzept der DHT-Adressen eingefĂŒhrt. Der Unterschied zu normalen Knotenadressen besteht darin, dass eine DHT-Adresse unbedingt an eine IP-Adresse gebunden sein muss. Wenn ein Knoten seine IP nicht verbirgt, kann er eine normale Adresse fĂŒr DHT verwenden. HĂ€ufiger wird jedoch fĂŒr DHT ein separater, «halb-permanenter» Adresse eingerichtet.

FĂŒr SchlĂŒssel und DHT-Adressen wird das Konzept der Entfernung eingefĂŒhrt â hier stimmen sie mit den Tabellen ĂŒberein. â die Entfernung zwischen SchlĂŒsseln ist gleich XOR (bitweise exklusive ODER) von ihnen. Wie in Kademlia-Tabellen sollte der Wert, der einem bestimmten SchlĂŒssel entspricht, auf s Knoten gespeichert werden, die die geringste Entfernung zu diesem SchlĂŒssel aufweisen (s hier â eine relativ kleine Zahl).
Damit ein DHT-Knoten mit anderen solchen Knoten interagieren kann, speichert er eine DHT-Routingtabelle. â DHT- und IP-Adressen von Knoten, mit denen zuvor interagiert wurde, gruppiert nach Entfernung zu ihnen. Es gibt 256 solcher Gruppen (entsprechend dem höchsten gesetzten Bit im Entfernungswert â das heiĂt, Knoten in der Entfernung von 0 bis 255 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).

Jeder Knoten muss mehrere Operationen unterstĂŒtzen: Wert fĂŒr einen SchlĂŒssel speichern, Knoten suchen und Werte suchen. Das Suchen von Knoten beinhaltet die Ausgabe der nĂ€chstgelegenen Knoten zu einem bestimmten SchlĂŒssel aus der Routing-Tabelle; das Suchen von Werten ist dasselbe, es sei denn, der Knoten kennt bereits den Wert fĂŒr den SchlĂŒssel (in diesem Fall gibt er ihn einfach zurĂŒck). Wenn ein Knoten also im DHT einen Wert fĂŒr einen SchlĂŒssel finden möchte, sendet er Anfragen an eine kleine Anzahl von Knoten, die in seiner Routing-Tabelle am nĂ€chsten zu diesem SchlĂŒssel liegen. Wenn unter ihren Antworten der gesuchte Wert nicht zu finden ist, aber andere Knotenadressen vorhanden sind, wird die Anfrage an diese wiederholt.
TON DHT kann fĂŒr verschiedene Zwecke verwendet werden, zum Beispiel â zur Implementierung eines torrentĂ€hnlichen Dateispeichers (siehe. TON Storage); zur Bestimmung von Knotenadressen, die bestimmte Dienste bereitstellen; zur Speicherung von Informationen ĂŒber EigentĂŒmer von Konten in der Blockchain. Die wichtigste Anwendung besteht jedoch darin, Knoten anhand ihrer abstrakten Adressen zu erkennen. Dazu wird die Adresse als SchlĂŒssel verwendet, dessen Wert gefunden werden muss. Im Ergebnis eines Anfrages wird entweder der Knoten selbst (wenn die gesuchte Adresse seine semi-permanente DHT-Adresse war) oder der Wert wird eine IP-Adresse und ein Port fĂŒr die Verbindung sein â oder eine andere Adresse, die als Tunnel-Mittelsmann verwendet werden soll.
Overlay-Netzwerke in TON
Das oben beschriebene ADNL-Protokoll ermöglicht es allen Knoten, Informationen untereinander auszutauschen â allerdings nicht unbedingt auf optimalen Wegen. Man kann sagen, dass alle Knoten durch ADNL ein globales TON-Diagramm bilden (idealerweise verbunden). Dennoch besteht zusĂ€tzlich die Möglichkeit, Overlay-Netzwerke zu erstellen â Untergraphen innerhalb dieses Diagramms.

Innerhalb eines solchen Netzwerks erfolgt die Interaktion ausschlieĂlich direkt â ĂŒber zuvor etablierte Verbindungen zwischen den Knotenpunkten (ĂŒber die oben beschriebenen ADNL-KanĂ€le). Der Aufbau solcher Verbindungen zwischen Nachbarn sowie die Suche nach diesen Nachbarn sind automatische Prozesse, die darauf abzielen, die KonnektivitĂ€t des Overlay-Netzes aufrechtzuerhalten und die Latenz beim Datenaustausch zu minimieren.
DarĂŒber hinaus gibt es eine Methode, um groĂe, breit gefĂ€cherte Updates innerhalb des Netzwerks schnell zu verbreiten â diese werden in Teile zerlegt, mit Fehlerkorrekturcode ergĂ€nzt und alle diese Teile werden von einem Teilnehmer zum anderen weitergeleitet. So muss ein Teilnehmer nicht alle Teile vollstĂ€ndig erhalten, bevor er sie im Netzwerk weiterleitet.
Overlay-Netzwerke können öffentlich oder privat sein. Es ist nicht schwer, Mitglied eines öffentlichen Netzwerks zu werden â man muss die TL-Struktur finden, die es beschreibt (diese kann öffentlich sein oder ĂŒber einen bestimmten SchlĂŒssel im DHT zugĂ€nglich sein). Im Falle eines privaten Netzwerks muss diese Struktur dem Knoten im Voraus bekannt sein.
Fortsetzung folgt
Ich habe beschlossen, die Ăbersicht ĂŒber TON in mehrere Artikel zu unterteilen. An dieser Stelle endet dieser Teil, und Ich beschĂ€ftige mich mit der Struktur der Blockchains (genauer gesagt, der Blockchains), aus denen TON bestehen wird.
Quelle: habr.com
