الدور متصل دائمًا يستخدم يفعل إذا غشّ
المستخدم (user) لا المتصفح يطلب، ويموّل، ويؤكّد الاستلام، ويفتح النزاعات ―
المتسوّق بالوكالة (proxy shopper) نعم عقدة Go + shopper-bot يقدّم عروض الأسعار، ويشتري نيابةً عن المستخدم، ويبلّغ عن الشحن؛ ويتقاضى رسمًا يخسر حصته في حكم الوسيط الضامن؛ ويزيله المشغّل من القائمة
الوسيط الضامن (escrow) لا المتصفح أو عقدة Go يحكم في النزاعات قبل T1 يزيله المشغّل من القائمة؛ وبحسب شروطهما، تُصادَر ضمانته وتُستخدم تعويضًا
المشغّل (operator) لا المتصفح أو عقدة Go أو psctl يوقّع، لكل منطقة، قائمة تركيبات المتسوّق × الوسيط الضامن الجديرة بالثقة؛ ويتلقّى البلاغات يسحب المنسّق تفويضه
المنسّق (coordinator) لا المتصفح أو psctl يوقّع التفويضات للمشغّلين يحذفه المستخدمون من إعداداتهم (العزل)

المستخدم

  1. افتح تطبيق الويب، وأنشئ عبارة استرداد (mnemonic) من 12 كلمة، ودوّنها، واختر عبارة مرور تشفّر المفتاح.
  2. أدخل رابط المتجر، ومنطقة المتجر، والسلع.
  3. اختر إحدى تركيبات المتسوّق × الوسيط الضامن المعروضة وقدّم الطلب.
  4. يصلك عرض السعر. إذا اختلف سعر الصرف فيه عن مصادرك بأكثر من 3% يظهر لك تنبيه؛ وفوق 10% تحذير شديد.
  5. اقبل وموّل. يُقسَّم المبلغ بين المحفظة متعددة التوقيع والرسم المقدّم للوسيط الضامن.
  6. عند وصول السلعة، اضغط “received” (بعد شاشة تعرض المبلغ والمستلم، يُرسَل توقيعك الجزئي إلى المتسوّق).
  7. إذا لم تصل، افتح نزاعًا. يجمع التطبيق الأدلة نيابةً عنك.

المتسوّق بالوكالة

  • شغّل عقدة Go باستخدام role: shopper واربط shopper-bot (أداة أتمتة المتصفح).
  • اضبط وسائل الدفع، والعملات، والمناطق التي تستطيع الدفع فيها نقدًا، ورسمك، وسياستك في تقييم مخاطر المتاجر.
  • بيانات البطاقة تبقى داخل shopper-bot فقط؛ ولا تُعطى أبدًا للعقدة أو للشبكة.
  • إذا لم يؤكّد المستخدم الاستلام أبدًا وانقضى T1، يمكنك أخذ الأموال وحدك.

الوسيط الضامن

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

المشغّل

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

المنسّق

  • يصدر التفويضات للمشغّلين. والسحب يعني نشر إصدار جديد مع revoked.

الإدراج (السجلّ)

سجلّ الثقة الخاص بالمشرف على المشروع هو مستودع GitHub pad01g/proxy-shopping-registry. دمج طلب السحب (pull request) هو الموافقة: بعد كل دمج، يوقّع نظام CI التفويضات والقوائم الجديدة بمفاتيح السجلّ وينشرها (على مرحّلات Nostr العامة وعلى https://pad01g.github.io/proxy-shopping-registry/events.json).

تريد أن تكون أضِف في طلب السحب ما الذي يفعله الدمج
متسوّقًا shoppers/<name>.json (pk، ووسيلة التواصل، والوصف، والمناطق النقدية، ووسائل الدفع، والوسطاء الضامنون الذين تعمل معهم) يُدرج مشغّل السجلّ تركيبات المتسوّق × الوسيط الضامن الخاصة بك
وسيطًا ضامنًا escrows/<name>.json (pk، ووسيلة التواصل، والوصف، وأيام SLA) يستطيع المتسوّقون تسميتك؛ وتظهر تركيباتك
مشغّلًا operators/<name>.json (pk، ووسيلة التواصل، والوصف، والمناطق) يفوّضك منسّق السجلّ؛ وبعدها توقّع قوائمك بنفسك
منسّقًا coordinators/<name>.json (pk، ووسيلة التواصل، والوصف) تظهر في دليل المنسّقين الذي تعرضه التطبيقات على المستخدمين (ويبقى لكل مستخدم أن يختار بمن يثق)

pk هو مفتاحك العام في Nostr (64 محرفًا بالنظام الست عشري): يعرضه تطبيق الويب في الإعدادات، ويطبعه الأمر psctl keys --mnemonic-file …. إزالة أحدهم تتم بطلب سحب ينقل ملفه إلى revoked/ مع ذكر السبب. ويحتوي ملف README الخاص بالسجلّ على صيغ الملفات الدقيقة والأوامر.