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:
| Model | Tujuan |
|---|---|
| Delegasi tetap | Izinkan dompet atau layanan lain untuk membelanjakan hingga jumlah total tetap, secara opsional hingga waktu kedaluwarsa. |
| Delegasi berulang | Izinkan dompet atau layanan lain untuk membelanjakan hingga batas yang direset setiap periode, seperti harian, mingguan, atau bulanan. |
| Paket langganan | Izinkan merchant mempublikasikan syarat penagihan yang dapat diterima pengguna, lalu izinkan kolektor yang disetujui untuk menagih pelanggan setiap periode penagihan. |
Token yang Didukung
Program ini mendukung token yang dibuat dengan SPL Token maupun Token-2022.
Satu-satunya ekstensi Token-2022 yang ditolak adalah TransferHook yang
dikonfigurasi (di mana hook authority atau program_id telah diatur).
TransferHook yang tidak aktif (keduanya tidak diatur, sehingga selamanya tidak
dapat diubah) dan semua ekstensi lainnya diizinkan.
Event On-Chain
Program ini menghasilkan event on-chain sehingga indexer dan aplikasi dapat melacak aktivitas penting. Event ini mencakup perubahan langganan dan transfer yang dilakukan melalui alur tetap, berulang, dan paket langganan.
Versioning
Catatan yang dimiliki program mencakup field versi. Hal ini memberikan jalur bagi program untuk meningkatkan data akun seiring waktu tanpa merusak pengguna yang sudah ada. Strategi migrasi mendukung:
- Pembaruan in-place secara lazy
- Instruksi migrasi eksplisit
- Fallback pencabutan dan pembuatan ulang
Kontributor
Proyek ini dipelihara oleh kontributor
repositori solana-program/subscriptions.
Status Audit
Program ini telah diaudit oleh Cantina. Status audit, commit baseline, commit
yang telah diverifikasi perbaikannya, 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-konsep yang dibahas di bagian ini.
Is this page helpful?