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

Le programme prend en charge les jetons créés avec SPL Token et Token-2022. La seule extension Token-2022 qu'il rejette est un TransferHook configuré (où le hook authority ou program_id est défini). Un TransferHook inerte (les deux non définis, et donc immuable de façon permanente) et toutes les autres extensions sont autorisés.

Événements en chaîne

Le programme émet des événements en chaîne pour que les indexeurs et les applications puissent suivre les activités importantes. Ces événements couvrent les modifications d'abonnement et les transferts effectués via les flux fixes, récurrents et par plans d'abonnement.

Gestion des versions

Les enregistrements détenus par le programme incluent un champ de version. Cela permet au programme de mettre à jour les données de compte au fil du temps sans perturber les utilisateurs existants. La stratégie de migration prend en charge :

  • Mise à jour paresseuse sur place
  • Instruction de migration explicite
  • Solution de repli par révocation et recréation

Contributeurs

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

État de l'audit

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

Application de démonstration

Si vous souhaitez explorer le programme par vous-même, vous pouvez consulter une application exemple ici pour voir une implémentation complète 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.