اولین نسخه کلاینت Peer-to-Peer برای شبکه فدرال Matrix

یک مشتری آزمایشی آزاد شده است Riot P2P.


شورش - در اصل یک مشتری برای یک شبکه فدرال است ماتریس. اصلاح P2P بدون استفاده از DNS متمرکز از طریق یکپارچه سازی، اجرای سرور و فدراسیون را به مشتری اضافه می کند. libp2p، که در آن نیز استفاده می شود IPFS. این اولین نسخه از کلاینت است که جلسه را پس از بارگیری مجدد صفحه ذخیره می کند، اما در به روز رسانی های اصلی بعدی (مثلاً 0.2.0) داده ها همچنان حذف خواهند شد. بنابراین استفاده از مشتری برای هر چیز مهمی توصیه نمی شود.

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

با این حال، شبکه اصلی Matrix با استفاده از DNS و شبکه Matrix در libp2p هنوز نمی توانند با یکدیگر فدرال شوند و با یکدیگر تعامل داشته باشند.

برای استفاده از کلاینت کافیست روی دکمه ورود کلیک کنید و پس از آن یک شناسه تولید شده در شبکه دریافت خواهید کرد. صادرات داده هنوز پشتیبانی نمی شود.

از آنجایی که این یک ارائه ناپایدار از یک مفهوم احتمالی است، ممکن است با مشکل مواجه شوید:

  • اگر سروری که به‌عنوان Service Worker اجرا می‌شود، پس از اتمام زمان، توسط مرورگر کشته شود، نمی‌توانید وارد حساب خود شوید یا با سایر مشتریان تعامل داشته باشید. چنین مشکلی در فایرفاکس مشاهده شد، که این کار را بعد از 30 ثانیه عدم فعالیت انجام می دهد].
  • در سطح شبکه libp2p، محدودیت‌های زمانی برای تعداد اقداماتی که می‌توان انجام داد وجود دارد که می‌تواند باعث ایجاد مشکل در فدراسیون شود.

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

پیاده سازی API سرور از طریق کامپایل سرور به دست می آید دندریت در کد WebAssembly، که همزمان با سرویس گیرنده در قالب یک Service Worker اجرا می شود، با استفاده از IndexedDB و SQLite برای ذخیره داده ها به صورت محلی، در مورد نسخه وب و پوشش Electron.
Dendrite یک سرور Matrix "نسل دوم" در Go است که در حال توسعه است و کاملاً ماژولار طراحی شده است و همچنین می تواند به صورت یکپارچه استفاده شود. در شکل ماژولار، آپاچی کافکا برای تعامل بین میکروسرویس ها و به شکل یکپارچه استفاده می شود - نفکا. اسناد ساخت نسخه P2P Dendrite را می توان یافت در GitHub.

Dendrite در ابتدا به عنوان یک سرور با هدف عمومی در نظر گرفته شده بود که قرار بود جایگزینی مستقیم باشد محل تماس دو عصب، در پایتون نوشته شده است که دارای مشکلات عملکرد و مقیاس پذیری است. اما به دلیل نیاز به پشتیبانی و بازسازی عمده سیناپس، توسعه دندریت به حاشیه رفت. در نهایت، توسعه از سر گرفته شد، اما آنها تصمیم گرفتند که پایه کد موجود را نه در یک زمینه همه منظوره، بلکه بر روی سازگاری برای جاسازی در دستگاه های مشتری قابل حمل و کم مصرف، مانند مرورگرها و تلفن ها، توسعه دهند.

اجرای فعلی Dendrite هنوز در مراحل اولیه توسعه است، اما برای یک فدراسیون ساده کافی است:

API های سرویس گیرنده-سرور: 34٪ (227/672 تست) - از 33٪ افزایش یافته است
APIهای فدراسیون: 34٪ (35/103 تست) - از 27٪ افزایش یافته است

این اولین تلاش برای پیاده سازی P2P نیست. پیش از این، ابتکاری برای ایجاد وجود داشت پراکسی CoAP به شبکه Yggdrasil برای Synapse.


توسعه دهندگان پروتکل Matrix تنها بر روی فدراسیون متمرکز نیستند و در حال آزمایش ابزارهایی برای تمرکززدایی بیشتر هستند. مثلاً آزمایشی انجام شد کاهش هزینه ها در سطح حمل و نقل. یک شیطان تکامل می یابد پانتالایمون - پروکسی که هر مشتری بدون پشتیبانی رمزگذاری می تواند به آن متصل شود و با پیام های رمزگذاری شده تعامل داشته باشد. تمام ابتکارات انجام شده با هدف اطمینان از آن در آینده است از شر اتصال ورود به سرور خلاص شوید، حذف MXID، تعامل با شبکه با استفاده از یک کلید عمومی، که قبلاً تا حدی در Riot P2P پیاده سازی شده است.


می توانید اطلاعات دقیق تری در مورد مفاهیم پیاده سازی های برنامه ریزی شده پیدا کنید در ارائه FOSDEM 2020 در YouTube и پست اخیر وبلاگ.

همچنین یک نوع Riot P2P برای اندروید بر اساس کد برنامه قدیمی وجود دارد. در آینده قرار است آن را به فعلی منتقل کنیم. RiotX.

علاوه بر این

  • پروژه ارائه شده است تاردیس (سرویس بازرسی اتاق Agnostic DAG) یک اشکال‌زدایی گراف رویداد خطی (DAG) برای اتاق‌های Matrix بر اساس Riot P2P است.

  • در پروژه مجرا (یک سرور توسعه یافته توسط جامعه در Rust) اکنون است رمزگذاری و پیوست ها اجرا شده است.

  • یک سرور آزمایشی در اسکالا ظاهر شد - ماسکرین.

منبع: linux.org.ru

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