TON: Telegram Açık Ağı. Bölüm 1: Giriş, ağ katmanı, ADNL, DHT, yer paylaşımlı ağlar

TON: Telegram Açık Ağı. Bölüm 1: Giriş, ağ katmanı, ADNL, DHT, yer paylaşımlı ağlar

İki haftadır Runet, Telegram ve Roskomnadzor'un anlamsız ve acımasız engellemesiyle ilgili durum hakkında gürültü yapıyor. Sekme birçok insanı rahatsız etti, ancak bunların hepsi Geektimes'taki gönderilerin konuları. Başka bir şey beni şaşırttı - Telegram - Telegram Açık Ağı temelinde yayınlanması planlanan TON ağının Habré'si hakkında hâlâ tek bir analiz görmedim. Bu eksikliği gidermek istedim çünkü resmi bir açıklama olmamasına rağmen orada araştırılacak bir şeyler var.

Telegram'ın halihazırda inanılmaz miktarda para toplayarak çok büyük ölçekli kapalı bir ICO başlattığı yönünde söylentilerin olduğunu hatırlatmama izin verin. Gram'ın kendi kripto para biriminin bu yıl piyasaya sürülmesi bekleniyor ve her Telegram kullanıcısı otomatik olarak bir cüzdana sahip olacak, bu da diğer kripto para birimlerine göre başlı başına önemli bir avantaj yaratıyor.

Ne yazık ki resmi bir açıklama olmadığı için ancak daha ileri gidebilirim. kaynağı bilinmeyen belgesizi hemen uyarıyorum. Elbette bunun çok ustaca bir sahte olduğu ortaya çıkabilir, ancak bunun Nikolai Durov tarafından yazılan (ve muhtemelen yatırımcılardan biri tarafından sızdırılan) gelecekteki sistemin gerçek bir teknik incelemesi olması da mümkündür. Ama sahte olsa bile kimse bizim onu ​​araştırmamızı ve tartışmamızı yasaklamayacak, değil mi?

Bu belge ne diyor? Bunu kendi sözlerimle, metne yakın ama Rusça ve biraz daha insani bir şekilde yeniden anlatmaya çalışacağım (Nikolai, resmi matematiğe girme eğilimi nedeniyle beni affetsin). Bu gerçek olsa bile, bunun sistemin taslak açıklaması olduğunu ve büyük olasılıkla halka açık lansmana kadar değişeceğini unutmayın.

Kripto para biriminin yanı sıra beklenen çok daha fazlasının olduğunu öğreniyoruz. Sırayla ele alalım.

  • TON Blockchain. Bu, tüm sistemin temelidir. Eğer ne olduğunu bilmiyorsan blokcheyn — Bunu öğrenmenizi tavsiye ederim çünkü burada çok fazla blockchain olacak. Birbirlerinin içine yerleştirilmiş, neredeyse parçalanmış ve hatta diğer blok zincirlerinin blokları içindeki "dikey" blok zincirleri. Ayrıca kulağa hoş gelen bazı terimler de olacak Anında Hypercube Yönlendirme и Sonsuz Parçalama Paradigması, ancak bunun hakkında daha sonra daha fazla bilgi vereceğiz. Ve elbette, hisse kanıtı ve akıllı sözleşmeler.
  • TON P2P Ağı. Sistemin inşa edileceği eşler arası ağ. Hikayenin bu bölümünde ilk olarak ondan bahsedilecek.
  • TON Depolama. Blok zincirinden bağımsız olarak yukarıda belirtilen eşler arası ağ üzerine kurulacak olan dosya depolama. Torrentlerle karşılaştırılabilir.
  • TON proxy'si. Bu, amacı ağ katılımcılarının anonimliğini artırmak olan bir hizmettir. Herhangi bir paket doğrudan değil, I2P veya TOR gibi ek şifrelemeye sahip aracı tüneller aracılığıyla gönderilebilir.
  • TON DHT. Rastgele değerleri depolamak için dağıtılmış karma tablosu. Aynı zamanda üstüne inşa edilmiştir TON Ağı (ama aynı zamanda onun tarafından da kullanılıyor) ve yardımcı oluyor TON Depolama “dağıtım” düğümlerini bulun ve TON proxy'si — ara tekrarlayıcılar. Ancak şunu da belirtmek gerekir ki, blockchainden farklı olarak bu hash tablosu güvenli bir depolama alanı değildir; önemli bilgiler burada saklanamaz.
  • TON Hizmetleri. Özel hizmetler için platform. Aslında bu, yukarıda açıklanan her şeyin ötesinde yeni bir İnternet'tir. Veri alışverişi - aracılığıyla TON Ağı/TON proxy'sive mantık, akıllı sözleşmelerde yatmaktadır. TON Blockchain. Ve oldukça tanıdık URL'lere sahip bir arayüz.
  • TON DNS'si. Tanıdık URL'lerden bahsettiğimiz için, bunlardan 256 bitlik adreslere (hesaplar, sözleşmeler, hizmetler ve düğümler) dönüştürücüye de ihtiyacımız var.
  • TON Ödemeleri. İşte bu noktada para meselesi devreye giriyor. Ve bu sadece olmayacak gram — Ether'de olduğu gibi herhangi bir "jeton" mümkün olacak; Gram burada yalnızca “varsayılan” para birimi olacak.

Bu, TON'un geleneksel protokollerin üzerine inşa edilen ağ kısmı olan "topraklanmış" katmanını tanımlayan ilk bölümdür. Bir sonraki bölümde aşağıda anlatılan sistem tarafından desteklenecek olan “soft” – blockchainden bahsedeceğiz. Bu nedenle, benim yeniden anlatma sıram yukarıda bahsedilen belgede kullanılandan (hemen soyut düzeyde başlayan) biraz farklıdır.

Temel Kavramlar

TL (Tip Dili). Rastgele veri yapıları için soyut bir ikili formattır. Telegram protokolünde kullanılmaktadır ve TON’da da aktif olarak kullanılacaktır. Onu detaylı olarak tanımak istiyorsanız - işte onun açıklaması.

doğramak (esrar). Rastgele bir veri yapısını sabit uzunluktaki tek bir sayıya geri döndürülemez şekilde dönüştüren bir işlev. Dokümantasyon boyunca fonksiyon hakkında konuşuyoruz SHA-256.

Ağ düğümü (düğüm). Düğüm sistemin çalışmasını sağlayacak yazılımdır. Özellikle her Telegram istemci uygulamasının bir TON düğümü içereceği varsayılmaktadır. Düşük düzeyde, düğümler IPv4/IPv6 adreslerine sahiptir ve UDP protokolünü kullanarak iletişim kurarlar; daha yüksek düzeyde ise, soyut adresler ve ADNL protokolünü uygulayın (soyut adresler ve ADNL hakkında - aşağıya bakın). Sistemin bazı bölümlerinin bir şeyler yapması veya bazı verileri saklaması söz konusu olduğunda bunun ağ düğümleri tarafından yapıldığı anlaşılır.

Özet adresi (ya da sadece adres, adres). Bir düğümün adresi onun genel anahtarı tarafından belirlenir. Daha kesin olarak, genel anahtarı içeren veri yapısının 256 bitlik bir karmasıdır (SHA256). (özel şifreleme algoritması belirtilmemiştir - eliptik eğriler ve RSA-2048 örnek olarak verilmiştir). Bir düğümün diğer bir düğümle iletişim kurabilmesi için sadece onun adresini değil aynı zamanda bu veri yapısını da bilmesi gerekiyor. Teorik olarak, bir fiziksel düğüm herhangi bir sayıda adres (farklı anahtarlara karşılık gelen) oluşturabilir.

Ayrıca, böyle bir bağlantı sıklıkla kullanılır: TL yapısı biçiminde bir "prototip" (neredeyse her türlü veriyi içerir) ve adresleme için kullanılan 256 bitlik bir karma.

Blokcheyn (blockchain). Blockchain bir veri yapısıdır, öğeler (bloklar) bir "zincir" halinde sıralanır ve zincirin sonraki her bloğu bir öncekinin karmasını içerir. Bu şekilde bütünlük sağlanır; değişiklikler ancak yeni bloklar eklenerek yapılabilir.

Hizmet (hizmet). TON içindeki hizmetler, blockchain kullanıp kullanmamalarına bağlı olarak çeşitli türlerde olabilir. Örneğin, bir (veya daha fazla) ağ düğümü, geleneksel web sunucularında olduğu gibi, blok zincirinde herhangi bir kayıt oluşturmadan, aşağıda açıklanan ADNL protokolünü kullanarak belirli RPC isteklerini işleyebilir. ADNL üzerinden HTTP uygulama olasılığının yanı sıra habercinin kendisinin bu protokole geçişi de dahil. TOR veya I2P'ye benzetilerek bu, onu çeşitli engellemelere karşı daha dirençli hale getirecektir.

Aynı zamanda, bir dizi hizmet hem blockchain ile etkileşimi hem de onun dışındaki istekleri işlemeyi içerir. Örneğin TON Depolama (dosya depolama) için dosyaların kendilerinin blockchain üzerinde saklanması pek mantıklı değildir. Yalnızca dosya karmalarını (bunlarla ilgili bazı meta bilgilerle birlikte) içerecek ve özel ağ düğümleri, bunları ADNL aracılığıyla diğer düğümlere göndermeye hazır "dosya sunucuları" gibi davranacak.

Sis hizmeti (sis servisi). Merkeziyetsizliği ve bunlara açık katılımı ima eden bazı hizmetlerden bahsediyoruz. Örneğin TON Proxy, kendi düğümünü diğer düğümler arasında aracı (proxy) iletme paketleri olarak sağlamak isteyen herhangi bir katılımcı tarafından desteklenebilecek bir hizmettir. İstenirse, mikro ödemeler için TON Ödeme sistemini kullanarak (bu da aynı zamanda bir sis hizmetidir) bunun için kendisi tarafından belirlenen bir ücret talep edebilir.

ADNL: Soyut Datagram Ağ Katmanı

En düşük seviyede, düğümler arasındaki iletişim UDP protokolü kullanılarak gerçekleştirilecektir (diğer seçenekler kabul edilebilir olsa da).

Yukarıda belirtildiği gibi, bir düğümün diğerine paket gönderebilmesi için genel anahtarlarından birini (ve dolayısıyla tanımladığı adresi) bilmesi gerekir. Paketi bu anahtarla şifreler ve 256 bitlik hedef adresini paketin başına ekler - bir düğüm bu adreslerden birkaçına sahip olabileceğinden, bu, şifre çözme için hangi anahtarın kullanılacağını belirlemesine olanak tanır.

TON: Telegram Açık Ağı. Bölüm 1: Giriş, ağ katmanı, ADNL, DHT, yer paylaşımlı ağlar

Ayrıca veri paketinin başında alıcının adresi yerine sözde bilgi bulunabilir. tanımlayıcı kanal. Bu durumda, paketin işlenmesi zaten düğümler arasındaki belirli anlaşmalara bağlıdır - örneğin, belirli bir kanala gönderilen veriler başka bir düğüm için tasarlanmış olabilir ve ona iletilmesi gerekir (bu hizmettir) TON proxy'si). Başka bir özel durum, doğrudan düğümler arasında etkileşim olabilir, ancak bu kanal için ayrı bir anahtar çifti kullanılarak şifreleme yapılabilir (Diffie-Hellman protokolü kullanılarak önceden oluşturulmuştur).

Son olarak, özel bir durum da "boş" kanaldır; eğer bir düğüm henüz "komşularının" genel anahtarlarını bilmiyorsa, onlara şifreleme olmadan paketler gönderebilir. Bu yalnızca başlatma amaçlıdır; düğümler anahtarları hakkında bilgi gönderdiğinde, bunlar daha fazla iletişim için kullanılmalıdır.

Yukarıda açıklanan protokole (256 bit kanal tanımlayıcı + paket içeriği) ADNL adı verilir. Belgeler, bunun üzerine bir TCP analogu veya kendi eklentisi olan RLDP'yi (Güvenilir Büyük Datagram Protokolü) uygulama olasılığından bahsediyor, ancak bunların uygulanmasıyla ilgili ayrıntılara girmiyor.

TON DHT: Dağıtılmış Hash Tablosu

Diğer dağıtılmış sistemlerde olduğu gibi TON da DHT'nin uygulanmasını içerir - dağıtılmış karma tablosu. Daha spesifik olarak, tablo Kademlia benzeri. Bu tür hash tablosuna aşina değilseniz endişelenmeyin, aşağıda kabaca nasıl çalıştıklarını anlatacağım.

TON: Telegram Açık Ağı. Bölüm 1: Giriş, ağ katmanı, ADNL, DHT, yer paylaşımlı ağlar

Soyut anlamda DHT, 256 bitlik anahtarları isteğe bağlı uzunluktaki ikili değerlerle eşleştirir. Bu durumda, tablodaki anahtarlar belirli bir TL yapısından gelen karmalardır (yapıların kendisi de DHT ile birlikte saklanır). Bu, düğüm adreslerinin oluşumuna çok benzer - ve bunlar gerçekten de DHT'de mevcut olabilir (örneğin, böyle bir anahtar kullanılarak, belirli bir düğüme karşılık gelen bir düğümün IP adresi) özet adresi, eğer saklamıyorsa). Ancak genel durumda, "anahtar prototipleri" (onların tanım, anahtar açıklamalar), karma tablosundaki bir girişin "sahibini" (yani, bazı düğümlerin ortak anahtarını), depolanan değerin türünü ve bu girişin daha sonra değiştirilebileceği kuralları belirten meta verilerdir. Örneğin, bir kural yalnızca sahibin değeri değiştirmesine izin verebilir veya değerin aşağıya doğru değiştirilmesini yasaklayabilir (tekrar oynatma saldırılarına karşı koruma sağlamak için).

256 bitlik anahtarların yanı sıra DHT adresleri kavramı da tanıtıldı. Normal ana bilgisayar adresleriyle arasındaki fark, DHT adresinin zorunlu olarak bir IP adresine bağlı olmasıdır. Bir düğüm IP'sini gizlemiyorsa DHT için normal bir adres kullanabilir. Ancak daha sıklıkla DHT ihtiyaçları için ayrı, "yarı kalıcı" bir adres oluşturulacaktır.
TON: Telegram Açık Ağı. Bölüm 1: Giriş, ağ katmanı, ADNL, DHT, yer paylaşımlı ağlar
Mesafe kavramı, tuşların ve DHT adreslerinin üzerinde tanıtılmıştır - bunda her şey tablolarla örtüşmektedir kademya — anahtarlar arasındaki mesafe, bunların XOR'una (bit düzeyinde özel OR) eşittir. Kademlia tablolarında olduğu gibi belirli bir anahtara karşılık gelen değerin saklanması gerekir. s Bu anahtara en kısa mesafeye sahip olan düğümler (s burada nispeten küçük bir sayı var).

Bir DHT düğümünün bu tür diğer düğümlerle iletişim kurabilmesi için hafızada tutulur. DHT yönlendirme tablosu — Daha önce etkileşimde bulunduğu düğümlerin, uzaklıklarına göre gruplandırılmış DHT ve IP adresleri. Bu tür 256 grup vardır (mesafe değerinde ayarlanan en önemli bit'e karşılık gelirler - yani, 0 ila 255 arasındaki mesafedeki düğümler bir gruba, 256'dan 65535'e - bir sonraki gruba vb. düşecektir). Her grupta sınırlı sayıda "en iyi" düğüm depolanır (bunlara ping açısından).

TON: Telegram Açık Ağı. Bölüm 1: Giriş, ağ katmanı, ADNL, DHT, yer paylaşımlı ağlar

Her düğüm birkaç işlemi desteklemelidir: bir anahtar için değer depolamak, düğüm araması и değerleri ara. Düğümlerin aranması, belirli bir anahtara göre yönlendirme tablosundan ona en yakın düğümlerin yayınlanmasını içerir; Düğümün anahtarın değerini bilmesi (sonra sadece onu döndürmesi) dışında değerleri aramak aynıdır. Buna göre bir düğüm DHT'de anahtara göre bir değer bulmak istiyorsa yönlendirme tablosundan bu anahtara en yakın az sayıdaki düğüme sorgular gönderir. Cevapları arasında istenilen değer yoksa ancak başka düğüm adresleri varsa istek onlara tekrarlanır.

TON DHT, örneğin torrent benzeri bir dosya depolaması uygulamak için çeşitli amaçlarla kullanılabilir (bkz. TON Depolama); belirli hizmetleri uygulayan düğümlerin adreslerini belirlemek; hesap sahipleri hakkındaki bilgileri blockchain'de depolamak için. Ancak en önemli uygulama, düğümlerin soyut adreslerine göre keşfedilmesidir. Bunun için adres, değerinin bulunması gereken bir anahtar olarak kullanılır. İsteğin sonucunda ya düğümün kendisi bulunacak (aranan adres onun yarı kalıcı DHT adresi ise) ya da değer, bağlantı için IP adresi ve bağlantı noktası ya da düğüm olarak kullanılması gereken başka bir adres olacaktır. ara tünel.

TON cinsinden yer paylaşımlı ağlar

Yukarıda açıklanan ADNL protokolü, herhangi bir düğümün birbirleriyle bilgi alışverişinde bulunabilme yeteneğini ima eder - ancak bu, en uygun yollarla olmasa da. ADNL sayesinde tüm düğümlerin global bir TON grafiği (ideal olarak bağlı) oluşturduğunu söyleyebiliriz. Ancak bu grafiğin içinde katman ağları - alt grafikler oluşturmak da mümkündür.
TON: Telegram Açık Ağı. Bölüm 1: Giriş, ağ katmanı, ADNL, DHT, yer paylaşımlı ağlar

Böyle bir ağ içinde, etkileşim yalnızca doğrudan - ağa katılan düğümler arasındaki önceden oluşturulmuş bağlantılar aracılığıyla (yukarıda açıklanan ADNL kanalları aracılığıyla) gerçekleştirilir. Komşular arasında bu tür bağlantıların oluşması, komşuların kendilerinin aranması, yer paylaşımlı ağın bağlantısını sürdürmeyi ve içindeki veri alışverişindeki gecikmeleri en aza indirmeyi amaçlayan otomatik bir süreçtir.

Ek olarak, büyük yayın güncellemelerini ağ içinde hızlı bir şekilde dağıtmanın bir yolu vardır - bunlar parçalara ayrılır, hata düzeltme koduyla desteklenir ve tüm bu parçalar bir katılımcıdan diğerine gönderilir. Böylece katılımcının, ağ üzerinden daha ileri göndermeden önce tüm parçaları tam olarak alması gerekmiyor.

Yer paylaşımlı ağlar genel veya özel olabilir. Herkese açık bir ağın üyesi olmak zor değildir - onu tanımlayan bir TL yapısı bulmanız gerekir (herkese açık olabilir veya DHT'deki belirli bir anahtarla erişilebilir olabilir). Özel ağ durumunda bu yapının düğüm tarafından önceden bilinmesi gerekir.

Devam edecek

TON incelemesini birkaç makaleye ayırmaya karar verdim. Bu kısım burada bitiyor ve gelecek TON'un oluşacağı blok zincirinin (daha doğrusu blok zincirlerinin) yapısını düşünmeye devam ediyorum.

Kaynak: habr.com

Yorum ekle