TON: Telegram Open Network. Osa 1: Sissejuhatus, vĂ”rgu tase, ADNL, DHT, ĂŒlekatted

TON: Telegram Open Network. Osa 1: Sissejuhatus, vĂ”rgu tase, ADNL, DHT, ĂŒlekatted

Kaks nĂ€dalat on Ruunet rÀÀkinud Telegramist ja olukorrast, kus Roskomnadzor on selle mĂ”ttetu ja julma blokeeringu rakendanud. Kaja on tabanud paljusid, kuid see kĂ”ik on teema postituste jaoks Geektimesis. Mind aga ĂŒllatas midagi muud – ma pole siiani nĂ€inud Habras ĂŒhtegi analĂŒĂŒsi Telegrami baasil vĂ€lja tulevast TON — Telegram Open Network. Soovin selle puudujÀÀgi tĂ€ita, kuna seal on palju uurimistööd — isegi vaatamata sellele, et ametlikke avaldusi ei ole.

Kordan — rÀÀgitakse kuuldustest, et Telegram on kĂ€ivitanud vĂ€ga ulatusliku suletud ICO, kogudes juba seal uskumatuid summasid. Eeldatakse, et juba sel aastal kĂ€ivitatakse oma krĂŒptovaluuta Gram — ja igal Telegrami kasutajal tekib automaatselt ĂŒlekandekott, mis iseenesest loob vĂ€ga palju eeliseid teiste krĂŒptovaluutade ees.

Kahjuks, kuna ametlikke avaldusi ei ole, saan edaspidi tugineda ainult tundmatu pĂ€ritoluga dokumendile, millest ma kohe teid hoiatama hakkan. Loomulikult vĂ”ib see olla vĂ€ga oskuslik vale, kuid ei ole vĂ€listatud, et see on tulevase sĂŒsteemi tĂ”eline whitepaper, mille on kirjutanud Nikolai Durov (ja mis on tĂ”enĂ€oliselt lekitatud mĂ”ne investori poolt). Kuid isegi kui see on vale, ei saa keegi meid keelata seda uurimast ja arutamast, eks?

Mida siis selles dokumendis öeldakse? Proovin seda oma sĂ”nadega edasi anda, lĂ€hedalt tekstile, kuid eesti keeles ja veidi inimlikumalt (palun andestage mulle, Nikolai, teie kalduvuse eest minna formaalse matemaatika juurde). Pidage meeles, et isegi kui see on tĂ”eline, on see sĂŒsteemi mustandkirjeldus ja see tĂ”enĂ€oliselt muutub avaliku kĂ€ivitamise ajaks.

Saame teada, et lisaks krĂŒptovaluutale on oodata veel vĂ€ga ja vĂ€ga palju muud. Vaatame jĂ€rjestikku.

  • TON Blockchain. See on kogu sĂŒsteemi alus. Kui te ei tea, mis on blokchain — soovitan teada saada, sest siin on palju blokchaine. Üksteise sisse peidetud, virtuaalselt purustatud ja isegi 'vertikaalsed' blokchainid teiste blokchainide sees. Ja siin on veel mitmeid Ă€gedalt kĂ”lavad termineid, nĂ€iteks Instant Hypercube Routing ja Piiramatu jaotamise paradigma, kuid sellest hiljem. Ja muidugi, tĂ”end-panik ja nutilepingud.
  • TON P2P vĂ”rk. Peer-to-peer vĂ”rk, mille pĂ”hjal sĂŒsteem töötab. Sellel teemal rÀÀgitakse selle loo esimeses osas.
  • TON salvestus. Failide salvestus, mis sĂ”ltumata plokiahelast ehitatakse eespool mainitud peer-to-peer vĂ”rgule. Seda on vĂ”imalik vĂ”rrelda torrentidega.
  • TON Proxy. Teenus, mille eesmĂ€rk on suurendada vĂ”rguliikmete anonĂŒĂŒmsust. Iga andmepakett saab saata mitte otse, vaid lĂ€bi vahetus-tunnelite koos tĂ€iendava krĂŒptimisega — sarnaselt I2P vĂ”i TOR-iga.
  • TON DHT. Jagatud hash-tabel juhuslike vÀÀrtuste hoidmiseks. See on samuti ĂŒles ehitatud TON vĂ”rgule (kuid kasutab selle omadusi) ja aitab TON salvestus leida 'jagamise' sĂ”lme, ja TON Proxy — vahepealseid edastajaid. Kuid tuleb mĂ€rkida, et erinevalt plokiahelast ei ole see hash-tabel turvaline salvestus — seal ei tohi olulisi andmeid hoida.
  • TON teenused. Platvorm, mis vĂ”imaldab mitmesuguseid teenuseid. Tegelikult on see uus Internet kĂ”igi ĂŒlaltoodud pĂ”himĂ”tete pĂ”hjal. Andmevahetus toimub lĂ€bi TON vĂ”rgule/TON Proxy, samas logika on nutilepingutes ise. TON Blockchain. Ja liides ĂŒsna harjumuspĂ€raste URL-idega.
  • TON DNS. Kui juba juttu on harjumuspĂ€rastest URL-idest, siis on vaja ka konverterit, mis teisendab need 256-bitisteks aadressideks — konto, lepingute, teenuste ja sĂ”lmede jaoks.
  • TON Payments. Siin tĂ”statub rahakĂŒsimus. Ja see ei piirdu mitte ainult gramiga — nagu eetri puhul, on kĂ”ik vĂ”imalikud „tokenid”; gramid on siin lihtsalt „vaikimisi” valuuta.

See on esimene osa, mis kirjeldab TON-i „maapealset” taset — selle vĂ”rguosa, mis ehitatakse traditsiooniliste protokollide peale. JĂ€rgmisel osal rÀÀgitakse „sĂŒdamikust” — plokiahelast, mida toetab hiljem kirjeldatav sĂŒsteem. Seega, minu jutt erineb mĂ”nevĂ”rra ĂŒlalmainitud dokumendis kasutatud korrast (mis algab kohe abstraktselt).

PÔhiteadmised

TL (Type Language). See on abstraktne binaarvorming, mida kasutatakse suvaliste andmestruktuuride jaoks. Seda kasutatakse Telegrami protokollis ja see leiab aktiivset kasutust TON-is. Kui soovite sellega pĂ”hjalikult tutvuda — siin on selle kirjeldus.

Hash (hash). Funktsioon, mis teostab pöördumatut muundamist suvalisest andmestruktuurist fikseeritud pikkusega numbriks. Dokumentatsioonis rÀÀgitakse laialdaselt funktsioonist SHA-256.

VĂ”rgu sĂ”lm (node). SĂ”lm on tarkvara, mis tagab sĂŒsteemi toimimise. EelkĂ”ige eeldatakse, et iga Telegrami kliendirakendus sisaldab TON-i sĂ”lme. Madalamal tasemel omavad sĂ”lmed IPv4/IPv6 aadresse ja suhtlevad UDP protokolli kaudu, kĂ”rgemal tasemel omavad nad abstraktseid aadresse ja rakendavad ADNL protokolli (abstraktsete aadresside ja ADNL kohta - vt allpool). Kui rÀÀgitakse, et osad sĂŒsteemist teevad midagi vĂ”i salvestavad andmeid, eeldatakse, et seda teevad vĂ”rgu sĂ”lmed.

Abstraktne aadress (vĂ”i lihtsalt aadress, address). KĂŒnode aadress mÀÀratakse tema avaliku vĂ”tme jĂ€rgi. TĂ€psemalt öeldes on see 256-bitine rĂ€si (SHA256) andmestruktuurist, mis sisaldab avalikku vĂ”tmet. Konkreetne krĂŒptograafiline algoritm ei ole selgelt mÀÀratletud - nĂ€iteks tuuakse vĂ€lja elliptilised kĂ”verad ja RSA-2048. Selleks, et ĂŒks sĂ”lm saaks omavahel suhelda, peab ta teadma mitte ainult teise aadressi, vaid ka seda andmestruktuuri. Teoreetiliselt vĂ”ib ĂŒks fĂŒĂŒsiline sĂ”lm luua suvalise arvu aadresse (mis vastavad erinevatele vĂ”tmetele).

JĂ€rgnevalt kasutatakse sageli just sellist kombinatsiooni: „prototĂŒĂŒp” TL-struktuuri nĂ€ol (mis sisaldab praktiliselt igasuguseid andmeid) ja 256-bitine rĂ€si sellest, mida kasutatakse adresseerimiseks.

Plokiahel (plokiahel). Plokiahel on andmestruktuur, mille elemendid (plokid) on korraldatud „ahelas”, ning iga jĂ€rgmine ahel bloke sisaldab eelneva rĂ€si. Nii saavutatakse terviklikkus - muudatusi saab teha ainult uute plokkide lisamisega.

Teenuse (teenus). TONi raames teenuseid on erinevaid tĂŒĂŒpe — olenevalt sellest, kas need kasutavad plokiahelat vĂ”i mitte. NĂ€iteks vĂ”ib ĂŒks (vĂ”i mitu) vĂ”rgu sĂ”lme töödelda teatud RPC-pĂ€ringuid allpool kirjeldatud ADNL-protokolli kaudu, luues samas plokiahelas mingeid kirjeid — nagu traditsioonilised veebiserverid. Samuti kaalutakse vĂ”imalust rakendada HTTP-d ADNL-i peal ning ĂŒle minna ka ise suhtlusrakendusele selle protokolli peale. Sarnaselt TOR-i vĂ”i I2P-ga, teeb see selle erinevate blokeeringute suhtes vastupidavamaks.

Samas hĂ”lmavad mitmed teenused nii plokiahela kui plokiahelast vĂ€ljaspool toimuva suhtlemise. NĂ€iteks TON Storage'i — failide hoidla — puhul pole mĂ”istlik faile plokiahelas hoida. Seal sisaldatakse vaid failide rĂ€sisid (koos mingite metaandmetega nende kohta), samas kui „failiserveritena“ toimivad spetsialiseeritud vĂ”rgu sĂ”lmed, mis on valmis neid teistele sĂ”lmedele ADNL-i kaudu edastama.

Udu teenus (fog service). RÀÀgime teenustest, mis hĂ”lmavad detsentraliseerimist ja avatud osalemist. NĂ€iteks TON Proxy on teenus, mida toetada saab iga liige, kes soovib pakkuda oma sĂ”lme vahendajana (proxy), edastades pakette teiste sĂ”lmede vahel. Ta vĂ”ib kĂŒsida selle eest kehtestatud tasu — kasutades TON Paymentsi mikromaksete sĂŒsteemi (mis omakorda on samuti hajutatud teenus).

ADNL: Abstraktne Datagrammi VÔrgukiht

Madalaimal tasemel toimub suhtlemine sÔlmede vahel UDP-protokolli kaudu (kuigi on lubatud ka teised variandid).

Nagu eelnevalt mainitud, peab ĂŒks sĂ”lm saatma paberi teisele, teadma ĂŒhte tema avalikest vĂ”tmetest (ja seega ka aadressi, mille see mÀÀrab). Ta krĂŒpteerib paketi selle vĂ”tmega ja lisab paketi algusesse 256-bitise saaja aadressi — kuna ĂŒhel sĂ”lmel vĂ”ib olla mitu sellist aadressi, vĂ”imaldab see tal kindlaks teha, millist vĂ”tit kasutada dekrĂŒpteerimiseks.

TON: Telegram Open Network. Osa 1: Sissejuhatus, vĂ”rgu tase, ADNL, DHT, ĂŒlekatted

Lisaks vĂ”ib andmepaketi alguses saaja aadressi asemel olla nn identifikaator kanal. Sel juhul sĂ”ltub paketi töötlemine konkreetsest kokkuleppest sĂ”lmede vahel - nĂ€iteks vĂ”ivad teatud kanalisse saadetud andmed olla mĂ”eldud teisele sĂ”lmele ja need peavad olema talle edasi suunatud (see on teenus. TON Proxy). Teine erijuhtum vĂ”ib olla otsene suhtlemine sĂ”lmede vahel, kuid sel juhul tuleb selle kanali jaoks kasutada individuaalset vĂ”tmepaariga krĂŒptimist (eelnevalt loodud Diffie-Hellmani protokolli jĂ€rgi).

LĂ”puks on erijuhuks 'null' kanal - kui sĂ”lm ei tea veel oma 'naabrite' avalikke vĂ”tmeid, vĂ”ib ta saata neile pakette tĂ€iesti krĂŒptimata. See on mĂ”eldud ainult initsialiseerimiseks - niipea kui sĂ”lmed saadavad teavet oma vĂ”tmete kohta, tuleb neid kasutada edasiseks suhtlemiseks.

Ülaltoodud protokolli (256-bitine kanalituvastus + paketi sisu) nimetatakse ADNL-ks. Dokumentatsioon mainib, et selle ĂŒle vĂ”iks rakendada TCP analooge vĂ”i oma ĂŒlesehitust - RLDP (Reliable Large Datagram Protocol), kuid ei lĂ€he detailidesse nende rakendamise osas.

TON DHT: Jaotatud hash-tabel

Nagu teiste jaotatud sĂŒsteemide puhul, eeldab TON DHT elluviimist — jaotatud rĂ€sitabeli. TĂ€psemalt öeldes — tabel on Kademlia-tĂŒĂŒpi. Kui te ei ole sellise rĂ€sitabeli tĂŒĂŒbiga tuttav — Ă€rge muretsege, ma selgitan edaspidi lĂŒhidalt, kuidas need toimivad.

TON: Telegram Open Network. Osa 1: Sissejuhatus, vĂ”rgu tase, ADNL, DHT, ĂŒlekatted

Abstraktselt öeldes seondab DHT 256-bitiseid vĂ”tmeid teatud binaarsete vÀÀrtustega, mille pikkus on suvaline. Samuti on vĂ”tmed tabelis rĂ€sid kindla TL-struktuuri (need struktuurid salvestatakse samuti koos DHT-ga). See sarnaneb tĂ”eliselt sĂ”lmede aadresside loomisega — ja need vĂ”ivad tĂ”epoolest DHT-s esineda (nĂ€iteks vĂ”ib sellise vĂ”tme all asuda vastava sĂ”lme IP-aadress antud abstraktse aadressi, kui see ei varja seda). Aga ĂŒldiselt öeldes, "vĂ”tmete proovid" (nende kirjeldused, key descriptions) — need metaandmed, mis nĂ€itavad registreerimise "omanikku" (st mingi sĂ”lme avalikku vĂ”tit), salvestatud vÀÀrtuse tĂŒĂŒpi ja reegleid, mille alusel seda kirjet hiljem muudetakse. NĂ€iteks vĂ”ib reegel lubada vÀÀrtuse muutmist ainult omanikule vĂ”i keelata vÀÀrtuse vĂ€hendamise (kaitseks replay-rĂŒnnakute eest).

Lisaks 256-bitistele vĂ”tmetele tutvustatakse DHT-aadresse. Erinevus tavalistest sĂ”lme aadressidest on see, et DHT-aadress on tingimata seotud IP-aadressiga. Kui sĂ”lm ei peida oma IP-d, vĂ”ib ta DHT jaoks kasutada tavapĂ€rast aadressi. Kuid sagedamini luuakse DHT jaoks eraldi, "pool-pĂŒsiv" aadress.
TON: Telegram Open Network. Osa 1: Sissejuhatus, vĂ”rgu tase, ADNL, DHT, ĂŒlekatted
VĂ”tmete ja DHT-aadresside puhul tutvustatakse kauguse mĂ”istet — selles osas kattub see tabelitega Kademlia — vĂ”tmete vahelise kauguse vÀÀrtus on XOR (bitihommik vĂ€listav OR) neist. Nagu Kademlia tabelites, peab vÀÀrtus, mis vastab teatud vĂ”tmele, olema talletatud s sĂ”lmedes, mille kaugus selle vĂ”tme suhtes on kĂ”ige vĂ€iksem (s siin — suhteliselt vĂ€ike number).

Kuna DHT sĂ”lm peab suhtlema teiste selliste sĂ”lmedega, hoiab ta meeles DHT marsruuditabelit — DHT- ja IP-aadressid sĂ”lmedest, millega ta varem suheldud, gruppeeritakse nende kauguse alusel. Selliseid gruppe on 256 (need vastavad kauguse vÀÀrtuse kĂ”rgeima seadistatud bitile — st sĂ”lmed, mis on kaugusel 0 kuni 255, kuuluvad ĂŒhte gruppi, 256 kuni 65535 — jĂ€rgmisse jne.). Igas grupis hoitakse piiratud arvu „parimaid“ sĂ”lmi (pĂ”hinedes nendele pingele).

TON: Telegram Open Network. Osa 1: Sissejuhatus, vĂ”rgu tase, ADNL, DHT, ĂŒlekatted

Iga sÔlm peab toetama mitmeid operatsioone: vÔtme vÀÀrtuse salvestamine, sÔlmede otsimine ja vÀÀrtuste otsimine. SÔlmede otsimine tÀhendab, et antud vÔtme alusel saadakse lÀhimad sÔlmed marsruuditi tabelist; vÀÀrtuste otsimine on sama, vÀlja arvatud juhul, kui sÔlm teab vÔtme vÀÀrtust (siis tagastab ta lihtsalt selle). Vastavalt, kui sÔlm soovib DHT-s leida vÀÀrtuse vÔtme alusel, saadab ta pÀringud vÀikesele hulgale lÀhimatele sÔlmedele oma marsruuditi tabelist. Kui nende vastustes ei ole soovitud vÀÀrtust, kuid on teisi sÔlmi, siis pÀringut korratakse nende poole.

TON DHT-d saab kasutada erinevate eesmĂ€rkide jaoks, nĂ€iteks — failide torrent-tĂŒĂŒpi salvestamiseks (vt. TON salvestus); teenuste rakenduste sĂ”lmede aadresside mÀÀramiseks; konto omanike teabe sĂ€ilitamiseks plokiahelas. Kuid kĂ”ige olulisem rakendus on sĂ”lmede tuvastamine nende abstraktsete aadresside jĂ€rgi. Selleks kasutatakse aadressit vĂ”tmena, mille vÀÀrtust tuleb leida. Taotluse tulemusena kas leitakse sĂ”lm (kui otsitav aadress oli selle poolpĂŒsiv DHT-aadress) vĂ”i on vÀÀrtuseks IP-aadress ja port ĂŒhendamiseks — vĂ”i mĂ”ni muu aadress, mida tuleks kasutada tunnelina-vahendajana.

TON-i ĂŒlekandevĂ”rgud

Ülaltoodud ADNL-protokoll vĂ”imaldab igal sĂ”lmel omavahel teavet vahetada - tĂ”si, mitte tingimata optimaalsel teel. VĂ”ib öelda, et ADNL-i abil moodustavad kĂ”ik sĂ”lmed globaalset TON-i graafi (ideaalis - ĂŒhendatud). Kuid lisaks on ette nĂ€htud ka ĂŒlekandevĂ”rkude loomise vĂ”imalus - alagraafikud selle graafi sees.
TON: Telegram Open Network. Osa 1: Sissejuhatus, vĂ”rgu tase, ADNL, DHT, ĂŒlekatted

Sellistes vĂ”rkudes toimub suhtlemine ainult otseselt - eelnevalt loodud sidemete kaudu vĂ”rgupunktide vahel (ADNL-kanalite kaudu, nagu eespool kirjeldatud). Selliste suhete loomine naabrite vahel ja naabrite otsimine on automaatne protsess, mille eesmĂ€rk on sĂ€ilitada overlay-vĂ”rgu ĂŒhendus ja vĂ€hendada andmevahetuse viivitusi.

Lisaks on vĂ€lja töötatud viis suurte laiaulatuslike vĂ€rskenduste kiiremaks levitamiseks vĂ”rgus - need jagatakse osadeks, tĂ€iendatakse vigade parandamise koodiga ja kĂ”ik need tĂŒkid saadetakse ĂŒhe osaleja poolt teisele. Seega ei pea osaleja tĂ€ielikult saama kĂ”iki osi enne, kui saadab need vĂ”rgus edasi.

Overlay-vÔrgud vÔivad olla avalikud ja privaatsed. Avaliku vÔrgu liikmeks saamine ei ole keeruline - tuleb leida TL-struktuur, mis seda kirjeldab (see vÔib olla avalik - vÔi kÀttesaadav teatud vÔtme kaudu DHT-s). Privaatsuse korral peaks see struktuur olema sÔlmele eelnevalt teada.

JĂ€tkub

Otsustasin jagada TONi ĂŒlevaate mitmeks artikliks. Selle osa lĂ”petan nĂŒĂŒd ja jĂ€rgmises lĂ€hen blockchain'i (tĂ€psemalt, blockchain'ide) struktuuri arutamisele, millest TON koosneb.

Allikas: habr.com

Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster