الإصدار الأول من عميل النظير إلى النظير للشبكة الموحدة من Matrix

تم إصدار العميل التجريبي مكافحة الشغب P2P.


شغب - في الأصل عميل لشبكة موحدة مصفوفة. يضيف تعديل P2P تنفيذ الخادم واتحاده إلى العميل دون استخدام DNS مركزي من خلال التكامل libp2p، والذي يستخدم أيضًا في التي اعتمدها الفريق الحكومي. هذا هو الإصدار الأول من العميل الذي يحفظ الجلسة بعد إعادة تحميل الصفحة ، ولكن في التحديثات الرئيسية التالية (على سبيل المثال ، 0.2.0) سيتم حذف البيانات. لذلك ، لا يوصى باستخدام العميل لشيء مهم.

يقوم العميل بتنفيذ الاتحاد ، وإنشاء الغرف وعرض كتالوج عالمي (بدون خادم!) للغرف.

في الوقت نفسه ، لا يمكن توحيد شبكة Matrix الرئيسية التي تستخدم DNS وشبكة Matrix على libp2p وتتفاعل مع بعضها البعض.

لاستخدام العميل ، ما عليك سوى النقر فوق زر تسجيل الدخول ، وبعد ذلك ستتلقى معرفًا تم إنشاؤه على الشبكة. تصدير البيانات غير مدعوم حتى الآن.

نظرًا لأن هذا عرض غير مستقر لمفهوم محتمل ، فقد تواجه مشكلة:

  • لن تتمكن من تسجيل الدخول إلى حسابك أو التفاعل مع العملاء الآخرين إذا تم قتل الخادم الذي يعمل كعامل خدمة بواسطة المتصفح بعد انتهاء المهلة. هذه مشكلة شوهد على Firefox، والذي يقوم بذلك بعد 30 ثانية من عدم النشاط].
  • على مستوى شبكة libp2p ، هناك قيود على عدد الإجراءات التي يتم تنفيذها بمرور الوقت ، والتي يمكن أن تسبب مشاكل مع الاتحاد.

يرجع بدء العمل على إصدار P2P من Matrix إلى رغبة المطورين في منح المزيد من الحرية لمستخدميهم. يتيح لك الفصل من الخادم المركزي تسهيل الاتصال داخل الشبكات المحلية والشبكات المتداخلة ، وبشكل عام ، في الظروف التي يكون فيها الوصول إلى الشبكة الخارجية محدودًا أو غير موجود. كما أن لها تأثيرًا إيجابيًا على الخصوصية ، نظرًا لتقليل البيانات الوصفية المرسلة ، والتي يتم تخزينها في مثل هذا السيناريو فقط من قبل المشاركين في المراسلات. في النهاية ، يؤدي هذا إلى التفكير في إعادة هيكلة مفاهيم Matrix الحالية لتحقيق قدر أكبر من قابلية النقل والأمان.

يتم تنفيذ API للخادم عن طريق تجميع الخادم التغصنات إلى رمز WebAssembly الذي يتم تشغيله في وقت واحد مع العميل كعامل خدمة باستخدام IndexedDB و SQLite لتخزين البيانات محليًا ، في حالة إصدار الويب وملف الإلكترون.
Dendrite هو خادم مصفوفة Go "الجيل الثاني" قيد التطوير ، يركز على نمطية كاملة ، والتي يمكن استخدامها أيضًا في شكل موحد. في شكل معياري ، يتم استخدام Apache Kafka للتفاعل مع الخدمات المصغرة ، وفي شكل موحد - نافكا. يمكن العثور على وثائق بناء نسخة P2P من Dendrite على جيثب.

تم تصميم Dendrite في الأصل كخادم للأغراض العامة كان من المفترض أن يكون بديلاً مباشرًا لـ المشبك، مكتوبة بلغة Python ، والتي بها مشكلات في الأداء وقابلية التوسع. ولكن نظرًا للحاجة إلى الدعم وإعادة البناء الجاد لـ Synapse ، فقد تلاشى تطور Dendrite في الخلفية. في النهاية ، تم استئناف التطوير ، ولكن تقرر عدم تطوير قاعدة البيانات الموجودة في سياق الأغراض العامة ، ولكن التركيز على التكيف للتضمين في أجهزة العميل المحمولة وذات الطاقة المنخفضة مثل المتصفحات والهواتف.

لا يزال التنفيذ الحالي لـ Dendrite في مرحلة مبكرة من التطوير ، ولكن هذا يكفي لاتحاد بسيط:

واجهات برمجة تطبيقات خادم العميل: 34٪ (227/672 اختبارًا) - زيادة من 33٪
واجهات برمجة التطبيقات الفيدرالية: 34٪ (35/103 اختبارًا) - زيادة من 27٪

هذه ليست المحاولة الأولى لتطبيق P2P. في السابق ، كانت هناك مبادرة للإبداع وكيل CoAP لشبكة Yggdrasil لـ Synapse.


لا يركز مطورو بروتوكول Matrix على الاتحاد وحده ويجربون أدوات لتحقيق قدر أكبر من اللامركزية. على سبيل المثال ، تم إجراء تجربة لخفض التكاليف في طبقة النقل. الشيطان يتطور بانتاليمون - وكيل يمكن لأي عميل بدون دعم تشفير الاتصال والتفاعل مع الرسائل المشفرة. تهدف جميع المبادرات المتخذة إلى ضمان ذلك في المستقبل تخلص من ربط تسجيل الدخول إلى الخادم، من خلال إلغاء MXID من خلال التفاعل مع الشبكة باستخدام مفتاح عام ، والذي تم تنفيذه جزئيًا بالفعل في Riot P2P.


يمكنك العثور على مزيد من المعلومات التفصيلية حول مفاهيم عمليات التنفيذ المخطط لها في في عرض FOSDEM 2020 على موقع يوتيوب и آخر بلوق وظيفة.

هناك أيضًا إصدار Android من Riot P2P بناءً على كود التطبيق القديم. في المستقبل ، من المخطط نقله إلى التيار ريوتكس.

علاوة على ذلك

  • قدم المشروع TARDIS (Time Agnostic Room DAG Inspection Service) عبارة عن مصحح أخطاء رسم بياني لحدث الخط (DAG) لغرف Matrix استنادًا إلى Riot P2P.

  • في المشروع قناة (خادم مطور من قبل المجتمع في Rust) هو الآن نفذت التشفير والمرفقات.

  • كان هناك خادم تجريبي على سكالا - ماسكارين.

المصدر: linux.org.ru

إضافة تعليق