Το Πρόγραμμα Εξουσιοδότησης Συνδρομών επιτρέπει στους προγραμματιστές να δώσουν τη δυνατότητα στους χρήστες να εγκρίνουν μελλοντικές μεταφορές token από τα πορτοφόλια τους με σαφή όρια. Είναι σχεδιασμένο για επαναλαμβανόμενες πληρωμές, συνδρομές, χρεώσεις εμπόρων και άλλες ροές όπου ο χρήστης δεν θα πρέπει να υπογράφει χειροκίνητα κάθε μεταφορά.
Σκοπός
Τα token account του Solana μπορούν να εγκρίνουν μια άλλη εξουσία για τη μετακίνηση token, αλλά κάθε token account μπορεί να έχει μόνο μία εγκεκριμένη εξουσία κάθε φορά. Αυτό καθιστά δύσκολο για ένα πορτοφόλι να υποστηρίζει με ασφάλεια πολλές ρυθμίσεις δαπανών για το ίδιο token, όπως μια μηνιαία συνδρομή, ένα καθορισμένο όριο δαπανών και μια συμφωνία χρέωσης με έμπορο.
Αυτό το πρόγραμμα επιλύει το πρόβλημα δίνοντας σε κάθε ζεύγος
(user, token mint) μια Εξουσία Συνδρομής ελεγχόμενη από το πρόγραμμα. Το
token account του χρήστη εγκρίνει αυτή την εξουσία μία φορά. Το πρόγραμμα στη
συνέχεια ελέγχει κάθε αιτούμενη μεταφορά έναντι μιας ξεχωριστής εγγραφής που
ορίζει ποιος μπορεί να αποσύρει κεφάλαια, πόσα μπορεί να αποσύρει και πότε λήγει
ή επαναφέρεται η εξουσιοδότηση.
Η Εξουσία Συνδρομής δεν μπορεί από μόνη της να μετακινήσει κεφάλαια. Μια μεταφορά επιτυγχάνει μόνο όταν ταιριάζει με μία από τις ενεργές εξουσιοδοτήσεις του χρήστη.
Αναγνωριστικό Προγράμματος
De1egAFMkMWZSN5rYXRj9CAdheBamobVNubTsi9avR44
Το αναγνωριστικό του προγράμματος δηλώνεται στο program/src/lib.rs. Οι τοπικές
ροές εργασίας Surfpool εγκαθιστούν το πρόγραμμα σε αυτή την κανονική διεύθυνση.
Μοντέλα Εξουσιοδότησης
Το πρόγραμμα υποστηρίζει τρία μοντέλα εξουσιοδότησης:
| Μοντέλο | Σκοπός |
|---|---|
| Σταθερή εξουσιοδότηση | Επιτρέπει σε ένα άλλο πορτοφόλι ή υπηρεσία να δαπανήσει έως ένα καθορισμένο συνολικό ποσό, προαιρετικά μέχρι μια ημερομηνία λήξης. |
| Επαναλαμβανόμενη εξουσιοδότηση | Επιτρέπει σε ένα άλλο πορτοφόλι ή υπηρεσία να δαπανήσει έως ένα όριο που επαναφέρεται κάθε περίοδο, όπως ημερησίως, εβδομαδιαίως ή μηνιαίως. |
| Σχέδιο συνδρομής | Επιτρέπει σε έναν έμπορο να δημοσιεύσει όρους χρέωσης που οι χρήστες μπορούν να αποδεχτούν, και στη συνέχεια επιτρέπει σε εγκεκριμένους εισπράκτορες να χρεώνουν τους συνδρομητές σε κάθε περίοδο χρέωσης. |
Υποστηριζόμενα Tokens
Υποστηρίζει όλα τα mints από SPL Token και Token-2022.
Για mints Token-2022 με διαμορφωμένο TransferHook, το πρόγραμμα προωθεί τους
λογαριασμούς hook του mint (πρόγραμμα hook, ExtraAccountMetaList PDA,
επιπλέον) στο TransferChecked CPI σε κάθε εκχωρημένη μεταφορά, ώστε να
επιβάλλεται η πολιτική hook. Το SDK τα επιλύει αυτόματα:
- Πρόγραμμα-πελάτης plugin (
transferFixed,transferRecurring,transferSubscription) — προστίθενται αυτόματα. - Χειροκίνητη κατασκευή — καλέστε
resolveTransferHookAccounts, περάστεtransferHookAccounts.
Συμβάντα On-Chain
Το πρόγραμμα εκπέμπει συμβάντα on-chain μέσω self-CPI, ώστε indexers και εφαρμογές να μπορούν να παρακολουθούν τη δραστηριότητα. Όλα τα συμβάντα είναι καταχωρημένα στο δημοσιευμένο IDL, οπότε τα παραγόμενα προγράμματα-πελάτες μπορούν να τα αποκωδικοποιούν. Τα εκπεμπόμενα συμβάντα είναι:
FixedTransferEvent,RecurringTransferEventκαιSubscriptionTransferEvent— ένα ανά εκχωρημένη μεταφορά. Κάθε ένα φέρει το πιστωμένοreceiverTokenAccount· τοSubscriptionTransferEventφέρει επίσης τοpuller.SubscriptionCreatedEvent,SubscriptionCancelledEventκαιSubscriptionResumedEvent— κύκλος ζωής συνδρομής. ΤοSubscriptionCreatedEventφέρει τοpayer.PlanUpdatedEvent— εκπέμπεται όταν ενημερώνεται ένα πλάνο.
Εκδόσεις
Τα αρχεία που ανήκουν στο πρόγραμμα περιλαμβάνουν πεδίο έκδοσης. Αυτό παρέχει στο πρόγραμμα έναν τρόπο αναβάθμισης των δεδομένων λογαριασμού με την πάροδο του χρόνου, χωρίς να επηρεάζονται οι υπάρχοντες χρήστες. Η στρατηγική μετεγκατάστασης υποστηρίζει:
- Lazy ενημέρωση in-place
- Ρητή εντολή migrate
- Ανάκληση και εναλλακτική αναδημιουργία
Συνεισφέροντες
Το έργο συντηρείται από συνεισφέροντες στο
αποθετήριο solana-program/subscriptions.
Κατάσταση Ελέγχου
Το πρόγραμμα έχει ελεγχθεί από την Cantina. Η κατάσταση ελέγχου, η αρχική
δέσμευση (baseline commit), η δέσμευση επαλήθευσης διορθώσεων (fix-verified
commit) και το τρέχον μη ελεγμένο delta παρακολουθούνται στον
κατάλογο audits/
του αποθετηρίου.
Εφαρμογή Demo
Αν θέλετε να πειραματιστείτε με το πρόγραμμα μόνοι σας, μπορείτε να δείτε μια παραδειγματική εφαρμογή εδώ για να δείτε μια ολοκληρωμένη υλοποίηση των εννοιών που καλύπτονται σε αυτήν την ενότητα.
Is this page helpful?