Οι εκχωρήσεις και οι συνδρομές διατηρούν rent που κανονικά επιστρέφει στον
καταχωρημένο πληρωτή κατά την ανάκληση. Εάν ένας χορηγός χρηματοδότησε τον
λογαριασμό και ο χρήστης αργότερα κλείσει ή αντικαταστήσει την Subscription
Authority του, ο λογαριασμός εγκαταλείπεται και το rent του παραμένει
δεσμευμένο. Τα RevokeAbandonedDelegation και RevokeAbandonedSubscription
επιτρέπουν στον καταχωρημένο πληρωτή να το ανακτήσει.
Πότε Εφαρμόζεται
Επιτρέπεται μόνο όταν η Subscription Authority του λογαριασμού είναι
αποδεδειγμένα τερματισμένη — κλειστή, ή κλειστή και αναδημιουργημένη (οπότε το
init_id δεν ταιριάζει πλέον). Μια ενεργή εκχώρηση ή συνδρομή δεν μπορεί ποτέ
να κλείσει με αυτόν τον τρόπο.
RevokeAbandonedDelegation | RevokeAbandonedSubscription | |
|---|---|---|
| Κλείνει | PDA σταθερής ή επαναλαμβανόμενης εκχώρησης | PDA συνδρομής |
| Υπογράφων | Καταχωρημένος πληρωτής | Καταχωρημένος πληρωτής |
| Λογαριασμοί | Εκχώρηση + καταχωρημένη authority | Συνδρομή + καταχωρημένη authority + πλάνο |
| Επιλέξιμο όταν | Η authority είναι κλειστή ή αναδημιουργημένη (αναντιστοιχία init_id) | Το ίδιο, για το mint του πλάνου — το mint διαβάζεται από το συνδεδεμένο πλάνο, οπότε δεν μπορεί να υποκατασταθεί μη σχετική authority για να επιβληθεί κλείσιμο |
| Χρησιμοποιήστε αντ' αυτού την κανονική ανάκληση όταν | Η εκχώρηση είναι ληγμένη ή πλήρως εξαντλημένη | Η συνδρομή είναι ακυρωμένη και ληγμένη |
Το RevokeAbandonedDelegation είναι επίσης η μοναδική οδός ανάκτησης για τον
καταχωρημένο πληρωτή σε περίπτωση εκχώρησης χωρίς λήξη (expiry_ts == 0) που
δεν έχει εξαντληθεί πλήρως: η κανονική ανάκληση ενεργοποιείται για τον πληρωτή
μόνο κατά τη λήξη ή, για σταθερή εκχώρηση, μετά την πλήρη χρήση.
Ανάκληση Εγκαταλελειμμένης Εκχώρησης
Υπογράφει ο καταχωρημένος πληρωτής. Περάστε το PDA της ανενεργής εκχώρησης και την καταχωρημένη Subscription Authority της (η οποία μπορεί να είναι ήδη κλειστή). Το rent επιστρέφει στον πληρωτή.
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,});
Ανάκληση Εγκαταλελειμμένης Συνδρομής
Ο καταγεγραμμένος πληρωτής υπογράφει. Περάστε το PDA της εγκαταλελειμμένης συνδρομής, την καταγεγραμμένη Αρχή Συνδρομής (η οποία μπορεί να έχει ήδη κλείσει) και το πλάνο στο οποίο ανήκει η συνδρομή. Το rent επιστρέφεται στον πληρωτή.
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,});
Σημειώσεις
- Ο καταγεγραμμένος πληρωτής υπογράφει, όχι ο εκχωρητής, ο αποδέκτης εκχώρησης ή ο συνδρομητής.
- Και οι δύο εντολές αποτυγχάνουν εάν η Αρχή Συνδρομής είναι ακόμα ενεργή για τον λογαριασμό — χρησιμοποιήστε αντ' αυτού την κανονική ανάκληση.
RevokeAbandonedDelegationλειτουργεί τόσο για σταθερές όσο και για επαναλαμβανόμενες εκχωρήσεις.
Is this page helpful?