عن المشروع

Mergepay API هو الخدمة الخلفية لتطبيق Mergepay، وهو تطبيق تسوية جماعي أصلي لـ Stellar. يتعامل مع المصادقة، ومنطق المجموعات والنفقات، والتسوية على السلسلة، وتكامل Stellar، والخزائن المتعددة التوقيع، وتدفقات SEP-24. النظام مبني على سلسلة كتل Stellar. كل تسوية هي دفعة حقيقية على السلسلة: تسجيل الدخول يستخدم مصادقة محفظة SEP-10، والمدفوعات تحمل تذكرة `MP:<code>` تربطها بنفقة محددة، والأرصدة تُسوى بعملتي XLM أو USDC عبر خطوط الثقة، والخزائن المشتركة تستخدم توقيعات متعددة من Stellar، والتحويل بين العملات الورقية والرقمية يتم عبر مراسي SEP-24. الخادم لا يحتفظ أبدًا بمفاتيح خاصة للمستخدمين—يبني أغلفة XDR غير موقعة للمعاملات يوقعها محفظة المستخدم قبل إرسالها إلى Horizon. البنية: الواجهة البرمجية هي خلفية Fastify + TypeScript مدعومة بـ PostgreSQL. تتواصل مع واجهة أمامية بـ Next.js عبر REST مع مصادقة JWT من نوع Bearer. عامل خلفي يتعامل مع إرسال التسوية واستطلاع مراسي SEP-24 مع تتبع مهام قائم على المطالبات واسترداد من العمليات المتعطلة. الميزات الرئيسية تشمل: - مصادقة قائمة على محفظة SEP-10 حيث يكون المفتاح العام للمستخدم هو هويته - تدفق التسوية: تبني الواجهة البرمجية XDR دفعة غير موقعة مع المصدر والوجهة والأصل والمبلغ والتذكرة، وتسجلها كقيد معلق، يوقعها المحفظة، وتتحقق الواجهة البرمجية من XDR الموقعة مقابل النية المخزنة قبل إرسالها إلى Horizon - انتهاء صلاحية نية المعاملة مع مواعيد نهائية يتحكم بها الخادم وتسامح زمني محدود - خزائن جماعية مشتركة باستخدام توقيعات متعددة من Stellar للسحوبات التي تتطلب عدة موقّعين - جسور إيداع وسحب SEP-24 للتحويل بين العملات الورقية وStellar - حماية من التكرار على تنفيذ التسوية لمنع الإرسال المكرر - تحديد معدل شامل لكل مسار مع عدادات مشتركة مدعومة بقاعدة بيانات عبر الحالات - حدود حجم الطلبات على أجسام JSON والرفع متعدد الأجزاء - وضع صارم لـ TypeScript مفروض عبر قاعدة الشيفرة بأكملها - جميع أجسام طلبات الواجهة البرمجية مُتحقق منها بـ Zod يتطلب المشروع Node.js 20+ وPostgreSQL 14+ للتشغيل. يمكن نشره على Render أو Fly.io أو Railway مع قاعدة بيانات Postgres مزودة من مزودين مثل Neon أو Supabase أو RDS. تُشغل الاختبارات دون قاعدة بيانات أو شبكة باستخدام Prisma وHorizon محاكيين، وتغطي محرك التسوية، وحسابات المال، وتحدي/تحقق SEP-10، والتحقق من XDR الموقعة، ومسارات المصادقة. ملف `docs/api.http` الملتزم يوفر مجموعة REST Client للاستكشاف المحلي للواجهة البرمجية.