TON: „Telegram Open Network“. 1 dalis: Įvadas, tinklo sluoksnis, ADNL, DHT, perdangos tinklai

TON: „Telegram Open Network“. 1 dalis: Įvadas, tinklo sluoksnis, ADNL, DHT, perdangos tinklai

Jau dvi savaites „Runet“ skleidžia triukšmą apie „Telegram“ ir situaciją, kai ją beprasmiškai ir negailestingai blokuoja „Roskomnadzor“. Rikošetas įžeidė daugelį žmonių, tačiau visa tai yra „Geektimes“ įrašų temos. Mane nustebino kažkas kita - aš vis dar nemačiau nei vienos Habré analizės apie TON tinklą, kurį planuojama išleisti remiantis Telegram - Telegram Open Network. Norėjau kompensuoti šį trūkumą, nes ten yra ką mokytis – net nepaisant oficialių pareiškimų apie tai trūkumo.

Priminsiu, kad sklando gandai, kad „Telegram“ pradėjo labai didelio masto uždarą ICO, jau surinkusi neįtikėtinas pinigų sumas. Tikimasi, kad šiemet bus išleista pati „Gram“ kriptovaliuta – ir kiekvienas „Telegram“ vartotojas automatiškai turės piniginę, o tai savaime sukuria didelį pranašumą prieš kitas kriptovaliutas.

Deja, kadangi oficialių pareiškimų nėra, galiu tęsti tik toliau neaiškios kilmės dokumentas, apie kurį iškart perspėju. Žinoma, tai gali pasirodyti labai sumani klastotė, tačiau gali būti, kad tai tikra būsimos sistemos balta knyga, kurią parašė Nikolajus Durovas (ir tikriausiai nutekino vienas iš investuotojų). Bet net jei tai netikra, niekas nedraus mums to studijuoti ir diskutuoti, tiesa?

Ką sako šis dokumentas? Pabandysiu perpasakoti savais žodžiais, artimai tekstui, bet rusiškai ir šiek tiek humaniškiau (tegul Nikolajus man atleidžia savo polinkį į formaliąją matematiką). Atminkite, kad net jei tai yra autentiška, tai yra sistemos aprašymo juodraštis ir labai tikėtina, kad jis pasikeis iki viešo paleidimo.

Sužinome, kad be kriptovaliutos, tikimasi ir daug daugiau. Paimkime eilės tvarka.

  • TON Blockchain. Tai yra visos sistemos pagrindas. Jei nežinai, kas tai yra blokuoti — Rekomenduoju pasidomėti, nes čia bus daug blockchainų. Įdėtos viena į kitą, praktiškai suskaidytos ir netgi „vertikalios“ blokų grandinės kitų blokų grandinių blokuose. Taip pat bus keletas šauniai skambančių terminų, pvz Momentinis hiperkubo maršrutas и Begalinio dalijimosi paradigma, bet apie tai vėliau. Ir, žinoma, statymo įrodymas ir protingos sutartys.
  • TON P2P tinklas. Peer-to-peer tinklas, kurio pagrindu bus kuriama sistema. Šioje istorijos dalyje ji bus aptarta pirmiausia.
  • TON saugykla. Failų saugykla, kuri, nepriklausomai nuo blokų grandinės, bus kuriama aukščiau minėtame peer-to-peer tinkle. Galima palyginti su torrentais.
  • TON tarpinis serveris. Tai paslauga, kurios tikslas – padidinti tinklo dalyvių anonimiškumą. Bet koks paketas gali būti siunčiamas ne tiesiogiai, o per tarpinius tunelius su papildomu šifravimu – kaip I2P ar TOR.
  • TON DHT. Paskirstyta maišos lentelė savavališkoms reikšmėms saugoti. Jis taip pat pastatytas ant viršaus TON tinklas (bet tuo pačiu ir jis naudojasi) ir padeda TON saugykla rasti „paskirstymo“ mazgus ir TON tarpinis serveris — tarpiniai kartotuvai. Tačiau reikia pažymėti, kad, skirtingai nei „blockchain“, ši maišos lentelė nėra saugi saugykla – joje negalite saugoti svarbios informacijos.
  • TON paslaugos. Platforma individualioms paslaugoms. Iš esmės tai yra naujas internetas, be visko, kas aprašyta aukščiau. Duomenų mainai – per TON tinklas/TON tarpinis serveris, o logika yra išmaniosiose sutartyse TON Blockchain. Ir sąsaja su gana pažįstamais URL.
  • TON DNS. Kadangi kalbame apie pažįstamus URL, mums taip pat reikia konverterio iš jų į 256 bitų adresus – paskyras, sutartis, paslaugas ir mazgus.
  • TON mokėjimai. Ir čia atsiranda pinigų problema. Ir tai bus ne tik gramas — kaip ir eterio atveju, bus galimi bet kokie „žetonai“; Gramai čia bus tik „numatytoji“ valiuta.

Tai pirmoji dalis, kurioje aprašomas „įžemintas“ TON sluoksnis – jo tinklo dalis, sukurta ant tradicinių protokolų. Kitoje dalyje kalbėsime apie „minkštąją“ – blokų grandinę, kurią palaikys toliau aprašyta sistema. Taigi mano atpasakojimo tvarka kiek skiriasi nuo tos, kuri naudojama minėtame dokumente (kuris iš karto prasideda abstrakčiu lygmeniu).

Pagrindinės sąvokos

TL (Rašto kalba). Tai abstraktus dvejetainis formatas, skirtas savavališkoms duomenų struktūroms. Jis naudojamas Telegram protokole ir bus aktyviai naudojamas TON. Jei norite su ja susipažinti išsamiai - čia jo aprašymas.

Maiša (maišos). Funkcija, kuri atlieka negrįžtamą savavališkos duomenų struktūros transformaciją į vieną fiksuoto ilgio skaičių. Visoje dokumentacijoje kalbame apie funkciją SHA-256.

Tinklo mazgas (mazgas). Mazgas yra programinė įranga, kuri užtikrins sistemos veikimą. Visų pirma daroma prielaida, kad kiekvienoje „Telegram“ kliento programoje bus TON mazgas. Žemu lygiu mazgai turi IPv4/IPv6 adresus ir bendrauja naudodami UDP protokolą; aukštesniu lygiu jie turi abstraktūs adresai ir įdiegti ADNL protokolą (apie abstrakčius adresus ir ADNL – žr. toliau). Kalbant apie tai, kad kai kurios sistemos dalys kažką daro arba saugo kokius nors duomenis, suprantama, kad tai daro tinklo mazgai.

Abstraktus adresas (arba tiesiog adresas, adresas). Mazgo adresas nustatomas pagal jo viešąjį raktą. Tiksliau tariant, tai yra 256 bitų maiša (SHA256) duomenų struktūros, kurioje yra viešasis raktas (konkretus kriptografinis algoritmas nenurodytas – elipsinės kreivės ir RSA-2048 pateikiami kaip pavyzdžiai). Kad vienas mazgas galėtų bendrauti su kitu, jis turi žinoti ne tik to adresą, bet ir šią duomenų struktūrą. Teoriškai vienas fizinis mazgas gali sukurti bet kokį skaičių adresų (atitinkančių skirtingus raktus).

Be to, dažnai naudojama kaip tik tokia nuoroda: „prototipas“ TL struktūros pavidalu (turintis beveik bet kokius duomenis) ir 256 bitų maiša iš jos, naudojama adresavimui.

„Blockchain“ (blockchain). Blockchain yra duomenų struktūra, elementai (blokai), kurie suskirstyti į „grandinę“, o kiekviename paskesniame grandinės bloke yra ankstesnio bloko maiša. Tokiu būdu pasiekiamas vientisumas – pakeitimus galima atlikti tik pridedant naujų blokų.

Tarnyba (tarnyba). TON teikiamos paslaugos gali būti įvairių tipų, priklausomai nuo to, ar jos naudoja blokų grandinę, ar ne. Pavyzdžiui, vienas (ar daug) tinklo mazgų gali apdoroti tam tikras RPC užklausas naudodamas toliau aprašytą ADNL protokolą, nesukurdamas jokių įrašų blokų grandinėje – kaip tradiciniai žiniatinklio serveriai. Įskaitant galimybę įdiegti HTTP per ADNL, taip pat paties pasiuntinio perėjimą prie šio protokolo. Analogiškai su TOR arba I2P, tai padarys jį atsparesnį įvairiems blokavimui.

Tuo pačiu metu daugelis paslaugų apima sąveiką su blokų grandine ir užklausų apdorojimą už jos ribų. Pavyzdžiui, TON Storage - failų saugykla - nėra labai protinga saugoti pačius failus blokų grandinėje. Jame bus tik failų maišos (kartu su tam tikra metainformacija apie juos), o specializuoti tinklo mazgai veiks kaip „failų serveriai“, pasirengę siųsti juos į kitus mazgus per ADNL.

Rūko servisas (rūko servisas). Kalbame apie kai kurias paslaugas, kurios reiškia decentralizaciją ir atvirą dalyvavimą jose. Pavyzdžiui, TON tarpinis serveris yra paslauga, kurią gali palaikyti bet kuris dalyvis, norintis pateikti savo mazgą kaip tarpinį (proxy) paketų persiuntimą tarp kitų mazgų. Jei pageidaujama, jis už tai gali imti jo nustatytą mokestį – naudodamasis TON Payments sistema mikromokėjimams (kuri, savo ruožtu, taip pat yra rūko paslauga).

ADNL: Abstract Datagram tinklo sluoksnis

Žemiausiu lygiu ryšys tarp mazgų bus vykdomas naudojant UDP protokolą (nors kitos parinktys yra priimtinos).

Kaip minėta aukščiau, kad vienas mazgas galėtų siųsti paketą kitam, jis turi žinoti vieną iš savo viešųjų raktų (taigi ir adresą, kurį jis apibrėžia). Jis užšifruoja paketą šiuo raktu ir į paketo pradžią prideda 256 bitų paskirties adresą – kadangi vienas mazgas gali turėti kelis iš šių adresų, tai leis jam nustatyti, kurį raktą naudoti iššifruojant.

TON: „Telegram Open Network“. 1 dalis: Įvadas, tinklo sluoksnis, ADNL, DHT, perdangos tinklai

Be to, vietoj gavėjo adreso, duomenų paketo pradžioje gali būti vadinamasis. identifikatorius kanalą. Šiuo atveju paketo apdorojimas jau priklauso nuo konkrečių susitarimų tarp mazgų – pavyzdžiui, į tam tikrą kanalą siunčiami duomenys gali būti skirti kitam mazgui ir turi būti jam persiunčiami (tai paslauga TON tarpinis serveris). Kitas ypatingas atvejis gali būti sąveika tiesiogiai tarp mazgų, bet su šifravimu naudojant atskirą šio kanalo raktų porą (iš anksto sugeneruotą naudojant Diffie-Hellman protokolą).

Galiausiai, ypatingas atvejis yra „nulinis“ kanalas – jei mazgas dar nežino savo „kaimynų“ viešųjų raktų, jis gali siųsti jiems paketus visai be šifravimo. Tai skirta tik inicijavimui – mazgams išsiuntus informaciją apie savo raktus, jie turėtų būti naudojami tolimesniam ryšiui.

Aukščiau aprašytas protokolas (256 bitai kanalo identifikatoriaus + paketo turinys) vadinamas ADNL. Dokumentacijoje minima galimybė ant jo įdiegti TCP analogą arba savo priedą - RLDP (Reliable Large Datagram Protocol), tačiau nesigilina į jų įgyvendinimą.

TON DHT: paskirstyta maišos lentelė

Kaip ir kitų paskirstytų sistemų atveju, TON apima DHT diegimą - paskirstyta maišos lentelė. Tiksliau, lentelė yra panašus į kademliją. Jei nesate susipažinę su tokio tipo maišos lentelėmis, nesijaudinkite, toliau apytiksliai aprašysiu, kaip jos veikia.

TON: „Telegram Open Network“. 1 dalis: Įvadas, tinklo sluoksnis, ADNL, DHT, perdangos tinklai

Abstrakčia prasme DHT susieja 256 bitų raktus su dvejetainėmis savavališko ilgio reikšmėmis. Šiuo atveju lentelės raktai yra maišos iš tam tikros TL struktūros (pačios struktūros taip pat saugomos kartu su DHT). Tai labai panašu į mazgų adresų formavimą – ir jie iš tiesų gali būti DHT (pavyzdžiui, naudojant tokį raktą mazgo IP adresas, atitinkantis duotą abstraktus adresas, jei jis to neslepia). Tačiau apskritai „raktų prototipai“ (jų aprašymus, pagrindinių aprašymų) yra metaduomenys, nurodantys maišos lentelės įrašo „savininką“ (ty kai kurių mazgų viešąjį raktą), saugomos vertės tipą ir taisykles, pagal kurias vėliau galima pakeisti šį įrašą. Pavyzdžiui, taisyklė gali leisti tik savininkui keisti vertę arba uždrausti keisti vertę žemyn (siekiant apsaugoti nuo pakartojimo atakų).

Be 256 bitų raktų, pristatoma DHT adresų sąvoka. Skirtumas nuo įprastų pagrindinio kompiuterio adresų yra tas, kad DHT adresas būtinai susietas su IP adresu. Jei mazgas neslepia savo IP, jis gali naudoti įprastą DHT adresą. Tačiau dažniau DHT poreikiams bus sukurtas atskiras „pusiau nuolatinis“ adresas.
TON: „Telegram Open Network“. 1 dalis: Įvadas, tinklo sluoksnis, ADNL, DHT, perdangos tinklai
Atstumo sąvoka pristatoma virš klavišų ir DHT adresų – čia viskas sutampa su lentelėmis kademlia — atstumas tarp klavišų yra lygus jų XOR (bitinis išskirtinis ARBA). Kaip ir Kademlia lentelėse, tam tikrą raktą atitinkanti reikšmė turi būti išsaugota s mazgai, kurie turi trumpiausią atstumą iki šio rakto (s čia yra palyginti mažas skaičius).

Kad DHT mazgas galėtų susisiekti su kitais tokiais mazgais, jis išsaugomas atmintyje DHT maršruto lentelė — mazgų, su kuriais jis sąveikavo anksčiau, DHT ir IP adresai, sugrupuoti pagal atstumą iki jų. Tokių grupių yra 256 (jos atitinka reikšmingiausią atstumo reikšmėje nustatytą bitą - tai yra, mazgai, esantys atstumu nuo 0 iki 255, pateks į vieną grupę, nuo 256 iki 65535 - į kitą ir pan.). Kiekvienoje grupėje saugomas ribotas „geriausių“ mazgų skaičius (kalbant apie ping į juos).

TON: „Telegram Open Network“. 1 dalis: Įvadas, tinklo sluoksnis, ADNL, DHT, perdangos tinklai

Kiekvienas mazgas turi palaikyti keletą operacijų: rakto vertės išsaugojimas, mazgo paieška и ieškoti vertybių. Ieškant mazgų, remiantis duotu raktu, iš maršruto parinkimo lentelės išduodami arčiausiai jo esantys mazgai; reikšmių paieška yra tokia pati, išskyrus atvejus, kai mazgas žino rakto reikšmę (tada ją tiesiog grąžina). Atitinkamai, jei mazgas nori rasti reikšmę pagal raktą DHT, jis siunčia užklausas nedideliam skaičiui mazgų, esančių arčiausiai šio rakto iš savo maršruto lentelės. Jei tarp jų atsakymų nėra reikiamos reikšmės, bet yra kitų mazgų adresų, tada užklausa jiems kartojama.

TON DHT gali būti naudojamas įvairiems tikslams, pavyzdžiui, įdiegti torrent tipo failų saugyklą (žr. TON saugykla); nustatyti tam tikras paslaugas diegiančių mazgų adresus; saugoti informaciją apie paskyros savininkus blokų grandinėje. Tačiau svarbiausia taikymas yra mazgų atradimas pagal jų abstrakčius adresus. Norėdami tai padaryti, adresas naudojamas kaip raktas, kurio reikšmę reikia rasti. Dėl užklausos bus rastas pats mazgas (jei ieškomas adresas buvo jo pusiau nuolatinis DHT adresas), arba reikšmė bus IP adresas ir prisijungimo prievadas arba kitas adresas, kuris turėtų būti naudojamas kaip tarpinis tunelis.

Perdangos tinklai TON

Aukščiau aprašytas ADNL protokolas reiškia, kad bet kurie mazgai gali keistis informacija tarpusavyje, nors ir nebūtinai optimaliais būdais. Galima sakyti, kad ADNL dėka visi mazgai sudaro globalų TON grafiką (idealiai sujungtą). Bet papildomai šiame grafike galima sukurti persidengiančius tinklus – pografus.
TON: „Telegram Open Network“. 1 dalis: Įvadas, tinklo sluoksnis, ADNL, DHT, perdangos tinklai

Tokiame tinkle sąveika vykdoma tik tiesiogiai - per iš anksto suformuotus ryšius tarp tinkle dalyvaujančių mazgų (per aukščiau aprašytus ADNL kanalus). Tokių ryšių tarp kaimynų formavimas, pačių kaimynų paieška yra automatinis procesas, kuriuo siekiama išlaikyti persidengiančio tinklo ryšį ir kuo labiau sumažinti duomenų apsikeitimo jame vėlavimus.

Be to, yra būdas greitai paskirstyti didelius transliacijų atnaujinimus tinkle – jie suskaidomi į dalis, papildomi klaidų taisymo kodu ir visi šie fragmentai siunčiami iš vieno dalyvio kitam. Taigi dalyvis neprivalo iki galo gauti visų dalių prieš siųsdamas jas toliau tinkle.

Perdangos tinklai gali būti viešieji arba privatūs. Tapti viešojo tinklo nariu nėra sunku – reikia susirasti jį apibūdinančią TL struktūrą (ji gali būti vieša arba pasiekiama tam tikru DHT raktu). Privataus tinklo atveju ši struktūra mazgui turi būti žinoma iš anksto.

Turi būti tęsiama

Nusprendžiau padalyti TON apžvalgą į kelis straipsnius. Čia ši dalis baigiasi ir kitame Toliau nagrinėsiu blokų grandinės (tiksliau, blokų grandinės), iš kurios sudarys TON, struktūrą.

Šaltinis: www.habr.com

Добавить комментарий