Eine Abonnement-Autorisierung ist die PDA, die das Programm als SPL-Token-Delegierten für das Token-Konto eines Benutzers verwendet. Schließen Sie sie, wenn der Benutzer keine aktiven festen Delegationen, wiederkehrenden Delegationen oder Abonnement-Delegationen mehr für diesen Mint hat.
Beim Schließen wird das rent des Kontos an den Finanzier zurückgegeben (den Nutzer oder die Partei, die es finanziert hat). Schließen Sie zuerst alle aktiven Delegierungen.
Beim Schließen wird die SPL-Token-Delegierungsgenehmigung nicht gelöscht. Sobald die PDA nicht mehr existiert, ist die Genehmigung wirkungslos, bleibt jedoch auf dem token account bestehen, bis sie widerrufen wird – siehe Delegierungsgenehmigung widerrufen.
Die Autorität schließen
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();
Delegierungsgenehmigung widerrufen
RevokeSubscriptionAuthority löscht die verbleibende Delegierungsgenehmigung
aus dem token account des Nutzers. Es ruft das Revoke des Token Program auf,
signiert vom Nutzer, und funktioniert daher unabhängig davon, ob die
Subscription Authority noch existiert. Es kann eigenständig oder zusammen mit
CloseSubscriptionAuthority gesendet werden.
Übergeben Sie das Token Program, dem die Mint gehört: TOKEN_PROGRAM_ADDRESS
für SPL-Token- Mints, oder TOKEN_2022_PROGRAM_ADDRESS (aus
@solana-program/token-2022) für Token-2022-Mints.
import { TOKEN_PROGRAM_ADDRESS } from '@solana-program/token';await client.subscriptions.instructions.revokeSubscriptionAuthority({user: userSigner,tokenMint,tokenProgram: TOKEN_PROGRAM_ADDRESS,}).sendTransaction();
Hinweise
- Der Nutzer signiert die Schließungstransaktion.
- Wenn ein Sponsor die Subscription Authority finanziert hat, übergeben Sie
dieses Sponsor-Konten als
receiver, damit das rent an den eingetragenen Zahler zurückgegeben wird. - Schließen Sie feste, wiederkehrende und abonnementbezogene Delegierungs-PDAs, bevor Sie die Subscription Authority schließen.
- Wenn der Nutzer später eine neue Delegierung erstellt, initialisieren Sie eine neue Subscription Authority für dieselbe Mint.
- Beim Schließen wird die Token-Delegierungsgenehmigung nicht gelöscht.
Verwenden Sie
RevokeSubscriptionAuthority, um sie aus dem token account des Nutzers zu entfernen.
Is this page helpful?