TON: Telegram Open Network. Osa 1: Johdanto, verkkokerros, ADNL, DHT, peittoverkot

TON: Telegram Open Network. Osa 1: Johdanto, verkkokerros, ADNL, DHT, peittoverkot

Runet on nyt kahden viikon ajan tehnyt melua Telegramista ja tilanteesta Roskomnadzorin järjettömällä ja armottomalla estolla. Kimmo loukkasi monia ihmisiä, mutta kaikki nämä ovat aiheita Geektimes-julkaisuille. Yllätyin jostain muusta - en ole vieläkään nähnyt yhtään analyysiä Habresta Telegramin - Telegram Open Networkin pohjalta julkaistavaksi suunnitellusta TON-verkosta. Halusin korjata tämän puutteen, koska siellä on opittavaa - vaikka siitä ei ole virallisia lausuntoja.

Muistutan, että on huhuja, että Telegram on käynnistänyt erittäin laajan suljetun ICO:n kerättyään jo uskomattomia summia rahaa. Gramin oman kryptovaluutan odotetaan lanseeraavan tänä vuonna – ja jokaiselle Telegramin käyttäjälle tulee automaattisesti lompakko, mikä itsessään luo merkittävän edun muihin kryptovaluuttoihin verrattuna.

Valitettavasti, koska virallisia lausuntoja ei ole, voin vain jatkaa eteenpäin alkuperä tuntematon asiakirja, josta varoitan sinua välittömästi. Tietysti se voi osoittautua erittäin taitavaksi väärennökseksi, mutta on myös mahdollista, että tämä on todellinen tulevaisuuden järjestelmän valkoinen kirja, jonka on kirjoittanut Nikolai Durov (ja todennäköisesti yksi sijoittajista vuotanut). Mutta vaikka se olisikin väärennös, kukaan ei kiellä meitä tutkimasta ja keskustelemasta siitä, eikö niin?

Mitä tämä asiakirja sanoo? Yritän kertoa sen omin sanoin, lähellä tekstiä, mutta venäjäksi ja hieman inhimillisemmin (anna Nikolai anteeksi taipumuksensa mennä muodolliseen matematiikkaan). Muista, että vaikka tämä olisikin aito, tämä on luonnos järjestelmän kuvauksesta ja muuttuu hyvin todennäköisesti julkiseen julkaisuun mennessä.

Opimme, että kryptovaluuttojen lisäksi odotetaan paljon muutakin. Otetaan järjestyksessä.

  • TON Blockchain. Tämä on koko järjestelmän perusta. Jos et tiedä mikä se on blokcheyn — Suosittelen ottamaan selvää, koska täällä tulee olemaan paljon lohkoketjuja. Sisäkkäin toistensa sisällä, käytännössä pirstoutuneita ja jopa "pystysuuntaisia" lohkoketjuja muiden lohkoketjujen lohkoissa. Mukana tulee myös hienolta kuulostavia termejä, kuten Instant Hypercube Routing и Infinite Sharding Paradigma, mutta siitä lisää myöhemmin. Ja tietysti panoksen todistaminen ja älykkäät sopimukset.
  • TON P2P verkko. Vertaisverkko, jonka pohjalle järjestelmä rakennetaan. Hänestä keskustellaan ensimmäisenä tarinan tässä osassa.
  • TON-varastointi. Tiedostojen tallennus, joka lohkoketjusta riippumatta rakennetaan edellä mainittuun vertaisverkkoon. Voidaan verrata torrenteihin.
  • TON-välityspalvelin. Tämä on palvelu, jonka tarkoituksena on lisätä verkoston osallistujien nimettömyyttä. Mitä tahansa pakettia voidaan lähettää ei suoraan, vaan välitunneleiden kautta lisäsalauksella - kuten I2P tai TOR.
  • TON DHT. Hajautettu hash-taulukko mielivaltaisten arvojen tallentamiseen. Se on myös rakennettu päälle TON verkko (mutta samalla hän käyttää sitä) ja auttaa TON-varastointi löytää "jakavia" solmuja ja TON-välityspalvelin — välitoistimet. Mutta on syytä huomata, että toisin kuin lohkoketju, tämä hash-taulukko ei ole turvallinen tallennustila; tärkeitä tietoja ei voi tallentaa siihen.
  • TON-palvelut. Alusta mukautetuille palveluille. Pohjimmiltaan tämä on uusi Internet kaiken edellä kuvatun lisäksi. Tiedonvaihto - kautta TON verkko/TON-välityspalvelin, ja logiikka on älykkäissä sopimuksissa TON Blockchain. Ja käyttöliittymä melko tutuilla URL-osoitteilla.
  • TON DNS. Koska puhumme tutuista URL-osoitteista, tarvitsemme myös muuntimen niistä 256-bittisiksi osoitteiksi - tileiksi, sopimuksiksi, palveluiksi ja solmuiksi.
  • TON-maksut. Ja tässä rahakysymys tulee peliin. Ja se ei tule olemaan vain gramma — kuten eetterin kanssa, kaikki "tokenit" ovat mahdollisia; Grammat on tässä vain "oletusvaluutta".

Tämä on ensimmäinen osa, joka kuvaa TONin "maadoitettua" kerrosta - sen verkko-osaa, joka on rakennettu perinteisten protokollien päälle. Seuraavassa osassa puhumme "pehmeästä" - lohkoketjusta, jota alla kuvattu järjestelmä tukee. Uudelleenkerrontajärjestykseni on siis hieman erilainen kuin edellä mainitussa dokumentissa (joka alkaa heti abstraktilta tasolta).

Peruskonseptit

TL (Type Language). Se on abstrakti binäärimuoto mielivaltaisille tietorakenteille. Sitä käytetään Telegram-protokollassa, ja sitä käytetään aktiivisesti TONissa. Jos haluat tutustua siihen yksityiskohtaisesti - tässä hänen kuvaus.

Hash (hasis). Toiminto, joka muuttaa mielivaltaisen tietorakenteen peruuttamattomasti yhdeksi kiinteän pituiseksi luvuksi. Koko dokumentaatiossa puhumme toiminnasta SHA-256.

Verkkosolmu (solmu). Solmu on ohjelmisto, joka varmistaa järjestelmän toiminnan. Erityisesti oletetaan, että jokainen Telegram-asiakassovellus sisältää TON-solmun. Matalalla tasolla solmuilla on IPv4/IPv6-osoitteet ja ne kommunikoivat UDP-protokollan avulla; korkeammalla tasolla niillä on abstrakteja osoitteita ja toteuttaa ADNL-protokolla (abstrakteista osoitteista ja ADNL:stä - katso alla). Kun on kyse siitä, että jotkin järjestelmän osat tekevät jotain tai tallentavat tietoja, ymmärretään, että tämän tekevät verkkosolmut.

Abstrakti osoite (tai yksinkertaisesti osoite, osoite). Solmun osoite määräytyy sen julkisen avaimen perusteella. Tarkemmin sanottuna se on julkisen avaimen sisältävän tietorakenteen 256-bittinen hash (SHA256) (erityistä salausalgoritmia ei ole määritelty - elliptiset käyrät ja RSA-2048 on annettu esimerkkeinä). Jotta yksi solmu voisi kommunikoida toisen kanssa, sen on tiedettävä paitsi kyseisen solmun osoite, myös tämä tietorakenne. Teoriassa yksi fyysinen solmu voi luoda minkä tahansa määrän osoitteita (vastaten eri avaimia).

Lisäksi usein käytetään juuri tällaista linkkiä: TL-rakenteen muodossa olevaa "prototyyppiä" (joka sisältää melkein mitä tahansa dataa) ja siitä peräisin olevaa 256-bittistä tiivistettä, jota käytetään osoitteisiin.

Blokcheyn (blockchain). Lohkoketju on tietorakenne, elementtejä (lohkot), jotka on järjestetty "ketjuun", ja jokainen seuraava ketjun lohko sisältää edellisen tiivisteen. Tällä tavalla saavutetaan eheys - muutoksia voidaan tehdä vain lisäämällä uusia lohkoja.

Työkalut (palvelu). TONin sisällä olevat palvelut voivat olla erityyppisiä riippuen siitä, käyttävätkö ne lohkoketjua vai eivät. Esimerkiksi yksi (tai useampi) verkkosolmu voi käsitellä tiettyjä RPC-pyyntöjä käyttämällä alla kuvattua ADNL-protokollaa luomatta tietueita lohkoketjuun - kuten perinteiset verkkopalvelimet. Sisältää mahdollisuuden toteuttaa HTTP ADNL:n kautta, sekä itse messengerin siirtyminen tähän protokollaan. Analogisesti TOR:n tai I2P:n kanssa tämä tekee siitä kestävämmän erilaisia ​​tukoksia vastaan.

Samaan aikaan useat palvelut sisältävät sekä vuorovaikutusta lohkoketjun kanssa että sen ulkopuolella olevien pyyntöjen käsittelyä. Esimerkiksi TON Storagelle - tiedostojen tallennustilalle - ei ole kovin järkevää tallentaa itse tiedostoja lohkoketjuun. Se sisältää vain tiedostojen tiivisteet (sekä joitakin metatietoja niistä), ja erikoistuneet verkkosolmut toimivat "tiedostopalvelimina" valmiina lähettämään ne muille solmuille ADNL:n kautta.

Sumupalvelu (sumupalvelu). Puhumme joistakin palveluista, jotka edellyttävät hajauttamista ja avointa osallistumista niihin. Esimerkiksi TON-välityspalvelin on palvelu, jota jokainen osallistuja voi tukea, joka haluaa tarjota solmunsa välittäjänä (välityspalvelimena) välittää paketteja muiden solmujen välillä. Halutessaan hän voi periä tästä asettamansa maksun - käyttämällä TON Payments -järjestelmää mikromaksuille (joka puolestaan ​​​​on myös sumupalvelu).

ADNL: Abstract Datagram Network Layer

Alimmalla tasolla solmujen välinen viestintä tapahtuu UDP-protokollalla (vaikka muut vaihtoehdot ovat hyväksyttäviä).

Kuten edellä mainittiin, jotta yksi solmu voisi lähettää paketin toiselle, sen on tiedettävä yksi julkisista avaimistaan ​​(ja siten määrittelemänsä osoitteen). Se salaa paketin tällä avaimella ja lisää 256-bittisen kohdeosoitteen paketin alkuun - koska yhdellä solmulla voi olla useita näitä osoitteita, tämä antaa sille mahdollisuuden määrittää, mitä avainta käyttää salauksen purkamiseen.

TON: Telegram Open Network. Osa 1: Johdanto, verkkokerros, ADNL, DHT, peittoverkot

Lisäksi datapaketin alussa voi olla vastaanottajan osoitteen sijasta ns. tunniste kanava. Tässä tapauksessa paketin käsittely riippuu jo tietyistä solmujen välisistä sopimuksista - esimerkiksi tietylle kanavalle lähetettävä data voi olla tarkoitettu toiselle solmulle ja se on välitettävä sille (tämä on palvelu TON-välityspalvelin). Toinen erikoistapaus voi olla vuorovaikutus suoraan solmujen välillä, mutta salauksella käyttämällä yksittäistä avainparia tälle kanavalle (esigeneroitu Diffie-Hellman-protokollalla).

Lopuksi erikoistapaus on "nolla"-kanava - jos solmu ei vielä tiedä "naapureidensa julkisia avaimia", se voi lähettää niille paketteja ilman salausta. Tämä on tarkoitettu vain alustusta varten - kun solmut lähettävät tietoja avaimistaan, niitä tulee käyttää jatkossa.

Yllä kuvattu protokolla (256 bittiä kanavatunnistetta + paketin sisältö) on nimeltään ADNL. Dokumentaatiossa mainitaan mahdollisuus toteuttaa TCP-analogi sen päälle tai oma lisäosa - RLDP (Reliable Large Datagram Protocol), mutta ei käsitellä yksityiskohtia niiden toteutuksesta.

TON DHT: Jaettu hajautustaulukko

Kuten muissakin hajautetuissa järjestelmissä, TON sisältää DHT:n toteuttamisen - jaettu hash-taulukko. Tarkemmin sanottuna pöytä on Kademlialainen. Jos et tunne tämäntyyppisiä hash-taulukoita, älä huoli, alla kuvailen karkeasti, kuinka ne toimivat.

TON: Telegram Open Network. Osa 1: Johdanto, verkkokerros, ADNL, DHT, peittoverkot

Abstraktissa mielessä DHT kartoittaa 256-bittiset avaimet mielivaltaisen pituisiin binääriarvoihin. Tässä tapauksessa taulukon avaimet ovat tietyn TL-rakenteen tiivisteitä (myös rakenteet itse tallennetaan yhdessä DHT:n kanssa). Tämä on hyvin samanlaista kuin solmuosoitteiden muodostaminen - ja ne voivat todellakin olla DHT:ssa (esim. käyttämällä tällaista avainta tiettyä solmun IP-osoite abstrakti osoite, jos hän ei piilota sitä). Mutta yleisessä tapauksessa "avainten prototyypit" (niiden kuvaukset, avainten kuvaukset) on metatieto, joka osoittaa hajautustaulukon merkinnän "omistajan" (eli jonkin solmun julkisen avaimen), tallennetun arvon tyypin ja säännöt, joilla tätä merkintää voidaan myöhemmin muuttaa. Sääntö voi esimerkiksi sallia vain omistajan muuttaa arvoa tai estää arvon muuttamisen alaspäin (suojatakseen uusintahyökkäyksiä vastaan).

256-bittisten avainten lisäksi esitellään DHT-osoitteiden käsite. Erona tavallisiin isäntäosoitteisiin on se, että DHT-osoite on välttämättä sidottu IP-osoitteeseen. Jos solmu ei piilota IP-osoitettaan, se voi käyttää tavallista osoitetta DHT:lle. Mutta useammin erillinen, "puolipysyvä" osoite luodaan DHT-tarpeita varten.
TON: Telegram Open Network. Osa 1: Johdanto, verkkokerros, ADNL, DHT, peittoverkot
Etäisyyden käsite esitellään näppäinten ja DHT-osoitteiden yläpuolella - tässä kaikki osuu yhteen taulukoiden kanssa kademlia — avainten välinen etäisyys on yhtä suuri kuin niiden XOR (bittisesti poissulkeva TAI). Kuten Kademlia-taulukoissa, tiettyä avainta vastaava arvo on tallennettava s solmut, joilla on lyhin etäisyys tähän avaimeen (s tässä on suhteellisen pieni määrä).

Jotta DHT-solmu voisi kommunikoida muiden tällaisten solmujen kanssa, se säilyy muistissa DHT-reititystaulukko — DHT- ja IP-osoitteet solmuista, joiden kanssa se oli aiemmin vuorovaikutuksessa, ryhmitelty etäisyyden mukaan. Tällaisia ​​ryhmiä on 256 (ne vastaavat merkittävintä etäisyysarvoon asetettua bittiä - eli solmut, jotka ovat etäisyydellä 0 - 255, kuuluvat yhteen ryhmään, 256 - 65535 - seuraavaan jne.). Jokaisessa ryhmässä on tallennettu rajoitettu määrä "parhaita" solmuja (niiden ping-kutsujen suhteen).

TON: Telegram Open Network. Osa 1: Johdanto, verkkokerros, ADNL, DHT, peittoverkot

Jokaisen solmun on tuettava useita toimintoja: tallentaa avaimen arvon, solmuhaku и etsi arvoja. Solmujen etsiminen sisältää sitä lähinnä olevien solmujen myöntämisen tietyn avaimen perusteella reititystaulukosta; arvojen etsiminen on sama, paitsi jos solmu tietää avaimen arvon (sitten se vain palauttaa sen). Vastaavasti, jos solmu haluaa löytää arvon avaimella DHT:sta, se lähettää kyselyt pienelle määrälle tätä avainta lähimpänä olevia solmuja reititystaulukostaan. Jos vaadittu arvo ei ole heidän vastausten joukossa, mutta muita solmuosoitteita on, pyyntö toistetaan niille.

TON DHT:ta voidaan käyttää eri tarkoituksiin, esimerkiksi toteuttamaan torrent-tyyppinen tiedostotallennus (katso. TON-varastointi); määrittää tiettyjä palveluita toteuttavien solmujen osoitteet; tallentaaksesi tietoja tilin omistajista lohkoketjuun. Mutta tärkein sovellus on solmujen löytäminen niiden abstraktien osoitteiden perusteella. Tätä varten osoitetta käytetään avaimena, jonka arvo on löydettävä. Pyynnön seurauksena joko itse solmu löytyy (jos haettu osoite oli sen puolipysyvä DHT-osoite), tai arvo on IP-osoite ja yhteyden portti - tai jokin muu osoite, jota tulisi käyttää välitunneli.

Päällekkäiset verkot TON

Yllä kuvattu ADNL-protokolla tarkoittaa, että kaikki solmut voivat vaihtaa tietoja keskenään - vaikkakaan ei välttämättä optimaalisilla tavoilla. Voimme sanoa, että ADNL:n ansiosta kaikki solmut muodostavat globaalin TON-graafin (ihanteellisessa yhteydessä). Mutta tämän kaavion sisällä on lisäksi mahdollista luoda peittoverkkoja - alikaavioita.
TON: Telegram Open Network. Osa 1: Johdanto, verkkokerros, ADNL, DHT, peittoverkot

Tällaisessa verkossa vuorovaikutusta tapahtuu vain suoraan - verkkoon osallistuvien solmujen välisten ennalta muodostettujen yhteyksien kautta (edellä kuvattujen ADNL-kanavien kautta). Tällaisten yhteyksien muodostaminen naapureiden välillä, itse naapureiden etsiminen, on automaattinen prosessi, joka pyrkii ylläpitämään peittoverkon liitettävyyttä ja minimoimaan viiveitä tiedonvaihdossa siinä.

Lisäksi suuria lähetyspäivityksiä on mahdollista jakaa nopeasti verkon sisällä - ne hajotetaan osiin, täydennetään virheenkorjauskoodilla, ja kaikki nämä palaset lähetetään osallistujalta toiselle. Näin ollen osallistujan ei tarvitse hankkia kaikkia osia kokonaan ennen kuin lähettää ne eteenpäin verkkoa pitkin.

Peittoverkot voivat olla julkisia tai yksityisiä. Julkisen verkon jäseneksi tuleminen ei ole vaikeaa - sinun on löydettävä sitä kuvaava TL-rakenne (se voi olla julkinen tai käytettävissä tietyllä DHT-avaimella). Yksityisen verkon tapauksessa tämä rakenne on oltava solmun tiedossa etukäteen.

Jatkuu

Päätin jakaa TON-arvostelun useisiin artikkeleihin. Tähän tämä osa päättyy, ja seuraavassa Siirryn tarkastelemaan lohkoketjun (tarkemmin sanottuna lohkoketjujen) rakennetta, josta TON koostuu.

Lähde: will.com

Lisää kommentti