Delegaties en abonnementen bevatten rent die bij intrekking normaal gesproken
terugkeert naar de geregistreerde betaler. Als een sponsor het account heeft
gefinancierd en de gebruiker later hun Subscription Authority sluit of vervangt,
raakt het account verlaten en blijft de rent vaststaan.
RevokeAbandonedDelegation en RevokeAbandonedSubscription stellen de
geregistreerde betaler in staat deze terug te vorderen.
Wanneer Van Toepassing
Alleen toegestaan wanneer de Subscription Authority van het account aantoonbaar
definitief is — gesloten, of gesloten en opnieuw aangemaakt (zodat init_id
niet meer overeenkomt). Een actieve delegatie of abonnement kan op deze manier
nooit worden gesloten.
RevokeAbandonedDelegation | RevokeAbandonedSubscription | |
|---|---|---|
| Sluit | Vaste of terugkerende delegatie PDA | Abonnement PDA |
| Ondertekenaar | Geregistreerde betaler | Geregistreerde betaler |
| Accounts | Delegatie + geregistreerde authority | Abonnement + geregistreerde authority + plan |
| Toegestaan wanneer | Authority gesloten, of opnieuw aangemaakt (init_id komt niet overeen) | Hetzelfde, voor de mint van het plan — de mint wordt uitgelezen uit het gekoppelde plan, zodat een niet-gerelateerde authority niet kan worden gebruikt om een sluiting af te dwingen |
| Gebruik gewone intrekking wanneer | Delegatie is verlopen of volledig besteed | Abonnement is geannuleerd en verlopen |
RevokeAbandonedDelegation is ook het enige herstelpad van de geregistreerde
betaler voor een nooit-verlopende delegatie (expiry_ts == 0) die niet volledig
besteed is: gewone intrekking wordt voor de betaler alleen uitgevoerd bij
vervaldatum of, voor een vaste delegatie, bij volledige besteding.
Een Verlaten Delegatie Intrekken
De geregistreerde betaler ondertekent. Geef de inactieve delegatie PDA en de bijbehorende geregistreerde Subscription Authority op (die mogelijk al gesloten is). Rent keert terug naar de betaler.
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,});
Een Verlaten Abonnement Intrekken
De geregistreerde betaler ondertekent. Geef de verlaten abonnements-PDA door, de bijbehorende geregistreerde Subscription Authority (die mogelijk al gesloten is), en het plan waartoe het abonnement behoort. rent wordt teruggestort naar de betaler.
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,});
Opmerkingen
- De geregistreerde betaler ondertekent, niet de delegator, gedelegeerde of abonnee.
- Beide instructies mislukken als de Subscription Authority nog actief is voor het account — gebruik in dat geval gewoon intrekken.
RevokeAbandonedDelegationwerkt voor zowel vaste als terugkerende delegaties.
Is this page helpful?