PagamentiAbbonamenti
Una Subscription Authority è un PDA che il programma utilizza come delegato SPL Token per l'account token di un utente e un token mint specifico. Creala prima di creare deleghe fisse, deleghe ricorrenti o sottoscrizioni a piani di abbonamento per quel mint.
L'account token dell'utente deve già esistere. L'inizializzazione crea il PDA Subscription Authority e lo approva come delegato token sull'account token dell'utente.
Crea l'Autorità
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();}
Note
- L'utente firma la transazione di inizializzazione.
- Crea una Subscription Authority per ogni coppia di utente e token mint.
- Riutilizza la Subscription Authority esistente per deleghe successive sullo stesso mint.
- Chiudi la Subscription Authority solo dopo che ogni delega che dipende da essa è stata revocata o chiusa.
Is this page helpful?