PagosSuscripciones

Revocar Delegaciones y Suscripciones Abandonadas

Las delegaciones y suscripciones retienen rent que normalmente se devuelve a su pagador registrado al revocarlas. Si un patrocinador financió la cuenta y el usuario posteriormente cierra o reemplaza su Autoridad de Suscripción, la cuenta queda abandonada y su rent bloqueada. RevokeAbandonedDelegation e RevokeAbandonedSubscription permiten que el pagador registrado la recupere.

Cuándo Aplica

Solo se permite cuando la Autoridad de Suscripción de la cuenta es demostrablemente terminal — cerrada, o cerrada y recreada (de modo que init_id ya no coincide). Una delegación o suscripción activa nunca puede cerrarse de esta manera.

RevokeAbandonedDelegationRevokeAbandonedSubscription
CierraPDA de delegación fija o recurrentePDA de suscripción
FirmantePagador registradoPagador registrado
CuentasDelegación + autoridad registradaSuscripción + autoridad registrada + plan
Elegible cuandoAutoridad cerrada o recreada (discrepancia en init_id)Lo mismo, para el mint del plan — el mint se lee del plan vinculado, por lo que no se puede sustituir una autoridad no relacionada para forzar el cierre
Usar revocación ordinaria cuandoLa delegación está vencida o totalmente gastadaLa suscripción está cancelada y vencida

RevokeAbandonedDelegation es también el único camino de recuperación del pagador registrado para una delegación que nunca vence (expiry_ts == 0) y que no está completamente gastada: la revocación ordinaria se activa para el pagador solo al vencer o, en el caso de una delegación fija, al gastarse por completo.

Revocar una Delegación Abandonada

El pagador registrado firma. Se pasa el PDA de la delegación inactiva y su Autoridad de Suscripción registrada (que puede ya estar cerrada). El rent se devuelve al pagador.

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,
});

Revocar una Suscripción Abandonada

El pagador registrado firma. Pasa el PDA de la suscripción abandonada, su Autoridad de Suscripción registrada (que puede que ya esté cerrada) y el plan al que pertenece la suscripción. El rent se devuelve al pagador.

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,
});

Notas

  • El pagador registrado firma, no el delegante, el delegado ni el suscriptor.
  • Ambas instrucciones fallan si la Autoridad de Suscripción sigue activa para la cuenta — usa la revocación ordinaria en su lugar.
  • RevokeAbandonedDelegation funciona tanto para delegaciones fijas como recurrentes.

Is this page helpful?

Tabla de Contenidos

Editar Página