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èle | Objectif |
|---|---|
| Délégation fixe | Permet à un autre portefeuille ou service de dépenser jusqu'à un montant total fixe, éventuellement jusqu'à une date d'expiration. |
| Délégation récurrente | Permet à un autre portefeuille ou service de dépenser jusqu'à une limite qui se réinitialise à chaque période, quotidienne, hebdomadaire ou mensuelle. |
| Plan d'abonnement | Permet à 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?