بروتوكول نوستر

نظرة عامة وشاملة على بروتوكول نوستر مع تفاصيل حول أنواع الأحداث وكيفية عمل معايير نوستر البرمجية (NIPs).

نوستر بنظرة شاملة وعامة

  • يتكون نظام شبكة نوستر من مكونين رئيسيين: التطبيقات (العملاء) والمرحّلات.
    • التطبيقات (العملاء): هي الواجهة التي يستخدمها الأشخاص لقراءة البيانات وكتابتها وإرسالها إلى المرحّلات. في سياق منصات التواصل الاجتماعي، يمكنك تشبيه ذلك بتطبيق تويتر على الويب أو الهاتف؛ فهو العميل الذي يتيح لك قراءة البيانات من قاعدة بيانات تويتر المركزية والكتابة إليها.
    • المرحّلات (Relays): تشبه قواعد البيانات (مع أنها تؤدي وظائف أكثر بكثير من مجرد تخزين البيانات)؛ إذ تتيح للتطبيقات إرسال البيانات إليها لتخزينها في قاعدة بياناتها، ومن ثم تستطيع التطبيقات استرجاع تلك البيانات لعرضها للمستخدمين.
  • يتم التعرف على كل مستخدم من خلال مفتاحه العام. كما يتم توقيع كل كائن “حدث” رقمياً (مثل الرسائل التي تنشرها، أو تحديث قائمة المتابعة، وغيرها)، وتقوم التطبيقات بالتحقق من صحة هذه التوقيعات لضمان موثوقيتها.
  • تجلب التطبيقات البيانات من المرحّلات وتنشرها إليها، ويكون اختيار هذه المرحّلات بيد المستخدم دائماً في الغالب. ولا تشترط البنية الحالية تواصل المرحّلات فيما بينها، ولكن قد يحدث ذلك مستقبلاً.
  • على سبيل المثال، لتحديث ملفك الشخصي، كل ما تفعله هو إعطاء أمر لتطبيقك بإرسال حدث من النوع 0 (kind 0) إلى المرحّلات التي تختارها، لتقوم تلك المرحّلات بتخزين هذا الحدث.
  • عند تشغيل التطبيق، يقوم بطلب البيانات من المرحّلات التي حددتها له. يمكن تصفية هذه البيانات لعرض أحداث الأشخاص الذين تتابعهم فقط، أو يمكنك طلب عرض كل شيء من الجميع، ثم يتولى التطبيق مهمة إظهارها لك.
  • توجد أنواع متعددة ومختلفة من الأحداث؛ حيث يمكن أن تحتوي الأحداث على كافة أشكال البيانات المنظمة. وتُدرج الهياكل الأكثر استخداماً ضمن معايير نوستر البرمجية (NIPs)، وهي معايير البروتوكول القياسية التي يلتزم بها الجميع لضمان توافق جميع التطبيقات والمرحّلات وسلاسة عملها معاً.
  • تعتمد البيانات التي تراها على نوستر كلياً على المرحّلات التي تقرر الاتصال بها؛ ولتوضيح ذلك بمزيد من التفصيل، راجع المخطط التوضيحي للشبكة أدناه.

مخطط الشبكة التوضيحي

مخطط شبكة نوستر

يوضح المخطط أعلاه نموذجاً يحتوي على 3 مرحّلات و3 مستخدمين، حيث يتصل كل مستخدم بنوستر عبر تطبيق مختلف (وعلى نظام تشغيل مختلف).

بناءً على عمليات القراءة والكتابة الموضحة في المخطط:

  • يستطيع بوب رؤية جميع منشورات أليس، لكنه لا يستطيع رؤية أي شيء من منشورات ماري (ولا يعلم بوجودها أصلاً).
  • تستطيع أليس رؤية جميع منشورات بوب، لكنها لا تستطيع رؤية أي شيء من منشورات ماري (ولا تعلم بوجودها أصلاً).
  • تستطيع ماري رؤية منشورات كل من بوب وأليس؛ والسبب في ذلك أنها رغم نشرها على “المرحّل 3” فقط، إلا أنها تقرأ البيانات من “المرحّل 2” الذي ينشر فيه كل من بوب وأليس.

هذا مثال مبسط للغاية، لكنه يوضح بجلاء أن قرار اختيار المرحّلات التي تتصل بها يحدد بشكل مباشر من وماذا ستشاهد عند استخدامك لنوستر.

الأحداث (Events)

الأحداث هي نوع الكائنات الوحيد المستخدم داخل شبكة نوستر. يحتوي كل كائن حدث على حقل “النوع” (kind)، والذي يحدد طبيعة هذا الحدث (نوع الإجراء الذي اتخذه المستخدم أو صيغة الرسالة الواردة).

إليك نموذجاً لحدث من النوع 1 (النوع 1 مخصص للنصوص والمنشورات القصيرة، أي ما يشبه التغريدة على تويتر):

{
    "id": "ca900247aff552c7769e78da0dc6ba660b2ce3cefa2d6614722b5c3543abaee1",
    "pubkey": "79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798",
    "created_at": 1673347337,
    "kind": 1,
    "tags": [
        ["e", "3da979448d9ba263864c4d6f14984c423a3838364ec255f03c7904b1ae77f206"],
        ["p", "bf2376e17ba4ec269d10fcc996a4746b451152be9031fa48e74553dde5526bce"]
    ],
    "content": "أصبحت الحدائق المسورة سجونًا، و نوستر هو الخطوة الأولى نحو هدم جدران السجن",
    "sig": "e3b34db9562e7d3f448151bdc461c8e2848c0019156b241b3b4108564dc883419bed94b715d46d812e6884600ebcc26ef87c40634f9f574e73df60afb427b7dc"
}
  • يوضح حقل المعرّف id الرمز التعريفي الخاص بالحدث.
  • يوضح حقل المفتاح العام pubkey المفتاح العام للمستخدم الذي نشر الحدث.
  • يوضح حقل وقت الإنشاء created_at الوقت الدقيق الذي نُشر فيه الحدث.
  • يوضح حقل النوع kind تصنيف الحدث وطبيعته.
  • يوضح حقل الوسوم tags الوسوم المرفقة بالحدث، وتُستخدم لإنشاء الروابط، وإضافة الوسائط، والإشارة إلى مستخدمين أو أحداث أخرى.
  • يوضح حقل المحتوى content متن الحدث ومحتواه، وهو في هذا المثال نص قصير.
  • يمثل حقل التوقيع sig التوقيع الرقمي الذي تستخدمه التطبيقات للتحقق من أن صاحب المفتاح العام هو بالفعل من قام بإرسال هذا الحدث في التاريخ المحدد.

أنواع الأحداث (Event Kinds)

توجد أنواع كثيرة جداً ومتنوعة لأحداث نوستر، ويمكنك دائماً العثور على أحدث قائمة بأنواع الأحداث الشائعة في مستودع معايير نوستر (NIPs).

معايير نوستر (NIPs)

توجد وثائق “إمكانيات تطبيق نوستر”، أو ما يُعرف اختصاراً بـ NIPs، لتوثيق وتحديد ما يجب وما ينبغي وما يمكن تطبيقه وتضمينه في البرمجيات المتوافقة مع نوستر سواء كانت تطبيقات أو مرحّلات. تعد هذه الوثائق هي المرجع الإرشادي الذي يوضح كيفية عمل بروتوكول نوستر.

لماذا ينبغي علي الاهتمام بمعايير NIPs؟

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

إن كونك جزءاً نشطاً في المجتمع يمنحك صوتاً مؤثراً في تحديد مسار الشبكة ومستقبلها. وتعتبر وثائق NIPs المنشورة في المستودع الرئيسي معايير معتمدة بالفعل، ويمكن إضافة أفكار جديدة عبر تقديم طلب دمج (Pull Request) في ذلك المستودع.

أين أجد معايير NIPs؟

يمكنك الاطلاع على جميع معايير NIPs المعتمدة الحالية من خلال مستودع NIPs على GitHub.