TON: شبکه باز تلگرام. قسمت 1: مقدمه، لایه شبکه، ADNL، DHT، شبکه های همپوشانی

TON: شبکه باز تلگرام. قسمت 1: مقدمه، لایه شبکه، ADNL، DHT، شبکه های همپوشانی

دو هفته است که Runet با مسدودسازی بی‌معنا و بی‌رحمانه‌اش توسط Roskomnadzor درباره تلگرام و اوضاع سر و صدا کرده است. این کمانه باعث رنجش بسیاری از مردم شد، اما همه اینها موضوعاتی برای پست‌های Geektimes هستند. من از چیز دیگری شگفت زده شدم - من هنوز یک تحلیل در Habré از شبکه TON ندیده ام که برای انتشار بر اساس Telegram - Telegram Open Network برنامه ریزی شده است. من می خواستم این کمبود را جبران کنم، زیرا چیزی برای مطالعه در آنجا وجود دارد - حتی با وجود عدم اظهارات رسمی در مورد آن.

به شما یادآوری می کنم که شایعاتی وجود دارد مبنی بر اینکه تلگرام با جمع آوری مقادیر باورنکردنی پول، یک ICO بسته بسیار بزرگ راه اندازی کرده است. انتظار می‌رود که ارز رمزنگاری شده خود Gram در سال جاری راه‌اندازی شود - و هر کاربر تلگرام به طور خودکار یک کیف پول خواهد داشت که به خودی خود مزیت قابل توجهی نسبت به سایر ارزهای دیجیتال ایجاد می‌کند.

متأسفانه، از آنجایی که هیچ بیانیه رسمی وجود ندارد، من فقط می توانم ادامه دهم سند با منشأ نامشخص، که من بلافاصله به شما هشدار می دهم. البته، ممکن است یک جعلی بسیار ماهرانه باشد، اما ممکن است که این یک کاغذ سفید واقعی از سیستم آینده باشد که توسط نیکولای دوروف نوشته شده است (و احتمالاً توسط یکی از سرمایه گذاران به بیرون درز کرده است). اما حتی اگر جعلی باشد، هیچ کس ما را از مطالعه و بحث در مورد آن منع نمی کند، درست است؟

این سند چه می گوید؟ من سعی خواهم کرد آن را به زبان خودم، نزدیک به متن، اما به زبان روسی و کمی انسانی تر بازگو کنم (ممکن است نیکولای من را با تمایلش به رفتن به ریاضیات رسمی ببخشد). به خاطر داشته باشید که حتی اگر این واقعی باشد، این یک پیش‌نویس توصیف سیستم است و به احتمال زیاد تا زمان راه‌اندازی عمومی تغییر خواهد کرد.

ما می آموزیم که علاوه بر ارز دیجیتال، چیزهای بیشتری نیز وجود دارد که انتظار می رود. به ترتیب آن را در نظر بگیریم.

  • TON Blockchain. این اساس کل سیستم است. اگه نمیدونی چیه بلاکچین - توصیه می‌کنم این موضوع را پیدا کنید، زیرا بلاک چین‌های زیادی در اینجا وجود خواهد داشت. تو در تو، بلاک چین‌های تقریباً تکه‌تکه و حتی «عمودی» در داخل بلوک‌های بلاک چین‌های دیگر. همچنین برخی از اصطلاحات جالب مانند وجود خواهد داشت مسیریابی فوری Hypercube и پارادایم شاردینگ بی نهایت، اما در ادامه بیشتر در مورد آن. و البته قراردادهای اثبات سهام و هوشمند.
  • شبکه TON P2P. شبکه همتا به همتا که بر اساس آن سیستم ساخته خواهد شد. او ابتدا در این بخش از داستان مورد بحث قرار خواهد گرفت.
  • ذخیره سازی TON. ذخیره سازی فایل، که صرف نظر از بلاک چین، بر روی شبکه همتا به همتای فوق الذکر ساخته خواهد شد. می توان آن را با تورنت مقایسه کرد.
  • پروکسی TON. این سرویسی است که هدف آن افزایش ناشناس بودن شرکت کنندگان در شبکه است. هر بسته ای را می توان نه به طور مستقیم، بلکه از طریق تونل های واسطه با رمزگذاری اضافی ارسال کرد - مانند I2P یا TOR.
  • تن DHT. جدول هش توزیع شده برای ذخیره مقادیر دلخواه. در بالا نیز ساخته شده است شبکه TON (اما در عین حال مورد استفاده او قرار می گیرد) و کمک می کند ذخیره سازی TON گره های "توزیع" را پیدا کنید و پروکسی TON - تکرار کننده های میانی اما باید توجه داشت که برخلاف بلاک چین، این جدول هش یک ذخیره سازی امن نیست - شما نمی توانید اطلاعات مهم را در آن ذخیره کنید.
  • خدمات TON. پلت فرم برای خدمات سفارشی. در اصل، این یک اینترنت جدید در بالای همه چیزهایی است که در بالا توضیح داده شد. تبادل داده - از طریق شبکه TON/پروکسی TONو منطق در قراردادهای هوشمند است TON Blockchain. و یک رابط با URL های نسبتا آشنا.
  • TON DNS. از آنجایی که ما در مورد URL های آشنا صحبت می کنیم، ما همچنین به یک تبدیل از آنها به آدرس های 256 بیتی - حساب ها، قراردادها، خدمات و گره ها نیاز داریم.
  • پرداخت TON. و اینجاست که بحث پول مطرح می شود. و نه تنها خواهد بود گرم - مانند اتر، هر "توکن" ممکن خواهد بود. گرم در اینجا فقط ارز «پیش‌فرض» خواهد بود.

این اولین قسمتی است که لایه "زمینی" TON را توصیف می کند - بخش شبکه آن که بر روی پروتکل های سنتی ساخته شده است. در قسمت بعدی در مورد بلاکچین "نرم" صحبت خواهیم کرد که توسط سیستمی که در زیر توضیح داده شده پشتیبانی می شود. بنابراین، ترتیب بازگویی من تا حدودی با آنچه در سند فوق الذکر استفاده شده است (که بلافاصله در سطح انتزاعی شروع می شود) متفاوت است.

مفاهیم اساسی

TL (زبان تایپ). این یک فرمت باینری انتزاعی برای ساختارهای داده دلخواه است. در پروتکل تلگرام استفاده می شود و به طور فعال در TON استفاده خواهد شد. اگر می خواهید با جزئیات بیشتر آشنا شوید - اینجا شرح اوست.

هش (مخلوط). تابعی که تبدیل غیر قابل برگشت یک ساختار داده دلخواه را به یک عدد واحد با طول ثابت انجام می دهد. در طول مستندات در مورد عملکرد صحبت می کنیم SHA-256.

گره شبکه (گره). گره نرم افزاری است که عملکرد سیستم را تضمین می کند. به طور خاص، فرض بر این است که هر برنامه کلاینت تلگرام شامل یک گره TON باشد. در سطح پایین، گره‌ها دارای آدرس‌های IPv4/IPv6 هستند و با استفاده از پروتکل UDP ارتباط برقرار می‌کنند؛ در سطح بالاتر، آنها دارای آدرس‌های IPvXNUMX/IPvXNUMX هستند. آدرس های انتزاعی و پروتکل ADNL را پیاده سازی کنید (در مورد آدرس های انتزاعی و ADNL - به زیر مراجعه کنید). وقتی صحبت از این واقعیت می شود که برخی از بخش های سیستم کاری انجام می دهند یا داده هایی را ذخیره می کنند، می توان فهمید که این کار توسط گره های شبکه انجام می شود.

آدرس چکیده (یا به سادگی ادرس, نشانی). آدرس یک گره توسط کلید عمومی آن تعیین می شود. دقیق تر، این یک هش 256 بیتی (SHA256) از ساختار داده است که حاوی کلید عمومی است (الگوریتم رمزنگاری خاص مشخص نشده است - منحنی های بیضوی و RSA-2048 به عنوان مثال آورده شده است). برای اینکه یک گره با دیگری ارتباط برقرار کند، نه تنها باید آدرس آن یکی، بلکه این ساختار داده را نیز بداند. در تئوری، یک گره فیزیکی می تواند هر تعداد آدرس (مرتبط با کلیدهای مختلف) ایجاد کند.

علاوه بر این، اغلب از چنین پیوندی استفاده می شود: یک "نمونه اولیه" به شکل یک ساختار TL (شامل تقریباً هر داده ای) و یک هش 256 بیتی از آن که برای آدرس دهی استفاده می شود.

بلاکچین (بلاکچین). بلاک چین یک ساختار داده، عناصر (بلوک) که در یک "زنجیره" مرتب شده اند و هر بلوک بعدی زنجیره حاوی هش قبلی است. به این ترتیب، یکپارچگی به دست می آید - تغییرات تنها با افزودن بلوک های جدید امکان پذیر است.

سرویس (سرویس). خدمات درون TON بسته به اینکه از بلاک چین استفاده می کنند یا خیر، می توانند انواع مختلفی داشته باشند. به عنوان مثال، یک (یا تعداد زیادی) گره شبکه می توانند درخواست های RPC خاصی را با استفاده از پروتکل ADNL که در زیر توضیح داده شده است، بدون ایجاد هیچ رکوردی در زنجیره بلوکی - مانند سرورهای وب سنتی، پردازش کنند. از جمله امکان پیاده سازی HTTP از طریق ADNL و همچنین انتقال خود پیام رسان به این پروتکل. بر اساس قیاس با TOR یا I2P، این باعث می شود که در برابر مسدود شدن های مختلف مقاوم تر شود.

در همان زمان، تعدادی از خدمات شامل تعامل با بلاک چین و پردازش درخواست‌های خارج از آن می‌شود. به عنوان مثال، برای TON Storage - ذخیره سازی فایل - ذخیره سازی خود فایل ها در بلاک چین چندان منطقی نیست. این فقط حاوی هش فایل (همراه با برخی متا اطلاعات در مورد آنها) خواهد بود و گره های شبکه تخصصی به عنوان "سرور فایل" عمل می کنند و آماده ارسال آنها به گره های دیگر از طریق ADNL هستند.

سرویس مه (سرویس مه). ما در مورد برخی از خدمات صحبت می کنیم که دلالت بر تمرکززدایی و مشارکت آزاد در آنها دارد. به عنوان مثال، TON Proxy سرویسی است که می تواند توسط هر شرکت کننده ای که می خواهد گره خود را به عنوان یک واسطه (پراکسی) بسته های ارسال بین گره های دیگر ارائه دهد، پشتیبانی می شود. در صورت تمایل، او می تواند هزینه ای را که توسط او برای این کار تعیین شده است دریافت کند - با استفاده از سیستم TON Payments برای پرداخت های خرد (که به نوبه خود یک سرویس مه نیز است).

ADNL: Abstract Datagram Layer Network

در پایین ترین سطح، ارتباط بین گره ها با استفاده از پروتکل UDP انجام خواهد شد (اگرچه گزینه های دیگر قابل قبول هستند).

همانطور که در بالا ذکر شد، برای اینکه یک گره بتواند بسته ای را به دیگری ارسال کند، باید یکی از کلیدهای عمومی خود (و در نتیجه آدرسی که تعریف می کند) را بداند. بسته را با این کلید رمزگذاری می کند و آدرس مقصد 256 بیتی را به ابتدای بسته اضافه می کند - از آنجایی که یک گره می تواند چندین مورد از این آدرس ها را داشته باشد، این به آن امکان می دهد تعیین کند که از کدام کلید برای رمزگشایی استفاده کند.

TON: شبکه باز تلگرام. قسمت 1: مقدمه، لایه شبکه، ADNL، DHT، شبکه های همپوشانی

علاوه بر این، به جای آدرس گیرنده، ابتدای بسته داده ممکن است حاوی به اصطلاح باشد. مشخص کننده کانال. در این مورد، پردازش بسته از قبل به توافقات خاص بین گره ها بستگی دارد - به عنوان مثال، داده های ارسال شده به یک کانال خاص ممکن است برای گره دیگری در نظر گرفته شود و باید به آن ارسال شود (این سرویس است. پروکسی TON). مورد خاص دیگر ممکن است تعامل مستقیم بین گره ها باشد، اما با رمزگذاری با استفاده از یک جفت کلید مجزا برای این کانال (از پیش تولید شده با استفاده از پروتکل Diffie-Hellman).

در نهایت، یک مورد خاص کانال "تهی" است - اگر یک گره هنوز کلیدهای عمومی "همسایگان" خود را نداند، می تواند بسته هایی را بدون رمزگذاری برای آنها ارسال کند. این فقط برای مقداردهی اولیه در نظر گرفته شده است - هنگامی که گره ها اطلاعاتی درباره کلیدهای خود ارسال می کنند، باید برای ارتباط بیشتر استفاده شوند.

پروتکل توضیح داده شده در بالا (256 بیت شناسه کانال + محتویات بسته) ADNL نامیده می شود. در این اسناد امکان اجرای آنالوگ TCP در بالای آن یا افزونه آن - RLDP (پروتکل بزرگ داده‌گرام قابل اعتماد) ذکر شده است، اما به جزئیات در مورد اجرای آنها نمی پردازد.

TON DHT: جدول هش توزیع شده

همانطور که در مورد سایر سیستم های توزیع شده است، TON شامل اجرای DHT است - جدول هش توزیع شده. به طور خاص، جدول است شبیه کادملیا. اگر با این نوع جدول هش آشنایی ندارید، نگران نباشید، در زیر به طور تقریبی نحوه کار آنها را توضیح خواهم داد.

TON: شبکه باز تلگرام. قسمت 1: مقدمه، لایه شبکه، ADNL، DHT، شبکه های همپوشانی

به معنای انتزاعی، DHT کلیدهای 256 بیتی را به مقادیر باینری با طول دلخواه نگاشت می کند. در این مورد، کلیدهای جدول هش از یک ساختار TL خاص هستند (خود ساختارها نیز همراه با DHT ذخیره می شوند). این بسیار شبیه به شکل گیری آدرس های گره است - و آنها در واقع می توانند در DHT وجود داشته باشند (به عنوان مثال، با استفاده از چنین کلیدی آدرس IP یک گره مربوط به یک داده داده شده است. آدرس چکیده، اگر آن را پنهان نکند). اما در حالت کلی، "نمونه های اولیه کلیدها" (آنها توضیحات, توضیحات کلیدی) فراداده ای است که «مالک» یک ورودی در جدول هش (یعنی کلید عمومی برخی از گره ها)، نوع مقدار ذخیره شده و قوانینی را نشان می دهد که این ورودی را متعاقباً می توان تغییر داد. به عنوان مثال، یک قانون ممکن است فقط به مالک اجازه دهد مقدار را تغییر دهد، یا تغییر مقدار را به سمت پایین (برای محافظت در برابر حملات تکراری) ممنوع کند.

علاوه بر کلیدهای 256 بیتی، مفهوم آدرس های DHT نیز معرفی شده است. تفاوت با آدرس های میزبان معمولی این است که آدرس DHT لزوماً به یک آدرس IP گره خورده است. اگر یک گره IP خود را پنهان نکند، می تواند از یک آدرس معمولی برای DHT استفاده کند. اما اغلب، یک آدرس جداگانه و "نیمه دائمی" برای نیازهای DHT ایجاد می شود.
TON: شبکه باز تلگرام. قسمت 1: مقدمه، لایه شبکه، ADNL، DHT، شبکه های همپوشانی
مفهوم فاصله در بالای کلیدها و آدرس های DHT معرفی شده است - در این مورد همه چیز با جداول مطابقت دارد. کادملیا - فاصله بین کلیدها برابر با XOR (OR انحصاری بیتی) آنها است. مانند جداول Kademlia، مقدار مربوط به یک کلید خاص باید در آن ذخیره شود s گره هایی که کمترین فاصله را با این کلید دارند (s در اینجا یک عدد نسبتاً کوچک است).

برای اینکه یک گره DHT با گره های دیگر ارتباط برقرار کند، آن را در حافظه نگه می دارد جدول مسیریابی DHT - آدرس‌های DHT و IP گره‌هایی که قبلاً با آن‌ها تعامل داشت، گروه‌بندی شده بر اساس فاصله تا آنها. 256 چنین گروه وجود دارد (آنها با مهم ترین بیت مجموعه در مقدار فاصله مطابقت دارند - یعنی گره هایی در فاصله 0 تا 255 در یک گروه قرار می گیرند ، از 256 تا 65535 - در گروه بعدی و غیره). در هر گروه، تعداد محدودی از "بهترین" گره ها ذخیره می شوند (از نظر پینگ به آنها).

TON: شبکه باز تلگرام. قسمت 1: مقدمه، لایه شبکه، ADNL، DHT، شبکه های همپوشانی

هر گره باید چندین عملیات را پشتیبانی کند: ذخیره یک مقدار برای یک کلید, جستجوی گره и جستجو برای مقادیر. جستجو برای گره ها شامل صدور، بر اساس یک کلید داده شده، نزدیک ترین گره ها به آن از جدول مسیریابی است. جستجوی مقادیر یکسان است، به جز زمانی که گره مقدار کلید را می داند (سپس فقط آن را برمی گرداند). بر این اساس، اگر یک گره بخواهد یک مقدار را به کلید در DHT بیابد، از جدول مسیریابی خود درخواست هایی را به تعداد کمی از گره های نزدیک به این کلید ارسال می کند. اگر مقدار مورد نیاز در بین پاسخ‌های آنها نباشد، اما آدرس‌های گره دیگری وجود داشته باشد، درخواست برای آنها تکرار می‌شود.

TON DHT را می توان برای اهداف مختلفی استفاده کرد، به عنوان مثال، برای اجرای ذخیره سازی فایل مانند تورنت (نگاه کنید به. ذخیره سازی TON) برای تعیین آدرس گره هایی که خدمات خاصی را پیاده سازی می کنند. برای ذخیره اطلاعات مربوط به صاحبان حساب در بلاک چین. اما مهمترین کاربرد، کشف گره ها توسط آدرس های انتزاعی آنهاست. برای این کار از آدرس به عنوان کلیدی استفاده می شود که باید مقدار آن را پیدا کرد. در نتیجه درخواست، یا خود گره پیدا می شود (اگر آدرس جستجو شده آدرس DHT نیمه دائمی آن باشد)، یا مقدار آدرس IP و پورت اتصال خواهد بود - یا آدرس دیگری که باید به عنوان یک آدرس استفاده شود. تونل واسطه

شبکه های همپوشانی در TON

پروتکل ADNL که در بالا توضیح داده شد، مستلزم توانایی هر گره برای تبادل اطلاعات با یکدیگر است - البته نه لزوماً به روش های بهینه. می توان گفت که به لطف ADNL، همه گره ها یک نمودار TON جهانی را تشکیل می دهند (به طور ایده آل متصل می شوند). اما علاوه بر این امکان ایجاد شبکه های همپوشانی - زیرگراف ها در این نمودار وجود دارد.
TON: شبکه باز تلگرام. قسمت 1: مقدمه، لایه شبکه، ADNL، DHT، شبکه های همپوشانی

در چنین شبکه ای، تعامل فقط به طور مستقیم انجام می شود - از طریق اتصالات از پیش ساخته شده بین گره های شرکت کننده در شبکه (از طریق کانال های ADNL که در بالا توضیح داده شد). تشکیل چنین ارتباطاتی بین همسایگان، جستجوی خود همسایگان، یک فرآیند خودکار است که به دنبال حفظ اتصال شبکه همپوشانی و به حداقل رساندن تاخیر در تبادل داده در آن است.

علاوه بر این، راهی برای توزیع سریع به‌روزرسانی‌های پخش بزرگ در شبکه وجود دارد - آنها به قطعات تقسیم می‌شوند، با کد تصحیح خطا تکمیل می‌شوند و همه این قطعات از یک شرکت‌کننده به شرکت‌کننده دیگر ارسال می‌شوند. بنابراین، شرکت کننده مجبور نیست تمام قطعات را قبل از ارسال بیشتر در طول شبکه به طور کامل دریافت کند.

شبکه های همپوشانی می توانند عمومی یا خصوصی باشند. عضویت در یک شبکه عمومی دشوار نیست - شما باید ساختار TL را پیدا کنید که آن را توصیف کند (این می تواند عمومی باشد یا با یک کلید خاص در DHT قابل دسترسی باشد). در مورد یک شبکه خصوصی، این ساختار باید از قبل برای گره شناخته شود.

ادامه

تصمیم گرفتم بررسی TON را به چندین مقاله تقسیم کنم. اینجاست که این قسمت به پایان می رسد و در بعدی من به بررسی ساختار بلاک چین (به طور دقیق تر، بلاک چین) می پردازم که TON از آن تشکیل خواهد شد.

منبع: www.habr.com

اضافه کردن نظر