TON: Otwarta sieć telegramu. Część 1: Wprowadzenie, warstwa sieciowa, ADNL, DHT, sieci nakładkowe

TON: Otwarta sieć telegramu. Część 1: Wprowadzenie, warstwa sieciowa, ADNL, DHT, sieci nakładkowe

Od dwóch tygodni Runet robi szum na temat Telegramu i sytuacji związanej z jego bezsensownym i bezlitosnym blokowaniem przez Roskomnadzor. Rykoszet obraził wiele osób, ale to wszystko są tematy na posty w Geektimes. Zaskoczyło mnie coś innego – nadal nie widziałem ani jednej analizy Habré sieci TON planowanej do wydania na podstawie Telegramu – Telegram Open Network. Chciałem nadrobić ten brak, bo jest tam co studiować – mimo braku oficjalnych komunikatów na ten temat.

Przypomnę, że krążą plotki, że Telegram uruchomił zamknięte ICO na bardzo dużą skalę, zebrawszy już niesamowite kwoty pieniędzy. Oczekuje się, że w tym roku zostanie wypuszczona własna kryptowaluta Gram – a każdy użytkownik Telegramu automatycznie będzie miał portfel, co samo w sobie stwarza znaczną przewagę nad innymi kryptowalutami.

Niestety, ponieważ nie ma oficjalnych oświadczeń, mogę jedynie kontynuować dalej dokument nieznanego pochodzenia, o czym od razu ostrzegam. Oczywiście może się to okazać bardzo zręczną podróbką, ale możliwe jest też, że jest to prawdziwy oficjalny dokument przyszłego systemu, napisany przez Nikołaja Durowa (a wyciek prawdopodobnie przez jednego z inwestorów). Ale nawet jeśli jest to fałszywe, nikt nie zabroni nam studiować i omawiać tego, prawda?

Co mówi ten dokument? Spróbuję opowiedzieć to własnymi słowami, blisko tekstu, ale po rosyjsku i trochę bardziej po ludzku (niech Mikołaj mi wybaczy jego skłonność do wchodzenia w matematykę formalną). Należy pamiętać, że nawet jeśli jest to autentyczny opis, jest to wersja robocza opisu systemu, który najprawdopodobniej ulegnie zmianie do czasu publicznego uruchomienia.

Dowiadujemy się, że oprócz kryptowaluty oczekuje się znacznie więcej. Ujmijmy to w porządku.

  • TON Blockchain. To jest podstawa całego systemu. Jeśli nie wiesz co to jest blok — Polecam się dowiedzieć, bo blockchainów będzie tutaj mnóstwo. Zagnieżdżone w sobie, praktycznie pofragmentowane, a nawet „pionowe” łańcuchy bloków w blokach innych łańcuchów bloków. Pojawią się również pewne fajnie brzmiące terminy, takie jak Natychmiastowe wyznaczanie trasy Hypercube и Paradygmat nieskończonego fragmentowania, ale o tym później. No i oczywiście dowód stawki i inteligentne kontrakty.
  • Sieć TON P2P. Sieć peer-to-peer, w oparciu o którą zostanie zbudowany system. Zostanie ona omówiona jako pierwsza w tej części historii.
  • Przechowywanie TON. Magazyn plików, który niezależnie od blockchainu będzie zbudowany na wspomnianej sieci peer-to-peer. Można porównać do torrentów.
  • Pełnomocnik TON. Jest to usługa, której celem jest zwiększenie anonimowości uczestników sieci. Dowolny pakiet można wysłać nie bezpośrednio, ale przez tunele pośrednie z dodatkowym szyfrowaniem - jak I2P lub TOR.
  • TON DHT. Rozproszona tabela skrótów do przechowywania dowolnych wartości. Jest również zbudowany na górze Sieć TON (ale jednocześnie jest przez niego używany) i pomaga Przechowywanie TON znaleźć węzły „dystrybucyjne” i Pełnomocnik TON — powtarzacze pośrednie. Należy jednak zaznaczyć, że w przeciwieństwie do blockchaina, ta tablica mieszająca nie jest bezpiecznym magazynem – nie można w niej przechowywać ważnych informacji.
  • Usługi TON. Platforma usług niestandardowych. W istocie jest to nowy Internet oprócz wszystkiego, co opisano powyżej. Wymiana danych - za pośrednictwem Sieć TON/Pełnomocnik TON, a logika leży w inteligentnych kontraktach TON Blockchain. I interfejs z dość znanymi adresami URL.
  • TONA DNS. Ponieważ mówimy o znanych adresach URL, potrzebujemy również konwertera z nich na 256-bitowe adresy - konta, umowy, usługi i węzły.
  • TON Płatności. I tu pojawia się kwestia pieniędzy. I nie tylko gram — podobnie jak w przypadku eteru, możliwe będą dowolne „tokeny”; Gramy będą tutaj „domyślną” walutą.

To pierwsza część opisująca „uziemioną” warstwę TON – jego część sieciową, zbudowaną na bazie tradycyjnych protokołów. W dalszej części porozmawiamy o „miękkim” – blockchainie, który będzie wspierany przez opisany poniżej system. Zatem mój porządek opowiadania różni się nieco od tego zastosowanego w wyżej wymienionym dokumencie (który zaczyna się od razu na poziomie abstrakcyjnym).

Podstawowe pojęcia

TL (Język typu). Jest to abstrakcyjny format binarny dla dowolnych struktur danych. Jest używany w protokole Telegram i będzie aktywnie używany w TON. Jeśli chcesz zapoznać się z nim szczegółowo - oto jego opis.

Haszysz (haszysz). Funkcja dokonująca nieodwracalnej transformacji dowolnej struktury danych na pojedynczą liczbę o ustalonej długości. W całej dokumentacji mówimy o funkcji SHA-256.

Węzeł sieciowy (węzeł). Węzeł to oprogramowanie, które zapewni działanie systemu. W szczególności zakłada się, że każda aplikacja kliencka Telegramu będzie zawierać węzeł TON. Na niskim poziomie węzły posiadają adresy IPv4/IPv6 i komunikują się za pomocą protokołu UDP, na wyższym poziomie mają abstrakcyjne adresy i zaimplementuj protokół ADNL (o adresach abstrakcyjnych i ADNL - patrz poniżej). Jeśli chodzi o to, że jakieś części systemu coś robią lub przechowują jakieś dane, to przyjmuje się, że robią to węzły sieci.

Adres abstrakcyjny (lub po prostu adres, adres). Adres węzła jest określany na podstawie jego klucza publicznego. Ściślej mówiąc, jest to 256-bitowy skrót (SHA256) struktury danych zawierający klucz publiczny (nie określono konkretnego algorytmu kryptograficznego - jako przykłady podano krzywe eliptyczne i RSA-2048). Aby jeden węzeł mógł komunikować się z drugim, musi znać nie tylko adres tego węzła, ale także tę strukturę danych. Teoretycznie jeden węzeł fizyczny może utworzyć dowolną liczbę adresów (odpowiadających różnym kluczom).

Co więcej, często stosuje się właśnie takie łącze: „prototyp” w postaci struktury TL (zawierającej prawie dowolne dane) i 256-bitowy skrót z niego używany do adresowania.

Blockchain (blockchain). Blockchain to struktura danych, elementy (Bloki), które są ułożone w „łańcuch”, a każdy kolejny blok łańcucha zawiera skrót poprzedniego. W ten sposób osiągana jest integralność – zmian można dokonać jedynie dodając nowe bloki.

Platforma (usługa). Usługi w ramach TON mogą być różnego rodzaju, w zależności od tego, czy wykorzystują blockchain, czy nie. Na przykład jeden (lub wiele) węzłów sieci może przetwarzać określone żądania RPC przy użyciu protokołu ADNL opisanego poniżej, bez tworzenia jakichkolwiek rekordów w łańcuchu bloków – jak w przypadku tradycyjnych serwerów WWW. W tym możliwość implementacji HTTP przez ADNL, a także przejścia samego komunikatora na ten protokół. Analogicznie do TOR czy I2P, dzięki temu będzie on bardziej odporny na różne blokady.

Jednocześnie szereg usług polega zarówno na interakcji z blockchainem, jak i przetwarzaniu żądań poza nim. Na przykład w przypadku TON Storage – przechowywania plików – przechowywanie samych plików na blockchainie nie jest zbyt rozsądne. Będzie zawierał jedynie skróty plików (wraz z pewnymi metainformacjami na ich temat), a wyspecjalizowane węzły sieci będą pełnić rolę „serwerów plików”, gotowych do przesyłania ich do innych węzłów poprzez ADNL.

Usługa mgły (obsługa mgły). Mówimy o niektórych usługach, które implikują decentralizację i otwarte uczestnictwo w nich. Przykładowo TON Proxy to usługa, z której może skorzystać każdy uczestnik, który chce udostępnić swój węzeł jako pośrednik (proxy) przekazujący pakiety pomiędzy innymi węzłami. W razie potrzeby może pobrać za to ustaloną przez siebie opłatę - korzystając z systemu TON Payments do mikropłatności (który z kolei jest jednocześnie usługą mgły).

ADNL: Warstwa sieci abstrakcyjnych datagramów

Na najniższym poziomie komunikacja pomiędzy węzłami będzie realizowana za pomocą protokołu UDP (choć dopuszczalne są inne opcje).

Jak wspomniano powyżej, aby jeden węzeł mógł wysłać pakiet do drugiego, musi znać jeden ze swoich kluczy publicznych (a tym samym zdefiniowany przez siebie adres). Szyfruje pakiet tym kluczem i dodaje na początku pakietu 256-bitowy adres docelowy - ponieważ jeden węzeł może mieć kilka takich adresów, pozwoli mu to określić, którego klucza użyć do odszyfrowania.

TON: Otwarta sieć telegramu. Część 1: Wprowadzenie, warstwa sieciowa, ADNL, DHT, sieci nakładkowe

Dodatkowo zamiast adresu odbiorcy początek pakietu danych może zawierać tzw. identyfikator kanala. W tym przypadku przetwarzanie pakietu uzależnione jest już od konkretnych ustaleń pomiędzy węzłami – przykładowo dane wysyłane na dany kanał mogą być przeznaczone dla innego węzła i muszą zostać do niego przekazane (jest to usługa Pełnomocnik TON). Innym szczególnym przypadkiem może być interakcja bezpośrednio pomiędzy węzłami, ale z szyfrowaniem przy użyciu indywidualnej pary kluczy dla tego kanału (wstępnie wygenerowanej przy użyciu protokołu Diffiego-Hellmana).

Wreszcie szczególnym przypadkiem jest kanał „null” – jeśli węzeł nie zna jeszcze kluczy publicznych swoich „sąsiadów”, może wysyłać do nich pakiety w ogóle bez szyfrowania. Służy to wyłącznie do inicjalizacji - gdy węzły prześlą informację o swoich kluczach, należy je wykorzystać do dalszej komunikacji.

Protokół opisany powyżej (256 bitów identyfikatora kanału + zawartość pakietu) nazywa się ADNL. Dokumentacja wspomina o możliwości zaimplementowania na nim analogu TCP lub własnego dodatku - RLDP (Reliable Large Datagram Protocol), ale nie zawiera szczegółów na temat ich implementacji.

TON DHT: Rozproszona tabela mieszająca

Podobnie jak w przypadku innych systemów rozproszonych, TON polega na wdrożeniu DHT - rozproszona tablica mieszająca. Dokładniej mówiąc, stół jest Podobnie jak w Kademlii. Jeśli nie znasz tego typu tablic skrótów, nie martw się, poniżej z grubsza opiszę, jak one działają.

TON: Otwarta sieć telegramu. Część 1: Wprowadzenie, warstwa sieciowa, ADNL, DHT, sieci nakładkowe

W sensie abstrakcyjnym DHT odwzorowuje 256-bitowe klucze na wartości binarne o dowolnej długości. W tym przypadku klucze w tabeli są skrótami z określonej struktury TL (same struktury są również przechowywane razem z DHT). Jest to bardzo podobne do tworzenia adresów węzłów - i rzeczywiście mogą one występować w DHT (np. za pomocą takiego klucza można podać adres IP węzła odpowiadający danemu adres abstrakcyjny, jeśli tego nie ukrywa). Ale w ogólnym przypadku „prototypy kluczy” (ich opisy, kluczowe opisy) to metadane wskazujące „właściciela” wpisu w tablicy skrótów (czyli klucz publiczny jakiegoś węzła), typ przechowywanej wartości oraz zasady, według których ten wpis może być później zmieniany. Na przykład reguła może zezwalać tylko właścicielowi na zmianę wartości lub zabraniać zmiany wartości w dół (w celu ochrony przed atakami polegającymi na ponownym odtwarzaniu).

Oprócz kluczy 256-bitowych wprowadzono koncepcję adresów DHT. Różnica w przypadku zwykłych adresów hostów polega na tym, że adres DHT jest koniecznie powiązany z adresem IP. Jeśli węzeł nie ukrywa swojego adresu IP, może użyć zwykłego adresu dla DHT. Częściej jednak na potrzeby DHT tworzony będzie odrębny, „półstały” adres.
TON: Otwarta sieć telegramu. Część 1: Wprowadzenie, warstwa sieciowa, ADNL, DHT, sieci nakładkowe
Pojęcie odległości wprowadzono nad kluczami i adresami DHT - w tym wszystko pokrywa się z tabelami Kademli — odległość między kluczami jest równa ich XOR (bitowe wyłączne OR). Podobnie jak w tabelach Kademlii, należy zapisać wartość odpowiadającą danemu kluczowi s węzły, które mają najkrótszą odległość do tego klucza (s tutaj jest stosunkowo niewielka liczba).

Aby węzeł DHT mógł komunikować się z innymi tego typu węzłami, jest on przechowywany w pamięci Tabela routingu DHT — Adresy DHT i IP węzłów, z którymi wcześniej współpracował, pogrupowane według odległości od nich. Takich grup jest 256 (odpowiadają one najbardziej znaczącemu bitowi ustawionemu w wartości odległości - czyli węzły w odległości od 0 do 255 wpadną do jednej grupy, od 256 do 65535 - do następnej itd.). W każdej grupie przechowywana jest ograniczona liczba „najlepszych” węzłów (pod względem pingowania do nich).

TON: Otwarta sieć telegramu. Część 1: Wprowadzenie, warstwa sieciowa, ADNL, DHT, sieci nakładkowe

Każdy węzeł musi obsługiwać kilka operacji: przechowywanie wartości klucza, wyszukiwanie węzłów и szukać wartości. Wyszukiwanie węzłów polega na wydawaniu, na podstawie danego klucza, z tablicy routingu najbliższych mu węzłów; wyszukiwanie wartości przebiega tak samo, z wyjątkiem sytuacji, gdy węzeł zna wartość klucza (wtedy po prostu ją zwraca). Odpowiednio, jeśli węzeł chce znaleźć wartość według klucza w DHT, wysyła żądania ze swojej tablicy routingu do niewielkiej liczby węzłów znajdujących się najbliżej tego klucza. Jeśli w ich odpowiedziach nie ma wymaganej wartości, ale istnieją inne adresy węzłów, wówczas żądanie jest do nich powtarzane.

TON DHT można wykorzystać do różnych celów, na przykład do wdrożenia przechowywania plików podobnego do torrenta (patrz. Przechowywanie TON); w celu ustalenia adresów węzłów realizujących określone usługi; do przechowywania informacji o właścicielach kont w blockchainie. Ale najważniejszym zastosowaniem jest odkrywanie węzłów na podstawie ich abstrakcyjnych adresów. W tym celu adres służy jako klucz, którego wartość należy znaleźć. W wyniku żądania albo zostanie znaleziony sam węzeł (jeśli wyszukiwanym adresem był jego półstały adres DHT), albo wartością będzie adres IP i port połączenia - lub inny adres, który powinien zostać użyty jako tunel pośredni.

Sieci nakładkowe w TON

Opisany powyżej protokół ADNL zakłada zdolność dowolnych węzłów do wymiany informacji między sobą – choć niekoniecznie w optymalny sposób. Można powiedzieć, że dzięki ADNL wszystkie węzły tworzą globalny graf TON (idealnie połączony). Ale dodatkowo możliwe jest tworzenie sieci nakładkowych - podgrafów w obrębie tego wykresu.
TON: Otwarta sieć telegramu. Część 1: Wprowadzenie, warstwa sieciowa, ADNL, DHT, sieci nakładkowe

W takiej sieci interakcja odbywa się wyłącznie bezpośrednio – poprzez wcześniej utworzone połączenia pomiędzy węzłami uczestniczącymi w sieci (poprzez opisane powyżej kanały ADNL). Tworzenie takich połączeń między sąsiadami, poszukiwanie samych sąsiadów to automatyczny proces, który ma na celu utrzymanie łączności sieci nakładkowej i minimalizację opóźnień w wymianie danych w niej.

Ponadto istnieje sposób na szybką dystrybucję dużych aktualizacji rozgłoszeniowych w sieci - są one dzielone na kawałki, uzupełniane kodem korekcji błędów i wszystkie te fragmenty przesyłane są od jednego uczestnika do drugiego. Dzięki temu uczestnik nie musi w całości pozyskiwać wszystkich części przed przesłaniem ich dalej siecią.

Sieci nakładkowe mogą być publiczne lub prywatne. Zostanie członkiem sieci publicznej nie jest trudne - trzeba znaleźć strukturę TL, która to opisuje (może być publiczna lub dostępna po określonym kluczu w DHT). W przypadku sieci prywatnej węzeł musi wcześniej znać tę strukturę.

Aby być kontynuowane

Postanowiłem podzielić recenzję TON na kilka artykułów. W tym miejscu kończy się ta część i w następnym Przechodzę do rozważenia struktury blockchain (dokładniej blockchainów), z których będzie się składał TON.

Źródło: www.habr.com

Dodaj komentarz