الأدوار
| الدور | متصل دائمًا | يستخدم | يفعل | إذا غشّ |
|---|---|---|---|---|
| المستخدم (user) | لا | المتصفح | يطلب، ويموّل، ويؤكّد الاستلام، ويفتح النزاعات | ― |
| المتسوّق بالوكالة (proxy shopper) | نعم | عقدة Go + shopper-bot | يقدّم عروض الأسعار، ويشتري نيابةً عن المستخدم، ويبلّغ عن الشحن؛ ويتقاضى رسمًا | يخسر حصته في حكم الوسيط الضامن؛ ويزيله المشغّل من القائمة |
| الوسيط الضامن (escrow) | لا | المتصفح أو عقدة Go | يحكم في النزاعات قبل T1 | يزيله المشغّل من القائمة؛ وبحسب شروطهما، تُصادَر ضمانته وتُستخدم تعويضًا |
| المشغّل (operator) | لا | المتصفح أو عقدة Go أو psctl |
يوقّع، لكل منطقة، قائمة تركيبات المتسوّق × الوسيط الضامن الجديرة بالثقة؛ ويتلقّى البلاغات | يسحب المنسّق تفويضه |
| المنسّق (coordinator) | لا | المتصفح أو psctl |
يوقّع التفويضات للمشغّلين | يحذفه المستخدمون من إعداداتهم (العزل) |
المستخدم
- افتح تطبيق الويب، وأنشئ عبارة استرداد (mnemonic) من 12 كلمة، ودوّنها، واختر عبارة مرور تشفّر المفتاح.
- أدخل رابط المتجر، ومنطقة المتجر، والسلع.
- اختر إحدى تركيبات المتسوّق × الوسيط الضامن المعروضة وقدّم الطلب.
- يصلك عرض السعر. إذا اختلف سعر الصرف فيه عن مصادرك بأكثر من 3% يظهر لك تنبيه؛ وفوق 10% تحذير شديد.
- اقبل وموّل. يُقسَّم المبلغ بين المحفظة متعددة التوقيع والرسم المقدّم للوسيط الضامن.
- عند وصول السلعة، اضغط “received” (بعد شاشة تعرض المبلغ والمستلم، يُرسَل توقيعك الجزئي إلى المتسوّق).
- إذا لم تصل، افتح نزاعًا. يجمع التطبيق الأدلة نيابةً عنك.
المتسوّق بالوكالة
- شغّل عقدة 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 الخاص بالسجلّ
على صيغ الملفات الدقيقة والأوامر.