TON: Telegram Open Network. 1-qism: Kirish, tarmoq qatlami, ADNL, DHT, qatlamli tarmoqlar

TON: Telegram Open Network. 1-qism: Kirish, tarmoq qatlami, ADNL, DHT, qatlamli tarmoqlar

Ikki haftadan beri Runet Telegram va uning Roskomnadzor tomonidan bema'ni va shafqatsiz bloklanishi bilan bog'liq vaziyat haqida shov-shuv ko'tarmoqda. Rikoset ko'p odamlarni xafa qildi, ammo bularning barchasi Geektimes-dagi postlar uchun mavzular. Meni yana bir narsa hayratda qoldirdi - Telegram - Telegram Open Network negizida chiqarilishi rejalashtirilgan TON tarmog'ining Habré bo'yicha birorta ham tahlilini hali ko'rmadim. Men bu kamchilikni to'ldirmoqchi edim, chunki u erda o'qish uchun nimadir bor - bu haqda rasmiy bayonotlar yo'qligiga qaramay.

Eslatib o‘tamiz, Telegram aql bovar qilmaydigan miqdorda pul yig‘ib bo‘lgan juda keng ko‘lamli yopiq ICO ni ishga tushirgani haqida mish-mishlar tarqalgan. Bu yil Gram’ning o‘z kriptovalyutasi sotuvga chiqarilishi kutilmoqda – va har bir Telegram foydalanuvchisi avtomatik ravishda hamyonga ega bo‘ladi, bu esa boshqa kriptovalyutalarga nisbatan sezilarli ustunlik yaratadi.

Afsuski, rasmiy bayonotlar yo'qligi sababli, men faqat davom etishim mumkin kelib chiqishi noma'lum hujjat, men sizni darhol ogohlantiraman. Albatta, bu juda mohirona soxta bo'lib chiqishi mumkin, ammo bu Nikolay Durov tomonidan yozilgan kelajak tizimning haqiqiy oq qog'ozi bo'lishi mumkin (va, ehtimol, investorlardan biri tomonidan sizdirilgan). Lekin soxta bo'lsa ham, uni o'rganish va muhokama qilishimizni hech kim taqiqlamaydi, to'g'rimi?

Ushbu hujjat nima deydi? Men buni o'z so'zlarim bilan, matnga yaqinroq, lekin rus tilida va biroz insoniyroq tarzda aytib berishga harakat qilaman (Nikolay meni rasmiy matematikaga kirishga moyilligi bilan kechirsin). Shuni yodda tutingki, agar bu haqiqiy bo'lsa ham, bu tizimning qoralama tavsifi va ommaviy ishga tushirish vaqtiga qadar o'zgarishi mumkin.

Biz kriptovalyutadan tashqari yana ko'p narsa kutilayotganini bilib olamiz. Keling, tartibda olaylik.

  • TON blokasi. Bu butun tizimning asosidir. Agar bu nima ekanligini bilmasangiz blok — Men bilishni tavsiya qilaman, chunki bu yerda blokcheynlar ko‘p bo‘ladi. Bir-birining ichida joylashgan, boshqa blokcheynlar bloklari ichida deyarli bo'laklangan va hatto "vertikal" blokcheynlar. kabi ba'zi ajoyib atamalar ham bo'ladi Instant Hypercube Routing и Cheksiz Sharding Paradigmasi, lekin bu haqda keyinroq. Va, albatta, dalil va aqlli shartnomalar.
  • TON P2P tarmog'i. Tizim negizida quriladigan peer-to-peer tarmog'i. U birinchi navbatda hikoyaning ushbu qismida muhokama qilinadi.
  • TON saqlash. Blok zanjiridan qat'i nazar, yuqorida aytib o'tilgan peer-to-peer tarmog'ida quriladigan fayllarni saqlash. Torrent bilan solishtirish mumkin.
  • TON proksi. Bu tarmoq ishtirokchilarining anonimligini oshirishdan iborat xizmatdir. Har qanday paket to'g'ridan-to'g'ri emas, balki I2P yoki TOR kabi qo'shimcha shifrlangan vositachi tunnellar orqali yuborilishi mumkin.
  • TON DHT. Ixtiyoriy qiymatlarni saqlash uchun taqsimlangan xesh jadvali. U ham tepada qurilgan TON tarmog'i (lekin shu bilan birga u tomonidan ishlatiladi) va yordam beradi TON saqlash "tarqatish" tugunlarini toping va TON proksi — oraliq takrorlagichlar. Ammo shuni ta'kidlash kerakki, blokcheyndan farqli o'laroq, bu xesh-jadval xavfsiz saqlash joyi emas, unda muhim ma'lumotlarni saqlab bo'lmaydi.
  • TON xizmatlari. Maxsus xizmatlar uchun platforma. Aslini olganda, bu yuqorida tavsiflangan barcha narsalarning ustiga yangi Internet. Ma'lumotlar almashinuvi - orqali TON tarmog'i/TON proksi, va mantiq aqlli shartnomalarida TON blokasi. Va juda tanish URL-manzillar bilan interfeys.
  • TON DNS. Biz tanish URL-manzillar haqida gapirayotganimiz sababli, ulardan 256-bitli manzillarga - hisoblar, shartnomalar, xizmatlar va tugunlarga konvertor ham kerak.
  • TON to'lovlari. Va bu erda pul muammosi paydo bo'ladi. Va bu nafaqat bo'ladi gramm — efirda bo'lgani kabi, har qanday "tokenlar" ham mumkin bo'ladi; Gramlar bu erda faqat "standart" valyuta bo'ladi.

Bu TON ning "tuproqli" qatlamini tavsiflovchi birinchi qism - uning an'anaviy protokollar ustiga qurilgan tarmoq qismi. Keyingi qismda biz quyida tavsiflangan tizim tomonidan qo'llab-quvvatlanadigan "yumshoq" - blokcheyn haqida gaplashamiz. Shunday qilib, mening takrorlash tartibim yuqorida aytib o'tilgan hujjatda ishlatilganidan biroz farq qiladi (bu darhol mavhum darajadan boshlanadi).

Asosiy tushunchalar

TL (Til turi). Bu ixtiyoriy ma'lumotlar tuzilmalari uchun mavhum ikkilik formatdir. U Telegram protokolida ishlatiladi va TONda faol foydalaniladi. Agar siz u bilan batafsil tanishmoqchi bo'lsangiz - bu erda uning tavsifi.

Hash (xash). O'zboshimchalik bilan ma'lumotlar strukturasini qat'iy uzunlikdagi yagona raqamga qaytarib bo'lmaydigan o'zgartirishni amalga oshiradigan funktsiya. Hujjatlar davomida biz funktsiya haqida gapiramiz SHA-256.

Tarmoq tugun (Tugunni tanlang). Tugun - bu tizimning ishlashini ta'minlaydigan dasturiy ta'minot. Xususan, har bir Telegram mijoz ilovasi TON tugunini o‘z ichiga olishi taxmin qilinmoqda. Past darajadagi tugunlar IPv4/IPv6 manzillariga ega va UDP protokoli yordamida aloqa qiladilar; yuqoriroq darajada esa ular mavjud. mavhum manzillar va ADNL protokolini amalga oshirish (mavhum manzillar va ADNL haqida - pastga qarang). Tizimning ba'zi qismlari biror narsa qilishi yoki ba'zi ma'lumotlarni saqlashi haqida gap ketganda, bu tarmoq tugunlari tomonidan amalga oshirilishi tushuniladi.

Abstrakt manzil (yoki oddiygina manzili, manzil). Tugunning manzili uning ochiq kaliti bilan aniqlanadi. Aniqroq aytganda, bu ochiq kalitni o'z ichiga olgan ma'lumotlar strukturasining 256 bitli xeshi (SHA256) (maxsus kriptografik algoritm ko'rsatilmagan - elliptik egri chiziqlar va RSA-2048 misollar sifatida keltirilgan). Bitta tugun boshqasi bilan aloqa o'rnatishi uchun u nafaqat uning manzilini, balki ma'lumotlar strukturasini ham bilishi kerak. Nazariy jihatdan, bitta jismoniy tugun istalgan miqdordagi manzillarni yaratishi mumkin (turli kalitlarga mos keladi).

Bundan tashqari, aynan shunday havola ko'pincha ishlatiladi: TL tuzilmasi ko'rinishidagi "prototip" (deyarli har qanday ma'lumotlarni o'z ichiga oladi) va undan 256 bitli xesh manzillash uchun ishlatiladi.

Bloksan (blockchain). Blokcheyn - bu ma'lumotlar tuzilishi, elementlari (bloklar) ular "zanjir" ga tartiblangan va zanjirning har bir keyingi bloki avvalgisining xeshini o'z ichiga oladi. Shu tarzda, yaxlitlikka erishiladi - o'zgarishlar faqat yangi bloklarni qo'shish orqali amalga oshirilishi mumkin.

xizmat (xizmat). TON ichidagi xizmatlar blokcheyndan foydalanadimi yoki yo'qligiga qarab har xil turdagi bo'lishi mumkin. Misol uchun, bitta (yoki bir nechta) tarmoq tugunlari an'anaviy veb-serverlar kabi blokcheynda hech qanday yozuv yaratmasdan, quyida tavsiflangan ADNL protokolidan foydalangan holda ma'lum RPC so'rovlarini qayta ishlashi mumkin. Shu jumladan ADNL orqali HTTPni amalga oshirish imkoniyati, shuningdek, messenjerning o'zini ushbu protokolga o'tkazish. TOR yoki I2P bilan taqqoslaganda, bu uni turli blokirovkalarga nisbatan chidamliroq qiladi.

Shu bilan birga, bir qator xizmatlar blokcheyn bilan o'zaro aloqani va undan tashqarida so'rovlarni qayta ishlashni o'z ichiga oladi. Masalan, TON Storage uchun - fayllarni saqlash - fayllarni blokcheynda saqlash juda oqilona emas. U faqat fayl xeshlarini (ular haqida ba'zi meta-ma'lumotlar bilan birga) o'z ichiga oladi va maxsus tarmoq tugunlari ularni ADNL orqali boshqa tugunlarga yuborishga tayyor bo'lgan "fayl serverlari" vazifasini bajaradi.

Tuman xizmati (tuman xizmati). Biz markazsizlashtirish va ularda ochiq ishtirok etishni nazarda tutadigan ba'zi xizmatlar haqida gapiramiz. Masalan, TON Proksi - bu o'z tugunini boshqa tugunlar o'rtasida paketlarni yo'naltiruvchi vositachi (proksi) sifatida taqdim etmoqchi bo'lgan har qanday ishtirokchi tomonidan qo'llab-quvvatlanishi mumkin bo'lgan xizmatdir. Agar xohlasa, u buning uchun o'zi belgilagan to'lovni olishi mumkin - mikroto'lovlar uchun TON Payments tizimidan foydalanish (bu, o'z navbatida, tuman xizmatidir).

ADNL: mavhum Datagram tarmoq qatlami

Eng past darajada, tugunlar o'rtasidagi aloqa UDP protokoli yordamida amalga oshiriladi (boshqa variantlar maqbul bo'lsa ham).

Yuqorida aytib o'tilganidek, bir tugun boshqasiga paket jo'natishi uchun u o'zining ochiq kalitlaridan birini (demak, u belgilaydigan manzilni) bilishi kerak. U ushbu kalit yordamida paketni shifrlaydi va paketning boshiga 256 bitli manzilni qo'shadi - chunki bitta tugun ushbu manzillarning bir nechtasiga ega bo'lishi mumkin, bu unga shifrni ochish uchun qaysi kalitdan foydalanishni aniqlash imkonini beradi.

TON: Telegram Open Network. 1-qism: Kirish, tarmoq qatlami, ADNL, DHT, qatlamli tarmoqlar

Bundan tashqari, qabul qiluvchining manzili o'rniga, ma'lumotlar paketining boshida shunday deb ataladigan bo'lishi mumkin. identifikator kanal. Bunday holda, paketni qayta ishlash allaqachon tugunlar o'rtasidagi aniq kelishuvlarga bog'liq - masalan, ma'lum bir kanalga yuborilgan ma'lumotlar boshqa tugun uchun mo'ljallangan bo'lishi mumkin va unga yo'naltirilishi kerak (bu xizmat TON proksi). Yana bir alohida holat tugunlar o'rtasidagi to'g'ridan-to'g'ri o'zaro ta'sir bo'lishi mumkin, lekin bu kanal uchun individual kalit juftligi yordamida shifrlash bilan (Diffie-Hellman protokoli yordamida oldindan yaratilgan).

Va nihoyat, alohida holat bu "null" kanal - agar tugun o'zining "qo'shnilari" ning ochiq kalitlarini hali bilmasa, u ularga paketlarni shifrlashsiz yuborishi mumkin. Bu faqat ishga tushirish uchun mo'ljallangan - tugunlar o'z kalitlari haqida ma'lumot yuborgandan so'ng, ular keyingi aloqa uchun ishlatilishi kerak.

Yuqorida tavsiflangan protokol (256 bit kanal identifikatori + paket tarkibi) ADNL deb ataladi. Hujjatlarda uning ustiga TCP analogini yoki o'zining qo'shimchasi - RLDP (Reliable Large Datagram Protocol) ni amalga oshirish imkoniyati eslatib o'tilgan, ammo ularni amalga oshirish haqida batafsil ma'lumot berilmagan.

TON DHT: Tarqalgan xash jadvali

Boshqa taqsimlangan tizimlarda bo'lgani kabi, TON DHT ni amalga oshirishni o'z ichiga oladi - taqsimlangan xesh jadvali. Aniqroq aytganda, jadval Kademliya kabi. Agar siz ushbu turdagi xesh-jadval bilan tanish bo'lmasangiz, tashvishlanmang, quyida men ularning qanday ishlashini taxminan tasvirlab beraman.

TON: Telegram Open Network. 1-qism: Kirish, tarmoq qatlami, ADNL, DHT, qatlamli tarmoqlar

Mavhum ma'noda, DHT 256 bitli kalitlarni o'zboshimchalik uzunligining ikkilik qiymatlari bilan taqqoslaydi. Bunday holda, jadvaldagi kalitlar ma'lum bir TL strukturasining xeshlaridir (tuzilmalarning o'zi ham DHT bilan birga saqlanadi). Bu tugun manzillarini shakllantirishga juda o'xshaydi - va ular haqiqatan ham DHTda mavjud bo'lishi mumkin (masalan, bunday kalit yordamida tugunning IP-manzili berilganga mos keladi. mavhum manzil, agar u buni yashirmasa). Ammo umumiy holatda, "kalitlarning prototiplari" (ularning tavsiflar, asosiy tavsiflar) - bu xesh-jadvaldagi yozuvning "egasini" (ya'ni, ba'zi tugunning ochiq kaliti), saqlangan qiymat turini va keyinchalik ushbu yozuvni o'zgartirish qoidalarini ko'rsatadigan metama'lumotlar. Misol uchun, qoida faqat egasiga qiymatni o'zgartirishga ruxsat berishi yoki qiymatni pastga qarab o'zgartirishni taqiqlashi mumkin (takroriy hujumlardan himoya qilish uchun).

256 bitli kalitlarga qo'shimcha ravishda DHT manzillari tushunchasi kiritilgan. Oddiy xost manzillaridan farqi shundaki, DHT manzili albatta IP-manzilga bog'langan. Agar tugun o'z IP-ni yashirmasa, u DHT uchun oddiy manzildan foydalanishi mumkin. Ammo ko'pincha DHT ehtiyojlari uchun alohida, "yarim doimiy" manzil yaratiladi.
TON: Telegram Open Network. 1-qism: Kirish, tarmoq qatlami, ADNL, DHT, qatlamli tarmoqlar
Masofa tushunchasi kalitlar va DHT manzillari ustida kiritilgan - bunda hamma narsa jadvallarga to'g'ri keladi Kademliya — tugmachalar orasidagi masofa ularning XOR (bit bo'yicha eksklyuziv OR) ga teng. Kademlia jadvallarida bo'lgani kabi, ma'lum bir kalitga mos keladigan qiymat saqlanishi kerak s bu kalitgacha eng qisqa masofaga ega bo'lgan tugunlar (s bu nisbatan kichik raqam).

DHT tugunining boshqa bunday tugunlar bilan aloqa o'rnatishi uchun u xotirada saqlanadi DHT marshrutlash jadvali — DHT va u ilgari o'zaro aloqada bo'lgan tugunlarning IP manzillari, ularga masofa bo'yicha guruhlangan. 256 ta shunday guruhlar mavjud (ular masofa qiymatida o'rnatilgan eng muhim bitga to'g'ri keladi - ya'ni 0 dan 255 gacha bo'lgan masofadagi tugunlar bitta guruhga, 256 dan 65535 gacha - keyingi guruhga kiradi va hokazo). Har bir guruh ichida cheklangan miqdordagi "eng yaxshi" tugunlar saqlanadi (ularga ping bo'yicha).

TON: Telegram Open Network. 1-qism: Kirish, tarmoq qatlami, ADNL, DHT, qatlamli tarmoqlar

Har bir tugun bir nechta operatsiyalarni qo'llab-quvvatlashi kerak: kalit uchun qiymatni saqlash, tugunni qidirish и qadriyatlarni qidirish. Tugunlarni qidirish, berilgan kalit asosida marshrutlash jadvalidan unga eng yaqin tugunlarni chiqarishni o'z ichiga oladi; Qiymatlarni qidirish bir xil bo'ladi, faqat tugun kalit qiymatini bilsa (keyin uni qaytaradi). Shunga ko'ra, agar tugun DHTdagi kalit bo'yicha qiymat topmoqchi bo'lsa, u o'zining marshrutlash jadvalidan ushbu kalitga eng yaqin bo'lgan oz sonli tugunlarga so'rov yuboradi. Agar kerakli qiymat ularning javoblari orasida bo'lmasa, lekin boshqa tugun manzillari mavjud bo'lsa, so'rov ularga takrorlanadi.

TON DHT turli maqsadlarda, masalan, torrentga o'xshash fayllarni saqlashni amalga oshirish uchun ishlatilishi mumkin (qarang. TON saqlash); muayyan xizmatlarni amalga oshiradigan tugunlarning manzillarini aniqlash; blokcheyndagi hisob egalari haqidagi ma'lumotlarni saqlash uchun. Ammo eng muhim dastur tugunlarni ularning mavhum manzillari bo'yicha topishdir. Buning uchun manzil qiymati topilishi kerak bo'lgan kalit sifatida ishlatiladi. So'rov natijasida yoki tugunning o'zi topiladi (agar qidirilayotgan manzil uning yarim doimiy DHT manzili bo'lsa) yoki qiymat IP manzili va ulanish porti bo'ladi - yoki boshqa manzil sifatida foydalanish kerak. vositachi tunnel.

TONdagi qatlamli tarmoqlar

Yuqorida tavsiflangan ADNL protokoli har qanday tugunlarning bir-biri bilan ma'lumot almashish qobiliyatini nazarda tutadi - garchi optimal usullarda bo'lmasa ham. Aytishimiz mumkinki, ADNL tufayli barcha tugunlar global TON grafigini tashkil qiladi (ideal ulangan). Biroq, qo'shimcha ravishda, ushbu grafik doirasida qo'shimcha tarmoqlar - pastki grafiklarni yaratish mumkin.
TON: Telegram Open Network. 1-qism: Kirish, tarmoq qatlami, ADNL, DHT, qatlamli tarmoqlar

Bunday tarmoq ichida o'zaro ta'sir faqat to'g'ridan-to'g'ri amalga oshiriladi - tarmoqda ishtirok etuvchi tugunlar o'rtasida oldindan tuzilgan ulanishlar orqali (yuqorida tavsiflangan ADNL kanallari orqali). Qo'shnilar o'rtasida bunday aloqalarni shakllantirish, qo'shnilarning o'zlarini qidirish - bu overlay tarmog'ining ulanishini saqlab qolish va undagi ma'lumotlar almashinuvidagi kechikishlarni minimallashtirishga qaratilgan avtomatik jarayon.

Bundan tashqari, tarmoq ichida katta translyatsiya yangilanishlarini tezda tarqatish usuli mavjud - ular qismlarga bo'linadi, xatolarni tuzatish kodi bilan to'ldiriladi va bu qismlarning barchasi bir ishtirokchidan boshqasiga yuboriladi. Shunday qilib, ishtirokchi barcha qismlarni tarmoq bo'ylab yuborishdan oldin to'liq olishi shart emas.

Overlay tarmoqlari umumiy yoki shaxsiy bo'lishi mumkin. Umumiy tarmoqqa a'zo bo'lish qiyin emas - siz uni tavsiflovchi TL tuzilmasini topishingiz kerak (u ommaviy bo'lishi mumkin yoki DHT-dagi ma'lum bir kalit orqali kirish mumkin). Xususiy tarmoq bo'lsa, bu tuzilma tugunga oldindan ma'lum bo'lishi kerak.

Davomi bor

Men TON sharhini bir nechta maqolalarga bo'lishga qaror qildim. Bu qism tugaydi, bu erda va keyingisida Men TON tashkil etadigan blokcheynning (aniqrog'i, blokcheyn) tuzilishini ko'rib chiqishga o'taman.

Manba: www.habr.com

a Izoh qo'shish