TON: Telegram Open Network. 1. zatia: Sarrera, sare-geruza, ADNL, DHT, gainjarri sareak

TON: Telegram Open Network. 1. zatia: Sarrera, sare-geruza, ADNL, DHT, gainjarri sareak

Duela bi aste, Runet-ek Telegramen eta egoeraren inguruko zarata egiten ari da Roskomnadzorrek bere blokeo zentzugabe eta errukigabearekin. Erreboteak jende asko mindu zuen, baina horiek guztiak Geektimes-en mezuetarako gaiak dira. Beste zerbaitek harritu ninduen - oraindik ez dut Telegram - Telegram Open Network oinarritutako TON sarearen Habré-ri buruzko analisi bakar bat ikusi. Gabezia hori konpondu nahi izan dut, hor badagoelako zer ikertzeko —nahiz eta horren inguruko adierazpen ofizialak ez izan—.

Gogora dezadan zurrumurruak daudela Telegram-ek eskala handiko ICO itxi bat abiarazi duela, dagoeneko diru kopuru ikaragarriak bildu dituelako. Aurten Gram-en kriptografia-moneta propioa abian jarriko dela espero da, eta Telegram-eko erabiltzaile bakoitzak automatikoki zorro bat izango du, eta horrek abantaila handia sortzen du beste kripto-moneta batzuen aurrean.

Zoritxarrez, adierazpen ofizialik ez dagoenez, urrunago egin dezaket jatorri ezezaguneko dokumentua, berehala ohartarazten dizut. Jakina, oso faltsu trebea izan daiteke, baina baliteke hau etorkizuneko sistemaren benetako liburu zuria izatea, Nikolai Durov-ek idatzia (eta, ziurrenik, inbertitzaileetako batek filtratua). Baina faltsua bada ere, inork ez digu debekatuko aztertzea eta eztabaidatzea, ezta?

Zer dio dokumentu honek? Nire hitzekin berriro kontatzen saiatuko naiz, testutik hurbil, baina errusieraz eta apur bat gizatiarragoan (Nikolaik barka dezala matematika formaletara sartzeko duen joera). Kontuan izan hau benetakoa bada ere, sistemaren deskribapen zirriborroa dela eta oso ziurrenik aldatuko dela jendaurrean abiarazteko unean.

Kriptomonetaz gain, askoz gehiago espero dela ikasten dugu. Har dezagun ordenan.

  • TON Blockchain. Hau da sistema osoaren oinarria. Zer den ez badakizu bloke katea — Jakitea gomendatzen dut, hemen blockchain asko egongo direlako. Elkarren barruan habiatuta, ia zatikatuak eta baita "bertikalak" blokeak beste bloke batzuen barruan. Hots soinudun termino batzuk ere izango dira Berehalako Hypercube bideratzea и Infinite Sharding Paradigma, baina gehiago gehiago geroago. Eta, noski, proof-of-stake eta kontratu adimentsuak.
  • TON P2P sarea. Peer-to-peer sarea, zeinaren arabera eraikiko den sistema. Istorioaren zati honetan eztabaidatuko da lehenik.
  • TON Biltegiratzea. Fitxategien biltegiratzea, blokeo-katea edozein dela ere, goian aipatutako peer-to-peer sarean eraikiko dena. Torrentekin alderatu daiteke.
  • TON proxy. Sareko parte-hartzaileen anonimotasuna areagotzea helburu duen zerbitzu bat da. Edozein pakete bidali daiteke ez zuzenean, enkriptazio gehigarria duten bitarteko tunelen bidez baizik - I2P edo TOR bezalakoak.
  • TONA DHT. Banatutako hash taula balio arbitrarioak gordetzeko. Gainean ere eraikia dago TON Sarea (baina aldi berean berak erabiltzen du) eta laguntzen du TON Biltegiratzea nodo “banatzaileak” aurkitu, eta TON proxy — tarteko errepikagailuak. Baina kontuan izan behar da, blockchain-a ez bezala, hash taula hau ez dela biltegiratze segurua - ezin duzula informazio garrantzitsua bertan gorde.
  • TON Zerbitzuak. Zerbitzu pertsonalizatuetarako plataforma. Funtsean, Internet berria da goian deskribatutako guztiaren gainean. Datu-trukea - bidez TON Sarea/TON proxy, eta logika kontratu adimendunetan dago TON Blockchain. Eta URL nahiko ezagunak dituen interfazea.
  • TON DNS. URL ezagunei buruz ari garenez, horietatik 256 biteko helbideetarako bihurgailu bat ere behar dugu - kontuak, kontratuak, zerbitzuak eta nodoak.
  • TON Ordainketak. Eta hor sartzen da diru kontua. Eta ez da bakarrik izango gramo — eterarekin bezala, edozein "token" posible izango da; Gramoak moneta "lehenetsia" besterik ez dira izango hemen.

Hau TON-en "oinarritutako" geruza deskribatzen duen lehen zatia da - bere sarearen zatia, protokolo tradizionalen gainean eraikia. Hurrengo zatian "soft" - blockchain-ari buruz hitz egingo dugu, behean deskribatzen den sistemaren laguntza izango duena. Beraz, nire birkontatzeko ordena goian aipatutako dokumentuan erabiltzen denarekin alderatuta zertxobait desberdina da (maila abstraktutik berehala hasten dena).

Oinarrizko kontzeptuak

TL (Hizkuntza mota). Datu-egitura arbitrarioetarako formatu bitar abstraktua da. Telegram protokoloan erabiltzen da eta aktiboki erabiliko da TON-en. Xehetasunez ezagutu nahi baduzu - hona hemen bere deskribapena.

Hash (hash). Datu-egitura arbitrario baten luzera finkoko zenbaki bakar batean itzulezina den eraldaketa egiten duen funtzioa. Dokumentazioan zehar funtzioari buruz hitz egiten dugu SHA-256.

Sare-nodoa (Nodo). Nodo bat sistemak funtzionatzen duela ziurtatuko duen softwarea da. Bereziki, Telegram bezero-aplikazio bakoitzak TON nodo bat izango duela suposatzen da. Maila baxuan, nodoek IPv4/IPv6 helbideak dituzte eta UDP protokoloa erabiliz komunikatzen dira; maila altuagoan, helbide abstraktuak eta ADNL protokoloa ezarri (helbide abstraktuei eta ADNLri buruz - ikus behean). Sistemaren zati batzuek zerbait egin edo datu batzuk gordetzen dituztenean, hori sareko nodoek egiten dutela ulertzen da.

Helbide abstraktua (edo besterik gabe helbidea, helbidea). Nodo baten helbidea bere gako publikoaren arabera zehazten da. Zehazkiago, gako publikoa duen datu-egituraren 256 biteko hash bat da (SHA256) (algoritmo kriptografiko espezifikoa ez da zehazten - kurba eliptikoak eta RSA-2048 jartzen dira adibide gisa). Nodo bat beste batekin komunikatzeko, horren helbidea ez ezik, datu-egitura hori ere jakin behar du. Teorian, nodo fisiko batek edozein helbide sor ditzake (gako ezberdinei dagozkienak).

Gainera, horrelako esteka bat erabili ohi da: "prototipo" bat TL egitura moduan (ia edozein datu dituena), eta 256 biteko hash bat, helbideratzeko erabiltzen dena.

Blockchain (blockchain). Blockchain datu-egitura bat da, elementuak (bloke) “kate” batean ordenatuta daudenak, eta katearen ondorengo bloke bakoitzak aurrekoaren hash-a dauka. Horrela, osotasuna lortzen da - aldaketak bloke berriak gehituz soilik egin daitezke.

Zerbitzua (zerbitzua). TON barruko zerbitzuak hainbat motatakoak izan daitezke, blockchain erabiltzen duten ala ez. Adibidez, sareko nodo batek (edo askok) RPC eskaera batzuk prozesatu ditzakete behean deskribatzen den ADNL protokoloa erabiliz, bloke-katean erregistrorik sortu gabe, web zerbitzari tradizionalen moduan. ADNL bidez HTTP ezartzeko aukera barne, baita mezularia bera protokolo honetara pasatzea ere. TOR edo I2P-ekin analogia eginez, hainbat blokeoren aurrean erresistenteagoa izango da.

Aldi berean, hainbat zerbitzuk bloke-katearekin elkarrekintza eta hortik kanpoko eskaerak prozesatzen dituzte. Esate baterako, TON Storage-rako - fitxategiak biltegiratzeko - ez da oso zentzuzkoa fitxategiak beraiek blokeo-katean gordetzea. Fitxategien hashak bakarrik edukiko ditu (haiei buruzko meta-informazio batzuekin batera), eta sareko nodo espezializatuek "fitxategi zerbitzari" gisa jardungo dute, ADNL bidez beste nodo batzuetara bidaltzeko prest.

Laino zerbitzua (laino zerbitzua). Deszentralizazioa eta horietan parte-hartze irekia suposatzen duten zerbitzu batzuez ari gara. Adibidez, TON Proxy bere nodoa bitartekari gisa (proxy) beste nodoen artean birbidaltzeko paketeak eman nahi duen edozein parte-hartzailek onartzen duen zerbitzu bat da. Nahi izanez gero, berak ezarritako kuota kobra dezake horretarako - TON Payments sistema erabiliz mikroordainketetarako (hori, laino-zerbitzua ere bada).

ADNL: Datagramen sareko geruza abstraktua

Maila baxuenean, nodoen arteko komunikazioa UDP protokoloa erabiliz egingo da (nahiz eta beste aukera batzuk onar daitezkeen).

Goian esan bezala, nodo batek beste bati pakete bat bidaltzeko, bere gako publikoetako bat (eta, beraz, definitzen duen helbidea) ezagutu behar du. Gako honekin paketea enkriptatzen du eta paketearen hasieran 256 biteko helmuga helbidea gehitzen du - nodo batek helbide horietako batzuk izan ditzakeenez, horrek deszifratzeko zein gako erabiliko duen zehaztuko du.

TON: Telegram Open Network. 1. zatia: Sarrera, sare-geruza, ADNL, DHT, gainjarri sareak

Horrez gain, hartzailearen helbidearen ordez, datu-paketearen hasierak deiturikoak izan ditzake. identifikatzaile kanala. Kasu honetan, paketearen prozesamendua dagoeneko nodoen arteko akordio zehatzen araberakoa da; adibidez, kanal jakin batera bidalitako datuak beste nodo baterako izan daitezke eta bertara birbidali behar dira (hau da zerbitzua). TON proxy). Beste kasu berezi bat nodoen arteko interakzioa izan daiteke, baina kanal honetarako banakako gako bikote bat erabiliz enkriptatzea (aurrez sortutakoa Diffie-Hellman protokoloa erabiliz).

Azkenik, kasu berezi bat "nulua" kanala da - nodo batek bere "bizilagunen" gako publikoak oraindik ezagutzen ez baditu, paketeak bidal ditzake batere zifratu gabe. Hau hasieratzeko bakarrik dago pentsatuta: nodoek gakoei buruzko informazioa bidaltzen dutenean, komunikazio gehiagorako erabili behar dira.

Goian deskribatutako protokoloari (kanal-identifikatzailea 256 bit + paketeen edukia) ADNL deitzen zaio. Dokumentazioan TCPren analogo bat edo bere gehigarri propioa - RLDP (Reliable Large Datagram Protocol) ezartzeko aukera aipatzen da, baina ez du haien ezarpenari buruzko xehetasunetan sartzen.

TON DHT: Banatutako Hash Taula

Banatutako beste sistema batzuekin gertatzen den bezala, TONek DHT-ren ezarpena dakar. banatutako hash taula. Zehazkiago, mahaia da Kademlia itxurakoa. Hash taula mota hau ezagutzen ez baduzu, ez kezkatu, behean gutxi gorabehera nola funtzionatzen duten deskribatuko dut.

TON: Telegram Open Network. 1. zatia: Sarrera, sare-geruza, ADNL, DHT, gainjarri sareak

Zentzu abstraktu batean, DHTk 256 biteko gakoak mapeatzen ditu luzera arbitrarioko balio bitarrekin. Kasu honetan, taulako gakoak TL egitura jakin bateko hashak dira (egiturak ere DHTrekin batera gordetzen dira). Hau nodo-helbideen eraketaren oso antzekoa da, eta DHT-n egon daitezke (adibidez, gako hori erabiliz, jakin bati dagokion nodo baten IP helbidea). helbide abstraktua, ezkutatzen ez badu). Baina kasu orokorrean, "gakoen prototipoak" (haien deskribapenak, gako deskribapenak) hash taula bateko sarrera baten "jabea" (hau da, nodo batzuen gako publikoa), gordetako balio-mota eta gerora sarrera hori alda daitekeen arauak adierazten dituzten metadatuak dira. Esate baterako, arau batek jabeari soilik baimendu dezake balioa aldatzea, edo balioa beherantz aldatzea debekatu (erreplay erasoetatik babesteko).

256 biteko gakoez gain, DHT helbideen kontzeptua sartzen da. Ostalari-helbide arruntekiko desberdintasuna da DHT helbidea IP helbide bati lotuta dagoela nahitaez. Nodo batek bere IP ezkutatzen ez badu, ohiko helbide bat erabil dezake DHTrako. Baina maizago, helbide bereizi eta "erdi iraunkor" bat sortuko da DHT beharretarako.
TON: Telegram Open Network. 1. zatia: Sarrera, sare-geruza, ADNL, DHT, gainjarri sareak
Distantzia kontzeptua gakoen eta DHT helbideen gainean sartzen da - honetan dena bat dator taulekin kademlia — teklen arteko distantzia horien XOR (bitwise OR esklusiboa) berdina da. Kademlia tauletan bezala, gako jakin bati dagokion balioa gorde behar da s tekla honetarako distantziarik txikiena duten nodoak (s hemen kopuru txiki samarra da).

DHT nodo bat horrelako beste nodo batzuekin komunikatzeko, memorian mantentzen da DHT bideratze-taula — Aurretik elkarrekintzan aritu zen nodoen DHT eta IP helbideak, haiekiko distantziaren arabera taldekatuta. Horrelako 256 talde daude (distantzia-balioan ezarritako bit esanguratsuenari dagozkio, hau da, 0tik 255era bitarteko nodoak talde batean sartuko dira, 256tik 65535era - hurrengoan, etab.). Talde bakoitzaren barruan, nodo "onen" kopuru mugatu bat gordetzen da (haiei ping-ari dagokionez).

TON: Telegram Open Network. 1. zatia: Sarrera, sare-geruza, ADNL, DHT, gainjarri sareak

Nodo bakoitzak hainbat eragiketa onartu behar ditu: gako baten balio bat gordetzea, nodoen bilaketa и baloreak bilatu. Nodoak bilatzea, gako jakin batean oinarrituta, bideratze-taulatik hurbilen dauden nodoak igortzea dakar; balioak bilatzea berdina da, nodoak gakoaren balioa ezagutzen duenean izan ezik (orduan itzultzen du). Horren arabera, nodo batek DHTn gakoaren arabera balio bat aurkitu nahi badu, bere bideratze-taulatik gako horretatik gertuen dauden nodo kopuru txiki bati kontsultak bidaltzen dizkie. Beharrezko balioa ez badago haien erantzunen artean, baina beste nodo-helbide batzuk badaude, eskaera errepikatzen zaie.

TON DHT hainbat helburutarako erabil daiteke, adibidez, torrent moduko fitxategien biltegiratze bat ezartzeko (ikus. TON Biltegiratzea); zenbait zerbitzu ezartzen dituzten nodoen helbideak zehaztea; kontuen jabeei buruzko informazioa blockchain-en gordetzeko. Baina aplikaziorik garrantzitsuena nodoak haien helbide abstraktuen bidez aurkitzea da. Horretarako, helbidea erabiltzen da bere balioa aurkitu behar duen gako gisa. Eskaeraren ondorioz, nodoa bera aurkituko da (bilatutako helbidea bere DHT helbide erdi-iraunkorra bazen), edo balioa konexiorako IP helbidea eta ataka izango da - edo beste helbide gisa erabili behar dena. tarteko tunela.

Gainjarri sareak TON-n

Goian deskribatutako ADNL protokoloak edozein nodok elkarren artean informazioa trukatzeko gaitasuna dakar, nahiz eta ez derrigorrez modu optimoetan. ADNLri esker, nodo guztiek TON grafiko global bat osatzen dutela esan dezakegu (egokian konektatuta). Baina, gainera, posible da sare gainjartzea - ​​grafiko honen barruan azpigrafoak sortzea.
TON: Telegram Open Network. 1. zatia: Sarrera, sare-geruza, ADNL, DHT, gainjarri sareak

Sare horren barruan, elkarrekintza zuzenean bakarrik egiten da - sarean parte hartzen duten nodoen artean aurrez eratutako konexioen bidez (goian deskribatutako ADNL kanalen bidez). Auzokideen arteko lotura horiek sortzea, bizilagunak beraiek bilatzea, gainjarri sarearen konektibitatea mantentzea eta bertan datuen trukean atzerapenak minimizatzea bilatzen duen prozesu automatikoa da.

Horrez gain, sarean emisio-eguneratze handiak azkar banatzeko modu bat dago: zatitan zatitzen dira, akatsak zuzentzeko kodearekin osatuta eta pieza horiek guztiak parte-hartzaile batetik bestera bidaltzen dira. Horrela, parte-hartzaileak ez ditu zati guztiak guztiz eskuratu behar sarean aurrerago bidali aurretik.

Gainjarritako sareak publikoak edo pribatuak izan daitezke. Sare publiko bateko kide bihurtzea ez da zaila - hura deskribatzen duen TL egitura bat aurkitu behar duzu (publikoa izan daiteke edo DHTko gako jakin baten bidez eskuragarria izan daiteke). Sare pribatu baten kasuan, egitura hori nodoak aldez aurretik ezagutu behar du.

Jarraitu ahal izateko

TON berrikuspena hainbat artikulutan banatzea erabaki nuen. Hemen amaitzen da zati hau, eta hurrengoan TONek osatuko duen blockchain-aren (zehazkiago, blockchain-ak) egitura aztertzera pasatzen naiz.

Iturria: www.habr.com

Gehitu iruzkin berria