ZahlungenAbonnements

Abonnement-Autorisierung schließen

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?

Inhaltsverzeichnis

Seite bearbeiten
© 2026 Solana Foundation. Alle Rechte vorbehalten.