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

المرحلة 7: إيقاف بنية الحفظ

· 5 دقائق قراءة
OrcaRail
Crypto payment rails for web2 apps

20 أبريل 2026 — المرحلة 7 هي مرحلة التنظيف. عند الوصول إليها، تكون أحجام EVM وسولانا على المستقبِلات القائمة على العقود وSubscriptionHub، وتكون بيتكوين على توقيع متعدد اثنان من اثنين، ولا يمر أي رابط دفع جديد بمسار الكنس القديم. تزيل هذه المرحلة الكود القديم والأسرار القديمة.

باختصار​

  • حذف hd_wallet_seed وإعداد WALLET_ENCRYPTION_KEY ومنطق الاشتقاق للشبكات المفعّل لها العلم.
  • حذف مسارات EVM/SOL في api/src/withdrawals/: SmartAccountWalletService.drainSmartAccountWallet وsolana-withdrawal-transfer.service.ts وملفات spec المرتبطة.
  • إبقاء مسار BTC (مقلّصًا إلى نموذج اثنين من اثنين من المرحلة 5).
  • تحديث شروط الخدمة وسياسة الخصوصية وضوابط SOC2 لتعكس نطاق حفظ أصغر بكثير.
  • نشر تقرير ما بعد الحدث (postmortem) يلخص ما تعلمناه.

ما الذي تغيّره هذه المرحلة​

قبل هذه المرحلة، تحتوي قاعدة الكود على نسختين من كل شيء (مسار الكنس القديم ومسار العقود الجديد) خلف feature flags. بعد هذه المرحلة، يصبح المسار الجديد هو المسار الوحيد على EVM وسولانا.

ما الذي نحذفه​

قاعدة البيانات​

  • جدول hd_wallet_seed وكيان TypeORM الخاص به في api/src/payments/infrastructure/persistence/relational/entities/hd-wallet-seed.entity.ts.
  • يُحتفظ بالعمود wallet_address.derivationPath لعمليات البحث التاريخية لكنه يصبح قابلًا للقيم الفارغة؛ ولا تكتبه أي صفوف جديدة لـ EVM/SOL.
  • يؤرشف ترحيل (migration) صفوف الـ seed المشفّرة في تخزين بارد لمدة سبع سنوات (احتفاظ تنظيمي)، ثم يحذف الجدول.

الكود​

في api/src/payments/wallet.service.ts:

  • حذف encryptSeed وdecryptSeed وgetOrCreateHDWallet وgenerateAddressForNetwork (فرعا EVM + SOL) وgetNextAvailableIndex والاستيراد الديناميكي لـ @account-kit/wallet-client.
  • تصبح getOrCreateAddressForPaymentLink غلافًا رقيقًا فوق factory.computeAddress لـ EVM وfindProgramAddressSync لسولانا.

في api/src/withdrawals/services/smart-account-wallet.service.ts:

  • حذف drainSmartAccountWallet وtransferFromSmartAccount وbatchTransferFromSmartAccount وgetSmartAccountClientForDepositWallet وderivePrivateKey.
  • تبقى الوحدة (فما زال لها استخدام صغير لأدوات مساعدة متعلقة بـ BTC ولقراءة الأرصدة).

عمليات حذف أخرى:

الإعدادات​

  • WALLET_ENCRYPTION_KEY — يُحذف من .env وأسرار النشر والتوثيق.
  • أي مواد توقيع من Alchemy Account Kit في الإعدادات (تبقى مفاتيح API الخاصة بـ @account-kit/* إن كانت لا تزال مستخدمة للـ paymaster).

ما الذي يبقى​

  • محفظة BTC الساخنة — مقلّصة إلى نموذج التوقيع المتعدد اثنان من اثنين من المرحلة 5. لا تبقى أي seeds من نوع HD لـ EVM/SOL.
  • سياسة الـ paymaster من Alchemy — يستخدمها الـ keeper لرعاية charge() حيث ينطبق ذلك.
  • منفّذو جسر Relay — ما زالوا ينسّقون التسوية عبر الشبكات؛ والمستدعون حسابات EOA للـ keepers، لا موقّعون احتجازيون.
  • كل الـ webhooks ورسائل البريد والفوترة ولوحة التحكم والتحليلات — دون تغيير.
  • شروط الخدمة: تصبح عبارة «لا تحتفظ OrcaRail بأموال EVM أو سولانا أثناء تسوية المدفوعات» بيانًا واقعيًا، لا نصًا طموحًا.
  • سياسة الخصوصية: إزالة الإشارات إلى مواد الـ seed المخزنة.
  • نطاق SOC2: تتقلص ضوابط الحفظ؛ وتُربط ملاحظات التدقيق بالنطاق الجديد الأصغر.
  • الوضع كمحوّل أموال: مراجعة جديدة مع المستشار القانوني. تقليل نقاط التماس مع الحفظ يبسّط التحليل في عدة ولايات قضائية.

تقرير ما بعد الحدث​

سيلخص مقال مرافق ما تعلمناه عبر المراحل 0 إلى 7: ما الذي استغرق وقتًا أطول من المتوقع، وما الذي سار بسلاسة أكبر، وما التكلفة الهندسية الحقيقية لعدم الاحتجاز، وكيف تفاعل التجار. الإيقاع المتوقع: مقال واحد خلال 30 يومًا من إطلاق المرحلة 7.

الإيقافات (لا شيء جديد)​

هذه المرحلة هي الإيقاف نفسه. تصبح كل المسارات المرتبطة بالعلم useOnChainReceiver مفعّلة افتراضيًا؛ ويُحذف العلم.

خطة الترحيل​

عند تنفيذ المرحلة 7، تكون كل المدفوعات والاشتراكات الجديدة غير احتجازية منذ أكثر من 12 شهرًا. يتعلق الترحيل بالذيل الطويل من الروابط القديمة:

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

المخاطر ووسائل الحد منها​

  • فتات متبقٍ على العناوين القديمة. الحل: تشغيل سكربت كنس نهائي قبل الإيقاف؛ ونشر أي فتات غير قابل للاسترداد في تقرير عام.
  • مخاطر قانونية من الحذف المبكر. الحل: أرشفة صفوف الـ seed المشفّرة لمدة 7 سنوات (لا يمكن فك تشفيرها أبدًا دون مفتاح التشفير الذي يُتلف في مراسم)؛ ويظل بإمكان المدققين التحقق من الحالة التاريخية.
  • اعتماد أحدهم على شكل API غير موثق. الحل: إشعار إيقاف عام قبل 90 يومًا؛ وإدخال في سجل تغييرات API؛ وتواصل موجّه مع كبار التجار.

قائمة الحالة​

  • كل تجار EVM + SOL على التدفق غير الاحتجازي لمدة 90 يومًا على الأقل
  • تصفير الاشتراكات القديمة المتبقية
  • إتمام سكربت الكنس النهائي
  • إتمام ترحيل hd_wallet_seed إلى الأرشيف البارد
  • دمج عمليات حذف الكود
  • تحديث شروط الخدمة + سياسة الخصوصية ونشرها
  • نشر مقال تقرير ما بعد الحدث

نهاية خارطة الطريق​

بعد المرحلة 7، يصبح وضع الحفظ كالتالي:

  • EVM وسولانا: غير احتجازي. لا تحتفظ OrcaRail بأي مواد seed.
  • بيتكوين: حفظ مخفَّض عبر توقيع متعدد اثنان من اثنين مع موقّع من جهة التاجر.
  • لحظة الانتقال: أُلغيت على EVM/SOL؛ وتقلّصت إلى مسار استرداد بتوقيع متعدد على BTC.

هذا ما وضعناه هدفًا في خارطة الطريق غير الاحتجازية.


التوثيق المرجعي: حالة المرحلة 7 · نموذج الأمان · خارطة الطريق