TON: Telegram otvorena mreža. Dio 1: Uvod, mrežni sloj, ADNL, DHT, preklapajuće mreže

TON: Telegram otvorena mreža. Dio 1: Uvod, mrežni sloj, ADNL, DHT, preklapajuće mreže

Runet već dvije sedmice diže buku oko Telegrama i situacije s njegovim besmislenim i nemilosrdnim blokiranjem od strane Roskomnadzora. Rikošet je mnoge uvrijedio, ali sve su to teme za objave na Geektimesu. Iznenadilo me je nešto drugo – još uvijek nisam vidio na Habré-u nijednu analizu mreže TON koja se planira objaviti na osnovu Telegrama – Telegram Open Network. Hteo sam da nadoknadim ovaj nedostatak, jer se tu ima šta proučavati - čak i uprkos odsustvu zvaničnih izjava o tome.

Podsjetim vas da postoje glasine da je Telegram pokrenuo vrlo veliki zatvoreni ICO, nakon što je već prikupio nevjerovatne količine u njemu. Pretpostavlja se da će Gramova vlastita kriptovaluta biti lansirana ove godine, a svaki korisnik Telegrama automatski će imati novčanik, što samo po sebi stvara značajnu prednost u odnosu na druge kriptovalute.

Nažalost, pošto nema zvaničnih izjava, mogu samo da nastavim dokument nepoznatog poreklana šta vas odmah upozoravam. Naravno, može se ispostaviti da je to vrlo vješti lažnjak, ali je moguće i da je ovo prava bela knjiga budućeg sistema, koju je napisao Nikolaj Durov (i vjerovatno procurila od strane nekog od investitora). Ali čak i ako je ovo laž, niko nam neće zabraniti da o tome proučavamo i raspravljamo, zar ne?

Šta kaže ovaj dokument? Pokušaću da to prepričam svojim rečima, bliskim tekstu, ali na ruskom i malo ljudskije (neka mi oprosti Nikolaj na njegovoj sklonosti ka formalnoj matematici). Imajte na umu da čak i ako je autentičan, ovo je nacrt opisa sistema i vrlo je vjerovatno da će se promijeniti do trenutka javnog lansiranja.

Saznajemo da bi se osim kriptovalute trebalo dogoditi još mnogo toga. Uzmimo redom.

  • TON Blockchain. Ovo je osnova čitavog sistema. Ako stvarno ne znaš šta je blockchain - Preporučujem da saznate, jer će ovdje biti puno blokčejnova. Ugniježđeni, virtualno fragmentirani, pa čak i "vertikalni" blockchaini unutar blokova drugih blockchaina. Biće i nekih termina koji zvuče cool, kao što su Instant Hypercube Routing и Paradigma beskonačnog šardinga, ali o tome kasnije. I, naravno, dokaz o udjelu i pametni ugovori.
  • TON P2P mreža. Peer-to-peer mreža na osnovu koje će se sistem graditi. O tome će prije svega biti riječi u ovom dijelu priče.
  • TON Storage. Skladište datoteka koje će biti izgrađeno na gore spomenutoj peer-to-peer mreži bez obzira na blockchain. Može se porediti sa torentima.
  • TON Proxy. Ovo je usluga čija je svrha povećanje anonimnosti učesnika mreže. Bilo koji paket se može poslati ne direktno, već kroz posredničke tunele s dodatnom enkripcijom - poput I2P ili TOR.
  • TON DHT. Distribuirana hash tablica za pohranjivanje proizvoljnih vrijednosti. Takođe je izgrađen na vrhu TON mreža (ali u isto vrijeme ga on koristi) i pomaže TON Storage pronaći "distributivne" čvorove, i TON Proxy - međureleji. Ali treba napomenuti da, za razliku od blockchaina, ova hash tablica nije sigurno skladište - u nju ne možete pohraniti važne informacije.
  • TON usluge. Platforma za proizvoljne usluge. Zapravo, ovo je novi Internet povrh svega gore opisanog. Razmjena podataka - preko TON mreža/TON Proxy, a logika je u pametnim ugovorima TON Blockchain. I interfejs sa prilično poznatim URL-ovima.
  • TON DNS. Pošto je riječ o uobičajenim URL-ovima, potreban nam je i konverter sa njih na 256-bitne adrese - račune, ugovore, usluge i čvorove.
  • TON Plaćanja. I tu dolazi u obzir pitanje novca. I neće samo gram - kao i sa eterom, svi "tokeni" će biti mogući; Gram će ovdje biti samo “podrazumevana” valuta.

Ovo je prvi dio koji opisuje "prizemni" nivo TON-a - njegov mrežni dio, izgrađen na vrhu tradicionalnih protokola. U sljedećem dijelu ćemo govoriti o "pulpi" - blockchainu, koji će biti podržan sistemom opisanim u nastavku. Dakle, moj redoslijed prepričavanja je donekle drugačiji od onog korištenog u gornjem dokumentu (koji počinje odmah na apstraktnom nivou).

Osnovni pojmovi

TL (Ukucajte jezik). To je apstraktni binarni format za proizvoljne strukture podataka. Koristi se u Telegram protokolu i aktivno će se koristiti u TON-u. Ako želite saznati više o tome - evo njegovog opisa.

hash (hash). Funkcija koja izvodi nepovratnu transformaciju proizvoljne strukture podataka u jedan broj fiksne dužine. Kroz dokumentaciju se mnogo govori o funkciji SHA-256.

Mrežni čvor (Čvor). Čvor je softver koji će osigurati rad sistema. Konkretno, pretpostavlja se da će svaka Telegram klijentska aplikacija uključivati ​​TON čvor. Na nižem nivou, čvorovi imaju IPv4/IPv6 adrese i komuniciraju koristeći UDP protokol, na višem nivou imaju apstraktne adrese i implementirati ADNL protokol (vidi dolje za apstraktne adrese i ADNL). Kada je riječ o tome da neki dijelovi sistema nešto rade ili pohranjuju neke podatke, podrazumijeva se da to rade mrežni čvorovi.

Apstraktna adresa (ili jednostavno adresa, adresa). Adresa čvora je određena njegovim javnim ključem. Strogo rečeno, ovo je 256-bitni hash (SHA256) iz strukture podataka koja sadrži javni ključ (specifični kriptografski algoritam u ovom slučaju nije preciziran - eliptične krive i RSA-2048 su dati kao primjer). Da bi jedan čvor mogao komunicirati s drugim, mora znati ne samo adresu tog čvora, već i ovu strukturu podataka. Teoretski, jedan fizički čvor može kreirati bilo koji broj adresa (koje odgovaraju različitim ključevima).

Dalje, često se koristi upravo takav paket: „preslika“ u obliku TL strukture (koja sadrži gotovo sve podatke) i 256-bitni hash od njega koji se koristi za adresiranje.

Blockchain (blockchain). Blockchain je struktura podataka, elementi (blokovi) koji su poređani u "lanac", a svaki sljedeći blok lanca sadrži hash prethodnog. Na taj način se postiže integritet - promjene se mogu izvršiti samo dodavanjem novih blokova.

usluga (usluga). Usluge unutar TON-a mogu biti različitih tipova, ovisno o tome koriste li blockchain ili ne. Na primjer, jedan (ili više) mrežnih čvorova može obraditi neke RPC zahtjeve koristeći ADNL protokol opisan u nastavku, bez kreiranja ikakvih zapisa u blockchainu - poput tradicionalnih web servera. Posebno se razmatra mogućnost implementacije HTTP-a preko ADNL-a, kao i prelazak samog messengera na ovaj protokol. Po analogiji s TOR-om ili I2P-om, to će ga učiniti otpornijim na razna blokiranja.

Istovremeno, brojne usluge podrazumijevaju i interakciju s blockchainom i obradu zahtjeva izvan njega. Na primjer, za TON Storage - pohranu datoteka - nije baš razumno pohranjivati ​​same datoteke na blockchain. Sadržat će samo heševe datoteka (zajedno sa nekim meta-informacijama o njima), a specijalizovani mrežni čvorovi će djelovati kao "file serveri", spremni da ih daju drugim čvorovima putem ADNL-a.

magla servis (magla servis). Riječ je o nekim uslugama koje podrazumijevaju decentralizaciju i otvoreno učešće u njima. Na primjer, TON Proxy je usluga koju može podržati bilo koji učesnik koji želi pružiti svoj čvor kao posrednik (proxy) koji prosljeđuje pakete između drugih čvorova. Ako želi, može naplatiti naknadu koju je za to odredio - koristeći TON Payments sistem za mikroplaćanja (koji je, pak, takođe maglovita usluga).

ADNL: Mrežni sloj apstraktnog datagrama

Na najnižem nivou, komunikacija između čvorova će biti putem UDP-a (iako su druge opcije prihvatljive).

Kao što je gore spomenuto, da bi jedan čvor mogao poslati paket drugom, mora znati jedan od svojih javnih ključeva (a samim tim i adresu koju određuje). On šifrira paket ovim ključem i dodaje 256-bitnu odredišnu adresu na početak paketa - budući da jedan čvor može imati nekoliko takvih adresa, to će mu omogućiti da odredi koji ključ koristiti za dešifriranje.

TON: Telegram otvorena mreža. Dio 1: Uvod, mrežni sloj, ADNL, DHT, preklapajuće mreže

Osim toga, umjesto adrese primaoca na početku paketa podataka može biti tzv. identifikator kanal. U ovom slučaju, obrada paketa već ovisi o specifičnim dogovorima između čvorova - na primjer, podaci poslati na određeni kanal mogu biti namijenjeni drugom čvoru i moraju biti preusmjereni na njega (ovo je usluga TON Proxy). Drugi poseban slučaj može biti interakcija direktno između čvorova, ali uz enkripciju pomoću pojedinačnog para ključeva za ovaj kanal (prethodno formiran korištenjem Diffie-Hellman protokola).

Konačno, poseban slučaj je "null" kanal - ako čvor još ne zna javne ključeve svojih "susjeda", može im poslati pakete bez šifriranja uopće. Ovo je samo za inicijalizaciju - čim čvorovi pošalju informacije o svojim ključevima, treba ih koristiti za dalju interakciju.

Protokol opisan gore (256 bita ID kanala + sadržaj paketa) naziva se ADNL. U dokumentaciji se spominje mogućnost implementacije analognog TCP-a na njega ili njegovog vlastitog dodatka - RLDP (Reliable Large Datagram Protocol), ali se ne ulazi u detalje njihove implementacije.

TON DHT: Distributed Hash Table

Kao iu slučaju drugih distribuiranih sistema, TON uključuje implementaciju DHT-a - distribuirana hash tabela. Tačnije, tabela je Kademlia-like. Ako niste upoznati sa ovom vrstom hash tablica, ne brinite, onda ću vam ugrubo opisati kako su raspoređene.

TON: Telegram otvorena mreža. Dio 1: Uvod, mrežni sloj, ADNL, DHT, preklapajuće mreže

U apstraktnom smislu, DHT mapira 256-bitne ključeve u binarne vrijednosti proizvoljne dužine. Istovremeno, ključevi u tabeli su hešovi iz određene TL strukture (same strukture se takođe pohranjuju zajedno sa DHT-om). Ovo je vrlo slično formiranju adresa čvora - i one zaista mogu biti prisutne u DHT-u (na primjer, takav ključ može sadržavati IP adresu čvora koja odgovara datom apstraktna adresaako to ne krije). Ali u opštem slučaju, "predslike ključeva" (njihove opisi, ključni opisi) su metapodaci koji ukazuju na „vlasnika“ unosa u hash tabeli (odnosno, javni ključ nekog čvora), tip pohranjene vrijednosti i pravila po kojima se ovaj unos može naknadno promijeniti. Na primjer, pravilo može dozvoliti samo vlasniku da promijeni vrijednost - ili zabraniti smanjenje vrijednosti (da bi se zaštitilo od napada ponavljanja).

Pored 256-bitnih ključeva, uveden je koncept DHT adresa. Razlika sa redovnim adresama hosta je u tome što je DHT adresa vezana za IP adresu. Ako čvor ne skriva svoj IP, može koristiti redovnu adresu za DHT. Ali češće će se kreirati posebna, “polu-stalna” adresa za potrebe DHT-a.
TON: Telegram otvorena mreža. Dio 1: Uvod, mrežni sloj, ADNL, DHT, preklapajuće mreže
Iznad ključeva i DHT adresa uveden je koncept udaljenosti - sve se poklapa sa tabelama u ovom kademlia - udaljenost između ključeva je jednaka XOR (bitno isključivi OR) od njih. Kao i kod Kademlia tabela, vrijednost koja odgovara nekom ključu mora biti pohranjena u s čvorovi koji imaju najmanju udaljenost do ovog ključa (s ovdje je relativno mali broj).

Da bi DHT čvor mogao komunicirati s drugim takvim čvorovima, on se čuva u memoriji DHT tabela rutiranja - DHT i IP adrese čvorova s ​​kojima je ranije komunicirao, grupisane prema udaljenosti do njih. Postoji 256 takvih grupa (odgovaraju najznačajnijem bitu postavljenom u vrijednosti udaljenosti - to jest, čvorovi na udaljenosti od 0 do 255 će pasti u jednu grupu, od 256 do 65535 - u sljedeću, itd.). Unutar svake grupe je pohranjen ograničen broj "najboljih" čvorova (u smislu pinga za njih).

TON: Telegram otvorena mreža. Dio 1: Uvod, mrežni sloj, ADNL, DHT, preklapajuće mreže

Svaki čvor mora podržavati nekoliko operacija: pohranjivanje vrijednosti za ključ, pretraga čvorova и tražiti vrijednosti. Traženje čvorova podrazumeva izdavanje datim ključem njemu najbližih čvorova iz tabele rutiranja; Traženje vrijednosti je isto, osim kada čvor zna vrijednost za ključ (u tom slučaju ga jednostavno vraća). Prema tome, ako čvor želi da pronađe vrijednost u DHT-u pomoću ključa, on šalje zahtjeve malom broju čvorova najbližih ovom ključu iz svoje tablice rutiranja. Ako među njihovim odgovorima nema željene vrijednosti, ali postoje druge adrese čvorova, tada im se zahtjev ponavlja.

TON DHT se može koristiti u različite svrhe, na primjer, za implementaciju skladišta datoteka nalik torrentu (vidi. TON Storage); odrediti adrese čvorova koji implementiraju određene usluge; za pohranjivanje informacija o vlasnicima računa u blockchain-u. Ali najvažnija primjena je otkrivanje čvorova po njihovim apstraktnim adresama. Da biste to učinili, adresa se koristi kao ključ, čija vrijednost treba pronaći. Upit će ili pronaći samog hosta (ako je adresa koja se traži bila njegova polu-stalna DHT adresa), ili će vrijednost biti IP adresa i port na koji se treba povezati, ili druga adresa koja će se koristiti kao posrednički tunel.

Preklapanje mreža u TON

Gore opisani ADNL protokol podrazumijeva mogućnost za bilo koji čvor da razmjenjuje informacije jedni s drugima - iako ne nužno na optimalne načine. Možemo reći da zahvaljujući ADNL-u svi čvorovi formiraju globalni TON graf (idealno, povezani). Ali dodatno, moguće je kreirati mreže preklapanja - podgrafove unutar ovog grafa.
TON: Telegram otvorena mreža. Dio 1: Uvod, mrežni sloj, ADNL, DHT, preklapajuće mreže

Unutar takve mreže, interakcija se vrši samo direktno - kroz unaprijed formirane veze između čvorova članova mreže (preko gore opisanih ADNL kanala). Formiranje ovakvih veza između susjeda, traženje samih susjeda je automatski proces koji nastoji održati povezanost mreže preklapanja i minimizirati kašnjenja u razmjeni podataka u njoj.

Osim toga, postoji način da se brzo distribuiraju velika ažuriranja emitovanja unutar mreže - oni su razbijeni na dijelove, dopunjeni kodom za ispravljanje grešaka, a svi ovi dijelovi se šalju od jednog sudionika do drugog. Dakle, učesnik ne mora u potpunosti primiti sve dijelove prije nego što ih dalje proslijedi na mreži.

Mreže preklapanja mogu biti javne ili privatne. Postati član javne mreže nije teško - potrebno je pronaći TL strukturu koja to opisuje (može biti javna - ili dostupna putem određenog ključa u DHT-u). U slučaju privatne mreže, ova struktura mora biti poznata čvoru unaprijed.

Nastaviti

Odlučio sam podijeliti TON recenziju na nekoliko članaka. Ovdje se ovaj dio završava, sljedeći Prelazim na razmatranje strukture blockchaina (tačnije, blockchaina) od kojeg će se sastojati TON.

izvor: www.habr.com

Dodajte komentar