ZahlungenAbonnements
Eine Subscription Authority ist eine PDA, die das Programm als SPL Token Delegate für das token account eines Benutzers und ein Token Mint verwendet. Erstellen Sie sie, bevor Sie feste Delegationen, wiederkehrende Delegationen oder Abonnements für Subscription-Pläne für dieses Mint erstellen.
Das token account des Benutzers muss bereits vorhanden sein. Die Initialisierung erstellt die Subscription Authority PDA und genehmigt sie als Token Delegate für das token account des Benutzers.
Die Authority erstellen
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();}
Hinweise
- Der Benutzer unterzeichnet die Initialisierungstransaktion.
- Erstellen Sie eine Subscription Authority pro Benutzer und Token-Mint-Paar.
- Verwenden Sie die vorhandene Subscription Authority für spätere Delegierungen auf demselben Mint wieder.
- Ein Sponsor kann die Konten finanzieren: Übergeben Sie ein optionales
payeraninitSubscriptionAuthority(auch unterstützt beicreateFixedDelegation,createRecurringDelegationundsubscribe), oder konfigurieren Sie einen mit.use(payer(sponsorSigner)). rent wird dann an diesen Sponsor zurückgegeben, wenn Sie mit einem passendenreceiverschließen. Lassen Sie es für den selbstfinanzierten Standard weg. - Schließen Sie die Subscription Authority erst, nachdem jede Delegierung, die davon abhängt, widerrufen oder geschlossen wurde.
Is this page helpful?