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
Program obsługuje tokeny utworzone zarówno za pomocą SPL Token, jak i
Token-2022. Jedynym rozszerzeniem Token-2022, które jest odrzucane, jest
skonfigurowany TransferHook (gdzie hook authority lub program_id jest
ustawiony). Nieaktywny TransferHook (oba nieustawione, a zatem trwale
niezmienne) oraz wszystkie inne rozszerzenia są dozwolone.
Zdarzenia on-chain
Program emituje zdarzenia on-chain, dzięki czemu indeksery i aplikacje mogą śledzić istotną aktywność. Zdarzenia te obejmują zmiany subskrypcji oraz transfery realizowane za pośrednictwem przepływów o stałej częstotliwości, cyklicznych i planów subskrypcyjnych.
Wersjonowanie
Rekordy należące do programu zawierają pole wersji. Daje to programowi możliwość aktualizacji danych konta w miarę upływu czasu bez zakłócania działania istniejących użytkowników. Strategia migracji obsługuje:
- Leniwą aktualizację w miejscu
- Jawną instrukcję migracji
- Cofnięcie i ponowne utworzenie jako rozwiązanie awaryjne
Kontrybutorzy
Projekt jest utrzymywany przez kontrybutorów
repozytorium solana-program/subscriptions.
Status audytu
Program został poddany audytowi przez Cantina. Status audytu, commit bazowy,
commit ze zweryfikowanymi poprawkami oraz bieżąca nieaudytowana różnica są
śledzone w
katalogu audits/
repozytorium.
Aplikacja demonstracyjna
Jeśli chcesz samodzielnie pobawić się programem, możesz zobaczyć przykładową aplikację tutaj, aby zapoznać się z kompleksową implementacją konceptów omówionych w tej sekcji.
Is this page helpful?