ZahlungenAbonnements

Übersicht

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:

ModellZweck
Feste DelegationErlaubt einem anderen Wallet oder Dienst, bis zu einem festen Gesamtbetrag auszugeben, optional bis zu einem Ablaufzeitpunkt.
Wiederkehrende DelegationErlaubt einem anderen Wallet oder Dienst, bis zu einem Limit auszugeben, das sich jede Periode zurücksetzt, z. B. täglich, wöchentlich oder monatlich.
AbonnementplanErlaubt 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

Unterstützt alle Mints von SPL Token und Token-2022.

Bei Token-2022-Mints mit einem konfigurierten TransferHook leitet das Programm die Hook- Konten des Mints (Hook-Programm, ExtraAccountMetaList PDA, Extras) bei jedem delegierten Transfer in den TransferChecked CPI weiter, sodass die Hook-Richtlinie durchgesetzt wird. Das SDK löst diese für Sie auf:

  • Plugin-Client (transferFixed, transferRecurring, transferSubscription) — wird automatisch angehängt.
  • Manuelles Erstellen — resolveTransferHookAccounts aufrufen und transferHookAccounts übergeben.

On-Chain-Ereignisse

Das Programm sendet On-Chain-Ereignisse über Self-CPI aus, damit Indexer und Anwendungen Aktivitäten verfolgen können. Alle Ereignisse sind im veröffentlichten IDL registriert, sodass generierte Clients sie dekodieren können. Die ausgesendeten Ereignisse sind:

  • FixedTransferEvent, RecurringTransferEvent und SubscriptionTransferEvent — jeweils eines pro delegiertem Transfer. Jedes enthält das gutgeschriebene receiverTokenAccount; SubscriptionTransferEvent enthält zusätzlich den puller.
  • SubscriptionCreatedEvent, SubscriptionCancelledEvent und SubscriptionResumedEvent — Abonnement-Lebenszyklus. SubscriptionCreatedEvent enthält den payer.
  • PlanUpdatedEvent — wird ausgesendet, wenn ein Plan aktualisiert wird.

Versionierung

Programmeigene Datensätze enthalten ein Versionsfeld. Dies gibt dem Programm die Möglichkeit, Kontendaten im Laufe der Zeit zu aktualisieren, ohne bestehende Nutzer zu beeinträchtigen. Die Migrationsstrategie unterstützt:

  • Lazy In-Place-Update
  • Explizite Migrationsanweisung
  • Widerrufen und neu erstellen als Fallback

Mitwirkende

Das Projekt wird von Mitwirkenden am solana-program/subscriptions-Repository gepflegt.

Auditstatus

Das Programm wurde von Cantina geprüft. Auditstatus, Basis-Commit, Fix-verifizierter Commit und aktuelles nicht geprüftes Delta werden im audits/-Verzeichnis des Repositorys verfolgt.

Demo-Anwendung

Wenn Sie das Programm selbst ausprobieren möchten, können Sie eine Beispielanwendung hier aufrufen, um eine End-to-End-Implementierung der in diesem Abschnitt behandelten Konzepte zu sehen.

Is this page helpful?

Inhaltsverzeichnis

Seite bearbeiten
© 2026 Solana Foundation. Alle Rechte vorbehalten.