PaiementsAbonnements

Fermer l'Autorité de Souscription

Une Autorité de Souscription est le PDA que le programme utilise comme délégué de jeton SPL pour le compte de jetons d'un utilisateur. Fermez-la lorsque l'utilisateur n'a plus de délégations fixes actives, de délégations récurrentes ou de délégations de souscription pour ce mint.

La fermeture restitue le rent du compte à son financeur (l'utilisateur ou le payeur qui l'a financé). Fermez d'abord toutes les délégations actives.

La fermeture n'efface pas l'approbation de délégation du token SPL. Une fois le PDA supprimé, l'approbation est inactive, mais elle reste sur le token account jusqu'à sa révocation — voir Révoquer l'approbation de délégation.

Fermer l'autorité

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();

Révoquer l'approbation de délégation

RevokeSubscriptionAuthority efface l'approbation de délégation résiduelle du token account de l'utilisateur. Il appelle Revoke du Token Program, signé par l'utilisateur, ce qui fonctionne que l'autorité d'abonnement existe encore ou non. Envoyez-le seul ou conjointement avec CloseSubscriptionAuthority.

Passez le Token Program propriétaire du mint : TOKEN_PROGRAM_ADDRESS pour les mints SPL Token, ou TOKEN_2022_PROGRAM_ADDRESS (depuis @solana-program/token-2022) pour les mints Token-2022.

import { TOKEN_PROGRAM_ADDRESS } from '@solana-program/token';
await client.subscriptions.instructions
.revokeSubscriptionAuthority({
user: userSigner,
tokenMint,
tokenProgram: TOKEN_PROGRAM_ADDRESS,
})
.sendTransaction();

Remarques

  • L'utilisateur signe la transaction de fermeture.
  • Si un sponsor a financé l'autorité d'abonnement, passez ce compte sponsor en tant que receiver afin que le rent soit restitué au payeur enregistré.
  • Fermez les PDAs de délégation fixe, récurrente et d'abonnement avant de fermer l'autorité d'abonnement.
  • Si l'utilisateur crée une nouvelle délégation ultérieurement, initialisez une nouvelle autorité d'abonnement pour le même mint.
  • La fermeture n'efface pas l'approbation de délégation du token. Utilisez RevokeSubscriptionAuthority pour la supprimer du token account de l'utilisateur.

Is this page helpful?

Table des matières

Modifier la page
© 2026 Fondation Solana. Tous droits réservés.