PembayaranLangganan

Ikhtisar

Program Delegasi Langganan memungkinkan pengembang untuk mengizinkan pengguna menyetujui transfer token di masa mendatang dari dompet mereka dengan batasan yang jelas. Program ini dirancang untuk pembayaran berulang, langganan, penagihan merchant, dan alur lain di mana pengguna tidak perlu menandatangani setiap transfer secara manual.

Tujuan

Token account Solana dapat menyetujui otoritas lain untuk memindahkan token, tetapi setiap token account hanya dapat memiliki satu otoritas yang disetujui pada satu waktu. Hal ini menyulitkan satu dompet untuk mendukung beberapa pengaturan pengeluaran dengan aman untuk token yang sama, seperti langganan bulanan, tunjangan pengeluaran tetap, dan perjanjian penagihan merchant.

Program ini menyelesaikan masalah tersebut dengan memberikan setiap pasangan (user, token mint) sebuah Otoritas Langganan yang dikontrol program. Token account pengguna menyetujui otoritas tersebut satu kali. Program kemudian memeriksa setiap permintaan transfer terhadap catatan terpisah yang menentukan siapa yang dapat menarik dana, berapa banyak yang dapat mereka tarik, dan kapan otorisasi tersebut kedaluwarsa atau direset.

Otoritas Langganan tidak dapat memindahkan dana dengan sendirinya. Transfer hanya berhasil ketika sesuai dengan salah satu otorisasi aktif pengguna.

ID Program

De1egAFMkMWZSN5rYXRj9CAdheBamobVNubTsi9avR44

ID program dideklarasikan dalam program/src/lib.rs. Alur kerja Surfpool lokal memasang program di alamat kanonik ini.

Model Delegasi

Program ini mendukung tiga model otorisasi:

ModelTujuan
Delegasi tetapIzinkan dompet atau layanan lain untuk membelanjakan hingga jumlah total tetap, secara opsional hingga waktu kedaluwarsa.
Delegasi berulangIzinkan dompet atau layanan lain untuk membelanjakan hingga batas yang direset setiap periode, seperti harian, mingguan, atau bulanan.
Paket langgananIzinkan merchant mempublikasikan syarat penagihan yang dapat diterima pengguna, lalu izinkan kolektor yang disetujui untuk menagih pelanggan setiap periode penagihan.

Token yang Didukung

Mendukung semua mint dari SPL Token maupun Token-2022.

Untuk mint Token-2022 yang dikonfigurasi dengan TransferHook, program meneruskan akun hook mint (program hook, ExtraAccountMetaList PDA, tambahan) ke dalam TransferChecked CPI pada setiap transfer yang didelegasikan, sehingga kebijakan hook diterapkan. SDK akan menyelesaikannya untuk Anda:

  • Klien plugin (transferFixed, transferRecurring, transferSubscription) — ditambahkan secara otomatis.
  • Membangun secara manual — panggil resolveTransferHookAccounts, teruskan transferHookAccounts.

Event On-Chain

Program memancarkan event on-chain melalui self-CPI sehingga pengindeks dan aplikasi dapat memantau aktivitas. Semua event terdaftar dalam IDL yang dipublikasikan, sehingga klien yang dihasilkan dapat mendekodenya. Event yang dipancarkan adalah:

  • FixedTransferEvent, RecurringTransferEvent, dan SubscriptionTransferEvent — satu per transfer yang didelegasikan. Masing-masing membawa receiverTokenAccount yang dikreditkan; SubscriptionTransferEvent juga membawa puller.
  • SubscriptionCreatedEvent, SubscriptionCancelledEvent, dan SubscriptionResumedEvent — siklus hidup langganan. SubscriptionCreatedEvent membawa payer.
  • PlanUpdatedEvent — dipancarkan ketika sebuah paket diperbarui.

Versioning

Rekaman yang dimiliki program menyertakan kolom versi. Hal ini memberi program jalur untuk memperbarui data akun dari waktu ke waktu tanpa mengganggu pengguna yang sudah ada. Strategi migrasi mendukung:

  • Pembaruan in-place secara lazy
  • Instruksi migrasi eksplisit
  • Fallback revoke dan buat ulang

Kontributor

Proyek ini dikelola oleh para kontributor ke repositori solana-program/subscriptions.

Status Audit

Program ini telah diaudit oleh Cantina. Status audit, commit baseline, commit terverifikasi perbaikan, dan delta yang belum diaudit saat ini dilacak di direktori audits/ repositori.

Aplikasi Demo

Jika Anda ingin mencoba program ini sendiri, Anda dapat melihat contoh aplikasi di sini untuk melihat implementasi end-to-end dari konsep yang dibahas di bagian ini.

Is this page helpful?

Daftar Isi

Edit Halaman
© 2026 Yayasan Solana. Semua hak dilindungi.