PaiementsAbonnements

Révoquer les délégations et abonnements abandonnés

Les délégations et les abonnements conservent du rent qui revient normalement à leur payeur enregistré lors de la révocation. Si un sponsor a financé le compte et que l'utilisateur ferme ou remplace ultérieurement son autorité d'abonnement, le compte se retrouve bloqué et son rent est immobilisé. RevokeAbandonedDelegation et RevokeAbandonedSubscription permettent au payeur enregistré de le récupérer.

Cas d'application

Autorisé uniquement lorsque l'autorité d'abonnement du compte est manifestement terminale — fermée, ou fermée et recréée (de sorte que init_id ne correspond plus). Une délégation ou un abonnement actif ne peut jamais être clôturé de cette manière.

RevokeAbandonedDelegationRevokeAbandonedSubscription
ClôturePDA de délégation fixe ou récurrentePDA d'abonnement
SignatairePayeur enregistréPayeur enregistré
ComptesDélégation + autorité enregistréeAbonnement + autorité enregistrée + plan
Éligible lorsqueAutorité fermée ou recréée (incompatibilité init_id)Idem, pour le mint du plan — le mint est lu depuis le plan lié, donc une autorité non liée ne peut pas être substituée pour forcer une clôture
Utiliser la révocation ordinaire siLa délégation est expirée ou entièrement dépenséeL'abonnement est annulé et expiré

RevokeAbandonedDelegation est également le seul moyen de récupération pour le payeur enregistré dans le cas d'une délégation sans expiration (expiry_ts == 0) qui n'est pas entièrement dépensée : la révocation ordinaire ne s'exécute pour le payeur qu'à l'expiration ou, pour une délégation fixe, lors d'une dépense totale.

Révoquer une délégation abandonnée

Le payeur enregistré signe. Transmettez le PDA de délégation inactif et son autorité d'abonnement enregistrée (qui peut déjà être fermée). Le rent est restitué au payeur.

import { getRevokeAbandonedDelegationInstruction } from '@solana/subscriptions';
// Build the instruction and send it in a transaction like any other.
const revokeAbandonedIx = getRevokeAbandonedDelegationInstruction({
payer: payerSigner,
delegationAccount: delegationPda,
subscriptionAuthority: subscriptionAuthorityPda,
});

Révoquer un abonnement abandonné

Le payeur enregistré signe. Transmettez le PDA de l'abonnement abandonné, son Subscription Authority enregistrée (qui peut déjà être fermée), ainsi que le plan auquel appartient l'abonnement. Le rent est retourné au payeur.

import { getRevokeAbandonedSubscriptionInstruction } from '@solana/subscriptions';
// Build the instruction and send it in a transaction like any other.
const revokeAbandonedIx = getRevokeAbandonedSubscriptionInstruction({
payer: payerSigner,
subscriptionAccount: subscriptionPda,
subscriptionAuthority: subscriptionAuthorityPda,
planPda,
});

Remarques

  • C'est le payeur enregistré qui signe, et non le délégant, le délégué ou l'abonné.
  • Les deux instructions échouent si la Subscription Authority est toujours active pour le compte — utilisez plutôt la révocation ordinaire.
  • RevokeAbandonedDelegation fonctionne pour les délégations fixes et récurrentes.

Is this page helpful?

Table des matières

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