يتيح برنامج تفويض الاشتراكات للمطورين السماح للمستخدمين بتفويض عمليات تحويل الرموز المستقبلية من محافظهم مع حدود واضحة. تم تصميمه للمدفوعات المتكررة والاشتراكات والفواتير التجارية وغيرها من التدفقات التي لا يجب على المستخدم فيها التوقيع على كل عملية تحويل يدوياً.
الغرض
يمكن لحسابات رموز سولانا الموافقة على صلاحية أخرى لنقل الرموز، لكن كل حساب رموز يمكنه الحصول على صلاحية معتمدة واحدة فقط في كل مرة. هذا يجعل من الصعب على محفظة واحدة دعم عدة ترتيبات إنفاق بشكل آمن لنفس الرمز، مثل اشتراك شهري أو حد إنفاق ثابت أو اتفاقية فوترة تجارية.
يحل هذا البرنامج هذه المشكلة من خلال منح كل زوج (user, token mint) صلاحية
اشتراك يتحكم فيها البرنامج. يوافق حساب رموز المستخدم على تلك الصلاحية مرة
واحدة. ثم يتحقق البرنامج من كل طلب تحويل مقابل سجل منفصل يحدد من يمكنه سحب
الأموال، وكم يمكنه السحب، ومتى تنتهي صلاحية التفويض أو يتم إعادة تعيينه.
لا يمكن لصلاحية الاشتراك نقل الأموال بمفردها. تنجح عملية التحويل فقط عندما تتطابق مع أحد تفويضات المستخدم النشطة.
معرّف البرنامج
De1egAFMkMWZSN5rYXRj9CAdheBamobVNubTsi9avR44
تم الإعلان عن معرّف البرنامج في program/src/lib.rs. تقوم سير عمل Surfpool
المحلية بتثبيت البرنامج على هذا العنوان الأساسي.
نماذج التفويض
يدعم البرنامج ثلاثة نماذج للتفويض:
| النموذج | الغرض |
|---|---|
| التفويض الثابت | السماح لمحفظة أو خدمة أخرى بإنفاق ما يصل إلى مبلغ إجمالي ثابت، اختيارياً حتى وقت انتهاء الصلاحية. |
| التفويض المتكرر | السماح لمحفظة أو خدمة أخرى بإنفاق ما يصل إلى حد يعاد تعيينه كل فترة، مثل يومياً أو أسبوعياً أو شهرياً. |
| خطة الاشتراك | السماح للتاجر بنشر شروط الفوترة التي يمكن للمستخدمين قبولها، ثم السماح للمحصلين المعتمدين بتحصيل رسوم المشتركين في كل فترة فوترة. |
الرموز المدعومة
يدعم جميع العناصر المُصكّة من SPL Token وToken-2022.
بالنسبة لعناصر Token-2022 المُصكّة التي تحتوي على TransferHook مُهيَّأ، يقوم
البرنامج بتمرير حسابات الخطاف الخاصة بالعنصر المُصكّ (برنامج الخطاف،
ExtraAccountMetaList PDA، والإضافات) إلى TransferChecked CPI عند كل تحويل
مُفوَّض، وبذلك يتم تطبيق سياسة الخطاف. يقوم SDK بحلّها تلقائيًا نيابةً عنك:
- عميل المكوّن (
transferFixed،transferRecurring،transferSubscription) — يُضاف تلقائيًا. - البناء اليدوي — استدعِ
resolveTransferHookAccounts، ومرِّرtransferHookAccounts.
الأحداث على السلسلة
يُصدر البرنامج أحداثًا على السلسلة عبر self-CPI حتى يتمكن المُفهرسون والتطبيقات من تتبع النشاط. جميع الأحداث مسجّلة في IDL المنشور، مما يتيح للعملاء المُولَّدين فك ترميزها. الأحداث المُصدَرة هي:
FixedTransferEvent،RecurringTransferEvent، وSubscriptionTransferEvent— حدث واحد لكل تحويل مُفوَّض. يحمل كل منهاreceiverTokenAccountالمُقيَّد؛ كما يحملSubscriptionTransferEventأيضًاpuller.SubscriptionCreatedEvent،SubscriptionCancelledEvent، وSubscriptionResumedEvent— دورة حياة الاشتراك. يحملSubscriptionCreatedEventالقيمةpayer.PlanUpdatedEvent— يُصدَر عند تحديث خطة.
الإصدار
تتضمن السجلات المملوكة للبرنامج حقل إصدار. يمنح ذلك البرنامجَ مسارًا لترقية bيانات الحساب بمرور الوقت دون الإخلال بالمستخدمين الحاليين. تدعم استراتيجية الترحيل ما يلي:
- تحديث كسول في المكان
- تعليمات ترحيل صريحة
- إلغاء التفويض وإعادة الإنشاء كخيار احتياطي
المساهمون
يتولى صيانة المشروع المساهمون في
مستودع solana-program/subscriptions.
حالة التدقيق
تم تدقيق البرنامج بواسطة Cantina. يتم تتبع حالة التدقيق والالتزام الأساسي
والتزام التحقق من الإصلاح والتغييرات الحالية غير المدققة في
مجلد audits/
بالمستودع.
تطبيق تجريبي
إذا أردت تجربة البرنامج بنفسك، يمكنك الاطلاع على تطبيق مثال هنا للاطلاع على تنفيذ شامل من البداية إلى النهاية للمفاهيم الواردة في هذا القسم.
Is this page helpful?