PagamentiAbbonamenti

Panoramica

Il Programma di Delega delle Sottoscrizioni consente agli sviluppatori di permettere agli utenti di autorizzare futuri trasferimenti di token dai loro wallet con limiti chiari. È progettato per pagamenti ricorrenti, sottoscrizioni, fatturazione di esercenti e altri flussi in cui un utente non dovrebbe dover firmare manualmente ogni trasferimento.

Scopo

Gli account token di Solana possono approvare un'altra autorità per spostare token, ma ogni account token può avere solo un'autorità approvata alla volta. Questo rende difficile per un singolo wallet supportare in sicurezza diverse configurazioni di spesa per lo stesso token, come una sottoscrizione mensile, un'indennità di spesa fissa e un accordo di fatturazione con un esercente.

Questo programma risolve il problema fornendo a ogni coppia (user, token mint) un'Autorità di Sottoscrizione controllata dal programma. L'account token dell'utente approva quell'autorità una sola volta. Il programma verifica poi ogni trasferimento richiesto confrontandolo con un record separato che definisce chi può prelevare fondi, quanto può prelevare e quando l'autorizzazione scade o si ripristina.

L'Autorità di Sottoscrizione non può spostare fondi da sola. Un trasferimento ha successo solo quando corrisponde a una delle autorizzazioni attive dell'utente.

ID del Programma

De1egAFMkMWZSN5rYXRj9CAdheBamobVNubTsi9avR44

L'ID del programma è dichiarato in program/src/lib.rs. I flussi di lavoro locali di Surfpool installano il programma a questo indirizzo canonico.

Modelli di Delega

Il programma supporta tre modelli di autorizzazione:

ModelloScopo
Delega fissaConsente a un altro wallet o servizio di spendere fino a un importo totale fisso, opzionalmente fino a una data di scadenza.
Delega ricorrenteConsente a un altro wallet o servizio di spendere fino a un limite che si ripristina ogni periodo, ad esempio giornaliero, settimanale o mensile.
Piano di sottoscrizioneConsente a un esercente di pubblicare termini di fatturazione che gli utenti possono accettare, quindi permette ai riscossori approvati di addebitare agli abbonati ogni periodo di fatturazione.

Token Supportati

Supporta tutti i mint sia da SPL Token che da Token-2022.

Per i mint Token-2022 con un TransferHook configurato, il programma inoltra gli account hook del mint (programma hook, PDA ExtraAccountMetaList, extra) nel CPI TransferChecked ad ogni trasferimento delegato, in modo che la policy dell'hook venga applicata. L'SDK li risolve automaticamente per te:

  • Client plugin (transferFixed, transferRecurring, transferSubscription) — aggiunti automaticamente.
  • Costruzione manuale — chiama resolveTransferHookAccounts, passa transferHookAccounts.

Eventi On-Chain

Il programma emette eventi on-chain tramite self-CPI, in modo che gli indicizzatori e le applicazioni possano tracciare l'attività. Tutti gli eventi sono registrati nell'IDL pubblicato, così i client generati possono decodificarli. Gli eventi emessi sono:

  • FixedTransferEvent, RecurringTransferEvent e SubscriptionTransferEvent — uno per ogni trasferimento delegato. Ognuno riporta il receiverTokenAccount accreditato; SubscriptionTransferEvent riporta anche il puller.
  • SubscriptionCreatedEvent, SubscriptionCancelledEvent e SubscriptionResumedEvent — ciclo di vita della sottoscrizione. SubscriptionCreatedEvent riporta il payer.
  • PlanUpdatedEvent — emesso quando un piano viene aggiornato.

Versionamento

I record di proprietà del programma includono un campo versione. Questo fornisce al programma un percorso per aggiornare i dati degli account nel tempo senza compromettere gli utenti esistenti. La strategia di migrazione supporta:

  • Aggiornamento lazy in-place
  • Istruzione di migrazione esplicita
  • Fallback con revoca e ricreazione

Contributori

Il progetto è mantenuto dai contributori del repository solana-program/subscriptions.

Stato dell'Audit

Il programma è stato verificato da Cantina. Lo stato dell'audit, il commit di riferimento, il commit con le correzioni verificate e il delta corrente non verificato sono tracciati nella directory audits/ del repository.

Applicazione Demo

Se desideri sperimentare il programma in prima persona, puoi consultare un' applicazione di esempio qui per vedere un'implementazione end-to-end dei concetti trattati in questa sezione.

Is this page helpful?

Indice dei contenuti

Modifica pagina
© 2026 Solana Foundation. Tutti i diritti riservati.