TON: Telegram Open Network. Parte 1: Introduzione, strata di rete, ADNL, DHT, rete overlay

TON: Telegram Open Network. Parte 1: Introduzione, strata di rete, ADNL, DHT, rete overlay

Dapoi duie settimane, Runet hà fattu un rumore annantu à Telegram è a situazione cù u so bloccu insensatu è senza pietà da Roskomnadzor. U ricochet offense parechji, ma tutti questi sò temi per i posti in Geektimes. Eru sorpresu da qualcosa altru - ùn aghju micca vistu ancu nantu à Habré una sola analisi di a reta TON prevista per esse liberata nantu à a basa di Telegram - Telegram Open Network. Vuliu cumpensà sta mancanza, perchè ci hè qualcosa di studià quì - ancu malgradu l'absenza di dichjarazioni ufficiali nantu à questu.

Lasciami ricurdà chì ci sò rumuri chì Telegram hà lanciatu un ICO chjusu assai grande, avè digià cullucatu quantità incredibili in questu. Hè presumitu chì a propria criptografia di Gram serà lanciata questu annu, è ogni utilizatore di Telegram hà automaticamente una billetera, chì in sè stessu crea un vantaghju considerableu annantu à l'altri criptu di munita.

Sfortunatamente, postu chì ùn ci sò micca dichjarazioni ufficiali, possu solu procederà da document d'origine inconnuedi quale vi avvistu subitu. Di sicuru, pò esse un falsu assai abile, ma hè ancu pussibule chì questu hè u veru whitepaper di u futuru sistema, scrittu da Nikolai Durov (è probabilmente filtratu da unu di l'investituri). Ma ancu s'ellu hè un falsu, nimu ùn ci pruibisce di studià è di discussione, nò ?

Chì dice stu documentu ? Pruvaraghju di ripiglià in e mo parolle, vicinu à u testu, ma in russu è un pocu più umanu (chì Nikolay mi pardunò cù a so tendenza à andà in matematica formale). Tenite in mente chì ancu s'ellu hè autenticu, questu hè un prugettu di descrizzione di u sistema è hè assai prubabile di cambià da u tempu di u lanciu publicu.

Amparemu chì in più di a criptografia di munita, ci vole assai più. Pigliemu in ordine.

  • TON Blockchain. Questa hè a basa di tuttu u sistema. Se ùn sapete micca veramente ciò chì hè blockchain - I ricumandemu di truvà fora, perchè ci saranu assai blockchains quì. Blockchains nidificati, virtualmente frammentati è ancu "verticali" in blocchi di altri blockchains. Ci sarà ancu qualchi termini cool-sona cum'è Instradamentu Hypercube Instant и Paradigma di Sharding Infinitu, ma più nantu à questu dopu. E, sicuru, cuntratti di prova di stake è intelligenti.
  • Rete P2P TON. Una reta peer-to-peer nantu à a basa di quale u sistema serà custruitu. Serà discututu prima di tuttu in questa parte di a storia.
  • TON Storage. Un archiviu di schedari chì serà custruitu nantu à a reta peer-to-peer sopra citata, indipendentemente da a blockchain. Pò esse paragunatu cù torrents.
  • TON Proxy. Questu hè un serviziu chì u scopu hè di aumentà l'anonimatu di i participanti di a rete. Qualchese pacchettu pò esse mandatu micca direttamente, ma attraversu tunnelli intermediari cù criptografia addiziale - cum'è I2P o TOR.
  • TON DHT. Tavola hash distribuita per almacenà valori arbitrarii. Hè ancu custruitu nantu à a cima Rete TON (ma à u stessu tempu hè utilizatu da ellu) è aiuta TON Storage truvà i nodi "distributori", è TON Proxy - relè intermedi. Ma deve esse nutatu chì, à u cuntrariu di u blockchain, sta tavola hash ùn hè micca un almacenamentu sicuru - ùn pudete micca almacenà infurmazioni impurtanti in questu.
  • TON Services. Piattaforma per servizii arbitrarii. In fatti, questu hè un novu Internet nantu à tuttu ciò chì hè descrittu sopra. Scambiu di dati - via Rete TON/TON Proxy, è a logica hè in i cuntratti intelligenti di u TON Blockchain. È una interfaccia cù URL abbastanza familiari.
  • TON DNS. Siccomu parlemu di l'URL di solitu, avemu ancu bisognu di un cunvertitore da elli à indirizzi 256-bit - cunti, cuntratti, servizii è nodi.
  • TON Payments. È hè quì chì u prublema di soldi entra in ghjocu. È ùn serà micca solu gramma - cum'è cù l'etere, ogni "tokens" serà pussibule; I grammi seranu solu a valuta "predeterminata" quì.

Questa hè a prima parte chì descrive u livellu "terra" di TON - a so parte di a reta, custruita nantu à i protokolli tradiziunali. In a parti dopu, avemu da parlà di a "pulp" - u blockchain, chì serà supportatu da u sistema descrittu quì sottu. Cusì, u mo ordine di ricuperazione hè un pocu sfarente di quellu utilizatu in u documentu sopra (chì principia immediatamente à u livellu astrattu).

Concetti basi

TL (Tipus Lingua). Hè un furmatu binari astrattu per strutture di dati arbitrarie. Hè utilizatu in u protocolu Telegram è serà attivamente utilizatu in TON. Se vulete sapè più nantu à questu - quì hè a so descrizzione.

hash (hash). Una funzione chì realiza una trasfurmazioni irreversibile di una struttura di dati arbitraria in un unicu numeru di una lunghezza fissa. In tutta a documentazione, si parla assai di a funzione SHA-256.

Node di rete (node). U node hè u software chì assicurarà u funziunamentu di u sistema. In particulare, si assume chì ogni applicazione cliente Telegram includerà un node TON. À un livellu bassu, i nodi anu indirizzi IPv4 / IPv6 è cumunicanu cù u protocolu UDP, à un livellu più altu anu. indirizzi astratti è implementà u protocolu ADNL (vede quì sottu per l'indirizzi astratti è ADNL). Quandu si tratta di u fattu chì certi parti di u sistema facenu qualcosa o guardanu qualchi dati, hè capitu chì i nodi di a rete facenu.

Indirizzu astrattu (o simpliciamente indirizzu, adrizzu). L'indirizzu di un node hè determinatu da a so chjave publica. Più strettamente, questu hè un hash 256-bit (SHA256) da una struttura di dati chì cuntene una chjave publica (l'algoritmu criptograficu specificu ùn hè micca specificatu in questu casu - curve ellittiche è RSA-2048 sò datu cum'è un esempiu). Per fà un node per cumunicà cù un altru, hè bisognu di sapè micca solu l'indirizzu di quellu, ma ancu sta struttura di dati. Teoricamente, un nodu fisicu pò creà ogni numeru di indirizzi (currispondenu à e diverse chjave).

In più, solu un tali bundle hè spessu usatu: una "preimage" in a forma di una struttura TL (cuntene quasi tutti i dati), è un hash 256-bit da ellu utilizatu per indirizzà.

Blockchain (blockchain). Blockchain hè una struttura di dati, elementi (blocchi) chì sò urdinati in una "catena", è ogni prossimu bloccu di a catena cuntene l'hash di u precedente. In questu modu, l'integrità hè ottenuta - i cambiamenti ponu esse fatti solu aghjunghjendu novi blocchi.

sirvizziu (sirvizziu). I servizii in TON ponu esse di varii tipi, secondu s'ellu usanu a blockchain o micca. Per esempiu, unu (o parechji) di i nodi di a rete ponu processà alcune richieste RPC usendu u protocolu ADNL descrittu quì sottu, senza creà alcunu record in u blockchain - cum'è i servitori web tradiziunali. In particulare, a pussibilità di implementà HTTP nantu à ADNL hè cunsideratu, è ancu a transizione di u messaggeru stessu à stu protokollu. Per analogia cù TOR o I2P, questu farà più resistente à diversi blocchi.

À u listessu tempu, una quantità di servizii implica l'interazzione cù a catena di bloccu è e dumande di trasfurmazioni fora di questu. Per esempiu, per TON Storage - archiviazione di schedari - ùn hè micca assai ragiunate per almacenà i schedari stessi nantu à a blockchain. Contenerà solu file hashes (inseme cù alcune meta-informazioni nantu à elli), è i nodi di rete specializati agiranu cum'è "servitori di file", pronti à dà à l'altri nodi via ADNL.

serviziu di nebbia (serviziu di nebbia). Parlemu di certi servizii chì implicanu a descentralizazione è a participazione aperta in elli. Per esempiu, TON Proxy hè un serviziu chì pò esse supportatu da qualsiasi participante chì vole furnisce u so node cum'è intermediariu (proxy) chì trasmette i pacchetti trà altri nodi. Se vulete, pò carricà una tarifa stabilita da ellu per questu - utilizendu u sistema di TON Payments per i micropagamenti (chì, à u turnu, hè ancu un serviziu di nebbia).

ADNL: Abstract Datagram Network Layer

À u livellu più bassu, a cumunicazione trà i nodi serà via UDP (ancu se altre opzioni sò accettabili).

Cumu l'esitatu sopra, per un node per mandà un pacchettu à l'altru, deve cunnosce una di e so chjave pubbliche (è dunque l'indirizzu chì determina). Cripta u pacchettu cù questa chjave è aghjunghje un indirizzu di destinazione di 256-bit à u principiu di u pacchettu - postu chì un node pò avè parechje indirizzi tali, questu permetterà di determinà quale chjave per aduprà per a decifrazione.

TON: Telegram Open Network. Parte 1: Introduzione, strata di rete, ADNL, DHT, rete overlay

Inoltre, invece di l'indirizzu di u destinatariu à l'iniziu di u pacchettu di dati, pò esse un cusì chjamatu. identificatore canali. In questu casu, u prucessu di u pacchettu dipende digià da accordi specifichi trà i nodi - per esempiu, e dati mandati à un certu canale pò esse destinatu à un altru node è deve esse ridiretti à questu (questu hè u serviziu). TON Proxy). Un altru casu spiciale pò esse l'interazzione direttamente trà i nodi, ma cù a criptografia utilizendu un paru di chjave individuale per stu canale (prima furmatu cù u protokollu Diffie-Hellman).

Infine, un casu spiciale hè u canali "null" - se u node ùn cunnosci micca ancu i chjavi publichi di i so "vicini", li pò mandà pacchetti senza criptografia. Questu hè solu per l'inizializazione - quandu i nodi mandanu infurmazioni nantu à e so chjave, anu da esse usatu per più interazzione.

U protocolu descrittu sopra (256 bits di ID di canale + cuntenutu di pacchettu) hè chjamatu ADNL. A ducumentazione cita a pussibilità di implementà un analogu di TCP sopra à questu o u so propiu add-on - RLDP (Reliable Large Datagram Protocol), ma ùn entre in dettagli nantu à a so implementazione.

TON DHT: Distributed Hash Table

Cum'è in u casu di altri sistemi distribuiti, TON implica l'implementazione di DHT - table hash distribuita. Più specificamente, a tavola hè simile à Kademlia. Se ùn site micca familiarizatu cù stu tipu di tavulini di hash, ùn vi preoccupate, allora vi discriverà apprussimatamente cumu sò disposti.

TON: Telegram Open Network. Parte 1: Introduzione, strata di rete, ADNL, DHT, rete overlay

In un sensu astrattu, DHT mape chjavi 256-bit à valori binari di lunghezza arbitraria. À u listessu tempu, i chjavi in ​​a tavula sò hashes da una certa struttura TL (i strutturi stessi sò ancu almacenati cù u DHT). Questu hè assai simili à a furmazione di l'indirizzi di node - è ponu esse veramente prisenti in u DHT (per esempiu, una tale chjave pò cuntene l'indirizzu IP di u node currispundenti à u datu). indirizzu astrattus'ellu ùn l'ammuccia). Ma in u casu generale, "pre-imaghjini di chjave" (u so descrizzioni, descrizzioni chjave) hè metadata chì indica u "proprietariu" di una entrata in a tavola hash (vale à dì, a chjave publica di qualchì node), u tipu di valore guardatu, è e regule per quale sta entrata pò esse cambiata dopu. Per esempiu, una regula pò permette solu à u pruprietariu di cambià u valore - o pruibisce di cambià u valore (per prutegge contra l'attacchi di replay).

In più di e chjave 256-bit, u cuncettu di l'indirizzi DHT hè introduttu. A diferenza cù l'indirizzi di l'ospiti regulare hè chì un indirizzu DHT hè ligatu à un indirizzu IP. Se un node ùn oculta u so IP, pò utilizà un indirizzu regulare per DHT. Ma più spessu, un indirizzu separatu, "semi-permanente" serà creatu per i bisogni di DHT.
TON: Telegram Open Network. Parte 1: Introduzione, strata di rete, ADNL, DHT, rete overlay
Sopra i chjavi è l'indirizzi DHT, u cuncettu di distanza hè introduttu - tuttu coincide cù tavule in questu cademlia - a distanza trà e chjave hè uguale à XOR (OR esclusiva bit à bit) da elli. Cum'è cù e tavule Kademlia, u valore chì currisponde à una chjave deve esse guardatu s nodi chì anu a distanza più chjuca à sta chjave (s quì hè un numeru relativamente chjucu).

Per un node DHT per cumunicà cù altri tali nodi, mantene in memoria Tavola di routing DHT - L'indirizzi DHT è IP di i nodi cù quale hà interagitu prima, raggruppati per distanza da elli. Ci sò 256 tali gruppi (currispondenu à u bit più significativu stabilitu in u valore di distanza - vale à dì, i nodi à una distanza da 0 à 255 cascanu in un gruppu, da 256 à 65535 - in u prossimu, etc.). In ogni gruppu, un numeru limitatu di "meglii" nodi sò almacenati (in termini di ping à elli).

TON: Telegram Open Network. Parte 1: Introduzione, strata di rete, ADNL, DHT, rete overlay

Ogni nodu deve sustene parechje operazioni: almacenà un valore per una chjave, ricerca di nodi и circà i valori. A ricerca di nodi implica l'emissione da una chjave data di i nodi più vicinu à questu da a tavola di routing; a ricerca di i valori hè u listessu, salvu quandu u node cunnosce u valore di a chjave (in quale casu, solu torna). In cunsiquenza, se un node vole truvà un valore in u DHT da una chjave, manda richieste à un picculu numeru di nodi più vicinu à sta chjave da a so tabella di routing. Se trà e so risposte ùn ci hè micca valore desideratu, ma ci sò altre indirizzi di nodi, a dumanda hè ripetuta à elli.

TON DHT pò esse usatu per diversi scopi, per esempiu, per implementà un almacenamentu di file torrent-like (vede. TON Storage); per determinà l'indirizzi di i nodi chì implementanu certi servizii; per almacenà infurmazioni nantu à i titulari di cunti in u blockchain. Ma l'applicazione più impurtante hè a scuperta di i nodi da i so indirizzi astratti. Per fà questu, l'indirizzu hè usatu cum'è una chjave, u valore di quale si trova. A dumanda sia truvà l'ospitu stessu (se l'indirizzu cercatu era u so indirizzu DHT semi-permanente), o u valore serà l'indirizzu IP è u portu per cunnette, o un altru indirizzu per aduprà cum'è u tunnel intermediariu.

Reti overlay in TON

U protokollu ADNL descrittu sopra implica a capacità per qualsiasi nodi di scambià infurmazioni cù l'altri - ancu s'ellu ùn hè micca necessariamente in modi ottimali. Pudemu dì chì grazia à ADNL, tutti i nodi formanu un graficu TON globale (idealmente, cunnessu). Ma in più, hè pussibule di creà reti di sovrapposizione - sottografie in stu graficu.
TON: Telegram Open Network. Parte 1: Introduzione, strata di rete, ADNL, DHT, rete overlay

In una tale rete, l'interazzione hè realizata solu direttamente - attraversu ligami preformati trà i nodi membri di a rete (via i canali ADNL descritti sopra). A furmazione di tali ligami trà i vicini, a ricerca di i vicini stessi hè un prucessu automaticu chì cerca di mantene a cunnessione di a reta overlay è minimizzà i ritardi in u scambiu di dati in questu.

Inoltre, ci hè una manera di distribuisce rapidamente grandi aghjurnamenti di broadcast in a reta - sò spartuti in parti, supplementate cù codice di correzione di errore, è tutte queste parti sò mandate da un participante à l'altru. Cusì, u participante ùn hà micca bisognu di riceve cumplettamente tutte e parti prima di trasmette più in a reta.

E rete di overlay ponu esse publiche o private. Diventà un membru di una reta publica ùn hè micca difficiule - avete bisognu di truvà una struttura TL chì u descriva (pò esse publicu - o accessibile da una certa chjave in u DHT). In u casu di una reta privata, sta struttura deve esse cunnisciuta da u node in anticipu.

Per esse continuatu

Aghju decisu di dividisce a rivista TON in parechji articuli. Questu hè induve sta sezione finisce, dopu I turnu à a cunsiderazione di a struttura di u blockchain (più precisamente, blockchains) chì TON consisterà.

Source: www.habr.com

Add a comment