المدفوعاتالاشتراكات
صلاحية الاشتراك هي PDA يستخدمه البرنامج كمفوض رمز SPL لحساب رمزي واحد للمستخدم وسك رمز واحد. قم بإنشائه قبل إنشاء تفويضات ثابتة أو تفويضات متكررة أو اشتراكات خطة اشتراك لذلك السك.
يجب أن يكون حساب الرمز المميز للمستخدم موجودًا بالفعل. تنشئ التهيئة PDA لصلاحية الاشتراك وتوافق عليه كمفوض رمزي على حساب الرمز المميز للمستخدم.
إنشاء الصلاحية
import { address, createClient } from '@solana/kit';import { solanaLocalRpc } from '@solana/kit-plugin-rpc';import { signer } from '@solana/kit-plugin-signer';import { findAssociatedTokenPda, TOKEN_PROGRAM_ADDRESS } from '@solana-program/token';import {fetchMaybeSubscriptionAuthority,findSubscriptionAuthorityPda,subscriptionsProgram,} from '@solana/subscriptions';const client = createClient().use(signer(userSigner)).use(solanaLocalRpc({ rpcUrl: 'http://127.0.0.1:8899' })).use(subscriptionsProgram());const tokenMint = address('TOKEN_MINT_ADDRESS_HERE');const [userAta] = await findAssociatedTokenPda({mint: tokenMint,owner: userSigner.address,tokenProgram: TOKEN_PROGRAM_ADDRESS,});const [subscriptionAuthorityPda] = await findSubscriptionAuthorityPda({user: userSigner.address,tokenMint,});const subscriptionAuthority = await fetchMaybeSubscriptionAuthority(client.rpc,subscriptionAuthorityPda,);if (!subscriptionAuthority.exists) {await client.subscriptions.instructions.initSubscriptionAuthority({tokenMint,tokenProgram: TOKEN_PROGRAM_ADDRESS,userAta,}).sendTransaction();}
ملاحظات
- يوقّع المستخدم على معاملة التهيئة.
- إنشاء Subscription Authority واحدة لكل مستخدم وزوج من mint الرموز.
- إعادة استخدام Subscription Authority الموجودة للتفويضات اللاحقة على نفس mint.
- يمكن للراعي تمويل الحساب: تمرير
payerاختياري إلىinitSubscriptionAuthority(مدعوم أيضًا فيcreateFixedDelegation، وcreateRecurringDelegation، وsubscribe)، أو تهيئة واحد باستخدام.use(payer(sponsorSigner)). ثم يعود rent إلى ذلك الراعي عند الإغلاق باستخدامreceiverالمطابق. احذفه للاعتماد على التمويل الذاتي الافتراضي. - أغلق Subscription Authority فقط بعد إلغاء أو إغلاق كل تفويض يعتمد عليها.
Is this page helpful?