Het Subscriptions Delegation Program stelt ontwikkelaars in staat om gebruikers toe te staan toekomstige tokenoverdrachten vanuit hun wallets te autoriseren met duidelijke limieten. Het is ontworpen voor terugkerende betalingen, abonnementen, handelaarsfacturering en andere stromen waarbij een gebruiker niet elke overdracht handmatig hoeft te ondertekenen.
Doel
Solana token accounts kunnen een andere authority goedkeuren om tokens te verplaatsen, maar elk token account kan slechts één goedgekeurde authority tegelijk hebben. Dat maakt het moeilijk voor één wallet om veilig meerdere bestedingsregelingen voor dezelfde token te ondersteunen, zoals een maandelijks abonnement, een vast bestedingsbudget en een handelaarsfactureringsovereenkomst.
Dit programma lost dat op door elk (user, token mint)-paar een
programmagestuurde Subscription Authority te geven. Het token account van de
gebruiker keurt die authority eenmalig goed. Het programma controleert
vervolgens elke gevraagde overdracht tegen een afzonderlijk record dat
definieert wie geld kan opnemen, hoeveel ze kunnen opnemen en wanneer de
autorisatie verloopt of wordt gereset.
De Subscription Authority kan zelfstandig geen geld verplaatsen. Een overdracht slaagt alleen wanneer deze overeenkomt met een van de actieve autorisaties van de gebruiker.
Programma-ID
De1egAFMkMWZSN5rYXRj9CAdheBamobVNubTsi9avR44
Het programma-ID is gedeclareerd in program/src/lib.rs. Lokale
Surfpool-workflows installeren het programma op dit canonieke adres.
Delegatiemodellen
Het programma ondersteunt drie autorisatiemodellen:
| Model | Doel |
|---|---|
| Vaste delegatie | Laat een andere wallet of service tot een vast totaalbedrag uitgeven, optioneel tot een vervaltijd. |
| Terugkerende delegatie | Laat een andere wallet of service tot een limiet uitgeven die elke periode wordt gereset, zoals dagelijks, wekelijks of maandelijks. |
| Abonnementsplan | Laat een handelaar factureringsvoorwaarden publiceren die gebruikers kunnen accepteren, en sta vervolgens goedgekeurde incasseerders toe om abonnees elke factureringsperiode te belasten. |
Ondersteunde Tokens
Het programma ondersteunt tokens die zijn aangemaakt met zowel SPL Token als
Token-2022. De enige Token-2022-extensie die wordt afgewezen is een
geconfigureerde TransferHook (waarbij de hook authority of program_id is
ingesteld). Een inerte TransferHook (beide niet ingesteld, en daardoor
permanent onveranderlijk) en alle andere extensies zijn toegestaan.
On-Chain Gebeurtenissen
Het programma genereert on-chain gebeurtenissen zodat indexers en applicaties belangrijke activiteiten kunnen volgen. Deze gebeurtenissen omvatten abonnementswijzigingen en transfers die zijn uitgevoerd via vaste, terugkerende en abonnementsplan-flows.
Versiebeheer
Door het programma beheerde records bevatten een versieveld. Dit geeft het programma de mogelijkheid om accountgegevens in de loop van de tijd te upgraden zonder bestaande gebruikers te verstoren. De migratiestrategie ondersteunt:
- Lazy in-place update
- Expliciete migrate-instructie
- Intrekken en opnieuw aanmaken als fallback
Contributors
Het project wordt onderhouden door contributors aan de
solana-program/subscriptions repository.
Auditstatus
Het programma is geaudit door Cantina. Auditstatus, baseline commit,
fix-verified commit en huidige niet-geaudite delta worden bijgehouden in de
audits/ directory
van de repository.
Demoapplicatie
Als je zelf met het programma wilt spelen, kun je een voorbeeldapplicatie hier bekijken om een end-to-end implementatie te zien van de concepten die in dit onderdeel worden behandeld.
Is this page helpful?