إنتقل إلى المحتوى الرئيسي

نظير إلى نظير في المتصفح

ليس على تطبيق ويب Bitsocial أن يكون عميلًا لخادم يملكه شخص آخر. فبإمكانه تشغيل عقدة Helia داخل تبويب المتصفح، والانضمام إلى شبكة النظير إلى النظير نفسها التي تنضم إليها عقد سطح المكتب وسطر الأوامر، وجلب محتوى المجتمعات من الأقران، والنشر عبر pubsub.

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

للاطلاع على تصميم الشبكة الأوسع، راجع بروتوكول النظير إلى النظير.

ما الذي يعمل داخل التبويب

عندما يكون P2P في المتصفح نشطًا، تحتفظ الصفحة بعقدة libp2p حقيقية:

  • تتصل بأقران آخرين عبر WebSockets آمنة
  • تجلب محتوى المجتمعات من هؤلاء الأقران وتتحقق منه، لا من بوابة IPFS
  • تشارك في gossipsub، فلا يحتاج نشر منشور إلى مزوّد pubsub مُستضاف
  • تستخدم حزمة عميل البروتوكول نفسها (pkc-js) التي يستخدمها كل تطبيق Bitsocial آخر

والنتيجة العملية أنه لا يوجد مشغّل بوابة يتوسط بين قارئ الويب والمجتمع. ولا توجد نقطة نهاية HTTPS وحيدة يمكن الضغط عليها لإسقاط مجتمع أمام جميع مستخدمي المتصفحات دفعة واحدة.

كيف تتصل عقد المتصفح

يتصل pkc-js بالأقران عبر WebSockets آمنة. أما اتصالات WebRTC وWebTransport فمرفوضة افتراضيًا عبر بوابة اتصال، لأنها في المتصفح تضيف مسارات طويلة وكثيرة الفشل لإنشاء الاتصال — تفاوض STUN/ICE، وتدوير certhash — وهو ما يبطئ تحميل الصفحات، بينما يوفّر WebSocket نقلًا مباشرًا وموثوقًا. ويمكن لمن يريد WebRTC أو WebTransport تحديدًا أن يتجاوز هذه البوابة عبر libp2pJsClientsOptions[].libp2pOptions.connectionGater.

والنتيجة العملية أن قرين المتصفح يتصل بالعقد التي تعرض نقطة نهاية WSS، ما يعني أن تلك العقد تحتاج إلى نطاق وشهادة موقّعة من سلطة تصديق. أما الأقران القابعون خلف اتصالات منزلية بلا ذلك فيُوصَل إليهم بطريقة غير مباشرة بدل الاتصال بهم من التبويب.

لماذا لم يبدأ النشر من المتصفح بالعمل إلا في 2026

النظير إلى النظير في المتصفح ليس فكرة جديدة. الذي تغيّر في 2026 هو أن منشورات عقدة المتصفح صارت تصل إلى بقية الشبكة.

تشترط مواصفة pubsub في libp2p أن يكون seqno الرسالة عددًا صحيحًا تصاعديًا خطيًا بطول 64 بت وبترتيب big-endian. لكن js-libp2p-gossipsub كان يولّد 8 بايتات عشوائية بدل ذلك، بينما استخدم كل من go-libp2p-pubsub وrust-libp2p عدّادًا. ويفعّل Kubo 0.40+ خيار BasicSeqnoValidator افتراضيًا، وهو يرفض أي رسالة لا يكون seqno الخاص بها أكبر من أعلى قيمة سبق أن شوهدت من ذلك القرين.

وكان الأثر أن معظم الرسائل التي تنشرها عقدة JavaScript — ومنها عقدة المتصفح — تُهمَل بصمت لدى أقران Kubo. وقد قاس أحد أمثلة إعادة الإنتاج وصول رسالتين إلى ثماني رسائل من أصل ثلاثين.

شُخِّصت المشكلة في js-libp2p-gossipsub#545 وأُصلحت في @libp2p/gossipsub 15.0.21 في مايو 2026. وقبل نزول ذلك الإصلاح، كان بإمكان عقدة المتصفح أن تتصل وتقرأ، لكن منشوراتها كانت تتلاشى غالبًا في طريقها إلى أقران Go. ويشحن pkc-js الإصدار 16.0.4 من @libp2p/gossipsub، أي بعد ذلك الإصلاح.

ما الذي لا تزال عقدة المتصفح عاجزة عنه

عقدة المتصفح قرين حقيقي، لا خادم. ولها حدود تختلف عن حدود عقدة سطح المكتب أو العقدة الدائمة التشغيل:

  • عادةً لا تستطيع قبول اتصالات واردة اعتباطية من الإنترنت العام
  • لا تعمل إلا ما دام التبويب مفتوحًا، فهي ليست مستضيفًا طويل العمر لبيانات مجتمع
  • لا تستطيع الانضمام إلى DHT في libp2p، ولهذا يمرّ الاكتشاف عبر موجّهات HTTP
  • وهي غير مناسبة للبذر على نطاق واسع

ولا تزال الاستضافة الكاملة لمجتمع تُنجَز على أفضل وجه عبر تطبيق سطح مكتب أو bitsocial-cli أو عقدة أخرى دائمة التشغيل. فما يغيّره P2P في المتصفح هو من يستطيع القراءة والنشر بلا بوابة؛ وهو لا يلغي الحاجة إلى أقران يبقون متصلين.

موجّهات HTTP ليست بوابات

لا يزال عملاء المتصفح يستعلمون من موجّهات HTTP لمعرفة الأقران الذين يوفّرون حاليًا عنوان مجتمع ما. هذه هي الملاحظة الصادقة على عبارة "نظير إلى نظير خالص في المتصفح"، ويستحق الأمر شيئًا من الدقة:

  • الموجّه يخزّن عناوين الأقران وحدها مقابل عنوان محتوى
  • وهو لا يخزّن محتوى المجتمع ولا يقدّمه ولا يعرفه أصلًا
  • يستعلم العملاء من عدة موجّهات بالتوازي ثم يدمجون النتائج
  • يستطيع أي شخص تشغيل موجّه، وتبديل الموجّهات تغيير في الإعدادات بلا ترحيل بيانات

بعد الاكتشاف، ينتقل نقل المحتوى وحركة pubsub بين الأقران مباشرة. واختفاء موجّه يكلّفك مسار بحث، لا بياناتك. أما بوابة IPFS فهي على العكس داخل مسار المحتوى.

أين يعمل هذا اليوم

  • يعمل 5chan بوضع P2P خالص في المتصفح افتراضيًا داخل تطبيق الويب على 5chan.app.

البوابة كمسار احتياطي

لا يزال الوصول عبر البوابات موجودًا كمسار توافق للمتصفحات أو الشبكات التي لا تستطيع الانضمام مباشرة. راجع البوابة كمسار احتياطي. البنية المستهدفة هي P2P في المتصفح أولًا، مع البوابات كمسار احتياطي اختياري لا كعنق زجاجة افتراضي.