TON: Odprto omrežje Telegram. 1. del: Uvod, omrežna plast, ADNL, DHT, prekrivna omrežja

TON: Odprto omrežje Telegram. 1. del: Uvod, omrežna plast, ADNL, DHT, prekrivna omrežja

Že dva tedna Runet povzroča hrup o Telegramu in situaciji z njegovim nesmiselnim in neusmiljenim blokiranjem s strani Roskomnadzorja. Odboj je užalil marsikoga, a vse to so teme za objave na Geektimesu. Presenetilo me je še nekaj - na Habréju še vedno nisem videl niti ene analize omrežja TON, načrtovanega za izdajo na podlagi Telegrama - Telegram Open Network. Želel sem nadomestiti to pomanjkljivost, saj je tam nekaj za študirati - čeprav o tem ni uradnih izjav.

Naj vas spomnim, da obstajajo govorice, da je Telegram sprožil zelo obsežen zaprt ICO, ki je že zbral neverjetne količine denarja. Pričakuje se, da bo lastna kriptovaluta Gram uvedena letos - in vsak uporabnik Telegrama bo samodejno imel denarnico, kar samo po sebi ustvarja pomembno prednost pred drugimi kriptovalutami.

Ker uradnih izjav žal ni, lahko samo nadaljujem dokument neznanega izvora, na kar vas takoj opozorim. Seveda se lahko izkaže za zelo spreten ponaredek, možno pa je tudi, da je to prava bela knjiga prihodnjega sistema, ki jo je napisal Nikolaj Durov (in je verjetno pricurljal eden od vlagateljev). A tudi če je ponaredek, nam nihče ne bo prepovedal preučevanja in razpravljanja o njem, kajne?

Kaj pravi ta dokument? Poskušal jo bom ponoviti s svojimi besedami, blizu besedila, a v ruščini in malo bolj človeško (naj mi Nikolaj oprosti njegovo nagnjenost k formalni matematiki). Upoštevajte, da je to osnutek opisa sistema, tudi če je pristen, in se bo zelo verjetno spremenil do javne objave.

Izvemo, da se poleg kriptovalute pričakuje še marsikaj. Vzemimo po vrsti.

  • TON Blockchain. To je osnova celotnega sistema. Če ne veste, kaj je blockchain — Priporočam, da ugotovite, ker bo tukaj veliko blockchainov. Ugnezdene druga v drugo, praktično razdrobljene in celo "navpične" verige blokov znotraj blokov drugih verig blokov. Na voljo bo tudi nekaj kul zvenečih izrazov, kot je Takojšnje usmerjanje Hypercube и Paradigma neskončnega drobljenja, a več o tem kasneje. In seveda dokazilo o deležu in pametne pogodbe.
  • Omrežje TON P2P. Peer-to-peer omrežje, na podlagi katerega bo zgrajen sistem. O njej bo govora v tem delu zgodbe najprej.
  • TON Skladiščenje. Shramba datotek, ki bo ne glede na blockchain zgrajena na zgoraj omenjenem omrežju enakovrednih. Lahko primerjamo s torrenti.
  • TON posrednik. Gre za storitev, katere namen je povečati anonimnost udeležencev omrežja. Vsak paket je mogoče poslati ne neposredno, ampak prek vmesnih tunelov z dodatnim šifriranjem - kot je I2P ali TOR.
  • TON DHT. Porazdeljena zgoščena tabela za shranjevanje poljubnih vrednosti. Zgrajen je tudi na vrhu Omrežje TON (a ga hkrati uporablja sam) in pomaga TON Skladiščenje poiščite "distribucijska" vozlišča in TON posrednik — vmesni repetitorji. Vendar je treba opozoriti, da za razliko od verige blokov ta zgoščena tabela ni varna shramba - vanjo ne morete shraniti pomembnih informacij.
  • TON storitve. Platforma za storitve po meri. V bistvu je to nov internet poleg vsega zgoraj opisanega. Izmenjava podatkov - prek Omrežje TON/TON posrednik, in logika je v pametnih pogodbah TON Blockchain. In vmesnik z dokaj znanimi URL-ji.
  • TON DNS. Ker govorimo o znanih URL-jih, potrebujemo tudi pretvornik iz njih v 256-bitne naslove - račune, pogodbe, storitve in vozlišča.
  • TON plačila. In tu pride v poštev vprašanje denarja. In ne bo samo gram — tako kot pri etru bodo možni kakršni koli "žetoni"; Grami bodo tukaj samo "privzeta" valuta.

To je prvi del, ki opisuje "prizemljeno" plast TON - njegov omrežni del, zgrajen na vrhu tradicionalnih protokolov. V naslednjem delu bomo govorili o “soft” - blockchainu, ki bo podprt s spodaj opisanim sistemom. Tako je moj vrstni red pripovedovanja nekoliko drugačen od tistega, uporabljenega v zgoraj omenjenem dokumentu (ki se začne takoj na abstraktni ravni).

Osnovni pojmi

TL (Vnesite jezik). Je abstraktna binarna oblika za poljubne podatkovne strukture. Uporablja se v protokolu Telegram in se bo aktivno uporabljal v TON. Če se želite podrobneje seznaniti z njim - tukaj je njegov opis.

Hash (hash). Funkcija, ki izvede nepovratno pretvorbo poljubne podatkovne strukture v eno samo število fiksne dolžine. V celotni dokumentaciji govorimo o funkciji SHA-256.

Omrežno vozlišče (Vozel). Vozlišče je programska oprema, ki bo zagotovila delovanje sistema. Zlasti se predpostavlja, da bo vsaka odjemalska aplikacija Telegram vključevala vozlišče TON. Na nizki ravni imajo vozlišča naslove IPv4/IPv6 in komunicirajo po protokolu UDP; na višji ravni imajo abstraktne naslove in implementirati protokol ADNL (o abstraktnih naslovih in ADNL - glej spodaj). Ko gre za dejstvo, da nekateri deli sistema nekaj naredijo ali shranijo neke podatke, se razume, da to počnejo omrežna vozlišča.

Abstraktni naslov (ali preprosto naslov, Naslov). Naslov vozlišča je določen z njegovim javnim ključem. Natančneje, gre za 256-bitno zgoščevanje (SHA256) podatkovne strukture, ki vsebuje javni ključ (poseben kriptografski algoritem ni naveden – kot primeri so podane eliptične krivulje in RSA-2048). Da lahko eno vozlišče komunicira z drugim, mora poznati ne le naslov tega vozlišča, ampak tudi to podatkovno strukturo. Teoretično lahko eno fizično vozlišče ustvari poljubno število naslovov (ki ustrezajo različnim ključem).

Poleg tega se pogosto uporablja ravno taka povezava: "prototip" v obliki strukture TL (ki vsebuje skoraj vse podatke) in 256-bitni hash iz nje, ki se uporablja za naslavljanje.

Blockchain (blockchain). Blockchain je podatkovna struktura, elementi (bloki), ki so razvrščeni v "verigo", vsak naslednji blok verige pa vsebuje zgoščeno vrednost prejšnjega. Na ta način je dosežena celovitost – spremembe so možne samo z dodajanjem novih blokov.

Orodja (Storitev). Storitve znotraj TON so lahko različnih vrst, odvisno od tega, ali uporabljajo blockchain ali ne. Na primer, eno (ali več) omrežnih vozlišč lahko obdela določene zahteve RPC z uporabo protokola ADNL, opisanega spodaj, brez ustvarjanja kakršnih koli zapisov v verigi blokov – kot tradicionalni spletni strežniki. Vključno z možnostjo implementacije HTTP preko ADNL, kot tudi prehod samega messengerja na ta protokol. Po analogiji s TOR ali I2P bo to bolj odporno na različne blokade.

Hkrati številne storitve vključujejo interakcijo z verigo blokov in obdelavo zahtev zunaj nje. Na primer, za TON Storage - shranjevanje datotek - ni zelo razumno shranjevati same datoteke v blockchain. Vsebovala bo samo zgoščene datoteke (skupaj z nekaterimi metainformacijami o njih), specializirana omrežna vozlišča pa bodo delovala kot "datotečni strežniki", pripravljena, da jih pošljejo drugim vozliščem prek ADNL.

Servis megle (servis megle). Govorimo o nekaterih storitvah, ki pomenijo decentralizacijo in odprto sodelovanje v njih. Na primer, TON Proxy je storitev, ki jo lahko podpira vsak udeleženec, ki želi zagotoviti svoje vozlišče kot posrednika (proxy) za posredovanje paketov med drugimi vozlišči. Po želji lahko za to zaračuna provizijo, ki jo določi - z uporabo sistema TON Payments za mikroplačila (ki je posledično tudi storitev megle).

ADNL: omrežna plast abstraktnega datagrama

Na najnižji ravni bo komunikacija med vozlišči potekala po protokolu UDP (čeprav so sprejemljive tudi druge možnosti).

Kot je navedeno zgoraj, mora eno vozlišče, da lahko pošlje paket drugemu, poznati enega od svojih javnih ključev (in s tem naslov, ki ga definira). Šifrira paket s tem ključem in doda 256-bitni ciljni naslov na začetek paketa - ker ima lahko eno vozlišče več teh naslovov, mu bo to omogočilo določiti, kateri ključ uporabiti za dešifriranje.

TON: Odprto omrežje Telegram. 1. del: Uvod, omrežna plast, ADNL, DHT, prekrivna omrežja

Poleg tega lahko namesto naslova prejemnika začetek podatkovnega paketa vsebuje t.i. identifikator kanal. V tem primeru je obdelava paketa že odvisna od posebnih dogovorov med vozlišči – na primer podatki, poslani na določen kanal, so lahko namenjeni drugemu vozlišču in se mu morajo posredovati (to je storitev TON posrednik). Drug poseben primer je lahko interakcija neposredno med vozlišči, vendar s šifriranjem z uporabo posameznega para ključev za ta kanal (predhodno ustvarjenega s protokolom Diffie-Hellman).

Končno, poseben primer je "ničelni" kanal - če vozlišče še ne pozna javnih ključev svojih "sosedov", jim lahko pošlje pakete brez šifriranja. To je namenjeno le inicializaciji – ko vozlišča pošljejo informacije o svojih ključih, jih je treba uporabiti za nadaljnjo komunikacijo.

Zgoraj opisani protokol (256 bitov identifikatorja kanala + vsebina paketa) se imenuje ADNL. Dokumentacija omenja možnost implementacije analoga TCP na vrhu ali lastnega dodatka - RLDP (Reliable Large Datagram Protocol), vendar se ne spušča v podrobnosti o njihovi implementaciji.

TON DHT: porazdeljena zgoščena tabela

Kot velja za druge porazdeljene sisteme, TON vključuje implementacijo DHT - porazdeljena zgoščena tabela. Natančneje, tabela je Kademlia podoben. Če niste seznanjeni s to vrsto zgoščevalnih tabel, ne skrbite, spodaj bom v grobem opisal, kako delujejo.

TON: Odprto omrežje Telegram. 1. del: Uvod, omrežna plast, ADNL, DHT, prekrivna omrežja

V abstraktnem smislu DHT preslika 256-bitne ključe v binarne vrednosti poljubne dolžine. V tem primeru so ključi v tabeli zgoščene vrednosti določene strukture TL (tudi same strukture so shranjene skupaj z DHT). To je zelo podobno oblikovanju naslovov vozlišč - in ti so lahko dejansko prisotni v DHT (na primer z uporabo takega ključa naslov IP vozlišča, ki ustreza danemu abstraktni naslov, če tega ne skriva). Toda v splošnem primeru so "prototipi ključev" (njihovi opisi, ključni opisi) je metapodatek, ki označuje "lastnika" vnosa v zgoščevalni tabeli (to je javni ključ nekega vozlišča), vrsto shranjene vrednosti in pravila, po katerih se lahko ta vnos naknadno spremeni. Pravilo lahko na primer dovoljuje samo lastniku, da spremeni vrednost, ali prepove spreminjanje vrednosti navzdol (za zaščito pred napadi ponovitve).

Poleg 256-bitnih ključev je uveden koncept naslovov DHT. Razlika z navadnimi gostiteljskimi naslovi je v tem, da je naslov DHT nujno vezan na naslov IP. Če vozlišče ne skriva svojega IP-ja, lahko za DHT uporablja običajni naslov. Pogosteje pa bo za potrebe DHT ustvarjen ločen, »poltrajni« naslov.
TON: Odprto omrežje Telegram. 1. del: Uvod, omrežna plast, ADNL, DHT, prekrivna omrežja
Koncept razdalje je predstavljen nad tipkami in naslovi DHT - v tem se vse ujema s tabelami kademlija — razdalja med ključema je enaka njihovemu XOR (bitno izključujočemu OR). Kot v tabelah Kademlia mora biti vrednost, ki ustreza določenemu ključu, shranjena na s vozlišča, ki imajo najkrajšo razdaljo do tega ključa (s tukaj je razmeroma majhno število).

Da lahko vozlišče DHT komunicira z drugimi takšnimi vozlišči, hrani v pomnilniku DHT usmerjevalna tabela — Naslovi DHT in IP vozlišč, s katerimi je prej komuniciral, razvrščeni glede na razdaljo do njih. Obstaja 256 takih skupin (ustrezajo najpomembnejšemu bitu, nastavljenemu v vrednosti razdalje - to pomeni, da bodo vozlišča na razdalji od 0 do 255 spadala v eno skupino, od 256 do 65535 - v naslednjo itd.). Znotraj vsake skupine je shranjeno omejeno število "najboljših" vozlišč (v smislu pinga do njih).

TON: Odprto omrežje Telegram. 1. del: Uvod, omrežna plast, ADNL, DHT, prekrivna omrežja

Vsako vozlišče mora podpirati več operacij: shranjevanje vrednosti za ključ, iskanje vozlišča и iskanje vrednot. Iskanje vozlišč vključuje izdajanje vozlišč, ki so mu najbližje iz usmerjevalne tabele, na podlagi danega ključa; iskanje vrednosti je enako, razen če vozlišče pozna vrednost za ključ (takrat jo samo vrne). V skladu s tem, če želi vozlišče najti vrednost po ključu v DHT, pošlje poizvedbe majhnemu številu vozlišč, ki so najbližje temu ključu iz svoje usmerjevalne tabele. Če zahtevane vrednosti ni med njihovimi odgovori, obstajajo pa drugi naslovi vozlišč, se jim zahteva ponovi.

TON DHT se lahko uporablja za različne namene, na primer za izvajanje torrent podobnega shranjevanja datotek (glejte. TON Skladiščenje); določiti naslove vozlišč, ki izvajajo določene storitve; za shranjevanje podatkov o lastnikih računov v verigi blokov. Toda najpomembnejša uporaba je odkrivanje vozlišč po njihovih abstraktnih naslovih. Za to se naslov uporabi kot ključ, katerega vrednost je treba najti. Kot rezultat zahteve bo najdeno samo vozlišče (če je bil iskani naslov njegov poltrajni naslov DHT) ali pa bo vrednost naslov IP in vrata za povezavo – ali drug naslov, ki naj se uporabi kot vmesni tunel.

Prekrivna omrežja v TON

Zgoraj opisani protokol ADNL pomeni možnost, da katera koli vozlišča izmenjujejo informacije med seboj – čeprav ne nujno na optimalen način. Lahko rečemo, da zahvaljujoč ADNL vsa vozlišča tvorijo globalni TON graf (idealno povezan). Dodatno pa je možno ustvariti prekrivne mreže - podgrafe znotraj tega grafa.
TON: Odprto omrežje Telegram. 1. del: Uvod, omrežna plast, ADNL, DHT, prekrivna omrežja

Znotraj takšnega omrežja se interakcija izvaja le neposredno - prek vnaprej oblikovanih povezav med vozlišči, ki sodelujejo v omrežju (preko zgoraj opisanih kanalov ADNL). Oblikovanje tovrstnih povezav med sosedi, iskanje samih sosedov, je avtomatski proces, ki skuša ohraniti povezljivost prekrivnega omrežja in zmanjšati zamude pri izmenjavi podatkov v njem.

Poleg tega obstaja način za hitro distribucijo velikih oddajnih posodobitev v omrežju - razdeljene so na dele, dopolnjene s kodo za odpravljanje napak in vsi ti deli se pošiljajo od enega udeleženca do drugega. Tako udeležencu ni treba v celoti pridobiti vseh delov, preden jih pošlje naprej po omrežju.

Prekrivna omrežja so lahko javna ali zasebna. Postati član javnega omrežja ni težko - najti morate strukturo TL, ki ga opisuje (lahko je javna ali dostopna z določenim ključem v DHT). V primeru zasebnega omrežja mora biti ta struktura vozlišču znana vnaprej.

Se nadaljuje

Odločil sem se, da bom pregled TON razdelil na več člankov. Tukaj se ta del konča in v naslednjem Nadaljeval bom s strukturo verige blokov (natančneje, verig blokov), iz katere bo sestavljen TON.

Vir: www.habr.com

Dodaj komentar