Abonelik Delegasyonu Programı, geliştiricilerin kullanıcıların cüzdanlarından açık limitlerle gelecekteki token transferlerini yetkilendirmelerine olanak tanır. Yinelenen ödemeler, abonelikler, satıcı faturalandırması ve kullanıcının her transferi manuel olarak imzalamaması gereken diğer akışlar için tasarlanmıştır.
Amaç
Solana token hesapları, tokenleri taşımak için başka bir yetkiyi onaylayabilir, ancak her token hesabı aynı anda yalnızca bir onaylı yetkiye sahip olabilir. Bu, bir cüzdanın aynı token için aylık abonelik, sabit harcama limiti ve satıcı faturalandırma anlaşması gibi birden fazla harcama düzenlemesini güvenli bir şekilde desteklemesini zorlaştırır.
Bu program, her (user, token mint) çiftine program kontrollü bir Abonelik
Yetkisi vererek bunu çözer. Kullanıcının token hesabı bu yetkiyi bir kez
onaylar. Program daha sonra talep edilen her transferi, kimin fon
çekebileceğini, ne kadar çekebileceğini ve yetkilendirmenin ne zaman sona
ereceğini veya sıfırlanacağını tanımlayan ayrı bir kayıtla kontrol eder.
Abonelik Yetkisi fonları kendi başına taşıyamaz. Bir transfer, yalnızca kullanıcının etkin yetkilendirmelerinden biriyle eşleştiğinde başarılı olur.
Program Kimliği
De1egAFMkMWZSN5rYXRj9CAdheBamobVNubTsi9avR44
Program kimliği program/src/lib.rs içinde bildirilir. Yerel Surfpool iş
akışları programı bu standart adreste yükler.
Delegasyon Modelleri
Program üç yetkilendirme modelini destekler:
| Model | Amaç |
|---|---|
| Sabit delegasyon | Başka bir cüzdanın veya hizmetin isteğe bağlı olarak bir son kullanma tarihine kadar sabit bir toplam tutara kadar harcama yapmasına izin verin. |
| Yinelenen delegasyon | Başka bir cüzdanın veya hizmetin günlük, haftalık veya aylık gibi her dönemde sıfırlanan bir limite kadar harcama yapmasına izin verin. |
| Abonelik planı | Bir satıcının kullanıcıların kabul edebileceği faturalandırma koşullarını yayınlamasına izin verin, ardından onaylı toplayıcıların her faturalandırma döneminde abonelerden ücret almasına izin verin. |
Desteklenen Token'lar
Hem SPL Token hem de Token-2022'deki tüm mint'leri destekler.
Yapılandırılmış TransferHook içeren Token-2022 mint'leri için program, her
yetkili transferde mint'in hook hesaplarını (hook programı,
ExtraAccountMetaList PDA, ekstralar) TransferChecked CPI'ye iletir; böylece
hook politikası uygulanır. SDK bunları sizin için çözer:
- Eklenti istemcisi (
transferFixed,transferRecurring,transferSubscription) — otomatik olarak eklenir. - Manuel oluşturma —
resolveTransferHookAccountsçağrısı yapın,transferHookAccountsgeçirin.
Zincir Üstü Olaylar
Program, indeksleyicilerin ve uygulamaların etkinlikleri takip edebilmesi için self-CPI aracılığıyla zincir üstü olaylar yayar. Tüm olaylar yayımlanan IDL'de kayıtlıdır; dolayısıyla oluşturulan istemciler bunların kodunu çözebilir. Yayılan olaylar şunlardır:
FixedTransferEvent,RecurringTransferEventveSubscriptionTransferEvent— her yetkili transfer başına bir tane. Her biri alacaklandırılanreceiverTokenAccountdeğerini taşır;SubscriptionTransferEventayrıcapullerdeğerini de taşır.SubscriptionCreatedEvent,SubscriptionCancelledEventveSubscriptionResumedEvent— abonelik yaşam döngüsü.SubscriptionCreatedEvent,payerdeğerini taşır.PlanUpdatedEvent— bir plan güncellendiğinde yayılır.
Sürüm Yönetimi
Programa ait kayıtlar bir sürüm alanı içerir. Bu, programa mevcut kullanıcıları etkilemeden zaman içinde hesap verilerini yükseltme imkânı tanır. Geçiş stratejisi şunları destekler:
- Yerinde gecikmeli güncelleme
- Açık geçiş talimatı
- İptal edip yeniden oluşturma (yedek yöntem)
Katkıda Bulunanlar
Proje,
solana-program/subscriptions deposuna
katkıda bulunanlar tarafından sürdürülmektedir.
Denetim Durumu
Program Cantina tarafından denetlenmiştir. Denetim durumu, temel işleme
(baseline commit), düzeltme doğrulama işlemi (fix-verified commit) ve mevcut
denetlenmemiş delta, deponun
audits/ dizininde
takip edilmektedir.
Demo Uygulaması
Programı kendiniz denemek istiyorsanız, bu bölümde ele alınan kavramların uçtan uca uygulamasını görmek için örnek uygulamayı buradan inceleyebilirsiniz.
Is this page helpful?