TON: Telegram Open Network. Osa 1: Sissejuhatus, vÔrgutasand, ADNL, DHT, overlay-vÔrgud

TON: Telegram Open Network. Osa 1: Sissejuhatus, vÔrgutasand, ADNL, DHT, overlay-vÔrgud

Juba kaks nĂ€dalat on Runet segaduses Telegrami ja selle mĂ”ttetuks ja jĂ”hkraks blokeerimiseks Roskomnadzori poolt. Paljusid on see kaha tabanud, aga need on teemasid Geektimesi postitusteks. Mind ĂŒllatas midagi muud - ma ei ole siiani nĂ€inud Habras ĂŒhtegi ĂŒlevaadet TON-i, mis pĂ”hineb Telegrami vĂ”rgul - Telegram Open Network, lĂ€henemisest. Soovisin selle puudujÀÀgi tĂ€ita, sest seal on palju uurimist - isegi hoolimata ametlike avalduste puudumisest.

KĂŒsimus on selles - on kĂ”lanud kuulujutud, et Telegram on alustanud vĂ€ga suurt suletud ICO-d, kogudes juba uskumatuid summasid. Eeldatakse, et juba sel aastal kĂ€ivitab oma krĂŒptoraha Gram - ja iga Telegrami kasutajal tekib automaatselt rahakott, mis iseenesest loob mĂ€rkimisvÀÀrse eelise teiste krĂŒptovaluutade ees.

Kahjuks, kuna ametlikke avaldusi ei ole, saan ma edasi liikuda ainult alusel tundmatu pĂ€ritoluga dokumendile, millest ma teid kohe hoiatama pean. Loomulikult vĂ”ib see osutuda vĂ€ga kunstlikuks valevĂ€ljaandeks, aga ei saa vĂ€listada, et see on tulevase sĂŒsteemi tegelik valge raamat, mille on kirjutanud Nikolai Durov (ja ilmselt lekitanud keegi investoritest). Kuid isegi kui see on vale, ei tohi keegi meilt seda uurida ja arutada, eks?

Mis siis selles dokumendis öeldakse? Proovin seda oma sĂ”nadega edasi anda, tekstile lĂ€hedal, aga eesti keeles ja veidi inimlikumalt (kui Nikolai, kellel on kalduvus minna formaalse matemaatika peale, mind andeks annab). Pange tĂ€hele, et isegi juhul, kui see on autentne, on see sĂŒsteemi eelnĂ”u, ja see muutub tĂ”enĂ€oliselt avaliku kĂ€ivitamise ajaks.

Saame teada, et lisaks krĂŒptorahale on plaanis veel vĂ€ga palju muud. Alustame jĂ€rjest.

  • TON Blockchain. See on kogu sĂŒsteemi alus. Kui te ei tea, mis on blockchain , soovitan selle kohta rohkem teada saada, sest siin on palju plokke. Üksteise sisse paigutatud, virtuaalselt purustatud ja isegi "vertikaalsed" plokiahelad teiste plokikahelate sees. Ja siin on ka mitmeid Ă€gedaid termineid nagu Instant Hypercube Routing ja Infinite Sharding Paradigm, aga sellest hiljem. Ja muidugi, proof-of-stake ja nutikad lepingud.
  • TON P2P Network. P2P vĂ”rgustik, mille alusel töötab sĂŒsteem. Sellest rÀÀgitakse antud jutus esmajĂ€rjekorras.
  • TON Storage. Failihaldus, mis on sĂ”ltumatu plokiahelast, pĂ”hineb ĂŒlalmainitud P2P-vĂ”rgul. Seda saab vĂ”rrelda torrentidega.
  • TON Proxy. See on teenus, mille eesmĂ€rk on suurendada vĂ”rgu osalejate anonĂŒĂŒmsust. Iga pakett saab saata mitte otse, vaid tunnelite-keskmike kaudu koos tĂ€iendava krĂŒpteeringuga - sarnaselt I2P vĂ”i TOR-iga.
  • TON DHT. Jagatud hash-tabel juhuslike vÀÀrtuste hoiustamiseks. See on samuti rajatud TON Network (kuid kasutab seda ise) ning aitab TON Storage leidma "jagamiskohti" ja TON Proxy — vahepealseid edastajaid. Tuleb mĂ€rkida, et erinevalt plokiahlast ei ole see hash-tabel kaitstud hoiustamisruum — oluline teave ei tohiks seal asuda.
  • TON Services. Platvorm erinevate teenuste jaoks. Sisuliselt on see uus internet eelnevalt kirjeldatud kĂ”ige pĂ”hjal. TON Network/TON Proxy, andmete vahetamine toimub lĂ€bi TON Blockchain. ja loogika on nutilepingutes, mis kuuluvad
  • . Ja liides ĂŒsna tuttavate URLidega.. Kuna rÀÀkisime tuttavatest URL-idest, on vajalik ka nende teisendaja 256-bitisteks aadressideks - kontode, lepingute, teenuste ja sĂ”lmede jaoks.
  • TON Payments. Siin tatsatakse alles rahakĂŒsimuste juurde. Ja see ei ole ainult gram — nagu eetri puhul, vĂ”ivad kĂ”ik "tokenid" olla vĂ”imalikud; grammid on siin vaid "vaikimisi" valuuta.

See on esimene osa, mis kirjeldab TON-i "maapiirkonda" — selle vĂ”rgu osa, mis on ehitatud traditsiooniliste protokollide peale. JĂ€rgmises osas rÀÀgitakse "sĂŒdamest" - plokiahelast, mida toetab allpool kirjeldatud sĂŒsteem. Seega minu jutu kordamine erineb veidi ĂŒlalmainitud dokumendis kasutatud korrast (mis algab kohe abstraktsest tasemest).

PÔhidokumendid

TL (Type Language). See on abstraktne binaariformaat juhuslike andmestruktuuride jaoks. Seda kasutatakse Telegrami protokollis ja seda hakatakse aktiivselt kasutama TON-is. Kui soovite sellega ĂŒksikasjalikult tutvuda - siin on selle kirjeldus.

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

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

Abstraktne aadress (vĂ”i lihtsalt aadress, aadress). SĂ”lme aadress mÀÀratakse tema avaliku vĂ”tme jĂ€rgi. TĂ€psemalt on see 256-bitine hash (SHA256) andmestruktuurilt, mis sisaldab avalikku vĂ”tit (konkreetset krĂŒptograafilist algoritmi ei mÀÀratleta — nĂ€iteks tuuakse vĂ€lja elliptilised kĂ”rved ja RSA-2048). Et ĂŒks sĂ”lm saaks suhelda teisega, peab ta teadma mitte ainult selle aadressi, vaid ka seda andmestruktuuri. Teoreetiliselt vĂ”ib ĂŒks fĂŒĂŒsiline sĂ”lm luua suvalise arvu aadresse (mis vastavad erinevatele vĂ”tmetele).

Edasi kasutatakse sageli just sellist kombinatsiooni: "kuju" TL-struktuurina (mis sisaldab praktiliselt mingeid andmeid) ja 256-bitine hash sellest, mida kasutatakse aadressimiseks.

Plokiahel (blockchain). Plokiahel on andmestruktuur, mille elemendid (plokid) on jĂ€rjestatud "ahelas" ja iga jĂ€rgmine plokk ahelas sisaldab eelneva hash’i. Nii saavutatakse terviklikkus — muudatusi saab teha ainult uute plokkide lisamisega.

Teenuseid (teenus). TON-i raames vĂ”ivad teenused olla erinevat tĂŒĂŒpi — olenevalt sellest, kas nad kasutavad plokiahelat vĂ”i mitte. NĂ€iteks vĂ”ib ĂŒks (vĂ”i mitu) vĂ”rgu sĂ”lmest töödelda teatud RPC-pĂ€ringuid allpool kirjeldatud ADNL-protokolli kaudu, luues plokiahelas mingeid registreid — sarnaselt traditsioonilistele veebiserveritele. Samuti kaalutakse vĂ”imalust rakendada HTTP ADNL-i kohal, samuti messaadĆŸeri ĂŒleminekut sellele protokollile. Sarnaselt TOR-ile vĂ”i I2P-le teeks see selle erinevatele blokeerimisele vastupidavamaks.

Samas, mĂ”ned teenused hĂ”lmavad ka suhtlemist plokiahelaga ja pĂ€ringute töötlemist selle vĂ€liselt. NĂ€iteks ei tundu TON Storage'i — failide salvestamise teenuse — puhul mĂ”istlik hoida faile plokiahelas. See sisaldab ainult failide hashe (koos nende metainformatsiooniga), samal ajal kui «failiserveritena» teenivad spetsialiseeritud vĂ”rgu sĂ”lmed, mis on valmis andma neid teistele sĂ”lmedele ADNL-i kaudu.

Uduteenus (fog service). RÀÀgime mĂ”nedest teenustest, mis eeldavad detsentraliseerimist ja avatud osalemist. NĂ€iteks TON Proxy — see on teenus, mida vĂ”ib toetada iga liige, kes soovib pakkuda oma sĂ”lme kui vahendajat (proxy), mis edastab pakette teiste sĂ”lmede vahel. Soovi korral vĂ”ib ta selle eest nĂ”uda kehtestatud tasu — kasutades TON Payments'i mikrotransaktsioonide sĂŒsteemi (mis omakorda on ka uduteenus).

ADNL: Abstract Datagram Network Layer

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

Nagu eespool mainitud, peab ĂŒks sĂ”lm, et saata pakette teisele, teadma ĂŒht tema avalikku vĂ”tme (ja seega ka aadressi, millega see on mÀÀratletud). Ta krĂŒpteerib paki selle vĂ”tmega ja lisab paki algusesse 256-bitise saaja aadressi — kuna ĂŒhel sĂ”lmel vĂ”ib olla mitu sellist aadressi, aitab see tal mÀÀrata, millist vĂ”tit kasutada dekrĂŒpteerimiseks.

TON: Telegram Open Network. Osa 1: Sissejuhatus, vÔrgutasand, ADNL, DHT, overlay-vÔrgud

Lisaks vĂ”ib andmepaki alguses saaja aadressi asemel olla nn identifikaator kanali. Sellisel juhul sĂ”ltub paketi töötlemine juba konkreetsest kokkuleppest sĂ”lmede vahel — nĂ€iteks kanali kaudu saadetud andmed vĂ”ivad olla mĂ”eldud teisele sĂ”lmele ja tuleb neile edastada (see on teenus TON Proxy). Teine erijuht vĂ”ib olla sĂ”lmede vaheline otsekohene suhtlemine, kuid krĂŒpteerimisega isikliku vĂ”tme paariga selle kanali jaoks (eelnevalt loodud Diffie-Hellmani protokolli jĂ€rgi).

LĂ”puks on erijuhtumiks "nullkanal" - kui sĂ”lm ei tea veel oma "naabrite" avalikke vĂ”tmeid, saab ta saata neile pakette krĂŒpteerimata. See on mĂ”eldud ainult initsialiseerimiseks - niipea kui sĂ”lmed saadavad teavet oma vĂ”tmete kohta, tuleb neid edasi suhtlemiseks kasutada.

Ülaltoodud protokoll (256-bitine kanalite identifikaator + paketi sisu) nimetatakse ADNL-iks. Dokumentatsioon mainib vĂ”imalust rakendada selle peal TCP analooge vĂ”i oma lisandit - RLDP (Reliable Large Datagram Protocol), kuid ei lĂ€he nende rakendusse detailidesse.

TON DHT: Jaotatud rÀmpsutabel

Nagu teiste jaotatud sĂŒsteemide puhul, eeldab TON DHT rakendamist - jaotatud rĂ€mpsutabel. TĂ€psemalt öeldes on tabel Kademlia-sarnane. Kui te ei ole selliste rĂ€mpsutabelite tĂŒĂŒpidega tuttav, siis Ă€rge muretsege, kirjeldan edasi umbkaudu, kuidas need töötavad.

TON: Telegram Open Network. Osa 1: Sissejuhatus, vÔrgutasand, ADNL, DHT, overlay-vÔrgud

Abstraktses mĂ”ttes seab DHT 256-bitised vĂ”tmed vastavusse teatud binaarsete vÀÀrtustega, mille pikkus on suvaline. Samas on tabelis vĂ”tmed kindlatest TL-struktuuridest saadud hash’id (need struktuurid hakatakse samuti DHT-s hoidma). See on vĂ€ga sarnane sĂ”lmede aadresside loomisega - ja need vĂ”ivad tĂ”eliselt DHT-s olemas olla (nĂ€iteks vĂ”ib sellise vĂ”tme all asuda vastava antud abstraktse aadressi, kui ta ei varja seda). Kuid ĂŒldiselt on "vĂ”tmete prototĂŒĂŒbid" (nende kirjeldused, key descriptions) metaandmed, mis nĂ€itavad "omanikku" rĂ€mpsutabelis (st mĂ”ne sĂ”lme avalike vĂ”tme), salvestatava vÀÀrtuse tĂŒĂŒbi ja reeglid, mille alusel seda vÀÀrtust hiljem muuta saab. NĂ€iteks vĂ”ib reegel lubada vÀÀrtuse muutmise ainult omanikule - vĂ”i keelduda vÀÀrtuse vĂ€hendamisest (kaitseks replay-rĂŒnnakute eest).

Lisaks 256-bitistele vĂ”tmetele on tutvustatud DHT-aadresse. Erinevus tavaliste sĂ”lmede aadressidega on see, et DHT-aadress on tingimata seotud IP-aadressiga. Kui sĂ”lm ei varja oma IP-d, vĂ”ib ta DHT jaoks kasutada tavalist aadressi. Kuid sagedamini luuakse DHT vajaduste jaoks eraldi, "pool-pĂŒsiv" aadress.
TON: Telegram Open Network. Osa 1: Sissejuhatus, vÔrgutasand, ADNL, DHT, overlay-vÔrgud
VĂ”tmete ja DHT-aadresside kohal tutvustatakse kauguse mĂ”istet - selles osas lĂ€heb kĂ”ik Kademlia tabelitega kokku. Kademlia — vĂ”tmete vaheline kaugus on XOR (bitipĂ”hine erandlik vĂ”i) nende vahel. Nagu Kademlia tabelites, peaks vĂ”tmega seotud vÀÀrtus olema salvestatud s sĂ”lmedes, mille kaugus sellele vĂ”tmele on kĂ”ige vĂ€iksem (s siin — suhteliselt vĂ€ike number).

Selleks, et DHT sĂ”lm saaks suhelda teiste selliste sĂ”lmedega, hoiab ta mĂ€lu DHT marsruuditabelit — DHT- ja IP-aadressid sĂ”lmedest, millega ta on varem suhelnud, rĂŒhmitatuna kauguse jĂ€rgi. Selliseid gruppe on 256 (need vastavad kauguse vÀÀrtuse kĂ”ige kĂ”rgemale seadistatud bitile — st sĂ”lmed, mille kaugus on 0 kuni 255, kuuluvad ĂŒhte gruppi, 256 kuni 65535 — jĂ€rgmisse jne). Igas grupis hoitakse piiratud arvu 'parimaid' sĂ”lmi (pingeaegade osas).

TON: Telegram Open Network. Osa 1: Sissejuhatus, vÔrgutasand, ADNL, DHT, overlay-vÔrgud

Iga sÔlm peab toetama mitmeid operatsioone: vÔtme vÀÀrtuse salvestamine, sÔlmede otsimine ja vÀÀrtuste otsimine. SÔlmede otsimine tÀhendab lÀhimate sÔlmede andmist marsruuditabelist antud vÔtme pÔhjal; vÀÀrtuste otsimine on sama, vÀlja arvatud juhul, kui sÔlm teab vÔtme vÀÀrtust (siis tagastab ta lihtsalt selle). Vastavalt sellele, kui sÔlm soovib DHT-s leida vÀÀrtust vÔtme pÔhjal, saadab ta pÀringud vÀikesele hulgale lÀhimatele sÔlmedele oma marsruuditabelist. Kui nende vastustes pole otsitud vÀÀrtust, kuid on teisi sÔlmpunkte, siis kordatakse pÀringut nende poole.

TON DHT-d saab kasutada erinevatel eesmĂ€rkidel, nĂ€iteks — torrent-taolise failide salvestuse rakendamiseks (vt TON Storage); teatud teenuste rakendavate sĂ”lmede aadresside mÀÀramiseks; konto omanike teabe salvestamiseks plokiahelas. Kuid kĂ”ige olulisem rakendus on sĂ”lmede avastamine nende abstraktsete aadresside pĂ”hjal. Selleks kasutatakse aadressi vĂ”tmena, mille pĂ”hjal tuleb leida vajaliku vÀÀrtus. Tulemusena kas leitakse sĂ”lm ise (kui otsitud aadress oli tema poolpĂŒsiv DHT-aadress) vĂ”i on vÀÀrtuseks IP-aadress ja port ĂŒhenduse loomiseks — vĂ”i mĂ”ni muu aadress, mida tuleks kasutada tunnel-mediatorina.

TON-i ĂŒlekandevĂ”rgud

Üksikasjalikult kirjeldatud ADNL-protokoll vĂ”imaldab igal sĂ”lmel omavahel teavet vahetada — tĂ”si, mitte tingimata optimaalsel viisil. VĂ”ib öelda, et tĂ€nu ADNL-ile moodustavad kĂ”ik sĂ”lmed globaalse graafiku TON (ideaalis - seotud). Kuid lisaks on ette nĂ€htud vĂ”imalus luua ĂŒlevĂ”rguvĂ”rke - alagraafe selle graafiku sees.
TON: Telegram Open Network. Osa 1: Sissejuhatus, vÔrgutasand, ADNL, DHT, overlay-vÔrgud

Sellise vĂ”rgu sees toimib suhtlus ainult otse - eelnevalt moodustatud ĂŒhenduste kaudu osalevate sĂ”lmede vahel (ĂŒlemineku kanalite kaudu, nagu eespool kirjeldatud). Selliste ĂŒhenduste loomine naabrite vahel ja nende otsimine on automaatne protsess, mis pĂŒĂŒdleb ĂŒlevĂ”rguvĂ”rgu sidususe sĂ€ilitamise ja edastusviivituste minimeerimise poole.

Lisaks on ettenĂ€htud meetod suurte mitmeadressiliste vĂ€rskenduste kiireks levitamiseks vĂ”rgus - need jagatakse osadeks, tĂ€iendatakse vea parandamise koodiga ja kĂ”ik need tĂŒkid saadetakse ĂŒhe osaleja poolt teisele. Seega ei pea osaleja enne nende edastamise hĂ”lbustamiseks tĂ€ielikult kĂ”iki osi saama.

ÜlevĂ”rguvĂ”rgud vĂ”ivad olla avalikud ja erasfÀÀrilised. Avaliku vĂ”rgu osaliseks saamine ei ole keeruline - tuleb leida TL-struktuur, mis seda kirjeldab (see vĂ”ib olla avalik vĂ”i kergesti juurdepÀÀsetav teatud vĂ”tme kaudu DHT-s). ErasfÀÀrse vĂ”rgu korral peab see struktuur olema sĂ”lmele eelnevalt tuntud.

JĂ€tkub

Otsustasin jagada TON-i ĂŒlevaate mitmeks artikliks. Sellega see osa lĂ”ppeb, ja jĂ€rgmises rÀÀgin blokahelate (tĂ€psemalt blokahelate) struktuurist, millest TON koosneb.

Allikas: habr.com

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster