Delegacje i subskrypcje przechowują rent, który normalnie wraca do
zarejestrowanego płatnika po cofnięciu. Jeśli sponsor sfinansował konto, a
użytkownik później zamknie lub zastąpi swoje Subscription Authority, konto
zostaje porzucone, a jego rent zablokowany. RevokeAbandonedDelegation i
RevokeAbandonedSubscription pozwalają zarejestrowanemu płatnikowi je odzyskać.
Kiedy to dotyczy
Dozwolone tylko wtedy, gdy Subscription Authority konta jest jednoznacznie
zakończone — zamknięte lub zamknięte i odtworzone (tak że init_id już nie
pasuje). Aktywna delegacja lub subskrypcja nigdy nie może zostać zamknięta w ten
sposób.
RevokeAbandonedDelegation | RevokeAbandonedSubscription | |
|---|---|---|
| Zamyka | PDA delegacji stałej lub cyklicznej | PDA subskrypcji |
| Podpisujący | Zarejestrowany płatnik | Zarejestrowany płatnik |
| Konta | Delegacja + zarejestrowane authority | Subskrypcja + zarejestrowane authority + plan |
| Kwalifikuje się gdy | Authority zamknięte lub odtworzone (niezgodność init_id) | To samo, dla mint planu — mint jest odczytywany z powiązanego planu, więc niepowiązane authority nie może zostać podstawione, by wymusić zamknięcie |
| Użyj zwykłego cofnięcia gdy | Delegacja jest wygasła lub w pełni wykorzystana | Subskrypcja jest anulowana i wygasła |
RevokeAbandonedDelegation jest również jedyną ścieżką odzyskania dla
zarejestrowanego płatnika delegacji bez terminu wygaśnięcia (expiry_ts == 0),
która nie jest w pełni wykorzystana: zwykłe cofnięcie działa dla płatnika tylko
po wygaśnięciu lub, w przypadku delegacji stałej, po pełnym wykorzystaniu.
Cofnij Opuszczoną Delegację
Zarejestrowany płatnik podpisuje. Przekaż porzucone PDA delegacji i jego zarejestrowane Subscription Authority (które może być już zamknięte). Rent wraca do płatnika.
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,});
Cofnij Porzuconą Subskrypcję
Zarejestrowany płatnik podpisuje transakcję. Przekaż porzucone PDA subskrypcji, zarejestrowany Organ Subskrypcji (który może być już zamknięty) oraz plan, do którego należy subskrypcja. rent wraca do płatnika.
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,});
Uwagi
- Podpisuje zarejestrowany płatnik, a nie delegator, delegat ani subskrybent.
- Obie instrukcje kończą się niepowodzeniem, jeśli Organ Subskrypcji jest nadal aktywny dla danego konta — zamiast tego użyj zwykłego cofnięcia.
RevokeAbandonedDelegationdziała zarówno dla delegacji stałych, jak i cyklicznych.
Is this page helpful?