Een Abonnementsautoriteit is de PDA die het programma gebruikt als SPL Token gemachtigde voor het tokenaccount van een gebruiker. Sluit deze wanneer de gebruiker geen actieve vaste delegaties, terugkerende delegaties of abonnementsdelegaties meer heeft voor die mint.
Het sluiten geeft de rent van het account terug aan de financier (de gebruiker, of welke betaler het ook heeft gefinancierd). Sluit eerst actieve delegaties af.
Sluiten wist niet de SPL Token-delegaatgoedkeuring. Zodra de PDA verdwenen is, is de goedkeuring inactief, maar deze blijft op de token account staan totdat deze wordt ingetrokken — zie Intrek de Delegaatgoedkeuring.
Sluit de Autoriteit
import { address, createClient } from '@solana/kit';import { solanaLocalRpc } from '@solana/kit-plugin-rpc';import { signer } from '@solana/kit-plugin-signer';import {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 [subscriptionAuthorityPda] = await findSubscriptionAuthorityPda({user: userSigner.address,tokenMint,});await client.subscriptions.instructions.closeSubscriptionAuthority({user: userSigner,tokenMint,// Include this only when a sponsor funded the Subscription Authority.receiver: sponsorSigner.address,}).sendTransaction();
Trek de Delegaatgoedkeuring In
RevokeSubscriptionAuthority wist de resterende delegaatgoedkeuring van de
token account van de gebruiker. Het roept de Revoke van het Token Program aan,
ondertekend door de gebruiker, zodat het werkt ongeacht of de
Abonnementsautoriteit nog bestaat. Stuur het zelfstandig of samen met
CloseSubscriptionAuthority.
Geef het token program door dat de mint beheert: TOKEN_PROGRAM_ADDRESS voor
SPL Token- mints, of TOKEN_2022_PROGRAM_ADDRESS (uit
@solana-program/token-2022) voor Token-2022-mints.
import { TOKEN_PROGRAM_ADDRESS } from '@solana-program/token';await client.subscriptions.instructions.revokeSubscriptionAuthority({user: userSigner,tokenMint,tokenProgram: TOKEN_PROGRAM_ADDRESS,}).sendTransaction();
Opmerkingen
- De gebruiker ondertekent de sluitingstransactie.
- Als een sponsor de Abonnementsautoriteit heeft gefinancierd, geef dan dat
sponsoraccount door als
receiverzodat de rent terugkeert naar de geregistreerde betaler. - Sluit vaste, terugkerende en abonnementsdelegatie-PDA's voordat de Abonnementsautoriteit wordt gesloten.
- Als de gebruiker later een nieuwe delegatie aanmaakt, initialiseer dan een nieuwe Abonnementsautoriteit voor dezelfde mint.
- Sluiten wist de token-delegaatgoedkeuring niet. Gebruik
RevokeSubscriptionAuthorityom deze te verwijderen van de token account van de gebruiker.
Is this page helpful?