TON: Telegram Open Network. Bagian 1: Perkenalan, lapisan jaringan, ADNL, DHT, jaringan overlay

TON: Telegram Open Network. Bagian 1: Perkenalan, lapisan jaringan, ADNL, DHT, jaringan overlay

Pikeun dua minggu ayeuna, Runet geus nyieun noise ngeunaan Telegram jeung kaayaan kalawan blocking akalna jeung merciless na ku Roskomnadzor. ricochet nyinggung seueur jalma, tapi sadayana ieu mangrupikeun topik pikeun tulisan dina Geektimes. Kuring kaget ku hal anu sanés - kuring masih teu acan ningali analisa tunggal dina Habré tina jaringan TON anu direncanakeun pikeun dileupaskeun dina dasar Telegram - Telegram Open Network. Abdi hoyong nebus kakurangan ieu, sabab aya anu diajar di dinya - sanaos kurangna pernyataan resmi ngeunaan éta.

Hayu atuh ngingetkeun yén aya gosip yén Telegram parantos ngaluncurkeun ICO ditutup skala ageung, parantos ngumpulkeun artos anu luar biasa. Diperkirakeun yén mata uang kripto Gram sorangan bakal diluncurkeun taun ieu - sareng unggal pangguna Telegram bakal otomatis gaduh dompét, anu nyalira nyiptakeun kauntungan anu signifikan tina mata uang kripto anu sanés.

Hanjakal, saprak euweuh pernyataan resmi, abdi ngan bisa neruskeun salajengna ti dokumen asal kanyahoan, nu kuring geuwat ngingetkeun anjeun ngeunaan. Tangtosna, éta tiasa janten palsu anu terampil, tapi ogé mungkin yén ieu mangrupikeun whitepaper nyata sistem masa depan, anu ditulis ku Nikolai Durov (sareng bocor, sigana, ku salah sahiji investor). Tapi sanajan éta palsu, moal aya anu ngalarang urang pikeun diajar sareng ngabahas éta, sanés?

Naon dokumén ieu nyebutkeun? Kuring bakal nyoba nyaritakeun deui dina kecap kuring sorangan, deukeut téks, tapi dina basa Rusia jeung saeutik leuwih humanely (mungkin Nikolai ngahampura kuring jeung kacenderungan na lebet kana matematika formal). Émut yén sanaos ieu asli, ieu mangrupikeun draf pedaran sistem sareng kamungkinan bakal robih dina waktos peluncuran umum.

Urang diajar yén salian cryptocurrency, aya loba deui anu diperkirakeun. Hayu urang nyandak eta dina urutan.

  • Blockchain ton. Ieu dasar sakabéh sistem. Upami anjeun henteu terang naon éta blockchain - Kuring nyarankeun manggihan, sabab bakal aya loba blockchains dieu. Nested dina silih, ampir fragmented komo "vertikal" blockchains dina blok blockchains séjén. Aya ogé bakal sababaraha istilah tiis-sounding kawas Routing Hypercube instan и Paradigma Sharding Taya Wates, tapi langkung seueur ngeunaan éta engké. Sareng, tangtosna, bukti-of-stake sareng kontrak pinter.
  • Jaringan TON P2P. Jaringan peer-to-peer dumasar kana sistem anu bakal diwangun. Manehna bakal dibahas munggaran dina bagian ieu carita.
  • Panyimpenan TON. Panyimpen file, anu, henteu paduli blockchain, bakal diwangun dina jaringan peer-to-peer anu disebatkeun di luhur. Bisa dibandingkeun jeung torrents.
  • Proksi TON. Ieu mangrupikeun jasa anu tujuanana pikeun ningkatkeun anonimitas pamilon jaringan. Sakur pakét tiasa dikirim henteu langsung, tapi ngalangkungan torowongan perantara kalayan enkripsi tambahan - sapertos I2P atanapi TOR.
  • TON DHT. Disebarkeun tabel hash pikeun nyimpen nilai sawenang. Éta ogé diwangun di luhur Jaringan TON (tapi dina waktos anu sareng dianggo ku anjeunna) jeung mantuan Panyimpenan TON manggihan "ngadistribusikaeun" titik, jeung Proksi TON - repeaters panengah. Tapi kedah diperhatoskeun yén, teu sapertos blockchain, tabel hash ieu sanés panyimpen anu aman - anjeun moal tiasa nyimpen inpormasi penting di jerona.
  • Layanan ton. Platform pikeun layanan custom. Intina, ieu mangrupikeun Internét énggal di luhur sadaya anu dijelaskeun di luhur. bursa data - via Jaringan TON/Proksi TON, jeung logika aya dina kontrak pinter tina Blockchain ton. Sareng antarbeungeut sareng URL anu cukup akrab.
  • TON DNS. Kusabab urang ngobrol ngeunaan URL anu biasa, urang ogé peryogi konverter ti aranjeunna kana alamat 256-bit - rekening, kontrak, jasa sareng titik.
  • ton pangmayaran. Sarta ieu tempat masalah duit asalna kana antrian. Sareng éta henteu ngan ukur gram - sakumaha kalawan éter, sagala "token" bakal mungkin; Gram bakal ngan ukur mata uang "standar" di dieu.

Ieu mangrupikeun bagian munggaran anu ngajelaskeun lapisan "grounded" TON - bagian jaringanna, diwangun dina luhureun protokol tradisional. Dina bagian salajengna urang bakal ngobrol ngeunaan "lemes" - blockchain, anu bakal dirojong ku sistem anu dijelaskeun di handap ieu. Ku kituna, urutan retelling mah rada béda ti nu dipaké dina dokumén di luhur-disebutkeun (anu dimimitian langsung dina tingkat abstrak).

Konsep dasar

TL (Tipe Basa). Éta mangrupikeun format binér abstrak pikeun struktur data sawenang-wenang. Hal ieu dianggo dina protokol Telegram sareng bakal aktip dianggo dina TON. Upami anjeun hoyong kenal sareng detil - ieu pedaranana.

Hash (Hash). Fungsi anu ngalakukeun transformasi anu teu bisa dibalikkeun tina struktur data sawenang-wenang kana jumlah tunggal anu panjangna tetep. Sapanjang dokuméntasi urang ngobrol ngeunaan fungsi Sha-256.

Node jaringan (titik). A node nyaéta parangkat lunak anu bakal mastikeun sistem beroperasi. Khususna, dianggap yén unggal aplikasi klien Telegram bakal kalebet titik TON. Dina tingkat anu handap, titik gaduh alamat IPv4/IPv6 sareng komunikasi nganggo protokol UDP; dina tingkat anu langkung luhur, aranjeunna gaduh alamat abstrak sareng ngalaksanakeun protokol ADNL (ngeunaan alamat abstrak sareng ADNL - tingali di handap). Lamun datang ka kanyataan yén sababaraha bagéan sistem ngalakukeun hiji hal atawa nyimpen sababaraha data, ieu dipikaharti yén ieu dipigawé ku titik jaringan.

Alamat abstrak (atawa ngan saukur alamat, alamat). Alamat titik ditangtukeun ku konci publik na. Langkung langkung ketat, éta mangrupikeun hash 256-bit (SHA256) tina struktur data anu ngandung konci umum (algoritma kriptografi khusus henteu ditangtukeun - kurva elliptic sareng RSA-2048 dirumuskeun salaku conto). Supados hiji titik pikeun komunikasi sareng nu sejen, éta perlu nyaho teu ngan alamat hiji, tapi ogé struktur data ieu. Sacara téori, hiji titik fisik tiasa nyiptakeun sajumlah alamat (cocog sareng konci anu béda).

Salajengna, ngan ukur link sapertos anu sering dianggo: "prototipe" dina bentuk struktur TL (ngandung ampir sadaya data), sareng hash 256-bit ti dinya, dianggo pikeun alamat.

Blockchain (blockchain). Blockchain nyaéta struktur data, elemen (blok) nu maréntahkeun kana "ranté", sarta unggal blok saterusna ranté ngandung hash sahiji saméméhna. Ku cara kieu, integritas kahontal - parobahan ngan bisa dilakukeun ku nambahkeun blok anyar.

palayanan (palayanan). Jasa dina TON tiasa tina sababaraha jinis, gumantung kana naha aranjeunna nganggo blockchain atanapi henteu. Contona, hiji (atawa loba) titik jaringan bisa ngolah requests RPC tangtu ngagunakeun protokol ADNL dijelaskeun di handap, tanpa nyieun sagala rékaman dina blockchain - kawas web server tradisional. Kaasup kamungkinan ngalaksanakeun HTTP ngaliwatan ADNL, kitu ogé transisi utusan sorangan ka protokol ieu. Ku analogi sareng TOR atanapi I2P, ieu bakal ngajantenkeun langkung tahan kana sababaraha blokir.

Dina waktos anu sami, sajumlah jasa ngalibetkeun duanana interaksi sareng blockchain sareng ngolah pamundut di luar éta. Contona, pikeun TON Panyimpenan - gudang file - teu pisan lumrah pikeun nyimpen file sorangan dina blockchain nu. Éta ngan ukur ngandung file hashes (sareng sareng sababaraha inpormasi meta ngeunaan aranjeunna), sareng titik jaringan khusus bakal janten "server file", siap ngirimkeunana ka titik anu sanés via ADNL.

Service kabut (jasa kabut). Urang ngobrol ngeunaan sababaraha jasa anu nunjukkeun desentralisasi sareng partisipasi kabuka di aranjeunna. Contona, TON Proxy nyaéta layanan anu bisa dirojong ku pamilon nu mana wae nu hayang nyadiakeun titik maranéhanana salaku perantara (proxy) pakét diteruskeun antara titik lianna. Upami hoyong, anjeunna tiasa ngecas fee diatur ku anjeunna - ngagunakeun sistem TON Payments pikeun micropayments (anu, kahareupna ogé layanan kabut).

ADNL: Lapisan Jaringan Datagram Abstrak

Dina tingkat panghandapna, komunikasi antara titik bakal dilaksanakeun ngagunakeun protokol UDP (sanajan pilihan séjén bisa ditarima).

Sakumaha didadarkeun di luhur, dina urutan pikeun hiji titik pikeun ngirim pakét ka nu sejen, eta kudu nyaho salah sahiji konci publik na (jeung ku kituna alamat eta nangtukeun). Éta énkripsi pakét nganggo konci ieu sareng nambihan alamat tujuan 256-bit ka awal pakét - sabab hiji titik tiasa gaduh sababaraha alamat ieu, ieu bakal ngamungkinkeun pikeun nangtukeun konci mana anu dianggo pikeun dekripsi.

TON: Telegram Open Network. Bagian 1: Perkenalan, lapisan jaringan, ADNL, DHT, jaringan overlay

Sajaba ti éta, tinimbang alamat panarima, awal pakét data bisa ngandung nu disebut. idéntifikasi saluran. Dina hal ieu, pamrosésan pakét parantos gumantung kana perjanjian khusus antara titik - contona, data anu dikirim ka saluran anu tangtu tiasa ditujukeun pikeun titik anu sanés sareng kedah diteruskeun ka dinya (ieu mangrupikeun jasa. Proksi TON). Kasus husus sejenna bisa jadi interaksi langsung antara titik, tapi ku enkripsi ngagunakeun pasangan konci individu pikeun saluran ieu (pre-generate maké protokol Diffie-Hellman).

Tungtungna, pasualan khusus nyaéta saluran "null" - upami titik henteu acan terang konci umum "tatanggana" na, éta tiasa ngirim pakét tanpa énkripsi. Ieu dimaksudkeun ngan pikeun initialization - sakali titik ngirim informasi ngeunaan konci maranéhanana, maranéhna kudu dipaké pikeun komunikasi salajengna.

Protokol ditétélakeun di luhur (256 bit channel identifier + eusi pakét) disebut ADNL. Dokuméntasi nyebatkeun kamungkinan ngalaksanakeun analog tina TCP di luhurna atanapi tambihanana sorangan - RLDP (Reliable Large Datagram Protocol), tapi henteu masihan detil ngeunaan palaksanaanna.

TON DHT: Disebarkeun Hash Table

Sapertos sistem distribusi anu sanés, TON ngalibatkeun palaksanaan DHT - méja Hash disebarkeun. Leuwih husus, tabél téh Kademlia-kawas. Upami anjeun henteu wawuh sareng jinis tabel hash ieu, tong hariwang, di handap ieu kuring bakal ngajelaskeun kumaha aranjeunna jalanna.

TON: Telegram Open Network. Bagian 1: Perkenalan, lapisan jaringan, ADNL, DHT, jaringan overlay

Dina rasa abstrak, DHT peta konci 256-bit kana nilai binér panjangna sawenang. Dina hal ieu, konci dina tabél téh hashes tina struktur TL tangtu (struktur sorangan ogé disimpen babarengan jeung DHT). Ieu mirip pisan sareng formasi alamat titik - sareng aranjeunna tiasa leres-leres aya dina DHT (contona, nganggo konci sapertos alamat IP tina titik anu cocog sareng anu dipasihkeun. alamat abstrak, lamun manehna teu nyumputkeun eta). Tapi dina kasus umum, "prototipe konci" (maranéhna déskripsi, pedaran konci) nyaéta metadata anu nuduhkeun "boga" éntri dina tabel hash (nyaéta, konci umum tina sababaraha titik), jinis nilai anu disimpen, sareng aturan dimana éntri ieu tiasa dirobih salajengna. Contona, hiji aturan bisa ngidinan ngan nu boga pikeun ngarobah nilai, atawa nyaram ngarobah nilai handap (pikeun ngajaga ngalawan serangan replay).

Salian konci 256-bit, konsép alamat DHT diwanohkeun. Beda sareng alamat host biasa nyaéta alamat DHT kedah dihijikeun sareng alamat IP. Upami node henteu nyumputkeun IP na, éta tiasa nganggo alamat biasa pikeun DHT. Tapi leuwih sering, hiji misah, "semi-permanén" alamat bakal dijieun pikeun kaperluan DHT.
TON: Telegram Open Network. Bagian 1: Perkenalan, lapisan jaringan, ADNL, DHT, jaringan overlay
Konsep jarak diwanohkeun di luhur konci sareng alamat DHT - dina ieu sadayana saluyu sareng tabel kademlia - jarak antara kenop sarua jeung XOR (bitwise ekslusif OR) aranjeunna. Saperti dina tabel Kademlia, nilai pakait jeung konci tangtu kudu disimpen dina s titik nu boga jarak pangcaketna ka konci ieu (s Ieu jumlah relatif leutik).

Supados titik DHT tiasa komunikasi sareng titik sapertos kitu, éta tetep dina mémori méja routing DHT - Alamat DHT sareng IP tina titik anu berinteraksi sateuacanna, dikelompokkeun dumasar kana jarakna. Aya 256 grup misalna (aranjeunna pakait jeung bit paling signifikan disetél dina nilai jarak - nyaeta, titik dina jarak 0 nepi ka 255 bakal digolongkeun kana hiji grup, ti 256 nepi ka 65535 - kana salajengna, jsb). Dina unggal grup, jumlah kawates titik "pangalusna" disimpen (dina hal ping ka aranjeunna).

TON: Telegram Open Network. Bagian 1: Perkenalan, lapisan jaringan, ADNL, DHT, jaringan overlay

Unggal titik kedah ngadukung sababaraha operasi: nyimpen hiji nilai pikeun konci, pilarian titik и milarian nilai. Milarian titik ngalibatkeun ngaluarkeun, dumasar kana konci anu dipasihkeun, titik anu pangdeukeutna tina tabel routing; milarian nilaina sami, kecuali nalika titik terang nilai koncina (teras ngan ukur mulangkeunana). Sasuai, lamun titik hiji hayang manggihan nilai ku konci dina DHT, éta ngirimkeun requests ka sajumlah leutik titik pangdeukeutna konci ieu ti tabel routing na. Upami nilai anu diperyogikeun henteu diantara résponna, tapi aya alamat titik anu sanés, teras pamenta diulang deui ka aranjeunna.

TON DHT tiasa dianggo pikeun sagala rupa tujuan, contona, pikeun nerapkeun panyimpen file sapertos torrent (tingali. Panyimpenan TON); pikeun nangtukeun alamat titik anu nerapkeun jasa tangtu; pikeun nyimpen informasi ngeunaan nu boga akun dina blockchain nu. Tapi aplikasi anu paling penting nyaéta panemuan titik ku alamat abstrakna. Jang ngalampahkeun ieu, alamatna dianggo salaku konci anu nilaina kedah dipendakan. Salaku hasil tina pamundut, boh node sorangan bakal kapanggih (lamun alamat searched éta alamat semi-permanén DHT na), atawa nilai bakal alamat IP na port pikeun sambungan - atawa alamat sejen nu kudu dipaké salaku torowongan panganteur.

jaringan overlay di TON

Protokol ADNL anu dijelaskeun di luhur nunjukkeun kamampuan pikeun titik mana waé pikeun silih tukeur inpormasi - sanaos henteu kedah ku cara anu optimal. Urang bisa nyebutkeun yén berkat ADNL, sadaya titik ngabentuk grafik TON global (ideally disambungkeun). Tapi éta ogé mungkin pikeun nyieun jaringan overlay - subgraphs dina grafik ieu.
TON: Telegram Open Network. Bagian 1: Perkenalan, lapisan jaringan, ADNL, DHT, jaringan overlay

Dina jaringan sapertos kitu, interaksi dilumangsungkeun ngan langsung - ngaliwatan sambungan pre-kabentuk antara titik ilubiung dina jaringan (via saluran ADNL ditétélakeun di luhur). Wangunan sambungan sapertos antara tatanggana, pilarian pikeun tatanggana sorangan, mangrupa prosés otomatis nu neangan ngajaga konektipitas tina jaringan overlay jeung ngaleutikan Nepi dina bursa data di jerona.

Sajaba ti éta, aya cara pikeun gancang ngadistribusikaeun apdet siaran badag dina jaringan - aranjeunna pegat kana lembar, supplemented kode koreksi kasalahan, sarta sakabeh potongan ieu dikirimkeun ti hiji pamilon ka nu sejen. Ku kituna, pamilon teu kudu pinuh ménta sakabéh bagian saméméh ngirim aranjeunna salajengna sapanjang jaringan.

Jaringan overlay tiasa umum atanapi swasta. Janten anggota jaringan umum henteu sesah - anjeun kedah milarian struktur TL anu ngajelaskeun éta (tiasa umum atanapi tiasa diaksés ku konci anu tangtu dina DHT). Dina kasus jaringan pribadi, struktur ieu kedah dipikanyaho sateuacanna.

bisa terus

Kuring mutuskeun pikeun ngabagi ulasan TON kana sababaraha tulisan. Ieu dimana bagian ieu ends, jeung di hareup Kuring ngaléngkah mertimbangkeun struktur blockchain (langkung tepatna, blockchains) yén TON bakal diwangun.

sumber: www.habr.com

Tambahkeun komentar