TON: Jaringan Terbuka Telegram. Bagian 1: Pendahuluan, lapisan jaringan, ADNL, DHT, jaringan overlay

TON: Jaringan Terbuka Telegram. Bagian 1: Pendahuluan, lapisan jaringan, ADNL, DHT, jaringan overlay

Selama dua minggu ini, Runet telah membuat keributan tentang Telegram dan situasinya dengan pemblokiran yang tidak masuk akal dan tanpa ampun oleh Roskomnadzor. Pantulan itu menyinggung banyak orang, tetapi semua ini adalah topik untuk postingan di Geektimes. Saya terkejut dengan hal lain - Saya masih belum melihat satu pun analisis tentang Habré dari jaringan TON yang direncanakan untuk dirilis berdasarkan Telegram - Telegram Open Network. Saya ingin menutupi kekurangan ini, karena ada sesuatu untuk dipelajari di sana - meskipun tidak ada pernyataan resmi tentang hal itu.

Izinkan saya mengingatkan Anda bahwa ada rumor bahwa Telegram telah meluncurkan ICO tertutup berskala sangat besar, dan telah mengumpulkan sejumlah besar uang. Mata uang kripto milik Gram diperkirakan akan diluncurkan tahun ini - dan setiap pengguna Telegram akan secara otomatis memiliki dompet, yang dengan sendirinya menciptakan keunggulan signifikan dibandingkan mata uang kripto lainnya.

Sayangnya, karena belum ada pernyataan resmi, saya hanya bisa melanjutkan lebih jauh dokumen yang tidak diketahui asal usulnya, yang segera saya peringatkan kepada Anda. Tentu saja, ini mungkin palsu, tetapi mungkin juga ini adalah whitepaper nyata dari sistem masa depan, yang ditulis oleh Nikolai Durov (dan mungkin dibocorkan oleh salah satu investor). Tapi kalaupun palsu, tidak akan ada yang melarang kita mempelajari dan mendiskusikannya, bukan?

Apa isi dokumen ini? Saya akan mencoba menceritakannya kembali dengan kata-kata saya sendiri, dekat dengan teks, tetapi dalam bahasa Rusia dan sedikit lebih manusiawi (semoga Nikolai memaafkan saya atas kecenderungannya untuk mendalami matematika formal). Ingatlah bahwa meskipun asli, ini adalah draf deskripsi sistem dan kemungkinan besar akan berubah pada saat diluncurkan ke publik.

Kami belajar bahwa selain mata uang kripto, masih banyak lagi yang diharapkan. Mari kita ambil secara berurutan.

  • TON Blockchain. Ini adalah dasar dari keseluruhan sistem. Jika Anda tidak tahu apa itu блокчейн — Saya sarankan untuk mencari tahu, karena akan ada banyak blockchain di sini. Bersarang di dalam satu sama lain, blockchain yang hampir terfragmentasi dan bahkan “vertikal” di dalam blok blockchain lainnya. Juga akan ada beberapa istilah yang terdengar keren seperti Perutean Hypercube Instan и Paradigma Sharding Tak Terbatas, tapi akan dibahas lebih lanjut nanti. Dan, tentu saja, bukti kepemilikan dan kontrak pintar.
  • Jaringan P2P TON. Jaringan peer-to-peer yang menjadi dasar sistem akan dibangun. Dia akan dibahas terlebih dahulu di bagian cerita ini.
  • Penyimpanan TON. Penyimpanan file, apa pun blockchainnya, akan dibangun di jaringan peer-to-peer yang disebutkan di atas. Dapat dibandingkan dengan torrent.
  • Proksi TON. Ini adalah layanan yang tujuannya adalah untuk meningkatkan anonimitas peserta jaringan. Paket apa pun tidak dapat dikirim secara langsung, tetapi melalui terowongan perantara dengan enkripsi tambahan - seperti I2P atau TOR.
  • TON DHT. Tabel hash terdistribusi untuk menyimpan nilai arbitrer. Itu juga dibangun di atas Jaringan TON (tetapi pada saat yang sama digunakan olehnya) dan membantu Penyimpanan TON temukan node "mendistribusikan", dan Proksi TON — repeater perantara. Namun perlu dicatat bahwa, tidak seperti blockchain, tabel hash ini bukanlah penyimpanan yang aman - Anda tidak dapat menyimpan informasi penting di dalamnya.
  • Layanan TON. Platform untuk layanan khusus. Intinya, ini adalah Internet baru selain semua yang dijelaskan di atas. Pertukaran data - melalui Jaringan TON/Proksi TON, dan logikanya ada dalam kontrak pintar TON Blockchain. Dan antarmuka dengan URL yang cukup familiar.
  • TON DNS. Karena kita berbicara tentang URL yang sudah dikenal, kita juga memerlukan pengonversi URL tersebut menjadi alamat 256-bit - akun, kontrak, layanan, dan node.
  • Pembayaran TON. Dan di sinilah persoalan uang berperan. Dan itu tidak hanya akan terjadi gram — seperti halnya eter, “token” apa pun dapat dilakukan; Gram hanya akan menjadi mata uang “default” di sini.

Ini adalah bagian pertama yang menjelaskan lapisan TON yang “dibumikan” – bagian jaringannya, yang dibangun di atas protokol tradisional. Pada bagian selanjutnya kita akan berbicara tentang “lunak” - blockchain, yang akan didukung oleh sistem yang dijelaskan di bawah. Jadi, urutan penceritaan kembali saya agak berbeda dari yang digunakan dalam dokumen yang disebutkan di atas (yang dimulai langsung pada tingkat abstrak).

Konsep dasar

TL (Jenis Bahasa). Ini adalah format biner abstrak untuk struktur data arbitrer. Ini digunakan dalam protokol Telegram dan akan digunakan secara aktif di TON. Jika Anda ingin mengenalnya secara detail - berikut uraiannya.

hash (hash). Suatu fungsi yang melakukan transformasi ireversibel dari struktur data arbitrer menjadi satu bilangan dengan panjang tetap. Sepanjang dokumentasi kita berbicara tentang fungsinya SHA-256.

simpul jaringan (simpul). Node adalah perangkat lunak yang akan memastikan sistem beroperasi. Secara khusus, diasumsikan bahwa setiap aplikasi klien Telegram akan menyertakan node TON. Pada tingkat rendah, node memiliki alamat IPv4/IPv6 dan berkomunikasi menggunakan protokol UDP; pada tingkat yang lebih tinggi, mereka memiliki alamat abstrak dan mengimplementasikan protokol ADNL (tentang alamat abstrak dan ADNL - lihat di bawah). Ketika beberapa bagian dari sistem melakukan sesuatu atau menyimpan beberapa data, dapat dipahami bahwa ini dilakukan oleh node jaringan.

Alamat abstrak (atau sederhananya alamat, alamat). Alamat sebuah node ditentukan oleh kunci publiknya. Lebih tepatnya, ini adalah hash 256-bit (SHA256) dari struktur data yang berisi kunci publik (algoritme kriptografi spesifik tidak ditentukan - kurva elips dan RSA-2048 diberikan sebagai contoh). Agar satu node dapat berkomunikasi dengan node lainnya, node tersebut tidak hanya perlu mengetahui alamat node tersebut, tetapi juga struktur datanya. Secara teori, satu node fisik dapat membuat sejumlah alamat (sesuai dengan kunci yang berbeda).

Selanjutnya, tautan seperti itu sering digunakan: "prototipe" dalam bentuk struktur TL (berisi hampir semua data), dan hash 256-bit darinya, digunakan untuk pengalamatan.

окчейн (blockchain). Blockchain adalah struktur data, elemen (blok) yang diurutkan menjadi “rantai”, dan setiap blok rantai berikutnya berisi hash dari blok sebelumnya. Dengan cara ini, integritas tercapai - perubahan hanya dapat dilakukan dengan menambahkan blok baru.

Layanan (layanan). Layanan dalam TON bisa bermacam-macam jenisnya, tergantung apakah layanan tersebut menggunakan blockchain atau tidak. Misalnya, satu (atau banyak) node jaringan dapat memproses permintaan RPC tertentu menggunakan protokol ADNL yang dijelaskan di bawah, tanpa membuat catatan apa pun di blockchain - seperti server web tradisional. Termasuk kemungkinan mengimplementasikan HTTP melalui ADNL, serta transisi dari messenger itu sendiri ke protokol ini. Mirip dengan TOR atau I2P, ini akan membuatnya lebih tahan terhadap berbagai pemblokiran.

Pada saat yang sama, sejumlah layanan melibatkan interaksi dengan blockchain dan memproses permintaan di luarnya. Misalnya, untuk TON Storage - penyimpanan file - sangat tidak masuk akal untuk menyimpan file itu sendiri di blockchain. Ini hanya akan berisi hash file (bersama dengan beberapa informasi meta tentangnya), dan node jaringan khusus akan bertindak sebagai “server file”, siap mengirimkannya ke node lain melalui ADNL.

Layanan kabut (layanan kabut). Kita berbicara tentang beberapa layanan yang menyiratkan desentralisasi dan partisipasi terbuka di dalamnya. Misalnya, TON Proxy adalah layanan yang dapat didukung oleh setiap peserta yang ingin menyediakan node mereka sebagai perantara (proxy) yang meneruskan paket antar node lainnya. Jika diinginkan, dia dapat membebankan biaya yang ditetapkan olehnya untuk ini - menggunakan sistem Pembayaran TON untuk pembayaran mikro (yang, pada gilirannya, juga merupakan layanan kabut).

ADNL: Lapisan Jaringan Datagram Abstrak

Pada tingkat terendah, komunikasi antar node akan dilakukan menggunakan protokol UDP (walaupun opsi lain juga dapat diterima).

Seperti disebutkan di atas, agar satu node dapat mengirim paket ke node lain, node tersebut harus mengetahui salah satu kunci publiknya (dan juga alamat yang ditentukannya). Ini mengenkripsi paket dengan kunci ini dan menambahkan alamat tujuan 256-bit ke awal paket - karena satu node dapat memiliki beberapa alamat ini, ini akan memungkinkannya menentukan kunci mana yang akan digunakan untuk dekripsi.

TON: Jaringan Terbuka Telegram. Bagian 1: Pendahuluan, lapisan jaringan, ADNL, DHT, jaringan overlay

Selain itu, alih-alih alamat penerima, awal paket data mungkin berisi apa yang disebut. pengidentifikasi saluran. Dalam hal ini, pemrosesan paket sudah bergantung pada kesepakatan khusus antar node - misalnya, data yang dikirim ke saluran tertentu mungkin ditujukan untuk node lain dan harus diteruskan ke sana (ini adalah layanannya Proksi TON). Kasus khusus lainnya mungkin berupa interaksi langsung antar node, tetapi dengan enkripsi menggunakan pasangan kunci individual untuk saluran ini (dibuat sebelumnya menggunakan protokol Diffie-Hellman).

Terakhir, kasus khusus adalah saluran “null” - jika sebuah node belum mengetahui kunci publik “tetangganya”, node tersebut dapat mengirimi mereka paket tanpa enkripsi sama sekali. Ini dimaksudkan hanya untuk inisialisasi - setelah node mengirimkan informasi tentang kuncinya, kunci tersebut harus digunakan untuk komunikasi lebih lanjut.

Protokol yang dijelaskan di atas (pengidentifikasi saluran 256 bit + isi paket) disebut ADNL. Dokumentasi menyebutkan kemungkinan mengimplementasikan analog TCP di atasnya atau add-onnya sendiri - RLDP (Reliable Large Datagram Protocol), tetapi tidak merinci implementasinya.

TON DHT: Tabel Hash Terdistribusi

Seperti halnya dengan sistem terdistribusi lainnya, TON melibatkan implementasi DHT - tabel hash terdistribusi. Lebih khusus lagi, tabelnya adalah Seperti Kademlia. Jika Anda belum familiar dengan tabel hash jenis ini, jangan khawatir, di bawah ini saya akan menjelaskan secara kasar cara kerjanya.

TON: Jaringan Terbuka Telegram. Bagian 1: Pendahuluan, lapisan jaringan, ADNL, DHT, jaringan overlay

Dalam arti abstrak, DHT memetakan kunci 256-bit ke nilai biner dengan panjang yang berubah-ubah. Dalam hal ini, kunci dalam tabel adalah hash dari struktur TL tertentu (struktur itu sendiri juga disimpan bersama dengan DHT). Ini sangat mirip dengan pembentukan alamat node - dan alamat tersebut memang dapat ada di DHT (misalnya, dengan menggunakan kunci tersebut, alamat IP dari sebuah node sesuai dengan alamat tertentu). alamat abstrak, jika dia tidak menyembunyikannya). Namun dalam kasus umum, “prototipe kunci” (mereka deskripsi, deskripsi kunci) adalah metadata yang menunjukkan “pemilik” entri dalam tabel hash (yaitu, kunci publik dari beberapa node), jenis nilai yang disimpan, dan aturan yang selanjutnya dapat mengubah entri tersebut. Misalnya, aturan mungkin hanya memperbolehkan pemilik untuk mengubah nilai, atau melarang perubahan nilai ke bawah (untuk melindungi dari serangan berulang).

Selain kunci 256-bit, konsep alamat DHT juga diperkenalkan. Perbedaannya dengan alamat host biasa adalah alamat DHT terikat dengan alamat IP. Jika sebuah node tidak menyembunyikan IP-nya, ia dapat menggunakan alamat biasa untuk DHT. Namun lebih sering, alamat “semi-permanen” terpisah akan dibuat untuk kebutuhan DHT.
TON: Jaringan Terbuka Telegram. Bagian 1: Pendahuluan, lapisan jaringan, ADNL, DHT, jaringan overlay
Konsep jarak diperkenalkan di atas kunci dan alamat DHT - semuanya sesuai dengan tabel kademlia — jarak antar tombol sama dengan XOR (bitwise Exclusive OR). Seperti dalam tabel Kademlia, nilai yang terkait dengan kunci tertentu harus disimpan s node yang memiliki jarak terpendek ke kunci ini (s di sini jumlahnya relatif kecil).

Agar node DHT dapat berkomunikasi dengan node lain, node tersebut disimpan di memori Tabel perutean DHT — DHT dan alamat IP dari node yang berinteraksi sebelumnya, dikelompokkan berdasarkan jarak ke node tersebut. Ada 256 grup seperti itu (mereka sesuai dengan kumpulan bit paling signifikan dalam nilai jarak - yaitu, node pada jarak dari 0 hingga 255 akan dimasukkan ke dalam satu grup, dari 256 hingga 65535 - ke grup berikutnya, dll.). Dalam setiap grup, sejumlah node “terbaik” disimpan (dalam hal ping ke node tersebut).

TON: Jaringan Terbuka Telegram. Bagian 1: Pendahuluan, lapisan jaringan, ADNL, DHT, jaringan overlay

Setiap node harus mendukung beberapa operasi: menyimpan nilai untuk kunci, pencarian simpul и mencari nilai. Pencarian node melibatkan penerbitan, berdasarkan kunci tertentu, node terdekat dari tabel routing; mencari nilai adalah sama, kecuali ketika node mengetahui nilai kunci (kemudian mengembalikannya saja). Oleh karena itu, jika sebuah node ingin menemukan nilai berdasarkan kunci di DHT, ia mengirimkan permintaan ke sejumlah kecil node yang paling dekat dengan kunci ini dari tabel peruteannya. Jika nilai yang diperlukan tidak ada di antara tanggapan mereka, tetapi ada alamat node lain, maka permintaan akan diulangi kepada mereka.

TON DHT dapat digunakan untuk berbagai tujuan, misalnya untuk mengimplementasikan penyimpanan file seperti torrent (lihat. Penyimpanan TON); untuk menentukan alamat node yang mengimplementasikan layanan tertentu; untuk menyimpan informasi tentang pemilik akun di blockchain. Namun penerapan yang paling penting adalah penemuan node berdasarkan alamat abstraknya. Untuk melakukan ini, alamat digunakan sebagai kunci yang nilainya perlu ditemukan. Sebagai hasil dari permintaan tersebut, node itu sendiri akan ditemukan (jika alamat yang dicari adalah alamat DHT semi permanen), atau nilainya akan berupa alamat IP dan port untuk koneksi - atau alamat lain yang harus digunakan sebagai terowongan perantara.

Jaringan overlay di TON

Protokol ADNL yang dijelaskan di atas menyiratkan kemampuan setiap node untuk bertukar informasi satu sama lain - meskipun tidak harus dengan cara yang optimal. Kita dapat mengatakan bahwa berkat ADNL, semua node membentuk grafik TON global (terhubung idealnya). Namun dimungkinkan juga untuk membuat jaringan overlay - subgraf dalam grafik ini.
TON: Jaringan Terbuka Telegram. Bagian 1: Pendahuluan, lapisan jaringan, ADNL, DHT, jaringan overlay

Dalam jaringan seperti itu, interaksi hanya dilakukan secara langsung - melalui koneksi yang telah terbentuk sebelumnya antara node yang berpartisipasi dalam jaringan (melalui saluran ADNL yang dijelaskan di atas). Terbentuknya koneksi antar tetangga, pencarian tetangga itu sendiri, merupakan proses otomatis yang berupaya menjaga konektivitas jaringan overlay dan meminimalkan penundaan pertukaran data di dalamnya.

Selain itu, ada cara untuk dengan cepat mendistribusikan pembaruan siaran besar dalam jaringan - pembaruan tersebut dipecah menjadi beberapa bagian, dilengkapi dengan kode koreksi kesalahan, dan semua bagian ini dikirim dari satu peserta ke peserta lainnya. Dengan demikian, peserta tidak harus memperoleh seluruh bagian secara penuh sebelum mengirimkannya lebih jauh melalui jaringan.

Jaringan overlay dapat bersifat publik atau pribadi. Menjadi anggota jaringan publik tidaklah sulit - Anda perlu menemukan struktur TL yang menggambarkannya (bisa bersifat publik atau dapat diakses dengan kunci tertentu di DHT). Dalam kasus jaringan pribadi, struktur ini harus diketahui oleh node terlebih dahulu.

Untuk dilanjutkan

Saya memutuskan untuk membagi review TON menjadi beberapa artikel. Di sinilah bagian ini berakhir, dan berikutnya Saya melanjutkan untuk mempertimbangkan struktur blockchain (lebih tepatnya, blockchain) yang terdiri dari TON.

Sumber: www.habr.com

Tambah komentar