Program Delegacji Subskrypcji umożliwia deweloperom pozwolenie użytkownikom na autoryzację przyszłych transferów tokenów z ich portfeli z wyraźnymi limitami. Jest zaprojektowany do płatności cyklicznych, subskrypcji, rozliczeń handlowych i innych przepływów, w których użytkownik nie powinien podpisywać ręcznie każdego transferu.
Cel
Konta tokenów Solana mogą zatwierdzić inny autorytet do przenoszenia tokenów, ale każde konto tokenu może mieć tylko jeden zatwierdzony autorytet na raz. To utrudnia bezpieczne wspieranie przez jeden portfel kilku ustaleń wydatkowania dla tego samego tokenu, takich jak miesięczna subskrypcja, stały limit wydatków i umowa rozliczeniowa z handlowcem.
Ten program rozwiązuje to poprzez nadanie każdej parze (user, token mint)
kontrolowany przez program Autorytet Subskrypcji. Konto tokenu użytkownika
zatwierdza ten autorytet jednokrotnie. Program następnie sprawdza każdy żądany
transfer względem oddzielnego rekordu, który definiuje, kto może pobierać
środki, ile może pobrać i kiedy autoryzacja wygasa lub się resetuje.
Autorytet Subskrypcji nie może przenosić środków samodzielnie. Transfer kończy się sukcesem tylko wtedy, gdy pasuje do jednej z aktywnych autoryzacji użytkownika.
Identyfikator Programu
De1egAFMkMWZSN5rYXRj9CAdheBamobVNubTsi9avR44
Identyfikator programu jest zadeklarowany w program/src/lib.rs. Lokalne
przepływy pracy Surfpool instalują program pod tym kanonicznym adresem.
Modele Delegacji
Program obsługuje trzy modele autoryzacji:
| Model | Cel |
|---|---|
| Delegacja stała | Pozwól innemu portfelowi lub usłudze wydać do ustalonej kwoty całkowitej, opcjonalnie do czasu wygaśnięcia. |
| Delegacja cykliczna | Pozwól innemu portfelowi lub usłudze wydać do limitu, który resetuje się co okres, np. codziennie, co tydzień lub co miesiąc. |
| Plan subskrypcji | Pozwól handlowcowi opublikować warunki rozliczeniowe, które użytkownicy mogą zaakceptować, następnie zezwól zatwierdzonym podmiotom na obciążanie subskrybentów w każdym okresie rozliczeniowym. |
Obsługiwane tokeny
Obsługuje wszystkie minty zarówno z SPL Token, jak i Token-2022.
W przypadku mintów Token-2022 ze skonfigurowanym TransferHook, program
przekazuje konta hook minta (program hook, PDA ExtraAccountMetaList, dodatki)
do TransferChecked CPI przy każdym delegowanym transferze, dzięki czemu
polityka hook jest egzekwowana. SDK rozwiązuje je za Ciebie:
- Klient pluginu (
transferFixed,transferRecurring,transferSubscription) — dołączany automatycznie. - Budowanie ręczne — wywołaj
resolveTransferHookAccounts, przekażtransferHookAccounts.
Zdarzenia On-Chain
Program emituje zdarzenia on-chain za pośrednictwem self-CPI, dzięki czemu indeksery i aplikacje mogą śledzić aktywność. Wszystkie zdarzenia są zarejestrowane w opublikowanym IDL, więc wygenerowane klienty mogą je dekodować. Emitowane zdarzenia to:
FixedTransferEvent,RecurringTransferEventiSubscriptionTransferEvent— jedno na każdy delegowany transfer. Każde zawiera zaliczonereceiverTokenAccount;SubscriptionTransferEventzawiera równieżpuller.SubscriptionCreatedEvent,SubscriptionCancelledEventiSubscriptionResumedEvent— cykl życia subskrypcji.SubscriptionCreatedEventzawierapayer.PlanUpdatedEvent— emitowane po aktualizacji planu.
Wersjonowanie
Rekordy należące do programu zawierają pole wersji. Umożliwia to programowi aktualizację danych kont w czasie bez naruszania działania istniejących użytkowników. Strategia migracji obsługuje:
- Leniwa aktualizacja w miejscu
- Jawna instrukcja migracji
- Cofnięcie i odtworzenie jako fallback
Współtwórcy
Projekt jest utrzymywany przez współtwórców
repozytorium solana-program/subscriptions.
Status Audytu
Program został poddany audytowi przez Cantina. Status audytu, bazowy commit,
commit z zweryfikowanymi poprawkami oraz bieżąca nieaudytowana delta są śledzone
w
katalogu audits/
repozytorium.
Aplikacja Demo
Jeśli chcesz samodzielnie poeksperymentować z programem, możesz zapoznać się z przykładową aplikacją tutaj, aby zobaczyć kompleksową implementację koncepcji omówionych w tej sekcji.
Is this page helpful?