TON: Otvorena mreža Telegrama. 1. dio: Uvod, mrežni sloj, ADNL, DHT, preklopne mreže

TON: Otvorena mreža Telegrama. 1. dio: Uvod, mrežni sloj, ADNL, DHT, preklopne mreže

Već dva tjedna Runet 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 postove na Geektimesu. Iznenadilo me nešto drugo - još uvijek nisam vidio niti jednu analizu na Habréu mreže TON planirane za puštanje na temelju Telegrama - Telegram Open Network. Želio sam nadoknaditi taj nedostatak, jer se tamo ima što učiti - čak i usprkos nedostatku službenih izjava o tome.

Dopustite mi da vas podsjetim da postoje glasine da je Telegram pokrenuo vrlo veliki zatvoreni ICO, nakon što je već prikupio nevjerojatne količine novca. Očekuje se da će vlastita kriptovaluta Grama 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, budući da nema službenih izjava, mogu samo nastaviti dalje dokument nepoznatog porijekla, na što vas odmah upozoravam. Naravno, može se pokazati da je riječ o vrlo vještom lažnjaku, ali moguće je i da se radi o stvarnom whitepaperu budućeg sustava, koji je napisao Nikolaj Durov (a procurio, vjerojatno, jedan od investitora). Ali čak i ako je lažna, nitko nam neće zabraniti da je proučavamo i raspravljamo, zar ne?

Što ovaj dokument kaže? Pokušat ću to prepričati svojim riječima, blisko tekstu, ali na ruskom i malo ljudskije (neka mi Nikolaj oprosti zbog svoje sklonosti da ulazi u formalnu matematiku). Imajte na umu da čak i ako je ovo originalno, ovo je nacrt opisa sustava i vrlo će se vjerojatno promijeniti do trenutka javnog lansiranja.

Saznajemo da se osim kriptovalute očekuje još puno toga. Krenimo redom.

  • TON Blockchain. To je osnova cijelog sustava. Ako ne znate što je to blockchain — Preporučujem da saznate, jer će ovdje biti puno blockchaina. Ugniježđeni jedni u druge, gotovo fragmentirani, pa čak i "vertikalni" lanci blokova unutar blokova drugih lanaca blokova. Također će biti nekih izraza koji zvuče cool kao što su Instant Hypercube usmjeravanje и Paradigma beskonačnog dijeljenja, ali o tome kasnije. I, naravno, proof-of-stake i pametni ugovori.
  • TON P2P mreža. Peer-to-peer mreža na temelju koje će se sustav graditi. O njoj će biti riječi prvo u ovom dijelu priče.
  • Skladište TON. Pohrana datoteka, koja će, bez obzira na blockchain, biti izgrađena na gore navedenoj peer-to-peer mreži. Može se usporediti s torrentima.
  • TON proxy. Ovo je usluga čija je svrha povećati anonimnost sudionika mreže. Bilo koji paket može se poslati ne izravno, već kroz posredničke tunele s dodatnom enkripcijom - poput I2P ili TOR.
  • TON DHT. Distribuirana hash tablica za pohranu proizvoljnih vrijednosti. Također je izgrađen na vrhu TON mreža (ali se ujedno i koristi od njega) i pomaže Skladište TON pronaći "distribucijske" čvorove i TON proxy — srednji ponavljači. Ali treba napomenuti da, za razliku od blockchaina, ova hash tablica nije sigurna pohrana - u nju ne možete pohraniti važne informacije.
  • TON usluge. Platforma za usluge po narudžbi. U biti, ovo je novi Internet povrh svega gore opisanog. Razmjena podataka - putem TON mreža/TON proxy, a logika je u pametnim ugovorima TON Blockchain. I sučelje s prilično poznatim URL-ovima.
  • TON DNS. Budući da je riječ o poznatim URL-ovima, potreban nam je i pretvarač iz njih u 256-bitne adrese - račune, ugovore, usluge i čvorove.
  • TON Payments. I tu dolazi do izražaja pitanje novca. I neće biti samo tako gram — kao i kod etera, bit će mogući bilo koji "žetoni"; Grami će ovdje biti samo "zadana" valuta.

Ovo je prvi dio koji opisuje "uzemljeni" sloj TON-a - njegov mrežni dio, izgrađen na tradicionalnim protokolima. U sljedećem dijelu govorit ćemo o “soft” - blockchainu, koji će biti podržan od strane dolje opisanog sustava. Stoga je moj redoslijed prepričavanja donekle drugačiji od onog korištenog u gore spomenutom dokumentu (koji počinje odmah na razini apstrakta).

Osnovni pojmovi

TL (Upišite jezik). To je apstraktni binarni format za proizvoljne strukture podataka. Koristi se u protokolu Telegram i aktivno će se koristiti u TON-u. Ako se želite detaljnije upoznati s njim - evo njegovog opisa.

Hash (smjesa). Funkcija koja izvodi nepovratnu transformaciju proizvoljne podatkovne strukture u jedan broj fiksne duljine. U cijeloj dokumentaciji govorimo o funkciji SHA-256.

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

Apstraktna adresa (ili jednostavno adresa, adresa). Adresa čvora određena je njegovim javnim ključem. Točnije, radi se o 256-bitnom raspršivanju (SHA256) podatkovne strukture koja sadrži javni ključ (konkretni kriptografski algoritam nije naveden - kao primjeri navedeni su eliptične krivulje i RSA-2048). Da bi jedan čvor mogao komunicirati s drugim, mora znati ne samo adresu tog čvora, već i ovu strukturu podataka. U teoriji, jedan fizički čvor može stvoriti bilo koji broj adresa (koje odgovaraju različitim ključevima).

Nadalje, često se koristi upravo takva poveznica: “prototip” u obliku TL strukture (koja sadrži gotovo sve podatke) i 256-bitni hash iz nje, koji se koristi za adresiranje.

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

Usluga (usluga). Usluge unutar TON-a mogu biti različitih vrsta, ovisno o tome koriste li blockchain ili ne. Na primjer, jedan (ili više) mrežnih čvorova može obraditi određene RPC zahtjeve pomoću ADNL protokola opisanog u nastavku, bez stvaranja bilo kakvih zapisa u blockchainu - kao tradicionalni web poslužitelji. Uključujući mogućnost implementacije HTTP-a preko ADNL-a, kao i prijelaz samog glasnika na ovaj protokol. Po analogiji s TOR-om ili I2P-om, to će ga učiniti otpornijim na različita blokiranja.

Istodobno, brojne usluge uključuju 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 hash datoteke (zajedno s nekim metainformacijama o njima), a specijalizirani mrežni čvorovi djelovat će kao "poslužitelji datoteka", spremni za slanje ih drugim čvorovima putem ADNL-a.

Usluga magle (usluga magle). Riječ je o nekim uslugama koje podrazumijevaju decentralizaciju i otvoreno sudjelovanje u njima. Na primjer, TON Proxy je usluga koju može podržati bilo koji sudionik koji želi dati svoj čvor kao posrednika (proxy) za prosljeđivanje paketa između drugih čvorova. Ako želi, može naplatiti naknadu koju je sam odredio za to - korištenjem sustava TON Payments za mikroplaćanja (koji je, pak, također usluga magle).

ADNL: Mrežni sloj apstraktnog datagrama

Na najnižoj razini, komunikacija između čvorova odvijat će se korištenjem UDP protokola (iako su i druge opcije prihvatljive).

Kao što je gore spomenuto, da bi jedan čvor poslao paket drugome, mora znati jedan od svojih javnih ključeva (a time i adresu koju definira). 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 ovih adresa, to će mu omogućiti da odredi koji će ključ koristiti za dešifriranje.

TON: Otvorena mreža Telegrama. 1. dio: Uvod, mrežni sloj, ADNL, DHT, preklopne mreže

Osim toga, umjesto adrese primatelja, početak podatkovnog paketa može sadržavati tzv. identifikator kanal. U tom slučaju obrada paketa već ovisi o specifičnim dogovorima između čvorova - na primjer, podaci poslani određenom kanalu mogu biti namijenjeni drugom čvoru i moraju mu se proslijediti (to je usluga TON proxy). Još jedan poseban slučaj može biti interakcija izravno između čvorova, ali s enkripcijom pomoću pojedinačnog para ključeva za ovaj kanal (unaprijed generiran pomoću Diffie-Hellman protokola).

Konačno, poseban slučaj je "nulti" kanal - ako čvor još ne zna javne ključeve svojih "susjeda", može im poslati pakete bez ikakve enkripcije. Ovo je namijenjeno samo za inicijalizaciju - nakon što čvorovi pošalju informacije o svojim ključevima, trebali bi se koristiti za daljnju komunikaciju.

Gore opisani protokol (256 bita identifikatora kanala + sadržaj paketa) naziva se ADNL. Dokumentacija spominje mogućnost implementacije analoga TCP-a povrh njega ili vlastitog dodatka - RLDP (Reliable Large Datagram Protocol), ali ne ulazi u detalje o njihovoj implementaciji.

TON DHT: Distribuirana hash tablica

Kao što je slučaj s drugim distribuiranim sustavima, TON uključuje implementaciju DHT-a - distribuirana hash tablica. Konkretnije, tablica je Kademlijski. Ako niste upoznati s ovom vrstom hash tablice, ne brinite, u nastavku ću ugrubo opisati kako rade.

TON: Otvorena mreža Telegrama. 1. dio: Uvod, mrežni sloj, ADNL, DHT, preklopne mreže

U apstraktnom smislu, DHT preslikava 256-bitne ključeve u binarne vrijednosti proizvoljne duljine. U ovom slučaju, ključevi u tablici su hashovi iz određene TL strukture (same strukture su također pohranjene zajedno s DHT-om). Ovo je vrlo slično formiranju adresa čvorova - i one doista mogu biti prisutne u DHT-u (na primjer, korištenjem takvog ključa IP adresa čvora koja odgovara danom apstraktna adresa, ako to ne krije). Ali u općem slučaju, "prototipovi ključeva" (njihovi opisi, ključni opisi) je metapodatak koji označava "vlasnika" unosa u hash tablici (to jest, javni ključ nekog čvora), vrstu pohranjene vrijednosti i pravila prema kojima se ovaj unos može naknadno promijeniti. Na primjer, pravilo može dopustiti samo vlasniku promjenu vrijednosti ili zabraniti promjenu vrijednosti prema dolje (za zaštitu od napada ponavljanjem).

Uz 256-bitne ključeve uvodi se koncept DHT adresa. Razlika u odnosu na obične host adrese je u tome što je DHT adresa nužno povezana s IP adresom. Ako čvor ne skriva svoj IP, može koristiti uobičajenu adresu za DHT. Ali češće će se za potrebe DHT-a kreirati zasebna, "polutrajna" adresa.
TON: Otvorena mreža Telegrama. 1. dio: Uvod, mrežni sloj, ADNL, DHT, preklopne mreže
Koncept udaljenosti uvodi se iznad tipki i DHT adresa - u ovome se sve poklapa s tablicama kademlija — udaljenost između ključeva jednaka je njihovom XOR-u (bitno isključivi OR). Kao u Kademlia tablicama, vrijednost koja odgovara određenom ključu mora biti pohranjena s čvorovi koji imaju najkraću udaljenost do ovog ključa (s ovdje je relativno mali broj).

Da bi DHT čvor mogao komunicirati s drugim takvim čvorovima, on čuva u memoriji DHT tablica usmjeravanja — DHT i IP adrese čvorova s ​​kojima je prije bio u interakciji, grupirane prema udaljenosti do njih. Postoji 256 takvih grupa (odgovaraju najvažnijem 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 pohranjuje se ograničen broj "najboljih" čvorova (u smislu pinga do njih).

TON: Otvorena mreža Telegrama. 1. dio: Uvod, mrežni sloj, ADNL, DHT, preklopne mreže

Svaki čvor mora podržavati nekoliko operacija: pohranjivanje vrijednosti za ključ, pretraživanje čvora и traženje vrijednosti. Traženje čvorova uključuje izdavanje, na temelju danog ključa, njemu najbližih čvorova iz tablice usmjeravanja; traženje vrijednosti je isto, osim kada čvor zna vrijednost za ključ (tada je samo vraća). U skladu s tim, ako čvor želi pronaći vrijednost po ključu u DHT-u, on šalje zahtjeve malom broju čvorova koji su najbliži ovom ključu iz svoje tablice usmjeravanja. Ako tražena vrijednost nije među njihovim odgovorima, ali postoje druge adrese čvorova, tada im se zahtjev ponavlja.

TON DHT se može koristiti u razne svrhe, na primjer, za implementaciju pohrane datoteka poput torrenta (pogledajte. Skladište TON); odrediti adrese čvorova koji implementiraju određene usluge; za pohranu podataka o vlasnicima računa na blockchainu. Ali najvažnija primjena je otkrivanje čvorova po njihovim apstraktnim adresama. Za to se adresa koristi kao ključ čiju vrijednost treba pronaći. Kao rezultat zahtjeva, ili će se pronaći sam čvor (ako je tražena adresa bila njegova polutrajna DHT adresa), ili će vrijednost biti IP adresa i port za povezivanje - ili druga adresa koja bi se trebala koristiti kao međutunel.

Prekrivajuće mreže u TON

Gore opisani ADNL protokol podrazumijeva mogućnost da bilo koji čvorovi međusobno razmjenjuju informacije - iako ne nužno na optimalan način. Možemo reći da zahvaljujući ADNL-u svi čvorovi tvore globalni TON graf (idealno povezan). No, dodatno je moguće kreirati preklopne mreže - podgrafove unutar ovog grafa.
TON: Otvorena mreža Telegrama. 1. dio: Uvod, mrežni sloj, ADNL, DHT, preklopne mreže

Unutar takve mreže interakcija se odvija samo izravno - putem unaprijed formiranih veza između čvorova koji sudjeluju u mreži (preko gore opisanih ADNL kanala). Formiranje takvih veza među susjedima, traženje samih susjeda, automatski je proces koji nastoji održati povezanost preklopne mreže i minimizirati kašnjenja u razmjeni podataka u njoj.

Osim toga, postoji način za brzu distribuciju velikih ažuriranja emitiranja unutar mreže - ona su razbijena u dijelove, dopunjena kodom za ispravljanje pogrešaka, a svi ti dijelovi se šalju od jednog sudionika do drugog. Dakle, sudionik ne mora u potpunosti nabaviti sve dijelove prije nego što ih pošalje dalje duž mreže.

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

Da bi se nastavila

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

Izvor: www.habr.com

Dodajte komentar