BetalingenAbonnementen

Overzicht

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:

ModelDoel
Vaste delegatieLaat een andere wallet of service tot een vast totaalbedrag uitgeven, optioneel tot een vervaltijd.
Terugkerende delegatieLaat een andere wallet of service tot een limiet uitgeven die elke periode wordt gereset, zoals dagelijks, wekelijks of maandelijks.
AbonnementsplanLaat een handelaar factureringsvoorwaarden publiceren die gebruikers kunnen accepteren, en sta vervolgens goedgekeurde incasseerders toe om abonnees elke factureringsperiode te belasten.

Ondersteunde Tokens

Ondersteunt alle mints van zowel SPL Token als Token-2022.

Voor Token-2022 mints met een geconfigureerde TransferHook stuurt het programma de hook-accounts van de mint (hook-programma, ExtraAccountMetaList PDA, extra's) door naar de TransferChecked CPI bij elke gedelegeerde overdracht, zodat het hook-beleid wordt gehandhaafd. De SDK lost ze voor je op:

  • Plugin-client (transferFixed, transferRecurring, transferSubscription) — automatisch toegevoegd.
  • Handmatig bouwen — roep resolveTransferHookAccounts aan, geef transferHookAccounts mee.

On-Chain Gebeurtenissen

Het programma verzendt on-chain gebeurtenissen via self-CPI zodat indexers en applicaties activiteit kunnen bijhouden. Alle gebeurtenissen zijn geregistreerd in de gepubliceerde IDL, zodat gegenereerde clients ze kunnen decoderen. De uitgezonden gebeurtenissen zijn:

  • FixedTransferEvent, RecurringTransferEvent, en SubscriptionTransferEvent — één per gedelegeerde overdracht. Elk draagt de gecrediteerde receiverTokenAccount; SubscriptionTransferEvent draagt ook de puller.
  • SubscriptionCreatedEvent, SubscriptionCancelledEvent, en SubscriptionResumedEvent — levenscyclus van abonnementen. SubscriptionCreatedEvent draagt de payer.
  • PlanUpdatedEvent — uitgezonden wanneer een plan wordt bijgewerkt.

Versiebeheer

Door het programma beheerde records bevatten een versieveld. Dit geeft het programma een manier om accountgegevens in de loop van de tijd bij te werken zonder bestaande gebruikers te verstoren. De migratiestrategie ondersteunt:

  • Lazy in-place update
  • Expliciete migratie-instructie
  • Intrekken en opnieuw aanmaken als terugvaloptie

Bijdragers

Het project wordt onderhouden door bijdragers aan de solana-program/subscriptions repository.

Auditstatus

Het programma is geauditeerd door Cantina. De auditstatus, baseline-commit, fix-geverifieerde commit en de huidige niet-geauditeerde delta worden bijgehouden in de audits/ map van de repository.

Demoapplicatie

Als je zelf met het programma wilt experimenteren, 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?

Inhoudsopgave

Pagina Bewerken
© 2026 Solana Foundation. Alle rechten voorbehouden.