Das Subscriptions Delegation Program ermöglicht es Entwicklern, Benutzern die Autorisierung zukünftiger Token-Transfers von ihren Wallets mit klaren Limits zu erlauben. Es ist für wiederkehrende Zahlungen, Abonnements, Händlerabrechnungen und andere Abläufe konzipiert, bei denen ein Benutzer nicht jeden Transfer manuell signieren muss.
Zweck
Solana token accounts können einer anderen Autorität die Bewegung von Token genehmigen, aber jedes token account kann jeweils nur eine genehmigte Autorität haben. Das erschwert es einem Wallet, mehrere Ausgabenvereinbarungen für denselben Token sicher zu unterstützen, wie z. B. ein monatliches Abonnement, ein festes Ausgabenlimit und eine Händlerabrechnungsvereinbarung.
Dieses Programm löst das, indem es jedem (user, token mint)-Paar eine
programmgesteuerte Subscription Authority zuweist. Das token account des
Benutzers genehmigt diese Autorität einmalig. Das Programm prüft dann jeden
angeforderten Transfer anhand eines separaten Datensatzes, der festlegt, wer
Geldmittel abziehen kann, wie viel abgezogen werden kann und wann die
Autorisierung abläuft oder zurückgesetzt wird.
Die Subscription Authority kann Geldmittel nicht von sich aus bewegen. Ein Transfer ist nur dann erfolgreich, wenn er mit einer der aktiven Autorisierungen des Benutzers übereinstimmt.
Programm-ID
De1egAFMkMWZSN5rYXRj9CAdheBamobVNubTsi9avR44
Die Programm-ID wird in program/src/lib.rs deklariert. Lokale
Surfpool-Workflows installieren das Programm unter dieser kanonischen Adresse.
Delegationsmodelle
Das Programm unterstützt drei Autorisierungsmodelle:
| Modell | Zweck |
|---|---|
| Feste Delegation | Erlaubt einem anderen Wallet oder Dienst, bis zu einem festen Gesamtbetrag auszugeben, optional bis zu einem Ablaufzeitpunkt. |
| Wiederkehrende Delegation | Erlaubt einem anderen Wallet oder Dienst, bis zu einem Limit auszugeben, das sich jede Periode zurücksetzt, z. B. täglich, wöchentlich oder monatlich. |
| Abonnementplan | Erlaubt einem Händler, Abrechnungsbedingungen zu veröffentlichen, die Benutzer akzeptieren können, und ermöglicht autorisierten Einzugsstellen, Abonnenten in jeder Abrechnungsperiode zu belasten. |
Unterstützte Token
Das Programm unterstützt Token, die sowohl mit SPL Token als auch mit Token-2022
erstellt wurden. Die einzige Token-2022-Erweiterung, die abgelehnt wird, ist ein
konfiguriertes TransferHook (bei dem der Hook authority oder program_id
gesetzt ist). Ein inaktives TransferHook (beide nicht gesetzt und daher
dauerhaft unveränderlich) sowie alle anderen Erweiterungen sind zulässig.
On-Chain-Events
Das Programm gibt On-Chain-Events aus, damit Indexer und Anwendungen wichtige Aktivitäten verfolgen können. Diese Events umfassen Abonnementänderungen und Übertragungen, die über feste, wiederkehrende und abonnementplanbasierte Abläufe durchgeführt werden.
Versionierung
Programmeigene Datensätze enthalten ein Versionsfeld. Dies gibt dem Programm die Möglichkeit, Kontodaten im Laufe der Zeit zu aktualisieren, ohne bestehende Benutzer zu beeinträchtigen. Die Migrationsstrategie unterstützt:
- Verzögerte In-Place-Aktualisierung
- Explizite Migrationsanweisung
- Widerrufen und Neuerstellen als Fallback
Mitwirkende
Das Projekt wird von Mitwirkenden des
solana-program/subscriptions-Repositorys
gepflegt.
Audit-Status
Das Programm wurde von Cantina geprüft. Der Audit-Status, Basis-Commit,
Fix-verifizierter Commit und das aktuelle nicht geprüfte Delta werden im
audits/-Verzeichnis
des Repositorys nachverfolgt.
Demo-Anwendung
Wenn Sie das Programm selbst ausprobieren möchten, können Sie sich eine Beispielanwendung hier ansehen, um eine vollständige Implementierung der in diesem Abschnitt behandelten Konzepte zu sehen.
Is this page helpful?