TON: Telegram ашық желісі. 1-бөлім: Кіріспе, желілік деңгей, ADNL, DHT, қабаттасатын желілер

TON: Telegram ашық желісі. 1-бөлім: Кіріспе, желілік деңгей, ADNL, DHT, қабаттасатын желілер

Рунет екі аптадан бері Telegram және оны Роскомнадзордың мағынасыз және аяусыз бұғаттауы туралы жағдай туралы шу шығарды. Рикошет көптеген адамдарды ренжітті, бірақ мұның бәрі Geektimes-тегі жазбаларға арналған тақырыптар. Мені тағы бір нәрсе таң қалдырды - мен Telegram - Telegram Open Network негізінде шығару жоспарланған TON желісінің Habré бойынша бірде-бір талдауын әлі көрген жоқпын. Мен бұл олқылықтың орнын толтырғым келді, өйткені ол жерде оқуға болатын нәрсе бар - бұл туралы ресми мәлімдемелердің жоқтығына қарамастан.

Еске сала кетейін, Telegram өте ауқымды жабық ICO іске қосты, қазірдің өзінде керемет ақша жинады. Gram-тің жеке криптовалютасы осы жылы іске қосылады деп күтілуде және әрбір Telegram пайдаланушысында автоматты түрде әмиян болады, бұл өз алдына басқа криптовалюталардан айтарлықтай артықшылық тудырады.

Өкінішке орай, ресми мәлімдемелер болмағандықтан, мен одан әрі қарай жалғастыра аламын шығу тегі белгісіз құжат, бұл туралы мен бірден ескертемін. Әрине, бұл өте шебер жалған болуы мүмкін, бірақ бұл Николай Дуров жазған болашақ жүйенің нақты ақ қағазы болуы мүмкін (және инвесторлардың бірі ағып кеткен болуы мүмкін). Бірақ бұл жалған болса да, оны зерттеуге және талқылауға ешкім тыйым салмайды, солай ма?

Бұл құжат не дейді? Мен оны өз сөзіммен, мәтінге жақын, бірақ орыс тілінде және сәл адамгершілікпен қайталауға тырысамын (Николай формальды математикаға баруға бейімділігі үшін мені кешірсін). Бұл шынайы болса да, бұл жүйенің сипаттамасының жобасы және көпшілікке шығарылған кезде өзгеретінін есте сақтаңыз.

Біз криптовалютадан басқа көп нәрсе күтілетінін білеміз. Оны ретімен алайық.

  • TON Blockchain. Бұл бүкіл жүйенің негізі. Егер сіз оның не екенін білмесеңіз блок — Мен білуге ​​кеңес беремін, өйткені мұнда блокчейндер көп болады. Басқа блокчейндердің блоктарындағы іс жүзінде фрагменттелген және тіпті «тік» блокчейндер бір-біріне салынған. Сондай-ақ, кейбір керемет сөздер болады Жылдам Hypercube Маршруттау и Шексіз бөлу парадигмасы, бірақ бұл туралы кейінірек. Және, әрине, дәлелді және ақылды келісімшарттар.
  • TON P2P желісі. Жүйе оның негізінде құрылатын тең дәрежелі желі. Ол әңгіменің осы бөлігінде алдымен талқыланады.
  • TON сақтау орны. Файл қоймасы, ол блокчейнге қарамастан, жоғарыда аталған тең дәрежелі желіде құрылады. Торренттермен салыстыруға болады.
  • TON прокси. Бұл желі қатысушыларының анонимділігін арттыру болып табылатын қызмет. Кез келген пакетті тікелей емес, I2P немесе TOR сияқты қосымша шифрлаумен делдалдық туннельдер арқылы жіберуге болады.
  • TON DHT. Ерікті мәндерді сақтауға арналған таратылған хэш кестесі. Ол сондай-ақ үстіне салынған TON желісі (бірақ сонымен бірге оны өзі қолданады) және көмектеседі TON сақтау орны «тарату» түйіндерін табыңыз және TON прокси — аралық қайталағыштар. Бірақ блокчейнге қарағанда, бұл хэш-кесте қауіпсіз сақтау орны емес екенін атап өткен жөн - онда маңызды ақпаратты сақтай алмайсыз.
  • TON қызметтері. Жеке қызметтерге арналған платформа. Негізінде, бұл жоғарыда сипатталған барлық жаңа Интернет. Деректер алмасу – арқылы TON желісі/TON прокси, ал логика смарт келісім-шарттарында TON Blockchain. Және өте таныс URL мекенжайлары бар интерфейс.
  • TON DNS. Біз таныс URL мекенжайлары туралы айтып жатқандықтан, бізге олардан 256 биттік мекенжайларға - тіркелгілерге, келісімшарттарға, қызметтерге және түйіндерге түрлендіргіш қажет.
  • TON төлемдері. Міне, ақша мәселесі де осында. Және бұл ғана болмайды грамм — эфир сияқты, кез келген «токендер» мүмкін болады; Грамдар мұнда тек «әдепкі» валюта болады.

Бұл TON-тың «негізделген» қабатын сипаттайтын бірінші бөлік - оның дәстүрлі протоколдар үстіне салынған желілік бөлігі. Келесі бөлімде біз төменде сипатталған жүйе қолдайтын «жұмсақ» - блокчейн туралы айтатын боламыз. Осылайша, менің қайталау реті жоғарыда аталған құжатта қолданылғаннан біршама ерекшеленеді (ол бірден дерексіз деңгейден басталады).

Негізгі ұғымдар

TL (Тіл түрі). Бұл ерікті деректер құрылымдарына арналған дерексіз екілік пішім. Ол Telegram хаттамасында қолданылады және TON-да белсенді түрде қолданылатын болады. Егер сіз онымен егжей-тегжейлі танысқыңыз келсе - міне, оның сипаттамасы.

хэш (хэш). Ерікті деректер құрылымын тұрақты ұзындықтағы жалғыз санға қайтымсыз түрлендіруді жүзеге асыратын функция. Құжаттамада біз функция туралы айтамыз SHA-256.

Желі түйіні (торап). Түйін - бұл жүйенің жұмысын қамтамасыз ететін бағдарламалық құрал. Атап айтқанда, әрбір Telegram клиенттік қосымшасында TON түйіні болады деп болжануда. Төмен деңгейде түйіндер IPv4/IPv6 мекенжайларына ие және UDP хаттамасы арқылы байланысады; жоғары деңгейде олар бар дерексіз мекенжайлар және ADNL хаттамасын орындаңыз (абстрактілі мекенжайлар және ADNL туралы – төменде қараңыз). Жүйенің кейбір бөліктері бірдеңе жасайды немесе кейбір деректерді сақтайды дегенге келетін болсақ, желі түйіндері мұны жасайды деп түсініледі.

Реферат адресі (немесе жай мекен-жайы, мекен-жай). Түйіннің мекенжайы оның ашық кілтімен анықталады. Дәлірек айтқанда, бұл ашық кілті бар деректер құрылымының 256 биттік хэші (SHA256) (арнайы криптографиялық алгоритм көрсетілмеген – эллиптикалық қисықтар және RSA-2048 мысал ретінде келтірілген). Бір түйін екінші түйінмен байланысуы үшін ол тек сол түйіннің адресін ғана емес, сонымен бірге осы деректер құрылымын да білуі керек. Теорияда бір физикалық түйін мекенжайлардың кез келген санын (әртүрлі кілттерге сәйкес) жасай алады.

Әрі қарай, дәл осындай сілтеме жиі қолданылады: TL құрылымы түріндегі «прототип» (барлық дерлік деректерді қамтитын) және адрестеу үшін пайдаланылатын 256 биттік хэш.

Блоккейн (blockchain). Блокчейн – деректер құрылымы, элементтері (блоктар) олар «тізбекке» реттелген және тізбектің әрбір келесі блогында алдыңғысының хэші болады. Осылайша, тұтастыққа қол жеткізіледі - өзгертулерді тек жаңа блоктарды қосу арқылы жасауға болады.

қызмет көрсету (қызмет көрсету). TON ішіндегі қызметтер блокчейнді қолданатынына немесе пайдаланбауына байланысты әртүрлі болуы мүмкін. Мысалы, бір (немесе бірнеше) желі түйіндері дәстүрлі веб-серверлер сияқты блокчейнде ешқандай жазба жасамай, төменде сипатталған ADNL протоколын пайдаланып белгілі RPC сұрауларын өңдей алады. Оның ішінде ADNL арқылы HTTP енгізу мүмкіндігі, сондай-ақ мессенджердің өзін осы хаттамаға көшіру. TOR немесе I2P ұқсастығы бойынша бұл оны әртүрлі блоктауға төзімді етеді.

Сонымен қатар, бірқатар қызметтер блокчейнмен өзара әрекеттесуді де, одан тыс сұрауларды өңдеуді де қамтиды. Мысалы, TON Storage үшін - файлдарды сақтау - файлдарды блокчейнде сақтау өте ақылға қонымды емес. Ол тек файл хэштерін (олар туралы кейбір мета-ақпаратпен бірге) қамтиды және мамандандырылған желі түйіндері оларды ADNL арқылы басқа түйіндерге жіберуге дайын «файл серверлері» ретінде әрекет етеді.

Тұманға қарсы қызмет (тұман қызметі). Біз орталықсыздандыруды және оларға ашық қатысуды білдіретін кейбір қызметтер туралы айтып отырмыз. Мысалы, TON Proxy – бұл өз түйінін басқа түйіндер арасында делдалдық (прокси) қайта жіберу пакеттері ретінде ұсынғысы келетін кез келген қатысушы қолдайтын қызмет. Қаласаңыз, ол бұл үшін өзі белгілеген комиссияны ала алады - микротөлемдер үшін TON төлемдер жүйесін пайдалану (бұл өз кезегінде тұман қызметі).

ADNL: дерексіз деректердің желілік деңгейі

Ең төменгі деңгейде түйіндер арасындағы байланыс UDP хаттамасы арқылы жүзеге асырылады (бірақ басқа опциялар қолайлы).

Жоғарыда айтылғандай, бір түйін екінші түйінге пакетті жіберу үшін оның ашық кілттерінің бірін (демек, ол анықтайтын адресті) білуі керек. Ол пакетті осы кілтпен шифрлайды және пакеттің басына 256 биттік тағайындалған мекенжайды қосады - бір түйінде осы адрестердің бірнешеуі болуы мүмкін болғандықтан, бұл шифрды шешу үшін қандай кілтті пайдалану керектігін анықтауға мүмкіндік береді.

TON: Telegram ашық желісі. 1-бөлім: Кіріспе, желілік деңгей, ADNL, DHT, қабаттасатын желілер

Сонымен қатар, алушының мекенжайының орнына деректер пакетінің басында деп аталатындар болуы мүмкін. идентификатор арна. Бұл жағдайда пакетті өңдеу қазірдің өзінде түйіндер арасындағы нақты келісімдерге байланысты - мысалы, белгілі бір арнаға жіберілген деректер басқа түйінге арналған болуы мүмкін және оған бағытталуы керек (бұл қызмет TON прокси). Тағы бір ерекше жағдай түйіндер арасындағы тікелей өзара әрекеттесу болуы мүмкін, бірақ осы арна үшін жеке кілт жұбын қолданатын шифрлаумен (Диффи-Хеллман хаттамасы арқылы алдын ала жасалған).

Соңында, ерекше жағдай «нөлдік» арна болып табылады - егер түйін әлі «көршілерінің» ашық кілттерін білмесе, ол пакеттерді шифрлаусыз жібере алады. Бұл тек инициализацияға арналған - түйіндер өздерінің кілттері туралы ақпаратты жібергеннен кейін, олар одан әрі байланыс үшін пайдаланылуы керек.

Жоғарыда сипатталған протокол (256 бит арна идентификаторы + пакет мазмұны) ADNL деп аталады. Құжаттамада оның үстіне TCP аналогын немесе оның жеке қондырмасын - RLDP (Reliable Large Datagram Protocol) енгізу мүмкіндігі туралы айтылған, бірақ олардың орындалуы туралы егжей-тегжейлі айтылмайды.

TON DHT: Бөлінген хэш кестесі

Басқа таратылған жүйелердегідей, TON DHT енгізуді қамтиды - таратылған хэш кестесі. Нақтырақ айтқанда, кесте Кадемлия тәрізді. Егер сіз хэш-кестенің бұл түрімен таныс болмасаңыз, алаңдамаңыз, төменде мен олардың қалай жұмыс істейтінін шамамен сипаттаймын.

TON: Telegram ашық желісі. 1-бөлім: Кіріспе, желілік деңгей, ADNL, DHT, қабаттасатын желілер

Абстрактілі мағынада DHT 256 биттік кілттерді ерікті ұзындықтың екілік мәндеріне салыстырады. Бұл жағдайда кестедегі кілттер белгілі бір TL құрылымының хэштері болып табылады (құрылымдардың өзі де DHT-мен бірге сақталады). Бұл түйін мекенжайларының қалыптасуына өте ұқсас - және олар шынымен де DHT-де болуы мүмкін (мысалы, мұндай кілтті пайдаланып, берілгенге сәйкес түйіннің IP мекенжайы дерексіз мекенжай, егер ол жасырмаса). Бірақ жалпы жағдайда «кілттердің прототиптері» (олардың сипаттамалар, негізгі сипаттамалар) хэш-кестедегі жазбаның «иесін» (яғни кейбір түйіннің ашық кілті), сақталған мән түрін және осы жазбаның кейін өзгертуге болатын ережелерін көрсететін метадеректер болып табылады. Мысалы, ереже тек иесіне мәнді өзгертуге рұқсат беруі немесе мәнді төмен қарай өзгертуге тыйым салуы мүмкін (қайта ойнату шабуылдарынан қорғау үшін).

256-биттік кілттерден басқа, DHT мекенжайлары түсінігі енгізілген. Кәдімгі хост мекенжайларынан айырмашылығы, DHT мекенжайы міндетті түрде IP мекенжайымен байланысты. Егер түйін өзінің IP мекенжайын жасырмаса, ол DHT үшін әдеттегі мекенжайды пайдалана алады. Бірақ көбінесе DHT қажеттіліктері үшін бөлек, «жартылай тұрақты» мекенжай жасалады.
TON: Telegram ашық желісі. 1-бөлім: Кіріспе, желілік деңгей, ADNL, DHT, қабаттасатын желілер
Қашықтық ұғымы пернелер мен DHT мекенжайларының үстінде енгізілген - мұнда бәрі кестелерге сәйкес келеді кадемлия — пернелер арасындағы қашықтық олардың XOR (биттік эксклюзивті НЕМЕСЕ) мәніне тең. Kademlia кестелеріндегі сияқты, белгілі бір кілтке сәйкес мән сақталуы керек s осы кілтке ең қысқа қашықтыққа ие түйіндер (s мұнда салыстырмалы түрде аз сан).

DHT түйіні басқа осындай түйіндермен байланысуы үшін ол жадта сақталады DHT бағыттау кестесі — бұрын өзара әрекеттескен түйіндердің DHT және IP мекенжайлары, оларға дейінгі қашықтық бойынша топтастырылған. Мұндай 256 топ бар (олар қашықтық мәніндегі ең маңызды битке сәйкес келеді - яғни 0-ден 255-ке дейінгі қашықтықтағы түйіндер бір топқа, 256-дан 65535-ке дейін - келесіге және т.б. түседі). Әрбір топта «ең жақсы» түйіндердің шектеулі саны сақталады (оларға пинг беру тұрғысынан).

TON: Telegram ашық желісі. 1-бөлім: Кіріспе, желілік деңгей, ADNL, DHT, қабаттасатын желілер

Әрбір түйін бірнеше операцияларды қолдауы керек: кілт үшін мәнді сақтау, түйінді іздеу и мәндерді іздеу. Түйіндерді іздеу, берілген кілт негізінде маршруттау кестесінен оған жақын түйіндерді шығаруды қамтиды; Түйін кілттің мәнін білетін жағдайларды қоспағанда, мәндерді іздеу бірдей болады (одан кейін ол оны қайтарады). Сәйкесінше, егер түйін DHT ішіндегі кілт бойынша мәнді тапқысы келсе, ол өзінің маршруттау кестесінен осы кілтке ең жақын түйіндердің аз санына сұрау жібереді. Қажетті мән олардың жауаптары арасында болмаса, бірақ басқа түйін мекенжайлары болса, онда сұрау оларға қайталанады.

TON DHT әртүрлі мақсаттарда, мысалы, торрент тәрізді файлдарды сақтауды жүзеге асыру үшін пайдаланылуы мүмкін (қараңыз. TON сақтау орны); белгілі бір қызметтерді жүзеге асыратын түйіндердің мекенжайларын анықтау; блокчейндегі тіркелгі иелері туралы ақпаратты сақтау үшін. Бірақ ең маңызды қолданба - олардың дерексіз мекенжайлары бойынша түйіндерді табу. Ол үшін мекенжай мәнін табу қажет кілт ретінде пайдаланылады. Сұрау нәтижесінде не түйіннің өзі табылады (егер ізделетін мекенжай оның жартылай тұрақты DHT мекенжайы болса) немесе мән IP мекенжайы мен қосылу порты болады - немесе желі ретінде пайдаланылуы тиіс басқа мекенжай. делдалдық туннель.

TON бойынша қабаттасатын желілер

Жоғарыда сипатталған ADNL протоколы кез келген түйіндердің бір-бірімен ақпарат алмасу мүмкіндігін білдіреді - дегенмен оңтайлы жолдар міндетті түрде емес. ADNL арқасында барлық түйіндер жаһандық TON графигін құрайды (идеалды түрде қосылған) деп айта аламыз. Бірақ қосымша желілерді - осы графикте субграфтарды құруға болады.
TON: Telegram ашық желісі. 1-бөлім: Кіріспе, желілік деңгей, ADNL, DHT, қабаттасатын желілер

Мұндай желі ішінде өзара әрекеттесу тек тікелей жүзеге асырылады - желіге қатысатын түйіндер арасындағы алдын ала құрылған байланыстар арқылы (жоғарыда сипатталған ADNL арналары арқылы). Көршілер арасында мұндай байланыстарды қалыптастыру, көршілердің өздерін іздеу - бұл қабаттасқан желінің қосылуын сақтауға және ондағы деректер алмасудағы кідірістерді азайтуға бағытталған автоматты процесс.

Бұған қоса, желі ішінде үлкен хабар тарату жаңартуларын жылдам таратудың жолы бар - олар бөліктерге бөлінеді, қателерді түзету кодымен толықтырылады және бұл бөліктердің барлығы бір қатысушыдан екіншісіне жіберіледі. Осылайша, қатысушы желі бойымен әрі қарай жібермес бұрын барлық бөліктерді толығымен алудың қажеті жоқ.

Оверлейлік желілер жалпыға ортақ немесе жеке болуы мүмкін. Қоғамдық желінің мүшесі болу қиын емес – оны сипаттайтын TL құрылымын табу керек (ол жалпыға қолжетімді немесе DHT-тегі белгілі бір кілт арқылы қол жетімді болуы мүмкін). Жеке желі жағдайында бұл құрылым түйінге алдын ала белгілі болуы керек.

Жалғасы бар

Мен TON шолуын бірнеше мақалаға бөлуді шештім. Бұл бөлім осы жерде аяқталады, және келесіде Мен TON құрайтын блокчейннің құрылымын (дәлірек айтқанда, блокчейндер) қарастыруға көшемін.

Ақпарат көзі: www.habr.com

пікір қалдыру