TON: Telegram Open Network. Partea 1: Introducere, nivel de rețea, ADNL, DHT, rețele de suprapunere

TON: Telegram Open Network. Partea 1: Introducere, nivel de rețea, ADNL, DHT, rețele de suprapunere

De două săptămâni încoace, Runet face zgomot despre Telegram și despre situația cu blocarea sa fără sens și fără milă de către Roskomnadzor. Ricoșetul a jignit mulți oameni, dar toate acestea sunt subiecte pentru postări pe Geektimes. Am fost surprins de altceva - încă nu am văzut o singură analiză pe Habré a rețelei TON planificată pentru lansare pe baza Telegram - Telegram Open Network. Am vrut să compensez această deficiență, pentru că există ceva de studiat acolo - chiar și în ciuda lipsei declarațiilor oficiale despre asta.

Permiteți-mi să vă reamintesc că există zvonuri că Telegram a lansat un ICO închis la scară foarte mare, care a adunat deja sume incredibile de bani. Este de așteptat ca propria criptomonedă a lui Gram să fie lansată în acest an - și fiecare utilizator Telegram va avea automat un portofel, ceea ce în sine creează un avantaj semnificativ față de alte criptomonede.

Din păcate, din moment ce nu există declarații oficiale, nu pot decât să merg mai departe document de origine necunoscută, despre care vă avertizez imediat. Desigur, se poate dovedi a fi un fals foarte priceput, dar este posibil și ca acesta să fie o adevărată carte albă a viitorului sistem, scrisă de Nikolai Durov (și scurs, probabil, de unul dintre investitori). Dar chiar dacă este fals, nimeni nu ne va interzice să studiem și să discutăm despre asta, nu?

Ce spune acest document? Voi încerca să o re povestim cu propriile mele cuvinte, aproape de text, dar în rusă și puțin mai uman (fie ca Nikolai să mă ierte cu tendința lui de a intra în matematica formală). Rețineți că, chiar dacă aceasta este autentică, aceasta este o descriere nefinalizată a sistemului și foarte probabil se va schimba până la momentul lansării publice.

Învățăm că, pe lângă criptomoneda, se așteaptă mult mai mult. Să o luăm în ordine.

  • TON Blockchain. Aceasta este baza întregului sistem. Dacă nu știi ce este blokcheyn — Vă recomand să aflați, pentru că aici vor fi multe blockchain-uri. Imbricate unul în celălalt, blocuri practic fragmentate și chiar „verticale” în blocuri ale altor blockchain-uri. Vor fi, de asemenea, niște termeni cool, cum ar fi Rutare instantanee Hypercube и Paradigma de fragmentare infinită, dar mai multe despre asta mai târziu. Și, desigur, proof-of-stake și contracte inteligente.
  • Rețeaua TON P2P. Rețea peer-to-peer pe baza căreia va fi construit sistemul. Ea va fi discutată mai întâi în această parte a poveștii.
  • TON Depozitare. Stocarea de fișiere, care, indiferent de blockchain, va fi construită pe rețeaua peer-to-peer menționată mai sus. Poate fi comparat cu torrentele.
  • TON Proxy. Acesta este un serviciu al cărui scop este de a crește anonimatul participanților la rețea. Orice pachet poate fi trimis nu direct, ci prin tuneluri intermediare cu criptare suplimentară - cum ar fi I2P sau TOR.
  • TONĂ DHT. Tabel hash distribuit pentru stocarea valorilor arbitrare. Este construit și deasupra Retea TON (dar in acelasi timp este folosit de el) si ajuta TON Depozitare găsiți noduri „distribuitoare” și TON Proxy — repetoare intermediare. Dar trebuie remarcat faptul că, spre deosebire de blockchain, acest tabel hash nu este o stocare sigură - nu puteți stoca informații importante în el.
  • Servicii TON. Platformă pentru servicii personalizate. În esență, acesta este un nou internet pe deasupra a tot ceea ce este descris mai sus. Schimb de date - prin Retea TON/TON Proxy, iar logica este în contractele inteligente ale TON Blockchain. Și o interfață cu adrese URL destul de familiare.
  • TON DNS. Deoarece vorbim despre URL-uri familiare, avem nevoie și de un convertor de la acestea în adrese pe 256 de biți - conturi, contracte, servicii și noduri.
  • Plăți TON. Și aici intervine problema banilor. Și nu va fi doar gram — ca și în cazul eterului, orice „jetoane” vor fi posibile; Gramii vor fi doar moneda „implicit” aici.

Aceasta este prima parte care descrie stratul „împământat” al TON - partea sa de rețea, construită pe baza protocoalelor tradiționale. În partea următoare vom vorbi despre „soft” - blockchain, care va fi susținut de sistemul descris mai jos. Astfel, ordinea mea de repovestire este oarecum diferită de cea folosită în documentul mai sus menționat (care începe imediat la nivel abstract).

Noțiuni de bază

TL (Type Language). Este un format binar abstract pentru structuri de date arbitrare. Este folosit în protocolul Telegram și va fi folosit activ în TON. Dacă doriți să vă familiarizați cu el în detaliu - aici este descrierea lui.

Hash (hașiș). O funcție care realizează o transformare ireversibilă a unei structuri de date arbitrare într-un singur număr de lungime fixă. Pe parcursul documentației vorbim despre funcție SHA-256.

Nod de rețea (nod). Un nod este software-ul care va asigura că sistemul funcționează. În special, se presupune că fiecare aplicație client Telegram va include un nod TON. La un nivel scăzut, nodurile au adrese IPv4/IPv6 și comunică folosind protocolul UDP; la un nivel superior, au adrese abstracte și implementați protocolul ADNL (despre adrese abstracte și ADNL - vezi mai jos). Când vine vorba de faptul că unele părți ale sistemului fac ceva sau stochează unele date, se înțelege că acest lucru este realizat de nodurile de rețea.

Adresă abstractă (sau pur și simplu adresa, adresa). Adresa unui nod este determinată de cheia publică a acestuia. Mai strict, este un hash de 256 de biți (SHA256) al structurii de date care conține cheia publică (algoritmul criptografic specific nu este specificat - curbele eliptice și RSA-2048 sunt date ca exemple). Pentru ca un nod să comunice cu altul, trebuie să cunoască nu numai adresa acelui nod, ci și această structură de date. În teorie, un nod fizic poate crea orice număr de adrese (corespunzând unor chei diferite).

Mai mult, este adesea folosită o astfel de legătură: un „prototip” sub forma unei structuri TL (conținând aproape orice date) și un hash de 256 de biți din acesta, folosit pentru adresare.

Blockchain (blockchain). Blockchain este o structură de date, elemente (Blocuri) care sunt ordonate într-un „lanț”, iar fiecare bloc ulterior al lanțului conține hash-ul celui precedent. În acest fel, integritatea este atinsă - modificările pot fi făcute doar prin adăugarea de noi blocuri.

Serviciu (serviciu). Serviciile din cadrul TON pot fi de diferite tipuri, în funcție de dacă folosesc blockchain sau nu. De exemplu, unul (sau mai multe) noduri de rețea pot procesa anumite solicitări RPC folosind protocolul ADNL descris mai jos, fără a crea înregistrări în blockchain - cum ar fi serverele web tradiționale. Inclusiv posibilitatea implementării HTTP peste ADNL, precum și trecerea messenger-ului însuși la acest protocol. Prin analogie cu TOR sau I2P, acest lucru îl va face mai rezistent la diverse blocări.

În același timp, o serie de servicii implică atât interacțiunea cu blockchain-ul, cât și procesarea cererilor în afara acestuia. De exemplu, pentru TON Storage - stocarea fișierelor - nu este foarte rezonabil să stocați fișierele în sine pe blockchain. Acesta va conține doar fișiere hash-uri (împreună cu unele meta-informații despre acestea), iar nodurile de rețea specializate vor acționa ca „servere de fișiere”, gata să le trimită către alte noduri prin ADNL.

Serviciu de ceață (serviciu de ceață). Vorbim despre unele servicii care presupun descentralizare și participare deschisă la acestea. De exemplu, TON Proxy este un serviciu care poate fi susținut de orice participant care dorește să-și furnizeze nodul ca intermediar (proxy) care transmite pachete între alte noduri. Dacă dorește, poate percepe o taxă stabilită de el pentru aceasta - folosind sistemul TON Payments pentru microplăți (care, la rândul său, este și un serviciu de ceață).

ADNL: Abstract Datagram Network Layer

La cel mai de jos nivel, comunicarea între noduri se va realiza folosind protocolul UDP (deși sunt acceptate alte opțiuni).

După cum sa menționat mai sus, pentru ca un nod să trimită un pachet către altul, trebuie să cunoască una dintre cheile sale publice (și, prin urmare, adresa pe care o definește). Criptează pachetul cu această cheie și adaugă adresa de destinație de 256 de biți la începutul pachetului - deoarece un nod poate avea mai multe dintre aceste adrese, acest lucru îi va permite să determine ce cheie să folosească pentru decriptare.

TON: Telegram Open Network. Partea 1: Introducere, nivel de rețea, ADNL, DHT, rețele de suprapunere

În plus, în loc de adresa destinatarului, începutul pachetului de date poate conține așa-numitul. identificator canal. În acest caz, procesarea pachetului depinde deja de acorduri specifice între noduri - de exemplu, datele trimise către un anumit canal pot fi destinate unui alt nod și trebuie redirecționate către acesta (acesta este serviciul TON Proxy). Un alt caz special poate fi interacțiunea directă între noduri, dar cu criptare folosind o pereche de chei individuale pentru acest canal (pregenerată folosind protocolul Diffie-Hellman).

În cele din urmă, un caz special este canalul „nul” - dacă un nod nu cunoaște încă cheile publice ale „vecinilor” săi, le poate trimite pachete fără criptare. Acest lucru este destinat doar inițializării - odată ce nodurile trimit informații despre cheile lor, acestea ar trebui folosite pentru comunicare ulterioară.

Protocolul descris mai sus (256 de biți de identificator de canal + conținut de pachet) se numește ADNL. Documentația menționează posibilitatea implementării unui analog TCP pe deasupra sau propriului add-on - RLDP (Reliable Large Datagram Protocol), dar nu intră în detalii despre implementarea lor.

TON DHT: Tabel Hash distribuit

Ca și în cazul altor sisteme distribuite, TON implică implementarea DHT - tabel hash distribuit. Mai precis, tabelul este Cademlia. Dacă nu sunteți familiarizat cu acest tip de tabel hash, nu vă faceți griji, mai jos voi descrie aproximativ cum funcționează.

TON: Telegram Open Network. Partea 1: Introducere, nivel de rețea, ADNL, DHT, rețele de suprapunere

Într-un sens abstract, DHT mapează cheile pe 256 de biți la valori binare de lungime arbitrară. În acest caz, cheile din tabel sunt hash-uri dintr-o anumită structură TL (structurile în sine sunt, de asemenea, stocate împreună cu DHT). Acest lucru este foarte asemănător cu formarea adreselor de nod - și ele pot fi într-adevăr prezente în DHT (de exemplu, folosind o astfel de cheie adresa IP a unui nod corespunzătoare unui anumit adresa abstractă, dacă nu o ascunde). Dar, în cazul general, „prototipurile de chei” (lor descrieri, descrieri cheie) sunt metadate care indică „proprietarul” unei intrări dintr-un tabel hash (adică cheia publică a unui nod), tipul de valoare stocată și regulile după care această intrare poate fi modificată ulterior. De exemplu, o regulă poate permite doar proprietarului să modifice valoarea sau să interzică schimbarea în jos a valorii (pentru a proteja împotriva atacurilor de reluare).

Pe lângă cheile de 256 de biți, este introdus conceptul de adrese DHT. Diferența cu adresele gazdă obișnuite este că adresa DHT este neapărat legată de o adresă IP. Dacă un nod nu își ascunde IP-ul, poate folosi o adresă obișnuită pentru DHT. Dar, mai des, o adresă separată, „semi-permanentă” va fi creată pentru nevoile DHT.
TON: Telegram Open Network. Partea 1: Introducere, nivel de rețea, ADNL, DHT, rețele de suprapunere
Conceptul de distanță este introdus deasupra tastelor și adreselor DHT - în aceasta totul coincide cu tabelele kademlia — distanța dintre chei este egală cu XOR (SAU exclusiv pe biți) a acestora. Ca și în tabelele Kademlia, trebuie stocată valoarea corespunzătoare unei anumite chei s nodurile care au cea mai scurtă distanță până la această cheie (s aici este un număr relativ mic).

Pentru ca un nod DHT să comunice cu alte astfel de noduri, acesta se păstrează în memorie Tabel de rutare DHT — Adresele DHT și IP ale nodurilor cu care a interacționat anterior, grupate după distanță până la acestea. Există 256 de astfel de grupuri (acestea corespund celui mai semnificativ set de biți în valoarea distanței - adică nodurile aflate la o distanță de la 0 la 255 vor intra într-un grup, de la 256 la 65535 - în următorul etc.). În cadrul fiecărui grup, un număr limitat de noduri „cele mai bune” sunt stocate (în termeni de ping către acestea).

TON: Telegram Open Network. Partea 1: Introducere, nivel de rețea, ADNL, DHT, rețele de suprapunere

Fiecare nod trebuie să suporte mai multe operații: stocarea unei valori pentru o cheie, căutarea nodului и cauta valori. Căutarea nodurilor presupune emiterea, pe baza unei chei date, a nodurilor cele mai apropiate de aceasta din tabelul de rutare; Căutarea valorilor este aceeași, cu excepția cazului în care nodul cunoaște valoarea cheii (apoi doar o returnează). În consecință, dacă un nod dorește să găsească o valoare după cheie în DHT, el trimite cereri către un număr mic de noduri cel mai apropiat de această cheie din tabelul său de rutare. Dacă valoarea necesară nu se află printre răspunsurile lor, dar există alte adrese de noduri, atunci cererea li se repetă.

TON DHT poate fi folosit în diverse scopuri, de exemplu, pentru a implementa o stocare de fișiere asemănătoare torrentului (vezi. TON Depozitare); pentru a determina adresele nodurilor care implementează anumite servicii; pentru a stoca informații despre proprietarii de conturi în blockchain. Dar cea mai importantă aplicație este descoperirea nodurilor prin adresele lor abstracte. Pentru a face acest lucru, adresa este folosită ca o cheie a cărei valoare trebuie găsită. Ca urmare a solicitării, fie nodul în sine va fi găsit (dacă adresa căutată a fost adresa sa DHT semi-permanentă), fie valoarea va fi adresa IP și portul pentru conexiune - sau o altă adresă care ar trebui utilizată ca un tunel intermediar.

Suprapunerea rețelelor în TON

Protocolul ADNL descris mai sus implică capacitatea oricăror noduri de a face schimb de informații între ele - deși nu neapărat în moduri optime. Putem spune că datorită ADNL, toate nodurile formează un grafic TON global (conectat în mod ideal). În plus, este posibil să se creeze rețele suprapuse - subgrafe în cadrul acestui grafic.
TON: Telegram Open Network. Partea 1: Introducere, nivel de rețea, ADNL, DHT, rețele de suprapunere

În cadrul unei astfel de rețele, interacțiunea se realizează numai direct - prin conexiuni preformate între nodurile care participă la rețea (prin canalele ADNL descrise mai sus). Formarea unor astfel de conexiuni între vecini, căutarea vecinilor înșiși, este un proces automat care urmărește să mențină conectivitatea rețelei de suprapunere și să minimizeze întârzierile în schimbul de date în aceasta.

În plus, există o modalitate de a distribui rapid actualizările de difuzare mari în rețea - acestea sunt împărțite în bucăți, suplimentate cu cod de corectare a erorilor și toate aceste bucăți sunt trimise de la un participant la altul. Astfel, participantul nu trebuie să obțină complet toate piesele înainte de a le trimite mai departe de-a lungul rețelei.

Rețelele suprapuse pot fi publice sau private. A deveni membru al unei rețele publice nu este dificil - trebuie să găsești o structură TL care să o descrie (poate fi publică sau accesibilă printr-o anumită cheie în DHT). În cazul unei rețele private, această structură trebuie să fie cunoscută de nod în prealabil.

Va urma

Am decis să împart recenzia TON în mai multe articole. Aici se termină această parte și în urmatoarele Trec la considerarea structurii blockchain-ului (mai precis, blockchain-urilor) din care va consta TON.

Sursa: www.habr.com

Adauga un comentariu