PaiementsAbonnements

Aperçu

Le programme de délégation d'abonnements permet aux développeurs de laisser les utilisateurs autoriser de futurs transferts de jetons depuis leurs portefeuilles avec des limites claires. Il est conçu pour les paiements récurrents, les abonnements, la facturation marchande et autres flux où un utilisateur ne devrait pas avoir à signer manuellement chaque transfert.

Objectif

Les token accounts Solana peuvent approuver une autre autorité pour déplacer des jetons, mais chaque token account ne peut avoir qu'une seule autorité approuvée à la fois. Cela rend difficile pour un portefeuille de prendre en charge en toute sécurité plusieurs arrangements de dépenses pour le même jeton, comme un abonnement mensuel, une allocation de dépenses fixe et un accord de facturation marchande.

Ce programme résout ce problème en donnant à chaque paire (user, token mint) une Autorité d'abonnement contrôlée par le programme. Le token account de l'utilisateur approuve cette autorité une seule fois. Le programme vérifie ensuite chaque transfert demandé par rapport à un enregistrement distinct qui définit qui peut retirer des fonds, combien ils peuvent retirer et quand l'autorisation expire ou se réinitialise.

L'Autorité d'abonnement ne peut pas déplacer des fonds par elle-même. Un transfert ne réussit que lorsqu'il correspond à l'une des autorisations actives de l'utilisateur.

ID du programme

De1egAFMkMWZSN5rYXRj9CAdheBamobVNubTsi9avR44

L'ID du programme est déclaré dans program/src/lib.rs. Les workflows Surfpool locaux installent le programme à cette adresse canonique.

Modèles de délégation

Le programme prend en charge trois modèles d'autorisation :

ModèleObjectif
Délégation fixePermet à un autre portefeuille ou service de dépenser jusqu'à un montant total fixe, éventuellement jusqu'à une date d'expiration.
Délégation récurrentePermet à un autre portefeuille ou service de dépenser jusqu'à une limite qui se réinitialise à chaque période, quotidienne, hebdomadaire ou mensuelle.
Plan d'abonnementPermet à un marchand de publier des conditions de facturation que les utilisateurs peuvent accepter, puis autorise les collecteurs approuvés à facturer les abonnés à chaque période de facturation.

Jetons pris en charge

Prend en charge tous les mints de SPL Token et Token-2022.

Pour les mints Token-2022 configurés avec un TransferHook, le programme transmet les comptes hook du mint (programme hook, PDA ExtraAccountMetaList, extras) dans le CPI TransferChecked à chaque transfert délégué, de sorte que la politique de hook est appliquée. Le SDK les résout pour vous :

  • Client plugin (transferFixed, transferRecurring, transferSubscription) — ajouté automatiquement.
  • Construction manuelle — appelez resolveTransferHookAccounts, passez transferHookAccounts.

Événements On-Chain

Le programme émet des événements on-chain via self-CPI afin que les indexeurs et les applications puissent suivre l'activité. Tous les événements sont enregistrés dans l'IDL publié, ce qui permet aux clients générés de les décoder. Les événements émis sont :

  • FixedTransferEvent, RecurringTransferEvent et SubscriptionTransferEvent — un par transfert délégué. Chacun porte le receiverTokenAccount crédité ; SubscriptionTransferEvent porte également le puller.
  • SubscriptionCreatedEvent, SubscriptionCancelledEvent et SubscriptionResumedEvent — cycle de vie des abonnements. SubscriptionCreatedEvent porte le payer.
  • PlanUpdatedEvent — émis lorsqu'un plan est mis à jour.

Gestion des versions

Les enregistrements appartenant au programme incluent un champ de version. Cela offre au programme un moyen de faire évoluer les données de compte au fil du temps sans perturber les utilisateurs existants. La stratégie de migration prend en charge :

  • Mise à jour en place différée
  • Instruction de migration explicite
  • Révocation et recréation en dernier recours

Contributeurs

Le projet est maintenu par les contributeurs du dépôt solana-program/subscriptions.

Statut de l'audit

Le programme a été audité par Cantina. Le statut de l'audit, le commit de référence, le commit de vérification des correctifs et le delta actuel non audité sont suivis dans le répertoire audits/ du dépôt.

Application de démonstration

Si vous souhaitez expérimenter le programme par vous-même, vous pouvez consulter un exemple d'application ici pour voir une implémentation de bout en bout des concepts abordés dans cette section.

Is this page helpful?

Table des matières

Modifier la page
© 2026 Fondation Solana. Tous droits réservés.