{"id":34632,"date":"2019-10-31T21:59:31","date_gmt":"2019-10-31T18:59:31","guid":{"rendered":"https:\/\/prohoster.info\/blog\/ton-telegram-open-network-chast-1-vstuplenie-setevoj-uroven-adnl-dht-overlejnye-seti\/"},"modified":"2019-10-31T21:59:31","modified_gmt":"2019-10-31T18:59:31","slug":"ton-telegram-open-network-chast-1-vstuplenie-setevoj-uroven-adnl-dht-overlejnye-seti","status":"publish","type":"post","link":"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/ton-telegram-open-network-chast-1-vstuplenie-setevoj-uroven-adnl-dht-overlejnye-seti","title":{"rendered":"TON: Telegram Open Network. Cz\u0119\u015b\u0107 1: Wprowadzenie, poziom sieciowy, ADNL, DHT, sieci na\u0142o\u017cone.","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"TON: Telegram Open Network. Cz\u0119\u015b\u0107 1: Wprowadzenie, poziom sieciowy, ADNL, DHT, sieci na\u0142o\u017cone.\" src=\"\/wp-content\/uploads\/2019\/05\/65710678b9e432476cf1b6e24348a7ac.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ju\u017c od dw\u00f3ch tygodni Runet huczy na temat Telegramu i sytuacji z jego bezsensown\u0105 i bezwzgl\u0119dn\u0105 blokad\u0105 przez Roskomnadzor. Ricochetem odczuli to wielu, ale to wszystko \u2014 tematy na posty na Geektimes. Mnie jednak zaskoczy\u0142o co\u015b innego \u2014 wci\u0105\u017c nie widzia\u0142em na Habrze \u017cadnej analizy zaplanowanego wydania sieci TON \u2014 Telegram Open Network, opartej na Telegramie. Chcia\u0142em to uzupe\u0142ni\u0107, poniewa\u017c jest to naprawd\u0119 warte zbadania \u2014 nawet pomimo braku oficjalnych o\u015bwiadcze\u0144 na ten temat.<\/p>\n<p><\/p>\n<p>Przypominam \u2014 kr\u0105\u017c\u0105 plotki, \u017ce Telegram uruchomi\u0142 bardzo du\u017c\u0105 zamkni\u0119t\u0105 ICO, zbieraj\u0105c ju\u017c niewiarygodne sumy. Zak\u0142ada si\u0119, \u017ce ju\u017c w tym roku zostanie uruchomiona w\u0142asna kryptowaluta Gram \u2014 a ka\u017cdy u\u017cytkownik Telegramu automatycznie dostanie portfel, co samo w sobie stwarza du\u017c\u0105 przewag\u0119 nad innymi kryptowalutami.<\/p>\n<p><\/p>\n<p>Niestety, poniewa\u017c brak jest oficjalnych o\u015bwiadcze\u0144, mog\u0119 si\u0119 teraz opiera\u0107 tylko na <noindex><a rel=\"nofollow\" href=\"https:\/\/denull.ru\/telegram\/ton-tech.pdf\">dokumencie o nieznanym pochodzeniu<\/a><\/noindex>, o czym od razu was uprzedzam. Oczywi\u015bcie, mo\u017ce to by\u0107 bardzo zmy\u015blona podr\u00f3bka, ale nie mo\u017cna wykluczy\u0107, \u017ce to jest rzeczywisty whitepaper przysz\u0142ego systemu, napisany przez Nikolaja Durova (i prawdopodobnie wyciekni\u0119ty przez kogo\u015b z inwestor\u00f3w). Ale nawet je\u015bli to fa\u0142szywka, nikt nie zabroni nam tego bada\u0107 i dyskutowa\u0107, prawda?<\/p>\n<p><\/p>\n<p>Co wi\u0119c m\u00f3wi ten dokument? Postaram si\u0119 stre\u015bci\u0107 go swoimi s\u0142owami, blisko tekstu, ale po polsku i nieco bardziej ludzkimi s\u0142owami (niech mi wybaczy Nikolaj za jego tendencj\u0119 do formalnej matematyki). Miejcie na uwadze, \u017ce nawet w przypadku jego autentyczno\u015bci, jest to szkicowy opis systemu i najprawdopodobniej zmieni si\u0119 do momentu publicznego uruchomienia.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>Dowiadujemy si\u0119, \u017ce opr\u00f3cz kryptowaluty przewiduje si\u0119 jeszcze bardzo, bardzo wiele innych rzeczy. Roz\u0142\u00f3\u017cmy to w kolejno\u015bci.<\/p>\n<p><\/p>\n<ul>\n<li><strong>TON Blockchain<\/strong>. To podstawa ca\u0142ego systemu. Je\u015bli nie wiecie, co to jest <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%91%D0%BB%D0%BE%D0%BA%D1%87%D0%B5%D0%B9%D0%BD\">blockchain<\/a><\/noindex> \u2014 polecam si\u0119 zapozna\u0107, poniewa\u017c b\u0119dzie tutaj wiele blockhain\u00f3w. Zagnie\u017cd\u017cone jeden w drugi, wirtualnie podzielone, a nawet \u201epionowe\u201d blockhainy wewn\u0105trz blockhain\u00f3w innych blockhain\u00f3w. A tak\u017ce b\u0119d\u0105 pojawia\u0107 si\u0119 kilka \u015bwietnie brzmi\u0105cych termin\u00f3w, takich jak <em>Instant Hypercube Routing<\/em> i <em>Infinite Sharding Paradigm<\/em>, ale o tym p\u00f3\u017aniej. I oczywi\u015bcie, proof-of-stake oraz inteligentne kontrakty.<\/li>\n<li><strong>TON P2P Network<\/strong>. Sie\u0107 peer-to-peer, na kt\u00f3rej b\u0119dzie oparta praca systemu. O tym b\u0119dzie mowa w tej cz\u0119\u015bci narracji.<\/li>\n<li><strong>TON Storage<\/strong>. System plik\u00f3w, kt\u00f3re b\u0119dzie zbudowane na wspomnianej wcze\u015bniej sieci peer-to-peer, niezale\u017cnie od blockchaina. Mo\u017cna to por\u00f3wna\u0107 do torrent\u00f3w.<\/li>\n<li><strong>TON Proxy<\/strong>. Jest to us\u0142uga, kt\u00f3rej celem jest zwi\u0119kszenie anonimowo\u015bci uczestnik\u00f3w sieci. Ka\u017cdy pakiet mo\u017ce by\u0107 wysy\u0142any nie bezpo\u015brednio, lecz przez po\u015brednicz\u0105ce tunele z dodatkowym szyfrowaniem \u2014 podobnie jak w przypadku I2P lub TOR. <\/li>\n<li><strong>TON DHT<\/strong>. Rozproszona tablica haszy do przechowywania dowolnych warto\u015bci. Jest ona r\u00f3wnie\u017c zbudowana na <em>TON Network<\/em> (ale u\u017cywa tej samej technologii) i pomaga <strong>TON Storage<\/strong> znajdowa\u0107 \u201eudost\u0119pniaj\u0105ce\u201d w\u0119z\u0142y, a <strong>TON Proxy<\/strong> \u2014 po\u015brednich retranslator\u00f3w. Warto jednak zaznaczy\u0107, \u017ce w przeciwie\u0144stwie do blockchaina, ta tablica haszy nie jest bezpiecznym magazynem \u2014 nie nale\u017cy przechowywa\u0107 w niej wa\u017cnych informacji.<\/li>\n<li><strong>TON Services<\/strong>. Platforma dla r\u00f3\u017cnych us\u0142ug. W zasadzie jest to nowy internet oparty na wszystkim powy\u017cszym. Wymiana danych odbywa si\u0119 przez <strong>TON Network<\/strong>\/<strong>TON Proxy<\/strong>, a logika opiera si\u0119 na smart kontraktach tego <strong>TON Blockchain<\/strong>. I interfejs z do\u015b\u0107 znajomymi adresami URL.<\/li>\n<li><strong>TON DNS<\/strong>. Skoro ju\u017c m\u00f3wimy o znajomych adresach URL, potrzebny jest tak\u017ce konwerter z nich na 256-bitowe adresy \u2014 konta, kontrakty, us\u0142ugi i w\u0119z\u0142y.<\/li>\n<li><strong>TON Payments<\/strong>. I tutaj zaczyna si\u0119 kwestia finansowa. B\u0119dzie to nie tylko <strong>gram<\/strong> \u2014 jak w przypadku Etheru, b\u0119d\u0105 mo\u017cliwe wszelkie \u201etokeny\u201d; gramy b\u0119d\u0105 jedynie walut\u0105 \u201edomy\u015bln\u0105\u201d.<\/li>\n<\/ul>\n<p><\/p>\n<p>To pierwsza cz\u0119\u015b\u0107, opisuj\u0105ca \u201eprzyziemny\u201d poziom TON \u2014 jego cz\u0119\u015b\u0107 sieciow\u0105, buduj\u0105c\u0105 si\u0119 na tradycyjnych protoko\u0142ach. W nast\u0119pnej cz\u0119\u015bci mowa b\u0119dzie o \u201emi\u0119kiszu\u201d \u2014 blockchainie, kt\u00f3ry b\u0119dzie wspierany przez opisan\u0105 poni\u017cej system. W ten spos\u00f3b moje podej\u015bcie do narracji nieco r\u00f3\u017cni si\u0119 od tego u\u017cytego w wspomnianym dokumencie (kt\u00f3ry zaczyna si\u0119 od razu od poziomu abstrakcyjnego).<\/p>\n<p><\/p>\n<h3 id=\"bazovye-ponyatiya\">Podstawowe poj\u0119cia<\/h3>\n<p><\/p>\n<p><strong>TL<\/strong> (Type Language). To abstrakcyjny format binarny dla dowolnych struktur danych. Jest u\u017cywany w protokole Telegramu i b\u0119dzie aktywnie wykorzystywany w TON. Je\u015bli chcesz dok\u0142adnie si\u0119 z nim zapozna\u0107 \u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/core.telegram.org\/mtproto\/TL\">oto jego opis<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p><strong>Hash<\/strong> (<em>hash<\/em>). Funkcja, kt\u00f3ra dokonuje nieodwracalnej transformacji dowolnej struktury danych w pojedyncz\u0105 liczb\u0119 o sta\u0142ej d\u0142ugo\u015bci. W dokumentacji odwo\u0142uje si\u0119 do funkcji <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/SHA-2\">SHA-256<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p><strong>W\u0119ze\u0142 sieci<\/strong> (<em>node<\/em>). W\u0119ze\u0142 to oprogramowanie, kt\u00f3re zapewni dzia\u0142anie systemu. W szczeg\u00f3lno\u015bci przewiduje si\u0119, \u017ce ka\u017cda aplikacja kliencka Telegrama b\u0119dzie zawiera\u0107 w\u0119ze\u0142 TON\u2019a. Na niskim poziomie w\u0119z\u0142y maj\u0105 adresy IPv4\/IPv6 i komunikuj\u0105 si\u0119 za pomoc\u0105 protoko\u0142u UDP, na wy\u017cszym \u2014 posiadaj\u0105 <em>adresy abstrakcyjne<\/em> i realizuj\u0105 protok\u00f3\u0142 ADNL (o adresach abstrakcyjnych i ADNL \u2014 zobacz poni\u017cej). Kiedy m\u00f3wimy, \u017ce niekt\u00f3re cz\u0119\u015bci systemu co\u015b robi\u0105 lub przechowuj\u0105 dane \u2014 rozumiemy, \u017ce robi\u0105 to w\u0119z\u0142y sieci.<\/p>\n<p><\/p>\n<p><strong>Adres abstrakcyjny<\/strong> (lub po prostu <em>adres<\/em>, <em>address<\/em>). Adres w\u0119z\u0142a okre\u015bla jego klucz publiczny. \u015acis\u0142ej m\u00f3wi\u0105c \u2014 to 256-bitowy hash (SHA256) struktury danych zawieraj\u0105cej klucz publiczny (konkretny algorytm kryptograficzny nie jest okre\u015blony \u2014 przyk\u0142adami s\u0105 krzywe eliptyczne i RSA-2048). Aby jeden w\u0119ze\u0142 m\u00f3g\u0142 komunikowa\u0107 si\u0119 z innym, musi zna\u0107 nie tylko adres tego drugiego, ale tak\u017ce t\u0119 struktur\u0119 danych. Teoretycznie jeden fizyczny w\u0119ze\u0142 mo\u017ce stworzy\u0107 dowoln\u0105 liczb\u0119 adres\u00f3w (odpowiadaj\u0105cych r\u00f3\u017cnym kluczom).<\/p>\n<p><\/p>\n<p>Cz\u0119sto u\u017cywa si\u0119 takiego po\u0142\u0105czenia: \u201eprototyp\u201d w postaci struktury TL (zawieraj\u0105cej praktycznie dowolne dane), i 256-bitowy hash z niej, u\u017cywany do adresowania.<\/p>\n<p><\/p>\n<p><strong>Blockchain<\/strong> (<em>blockchain<\/em>). Blockchain to struktura danych, kt\u00f3rej elementy (<em>bloki<\/em>) s\u0105 uporz\u0105dkowane w \u201e\u0142a\u0144cuch\u201d, a ka\u017cdy nast\u0119pny blok \u0142a\u0144cucha zawiera hash poprzedniego. W ten spos\u00f3b osi\u0105gana jest integralno\u015b\u0107 \u2014 zmiany mog\u0105 by\u0107 wprowadzane tylko przez dodanie nowych blok\u00f3w.<\/p>\n<p><\/p>\n<p><strong>Serwis<\/strong> (<em>service<\/em>). Us\u0142ugi w ramach TON mog\u0105 mie\u0107 r\u00f3\u017cne typy \u2014 w zale\u017cno\u015bci od tego, czy u\u017cywaj\u0105 blockchaina, czy nie. Na przyk\u0142ad jeden (lub wiele) w\u0119z\u0142\u00f3w sieci mo\u017ce obs\u0142ugiwa\u0107 pewne zapytania RPC zgodnie z opisanym poni\u017cej protoko\u0142em ADNL, nie tworz\u0105c \u017cadnych zapis\u00f3w w blockchainie \u2014 podobnie jak tradycyjne serwery WWW. Rozwa\u017ca si\u0119 r\u00f3wnie\u017c mo\u017cliwo\u015b\u0107 wdro\u017cenia HTTP nad ADNL, a tak\u017ce przej\u015bcie samego komunikatora na ten protok\u00f3\u0142. Podobnie jak w przypadku TOR lub I2P, uczyni to go bardziej odpornym na r\u00f3\u017cne blokady.<\/p>\n<p><\/p>\n<p>Jednocze\u015bnie niekt\u00f3re us\u0142ugi zak\u0142adaj\u0105 zar\u00f3wno interakcj\u0119 z blockchainem, jak i przetwarzanie zapyta\u0144 poza nim. Na przyk\u0142ad w przypadku TON Storage \u2014 magazynu plik\u00f3w \u2014 przechowywanie samych plik\u00f3w w blockchainie nie ma sensu. B\u0119d\u0105 w nim jedynie zawarte hashe plik\u00f3w (razem z pewnymi informacjami meta na ich temat), a jako \u00abserwery plikowe\u00bb b\u0119d\u0105 wyst\u0119powa\u0107 wyspecjalizowane w\u0119z\u0142y sieci, gotowe do udost\u0119pniania ich innym w\u0119z\u0142om przez ADNL.<\/p>\n<p><\/p>\n<p><strong>Us\u0142uga mg\u0142y<\/strong> (<em>fog service<\/em>). Mowa o niekt\u00f3rych us\u0142ugach, kt\u00f3re zak\u0142adaj\u0105 decentralizacj\u0119 i otwarte uczestnictwo. Na przyk\u0142ad TON Proxy \u2014 to us\u0142uga, kt\u00f3r\u0105 mo\u017ce wspiera\u0107 ka\u017cdy uczestnik, kt\u00f3ry chce udost\u0119pni\u0107 sw\u00f3j w\u0119ze\u0142 jako po\u015brednika (proxy), przesy\u0142aj\u0105cego pakiety mi\u0119dzy innymi w\u0119z\u0142ami. W razie ch\u0119ci mo\u017ce pobiera\u0107 ustalon\u0105 przez siebie op\u0142at\u0119 \u2014 korzystaj\u0105c z systemu TON Payments do mikrop\u0142atno\u015bci (kt\u00f3ry z kolei r\u00f3wnie\u017c jest us\u0142ug\u0105 mg\u0142y).<\/p>\n<p><\/p>\n<h3 id=\"adnl-abstract-datagram-network-layer\">ADNL: Abstrakcyjna warstwa sieci datagram\u00f3w<\/h3>\n<p><\/p>\n<p>Na najni\u017cszym poziomie interakcja mi\u0119dzy w\u0119z\u0142ami b\u0119dzie odbywa\u0107 si\u0119 za pomoc\u0105 protoko\u0142u UDP (chocia\u017c dopuszczalne s\u0105 inne opcje).<\/p>\n<p><\/p>\n<p>Jak wspomniano wcze\u015bniej, aby jeden w\u0119ze\u0142 m\u00f3g\u0142 wys\u0142a\u0107 pakiet do drugiego, musi zna\u0107 jeden z jego kluczy publicznych (a tym samym adres przypisany do niego). Szyfruje pakiet tym kluczem i dodaje na pocz\u0105tku pakietu 256-bitowy adres odbiorcy \u2014 poniewa\u017c jeden w\u0119ze\u0142 mo\u017ce mie\u0107 kilka takich adres\u00f3w, pozwoli to okre\u015bli\u0107, kt\u00f3ry klucz u\u017cy\u0107 do odszyfrowania.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TON: Telegram Open Network. Cz\u0119\u015b\u0107 1: Wprowadzenie, poziom sieciowy, ADNL, DHT, sieci na\u0142o\u017cone.\" src=\"\/wp-content\/uploads\/2019\/05\/570ed97bb0745d074e806e84651af567.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ponadto, zamiast adresu odbiorcy, na pocz\u0105tku pakietu danych mo\u017ce znajdowa\u0107 si\u0119 tzw. identyfikator <em>kana\u0142u<\/em>. W takim przypadku przetwarzanie pakietu zale\u017cy od konkretnych ustale\u0144 mi\u0119dzy w\u0119z\u0142ami \u2014 na przyk\u0142ad, dane wys\u0142ane do okre\u015blonego kana\u0142u mog\u0105 by\u0107 przeznaczone dla innego w\u0119z\u0142a i powinny by\u0107 do niego przekazywane (to jest us\u0142uga <em>TON Proxy<\/em>). Inny szczeg\u00f3lny przypadek mo\u017ce by\u0107 bezpo\u015brednia interakcja mi\u0119dzy w\u0119z\u0142ami, ale z szyfrowaniem za pomoc\u0105 indywidualnej pary kluczy dla tego kana\u0142u (wcze\u015bniej utworzonej zgodnie z protoko\u0142em Diffiego-Hellmana).<\/p>\n<p><\/p>\n<p>W ko\u0144cu szczeg\u00f3lnym przypadkiem jest \u00bbzerowy\u00ab kana\u0142 \u2013 je\u015bli w\u0119ze\u0142 jeszcze nie zna publicznych kluczy swoich \u00bbs\u0105siad\u00f3w\u00ab, mo\u017ce wysy\u0142a\u0107 im pakiety bez szyfrowania. To jest przeznaczone tylko do inicjalizacji \u2013 gdy w\u0119z\u0142y prze\u015bl\u0105 informacje o swoich kluczach, powinny by\u0107 one u\u017cyte do dalszej interakcji.<\/p>\n<p><\/p>\n<p>Opisany powy\u017cej protok\u00f3\u0142 (256-bitowy identyfikator kana\u0142u + zawarto\u015b\u0107 pakietu) nazywa si\u0119 ADNL. Dokumentacja wspomina o mo\u017cliwo\u015bci realizacji analogowego TCP na jego bazie lub w\u0142asnej nak\u0142adki \u2013 RLDP (Reliable Large Datagram Protocol), ale nie wchodzi w szczeg\u00f3\u0142y dotycz\u0105ce ich implementacji.<\/p>\n<p><\/p>\n<h3 id=\"ton-dht-raspredelyonnaya-hesh-tablica\">TON DHT: Rozproszona tabela haszuj\u0105ca<\/h3>\n<p><\/p>\n<p>Jak w przypadku innych rozproszonych system\u00f3w, TON przewiduje implementacj\u0119 DHT \u2013 <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%A0%D0%B0%D1%81%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D1%91%D0%BD%D0%BD%D0%B0%D1%8F_%D1%85%D0%B5%D1%88-%D1%82%D0%B0%D0%B1%D0%BB%D0%B8%D1%86%D0%B0\">rozproszonej tabeli haszuj\u0105cej<\/a><\/noindex>. Bardziej konkretnie \u2013 tabela jest <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/Kademlia\">podobna do Kademlii<\/a><\/noindex>. Je\u015bli nie znasz tego typu tabel haszuj\u0105cych \u2013 nie martw si\u0119, poni\u017cej w skr\u00f3cie opisz\u0119, jak one dzia\u0142aj\u0105.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TON: Telegram Open Network. Cz\u0119\u015b\u0107 1: Wprowadzenie, poziom sieciowy, ADNL, DHT, sieci na\u0142o\u017cone.\" src=\"\/wp-content\/uploads\/2019\/05\/790d623466c72c78ee17fa298ac9d81d.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>W abstrakcyjnym sensie DHT przypisuje 256-bitowym kluczom pewne binarne warto\u015bci o dowolnej d\u0142ugo\u015bci. Klucze w tabeli to hashe okre\u015blonej struktury TL (same struktury r\u00f3wnie\u017c s\u0105 przechowywane razem z DHT). To bardzo przypomina tworzenie adres\u00f3w w\u0119z\u0142\u00f3w \u2013 i mog\u0105 one rzeczywi\u015bcie znajdowa\u0107 si\u0119 w DHT (na przyk\u0142ad pod takim kluczem mo\u017ce znajdowa\u0107 si\u0119 adres IP w\u0119z\u0142a odpowiadaj\u0105cego zadanemu <em>abstrakcyjnemu adresowi<\/em>, je\u015bli nie ukrywa go). W og\u00f3lnym przypadku \u201ewzory kluczy\u201d (ich <em>opisy<\/em>, <em>key descriptions<\/em>) \u2013 to metadane, kt\u00f3re wskazuj\u0105 na \u201ew\u0142a\u015bciciela\u201d wpisu w tabeli haszuj\u0105cej (tj. publiczny klucz jakiego\u015b w\u0119z\u0142a), typ przechowywanej warto\u015bci oraz zasady, zgodnie z kt\u00f3rymi ten wpis mo\u017ce p\u00f3\u017aniej by\u0107 zmieniany. Na przyk\u0142ad zasada mo\u017ce zezwala\u0107 na zmian\u0119 warto\u015bci tylko w\u0142a\u015bcicielowi \u2013 lub zabrania\u0107 zmiany warto\u015bci w d\u00f3\u0142 (aby chroni\u0107 przed atakami powtarzaj\u0105cymi).<\/p>\n<p><\/p>\n<p>Opr\u00f3cz 256-bitowych kluczy wprowadza si\u0119 poj\u0119cie adres\u00f3w DHT. R\u00f3\u017cnica z zwyk\u0142ymi adresami w\u0119z\u0142\u00f3w polega na tym, \u017ce adres DHT zawsze jest zwi\u0105zany z adresem IP. Je\u015bli w\u0119ze\u0142 nie ukrywa swojego adresu IP, mo\u017ce u\u017cywa\u0107 zwyk\u0142ego adresu dla DHT. Cz\u0119\u015bciej jednak dla potrzeb DHT zak\u0142adany jest osobny, \u201ep\u00f3\u0142-sta\u0142y\u201d adres.<br \/>\n<img decoding=\"async\" alt=\"TON: Telegram Open Network. Cz\u0119\u015b\u0107 1: Wprowadzenie, poziom sieciowy, ADNL, DHT, sieci na\u0142o\u017cone.\" src=\"\/wp-content\/uploads\/2019\/05\/93064abdf9dbfd5276502cd3aa6cf8f8.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nWprowadzane s\u0105 poj\u0119cia odleg\u0142o\u015bci mi\u0119dzy kluczami a adresami DHT \u2013 w tym wszystko pokrywa si\u0119 z tabelami. <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/Kademlia\">Kademlia<\/a><\/noindex> \u2014 odleg\u0142o\u015b\u0107 mi\u0119dzy kluczami to XOR (bitowe wykluczaj\u0105ce OR) tych kluczy. Podobnie jak w tabelach Kademlia, warto\u015b\u0107 odpowiadaj\u0105ca pewnemu kluczowi musi by\u0107 przechowywana na <em>s<\/em> w\u0119z\u0142ach, kt\u00f3re maj\u0105 najmniejsz\u0105 odleg\u0142o\u015b\u0107 do tego klucza (<em>s<\/em> tutaj \u2014 stosunkowo niewielka liczba).<\/p>\n<p><\/p>\n<p>Aby w\u0119ze\u0142 DHT m\u00f3g\u0142 wsp\u00f3\u0142pracowa\u0107 z innymi takimi w\u0119z\u0142ami, przechowuje w pami\u0119ci <em>tabel\u0119 routingu DHT<\/em> \u2014 adresy DHT i IP w\u0119z\u0142\u00f3w, z kt\u00f3rymi wcze\u015bniej wsp\u00f3\u0142pracowa\u0142, pogrupowane wed\u0142ug odleg\u0142o\u015bci do nich. Jest 256 takich grup (odpowiadaj\u0105 najstarszemu ustalonemu bitowi w warto\u015bciach odleg\u0142o\u015bci \u2014 to znaczy w\u0119z\u0142y w odleg\u0142o\u015bci od 0 do 255 znajd\u0105 si\u0119 w jednej grupie, od 256 do 65535 \u2014 w nast\u0119pnej, itp.). W obr\u0119bie ka\u017cdej grupy przechowywana jest ograniczona liczba \"najlepszych\" w\u0119z\u0142\u00f3w (w kontek\u015bcie pinga do nich).<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TON: Telegram Open Network. Cz\u0119\u015b\u0107 1: Wprowadzenie, poziom sieciowy, ADNL, DHT, sieci na\u0142o\u017cone.\" src=\"\/wp-content\/uploads\/2019\/05\/9db2fef6986010db046f797f1fe68130.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ka\u017cdy w\u0119ze\u0142 musi obs\u0142ugiwa\u0107 kilka operacji: <em>zapisywanie warto\u015bci dla klucza<\/em>, <em>wyszukiwanie w\u0119z\u0142\u00f3w<\/em> i <em>wyszukiwanie warto\u015bci<\/em>. Wyszukiwanie w\u0119z\u0142\u00f3w oznacza wydanie w obr\u0119bie okre\u015blonego klucza najbli\u017cszych do niego w\u0119z\u0142\u00f3w z tabeli routingu; wyszukiwanie warto\u015bci \u2014 to samo, z wyj\u0105tkiem sytuacji, gdy w\u0119ze\u0142 zna warto\u015b\u0107 dla klucza (wtedy po prostu j\u0105 zwraca). Odpowiednio, je\u015bli w\u0119ze\u0142 chce znale\u017a\u0107 w DHT warto\u015b\u0107 dla klucza, wysy\u0142a zapytania do niewielkiej liczby najbli\u017cszych do tego klucza w\u0119z\u0142\u00f3w z tabeli routingu. Je\u015bli w\u015br\u00f3d ich odpowiedzi nie ma \u017c\u0105danej warto\u015bci, ale s\u0105 inne adresy w\u0119z\u0142\u00f3w, zapytanie jest powtarzane ju\u017c do nich.<\/p>\n<p><\/p>\n<p>TON DHT mo\u017ce by\u0107 u\u017cywane do r\u00f3\u017cnych cel\u00f3w, na przyk\u0142ad \u2014 do realizacji przechowywania plik\u00f3w podobnego do torrenta (zob. <em>TON Storage<\/em>); do okre\u015blania adres\u00f3w w\u0119z\u0142\u00f3w realizuj\u0105cych okre\u015blone us\u0142ugi; do przechowywania informacji o w\u0142a\u015bcicielach kont w blockchainie. Ale najwa\u017cniejsze zastosowanie to odkrywanie w\u0119z\u0142\u00f3w wed\u0142ug ich abstrakcyjnych adres\u00f3w. W tym celu adres jest u\u017cywany jako klucz, kt\u00f3rego warto\u015b\u0107 nale\u017cy znale\u017a\u0107. W wyniku \u017c\u0105dania albo znajdzie si\u0119 sam w\u0119ze\u0142 (je\u015bli poszukiwany adres by\u0142 jego p\u00f3\u0142sta\u0142ym adresem DHT), albo warto\u015bci\u0105 oka\u017ce si\u0119 adres IP i port do po\u0142\u0105czenia \u2014 lub inny adres, kt\u00f3ry nale\u017cy wykorzysta\u0107 jako tunel po\u015brednicz\u0105cy.<\/p>\n<p><\/p>\n<h3 id=\"overleynye-seti-v-ton\">Sieci nak\u0142adkowe w TON<\/h3>\n<p><\/p>\n<p>Opisany powy\u017cej protok\u00f3\u0142 ADNL umo\u017cliwia dowolnym w\u0119z\u0142om wymian\u0119 informacji mi\u0119dzy sob\u0105 \u2014 wprawdzie nie zawsze optymalnymi \u015bcie\u017ckami. Mo\u017cna powiedzie\u0107, \u017ce dzi\u0119ki ADNL wszystkie w\u0119z\u0142y tworz\u0105 globalny graf TON (w idealnym przypadku \u2014 sp\u00f3jny). Dodatkowo przewidziano mo\u017cliwo\u015b\u0107 tworzenia sieci nak\u0142adkowych \u2014 podgraf\u00f3w w obr\u0119bie tego grafu.<br \/>\n<img decoding=\"async\" alt=\"TON: Telegram Open Network. Cz\u0119\u015b\u0107 1: Wprowadzenie, poziom sieciowy, ADNL, DHT, sieci na\u0142o\u017cone.\" src=\"\/wp-content\/uploads\/2019\/05\/0badd85ba46517c04f63439f7dd1e8d7.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Wewn\u0119trznie w takiej sieci interakcja odbywa si\u0119 tylko bezpo\u015brednio \u2014 przez uprzednio utworzone po\u0142\u0105czenia mi\u0119dzy w\u0119z\u0142ami uczestnicz\u0105cymi w sieci (przez kana\u0142y ADNL, opisane powy\u017cej). Tworzenie takich po\u0142\u0105cze\u0144 mi\u0119dzy s\u0105siadami, wyszukiwanie samych s\u0105siad\u00f3w \u2014 to proces automatyczny, maj\u0105cy na celu zachowanie sp\u00f3jno\u015bci sieci nak\u0142adkowej oraz minimalizacj\u0119 op\u00f3\u017anie\u0144 przy wymianie danych w niej.<\/p>\n<p><\/p>\n<p>Ponadto przewidziano spos\u00f3b szybkiego rozpowszechniania du\u017cych aktualizacji rozg\u0142oszeniowych w obr\u0119bie sieci \u2014 s\u0105 one dzielone na cz\u0119\u015bci, uzupe\u0142niane kodem korekcyjnym b\u0142\u0119d\u00f3w, a wszystkie te fragmenty s\u0105 przesy\u0142ane od jednego uczestnika do drugiego. W ten spos\u00f3b uczestnik nie musi otrzyma\u0107 wszystkich cz\u0119\u015bci, zanim przeka\u017ce je dalej w sieci.<\/p>\n<p><\/p>\n<p>Sieci nak\u0142adkowe mog\u0105 by\u0107 publiczne lub prywatne. Do\u0142\u0105czenie do publicznej sieci nie jest trudne \u2014 wystarczy znale\u017a\u0107 struktur\u0119 TL, kt\u00f3ra j\u0105 opisuje (mo\u017ce by\u0107 publiczna \u2014 lub dost\u0119pna za pomoc\u0105 okre\u015blonego klucza w DHT). W przypadku prywatnej sieci ta struktura musi by\u0107 znana w\u0119z\u0142owi z wyprzedzeniem.<\/p>\n<p><\/p>\n<h3 id=\"prodolzhenie-sleduet\">Ci\u0105g dalszy nast\u0105pi<\/h3>\n<p><\/p>\n<p>Postanowi\u0142em podzieli\u0107 przegl\u0105d TON na kilka artyku\u0142\u00f3w. Ta cz\u0119\u015b\u0107 si\u0119 ko\u0144czy, a <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/post\/354568\/\">w nast\u0119pnej<\/a><\/noindex> przechodz\u0119 do om\u00f3wienia struktury blockchaina (a dok\u0142adniej \u2014 blockchain\u00f3w), z kt\u00f3rych b\u0119dzie si\u0119 sk\u0142ada\u0142 TON.<\/p>\n<p>\u0179r\u00f3d\u0142o: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/354366\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0423\u0436\u0435 \u0434\u0432\u0435 \u043d\u0435\u0434\u0435\u043b\u0438 \u0420\u0443\u043d\u0435\u0442 \u0448\u0443\u043c\u0438\u0442 \u043f\u0440\u043e Telegram \u0438 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044e \u0441 \u0435\u0433\u043e \u0431\u0435\u0441\u0441\u043c\u044b\u0441\u043b\u0435\u043d\u043d\u043e\u0439 \u0438 \u0431\u0435\u0441\u043f\u043e\u0449\u0430\u0434\u043d\u043e\u0439 \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u043e\u0439 \u0420\u043e\u0441\u043a\u043e\u043c\u043d\u0430\u0434\u0437\u043e\u0440\u043e\u043c. \u0420\u0438\u043a\u043e\u0448\u0435\u0442\u043e\u043c \u0437\u0430\u0434\u0435\u043b\u043e \u043c\u043d\u043e\u0433\u0438\u0445, \u043d\u043e \u0432\u0441\u0451 \u044d\u0442\u043e \u2014 \u0442\u0435\u043c\u044b \u0434\u043b\u044f \u043f\u043e\u0441\u0442\u043e\u0432 \u043d\u0430 Geektimes. \u041c\u0435\u043d\u044f \u0436\u0435 \u0443\u0434\u0438\u0432\u0438\u043b\u043e \u0434\u0440\u0443\u0433\u043e\u0435 \u2014 \u044f \u0434\u043e \u0441\u0438\u0445 \u043f\u043e\u0440 \u043d\u0435 \u0432\u0438\u0434\u0435\u043b \u043d\u0430 \u0425\u0430\u0431\u0440\u0435 \u043d\u0438 \u043e\u0434\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u0431\u043e\u0440\u0430 \u0437\u0430\u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u043a \u0432\u044b\u0445\u043e\u0434\u0443 \u043d\u0430 \u0431\u0430\u0437\u0435 Telegram \u0441\u0435\u0442\u0438 TON \u2014 Telegram Open [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":26099,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-34632","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/ton-telegram-open-network-chast-1-vstuplenie-setevoj-uroven-adnl-dht-overlejnye-seti\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"pl_PL\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47TON: Telegram Open Network. \u0427\u0430\u0441\u0442\u044c 1: \u0412\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u0435, \u0441\u0435\u0442\u0435\u0432\u043e\u0439 \u0443\u0440\u043e\u0432\u0435\u043d\u044c, ADNL, DHT, \u043e\u0432\u0435\u0440\u043b\u0435\u0439\u043d\u044b\u0435 \u0441\u0435\u0442\u0438 | ProHoster\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/ton-telegram-open-network-chast-1-vstuplenie-setevoj-uroven-adnl-dht-overlejnye-seti\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T18:59:31+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T18:59:31+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47TON: Telegram Open Network. Cz\u0119\u015b\u0107 1: Wprowadzenie, poziom sieciowy, ADNL, DHT, sieci nak\u0142adkowe | ProHoster","description":"","canonical_url":"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/ton-telegram-open-network-chast-1-vstuplenie-setevoj-uroven-adnl-dht-overlejnye-seti","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"pl_PL","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47TON: Telegram Open Network. \u0427\u0430\u0441\u0442\u044c 1: \u0412\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u0435, \u0441\u0435\u0442\u0435\u0432\u043e\u0439 \u0443\u0440\u043e\u0432\u0435\u043d\u044c, ADNL, DHT, \u043e\u0432\u0435\u0440\u043b\u0435\u0439\u043d\u044b\u0435 \u0441\u0435\u0442\u0438 | ProHoster","og:url":"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/ton-telegram-open-network-chast-1-vstuplenie-setevoj-uroven-adnl-dht-overlejnye-seti","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T18:59:31+00:00","article:modified_time":"2019-10-31T18:59:31+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"34632","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-21 20:00:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 02:17:24","updated":"2026-01-21 20:00:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts\/34632","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/comments?post=34632"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts\/34632\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/media\/26099"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/media?parent=34632"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/categories?post=34632"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/tags?post=34632"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}