TON: Rete aperta di Telegram. Parte 1: Introduzione, livello di rete, ADNL, DHT, reti overlay

TON: Rete aperta di Telegram. Parte 1: Introduzione, livello di rete, ADNL, DHT, reti overlay

Da due settimane la Runet fa rumore su Telegram e sulla situazione con il suo blocco insensato e spietato da parte di Roskomnadzor. Il rimbalzo ha offeso molte persone, ma tutti questi sono argomenti per i post su Geektimes. Sono rimasto sorpreso da qualcos'altro: non ho ancora visto una sola analisi su Habré della rete TON prevista per il rilascio sulla base di Telegram - Telegram Open Network. Volevo sopperire a questa carenza, perché lì c'è qualcosa da studiare, anche se mancano dichiarazioni ufficiali al riguardo.

Lascia che ti ricordi che ci sono voci secondo cui Telegram avrebbe lanciato una ICO chiusa su larga scala, avendo già raccolto incredibili quantità di denaro. Si prevede che la criptovaluta di Gram verrà lanciata quest'anno e ogni utente di Telegram avrà automaticamente un portafoglio, il che di per sé crea un vantaggio significativo rispetto ad altre criptovalute.

Purtroppo non essendoci dichiarazioni ufficiali non posso che procedere oltre documento di origine sconosciuta, di cui ti avverto immediatamente. Naturalmente, potrebbe rivelarsi un falso molto abile, ma è anche possibile che si tratti di un vero e proprio whitepaper del sistema futuro, scritto da Nikolai Durov (e trapelato, probabilmente, da uno degli investitori). Ma anche se fosse falso nessuno ci proibirà di studiarlo e discuterne, giusto?

Cosa dice questo documento? Cercherò di raccontarlo con parole mie, vicino al testo, ma in russo e un po' più umanamente (mi perdoni Nikolaj per la sua tendenza ad addentrarsi nella matematica formale). Tieni presente che, anche se autentico, si tratta di una bozza di descrizione del sistema e molto probabilmente cambierà al momento del lancio pubblico.

Apprendiamo che oltre alla criptovaluta, ci si aspetta molto di più. Prendiamolo in ordine.

  • TON Blockchain. Questa è la base dell'intero sistema. Se non sai di cosa si tratta блокчейн — Consiglio di scoprirlo, perché qui ci saranno molte blockchain. Blockchain annidate l’una nell’altra, virtualmente frammentate e persino “verticali” all’interno di blocchi di altre blockchain. Ci saranno anche alcuni termini dal suono interessante come Routing istantaneo dell'ipercubo и Paradigma di Sharding Infinito, ma ne parleremo più avanti. E, naturalmente, proof-of-stake e contratti intelligenti.
  • Rete P2P TON. Rete peer-to-peer sulla base della quale verrà costruito il sistema. Di lei si parlerà per prima in questa parte della storia.
  • Stoccaggio TON. Archiviazione di file che, indipendentemente dalla blockchain, sarà costruita sulla suddetta rete peer-to-peer. Può essere paragonato ai torrent.
  • TON proxy. Si tratta di un servizio il cui scopo è aumentare l'anonimato dei partecipanti alla rete. Qualsiasi pacchetto può essere inviato non direttamente, ma attraverso tunnel intermedi con crittografia aggiuntiva, come I2P o TOR.
  • TON DHT. Tabella hash distribuita per la memorizzazione di valori arbitrari. Inoltre è costruito sopra Rete TON (ma allo stesso tempo viene utilizzato da lui) e aiuta Stoccaggio TON trovare i nodi di “distribuzione” e TON proxy — ripetitori intermedi. Ma va notato che, a differenza della blockchain, questa tabella hash non è un archivio sicuro: non è possibile archiviare informazioni importanti al suo interno.
  • Servizi TON. Piattaforma per servizi personalizzati. In sostanza, questa è una nuova Internet oltre a tutto quanto sopra descritto. Scambio di dati - tramite Rete TON/TON proxy, e la logica è nei contratti intelligenti del TON Blockchain. E un'interfaccia con URL abbastanza familiari.
  • TON DNS. Poiché stiamo parlando di URL familiari, abbiamo bisogno anche di un convertitore da essi in indirizzi a 256 bit: account, contratti, servizi e nodi.
  • TON Pagamenti. Ed è qui che entra in gioco la questione monetaria. E non sarà solo così grammo — come con l'etere, sarà possibile qualsiasi “token”; I grammi saranno solo la valuta “predefinita” qui.

Questa è la prima parte che descrive lo strato "radicato" di TON, la sua parte di rete, costruita sopra i protocolli tradizionali. Nella parte successiva parleremo del “soft” - blockchain, che sarà supportato dal sistema descritto di seguito. Pertanto, il mio ordine di rivisitazione è in qualche modo diverso da quello utilizzato nel documento sopra menzionato (che inizia immediatamente al livello astratto).

Concetti di base

TL (Tipo lingua). È un formato binario astratto per strutture dati arbitrarie. È utilizzato nel protocollo Telegram e verrà utilizzato attivamente in TON. Se vuoi conoscerlo in dettaglio - ecco la sua descrizione.

hash (hash). Una funzione che esegue una trasformazione irreversibile di una struttura di dati arbitraria in un singolo numero di lunghezza fissa. In tutta la documentazione si parla della funzione SHA-256.

Nodo di rete (nodo). Un nodo è il software che garantirà il funzionamento del sistema. In particolare, si presuppone che ogni applicazione client di Telegram includa un nodo TON. A livello basso i nodi hanno indirizzi IPv4/IPv6 e comunicano utilizzando il protocollo UDP; a livello superiore hanno indirizzi astratti e implementare il protocollo ADNL (sugli indirizzi astratti e ADNL - vedi sotto). Quando si tratta del fatto che alcune parti del sistema fanno qualcosa o memorizzano alcuni dati, resta inteso che ciò viene fatto dai nodi della rete.

Indirizzo astratto (o semplicemente indirizzo, indirizzo). L'indirizzo di un nodo è determinato dalla sua chiave pubblica. Più strettamente, si tratta di un hash a 256 bit (SHA256) della struttura dati contenente la chiave pubblica (l'algoritmo crittografico specifico non è specificato - le curve ellittiche e RSA-2048 sono fornite come esempi). Affinché un nodo possa comunicare con un altro, è necessario conoscere non solo l'indirizzo di quello, ma anche questa struttura dati. In teoria, un nodo fisico può creare un numero qualsiasi di indirizzi (corrispondenti a chiavi diverse).

Inoltre, spesso viene utilizzato proprio questo collegamento: un "prototipo" sotto forma di struttura TL (contenente quasi tutti i dati) e un hash a 256 bit da essa, utilizzato per l'indirizzamento.

Blokcheyn (blockchain). Blockchain è una struttura dati, elementi (blocchi) che sono ordinati in una “catena”, e ogni blocco successivo della catena contiene l'hash di quello precedente. In questo modo si ottiene l'integrità: le modifiche possono essere apportate solo aggiungendo nuovi blocchi.

Servizio (servizio). I servizi all’interno di TON possono essere di vario tipo, a seconda che utilizzino o meno blockchain. Ad esempio, uno (o più) nodi di rete possono elaborare determinate richieste RPC utilizzando il protocollo ADNL descritto di seguito, senza creare alcun record nella blockchain, come i server Web tradizionali. Compresa la possibilità di implementare HTTP su ADNL, nonché il passaggio del messenger stesso a questo protocollo. Per analogia con TOR o I2P, questo lo renderà più resistente ai vari blocchi.

Allo stesso tempo, una serie di servizi implicano sia l’interazione con la blockchain sia l’elaborazione di richieste al di fuori di essa. Ad esempio, per TON Storage, ovvero l'archiviazione di file, non è molto ragionevole archiviare i file stessi sulla blockchain. Conterrà solo hash di file (insieme ad alcune metainformazioni su di essi) e nodi di rete specializzati fungeranno da "file server", pronti a inviarli ad altri nodi tramite ADNL.

Servizio nebbia (servizio nebbia). Stiamo parlando di alcuni servizi che implicano il decentramento e la partecipazione aperta agli stessi. Ad esempio, TON Proxy è un servizio che può essere supportato da qualsiasi partecipante che desideri fornire il proprio nodo come intermediario (proxy) inoltrando pacchetti tra altri nodi. Se lo desidera, può addebitare una commissione da lui stabilita per questo, utilizzando il sistema TON Payments per i micropagamenti (che, a sua volta, è anche un servizio nebbia).

ADNL: livello di rete di datagrammi astratti

Al livello più basso, la comunicazione tra i nodi verrà effettuata utilizzando il protocollo UDP (sebbene siano accettabili altre opzioni).

Come accennato in precedenza, affinché un nodo possa inviare un pacchetto a un altro, deve conoscere una delle sue chiavi pubbliche (e quindi l'indirizzo che definisce). Crittografa il pacchetto con questa chiave e aggiunge l'indirizzo di destinazione a 256 bit all'inizio del pacchetto: poiché un nodo può avere diversi di questi indirizzi, ciò gli consentirà di determinare quale chiave utilizzare per la decrittografia.

TON: Rete aperta di Telegram. Parte 1: Introduzione, livello di rete, ADNL, DHT, reti overlay

Inoltre, al posto dell'indirizzo del destinatario, l'inizio del pacchetto di dati può contenere il cosiddetto. identificatore canale. In questo caso l'elaborazione del pacchetto dipende già da specifici accordi tra i nodi - ad esempio, i dati inviati ad un determinato canale possono essere destinati ad un altro nodo e devono essere ad esso inoltrati (è il servizio TON proxy). Un altro caso speciale potrebbe essere l'interazione diretta tra i nodi, ma con crittografia utilizzando una coppia di chiavi individuale per questo canale (pregenerata utilizzando il protocollo Diffie-Hellman).

Infine, un caso speciale è il canale “null”: se un nodo non conosce ancora le chiavi pubbliche dei suoi “vicini”, può inviare loro pacchetti senza alcuna crittografia. Questo è inteso solo per l'inizializzazione: una volta che i nodi inviano informazioni sulle loro chiavi, dovrebbero essere utilizzate per ulteriori comunicazioni.

Il protocollo sopra descritto (256 bit di identificatore di canale + contenuto del pacchetto) si chiama ADNL. La documentazione menziona la possibilità di implementare sopra di esso un analogo di TCP o il proprio componente aggiuntivo - RLDP (Reliable Large Datagram Protocol), ma non entra nei dettagli della loro implementazione.

TON DHT: tabella hash distribuita

Come nel caso di altri sistemi distribuiti, TON prevede l'implementazione di DHT - tabella hash distribuita. Più specificamente, il tavolo lo è Tipo Kademlia. Se non hai familiarità con questo tipo di tabelle hash non preoccuparti, di seguito descriverò approssimativamente come funzionano.

TON: Rete aperta di Telegram. Parte 1: Introduzione, livello di rete, ADNL, DHT, reti overlay

In senso astratto, DHT mappa chiavi a 256 bit su valori binari di lunghezza arbitraria. In questo caso, le chiavi nella tabella sono hash di una determinata struttura TL (anche le strutture stesse vengono memorizzate insieme al DHT). Questo è molto simile alla formazione degli indirizzi di nodo - ed essi possono infatti essere presenti nel DHT (ad esempio, utilizzando tale chiave l'indirizzo IP di un nodo corrispondente ad un dato indirizzo astratto, se non lo nasconde). Ma nel caso generale, i “prototipi di chiavi” (loro descrizione, descrizioni chiave) sono metadati che indicano il "proprietario" di una voce in una tabella hash (ovvero la chiave pubblica di un nodo), il tipo di valore memorizzato e le regole in base alle quali questa voce può essere successivamente modificata. Ad esempio, una regola può consentire solo al proprietario di modificare il valore o vietare di modificare il valore verso il basso (per proteggersi dagli attacchi di replay).

Oltre alle chiavi a 256 bit, viene introdotto il concetto di indirizzi DHT. La differenza con i normali indirizzi host è che l'indirizzo DHT è necessariamente legato a un indirizzo IP. Se un nodo non nasconde il proprio IP, può utilizzare un indirizzo normale per DHT. Ma più spesso verrà creato un indirizzo separato e “semipermanente” per le esigenze del DHT.
TON: Rete aperta di Telegram. Parte 1: Introduzione, livello di rete, ADNL, DHT, reti overlay
Il concetto di distanza viene introdotto sopra le chiavi e gli indirizzi DHT: in questo tutto coincide con le tabelle kademlia — la distanza tra le chiavi è pari allo XOR (OR esclusivo bit per bit) delle stesse. Come nelle tabelle Kademlia, è necessario memorizzare il valore corrispondente a una determinata chiave s nodi che hanno la distanza più breve da questa chiave (s ecco un numero relativamente piccolo).

Affinché un nodo DHT possa comunicare con altri nodi simili, viene mantenuto in memoria Tabella di instradamento DHT — Indirizzi DHT e IP dei nodi con cui ha interagito in precedenza, raggruppati per distanza da essi. Esistono 256 gruppi di questo tipo (corrispondono al bit più significativo impostato nel valore della distanza - ovvero i nodi a una distanza da 0 a 255 cadranno in un gruppo, da 256 a 65535 - nel successivo, ecc.). All'interno di ciascun gruppo viene memorizzato un numero limitato di nodi "migliori" (in termini di ping verso di essi).

TON: Rete aperta di Telegram. Parte 1: Introduzione, livello di rete, ADNL, DHT, reti overlay

Ogni nodo deve supportare diverse operazioni: memorizzare un valore per una chiave, ricerca del nodo и cercare valori. La ricerca dei nodi comporta l'emissione, in base ad una determinata chiave, dei nodi ad essa più vicini dalla tabella di instradamento; la ricerca dei valori è la stessa, tranne quando il nodo conosce il valore della chiave (quindi lo restituisce semplicemente). Di conseguenza, se un nodo desidera trovare un valore tramite chiave nel DHT, invia richieste a un piccolo numero di nodi più vicini a questa chiave dalla sua tabella di instradamento. Se il valore richiesto non è tra le loro risposte, ma ci sono altri indirizzi di nodo, allora la richiesta viene ripetuta a loro.

TON DHT può essere utilizzato per vari scopi, ad esempio per implementare un'archiviazione di file simile a torrent (vedi. Stoccaggio TON); determinare gli indirizzi dei nodi che implementano determinati servizi; per memorizzare informazioni sui proprietari degli account nella blockchain. Ma l'applicazione più importante è la scoperta dei nodi tramite i loro indirizzi astratti. Per fare ciò, l'indirizzo viene utilizzato come chiave il cui valore deve essere trovato. Come risultato della richiesta, verrà trovato il nodo stesso (se l'indirizzo cercato era il suo indirizzo DHT semipermanente), oppure il valore sarà l'indirizzo IP e la porta per la connessione - o un altro indirizzo che dovrebbe essere utilizzato come tunnel intermedio.

Reti sovrapposte in TON

Il protocollo ADNL sopra descritto implica la capacità di tutti i nodi di scambiare informazioni tra loro, anche se non necessariamente in modo ottimale. Possiamo dire che grazie ad ADNL tutti i nodi formano un grafo TON globale (idealmente connesso). Ma è anche possibile creare reti sovrapposte - sottografi all'interno di questo grafico.
TON: Rete aperta di Telegram. Parte 1: Introduzione, livello di rete, ADNL, DHT, reti overlay

All'interno di tale rete l'interazione avviene solo direttamente - attraverso connessioni preformate tra i nodi partecipanti alla rete (tramite i canali ADNL sopra descritti). La formazione di tali connessioni tra vicini, la ricerca dei vicini stessi, è un processo automatico che cerca di mantenere la connettività della rete sovrapposta e ridurre al minimo i ritardi nello scambio di dati al suo interno.

Inoltre, esiste un modo per distribuire rapidamente aggiornamenti di trasmissione di grandi dimensioni all'interno della rete: vengono suddivisi in parti, integrati con un codice di correzione degli errori e tutte queste parti vengono inviate da un partecipante all'altro. Pertanto, il partecipante non deve ottenere completamente tutte le parti prima di inviarle ulteriormente lungo la rete.

Le reti sovrapposte possono essere pubbliche o private. Diventare membro di una rete pubblica non è difficile: è necessario trovare una struttura TL che la descriva (può essere pubblica o accessibile tramite una determinata chiave in DHT). Nel caso di una rete privata, questa struttura deve essere nota in anticipo al nodo.

essere continuato

Ho deciso di dividere la recensione di TON in diversi articoli. Questo è dove finisce questa parte, e nel prossimo Passo ora a considerare la struttura della blockchain (più precisamente delle blockchain) in cui sarà composto TON.

Fonte: habr.com

Aggiungi un commento