Delegações e subscrições retêm rent que normalmente é devolvido ao pagador
registado na revogação. Se um patrocinador financiou a conta e o utilizador
posteriormente fecha ou substitui a sua Subscription Authority, a conta fica
abandonada e o seu rent bloqueado. RevokeAbandonedDelegation e
RevokeAbandonedSubscription permitem que o pagador registado o recupere.
Quando Se Aplica
Permitido apenas quando a Subscription Authority da conta é comprovadamente
terminal — fechada, ou fechada e recriada (de modo que init_id já não
corresponde). Uma delegação ou subscrição ativa nunca pode ser fechada desta
forma.
RevokeAbandonedDelegation | RevokeAbandonedSubscription | |
|---|---|---|
| Fecha | PDA de delegação fixa ou recorrente | PDA de subscrição |
| Signatário | Pagador registado | Pagador registado |
| Contas | Delegação + autoridade registada | Subscrição + autoridade registada + plano |
| Elegível quando | Autoridade fechada ou recriada (incompatibilidade de init_id) | O mesmo, para o mint do plano — o mint é lido do plano associado, pelo que uma autoridade não relacionada não pode ser substituída para forçar o fecho |
| Use a revogação normal quando | A delegação está expirada ou totalmente gasta | A subscrição está cancelada e expirada |
RevokeAbandonedDelegation é também o único caminho de recuperação do pagador
registado para uma delegação sem expiração (expiry_ts == 0) que não está
totalmente gasta: a revogação normal é acionada para o pagador apenas na
expiração ou, no caso de uma delegação fixa, no gasto total.
Revogar uma Delegação Abandonada
O pagador registado assina. Passe o PDA de delegação inativa e a sua Subscription Authority registada (que pode já estar fechada). O rent é devolvido ao 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,});
Revogar uma Assinatura Abandonada
O pagador registado assina. Passe o PDA da assinatura abandonada, a sua Autoridade de Assinatura registada (que pode já estar encerrada) e o plano ao qual a assinatura pertence. O rent é devolvido ao 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
- O pagador registado assina, não o delegador, o delegatário ou o assinante.
- Ambas as instruções falham se a Autoridade de Assinatura ainda estiver ativa para a conta — utilize a revogação normal em vez disso.
RevokeAbandonedDelegationfunciona tanto para delegações fixas como recorrentes.
Is this page helpful?