Delegasyonlar ve abonelikler, iptal edildiğinde normalde kayıtlı ödeyiciye geri
dönen rent tutar. Bir sponsor hesabı finanse ettiyse ve kullanıcı daha sonra
Abonelik Yetkisini kapatır veya değiştirirse, hesap askıda kalır ve rent'i
sıkışır. RevokeAbandonedDelegation ve RevokeAbandonedSubscription, kayıtlı
ödeyicinin bunu geri almasına olanak tanır.
Ne Zaman Geçerlidir
Yalnızca hesabın Abonelik Yetkisinin kanıtlanabilir şekilde sonlandığı
durumlarda izin verilir — kapatılmış veya kapatılıp yeniden oluşturulmuş
(dolayısıyla init_id artık eşleşmiyor). Aktif bir delegasyon veya abonelik bu
yolla hiçbir zaman kapatılamaz.
RevokeAbandonedDelegation | RevokeAbandonedSubscription | |
|---|---|---|
| Kapatır | Sabit veya yinelenen delegasyon PDA'sı | Abonelik PDA'sı |
| İmzalayan | Kayıtlı ödeyici | Kayıtlı ödeyici |
| Hesaplar | Delegasyon + kayıtlı yetki | Abonelik + kayıtlı yetki + plan |
| Uygun olduğu durum | Yetki kapatıldığında veya yeniden oluşturulduğunda (init_id uyuşmazlığı) | Aynı durum, planın mint'i için — mint bağlı plandan okunur, bu nedenle zorla kapatmak amacıyla ilgisiz bir yetki ikame edilemez |
| Bunun yerine olağan iptal kullanın | Delegasyon süresi dolmuş veya tamamen harcanmışsa | Abonelik iptal edilmiş ve süresi dolmuşsa |
RevokeAbandonedDelegation, tamamen harcanmamış, hiç süresi dolmayan bir
delegasyon (expiry_ts == 0) için kayıtlı ödeyicinin tek kurtarma yoludur:
olağan iptal, ödeyici için yalnızca süre dolumunda veya sabit bir delegasyon söz
konusuysa tam harcama gerçekleştiğinde tetiklenir.
Terk Edilmiş Bir Delegasyonu İptal Et
Kayıtlı ödeyici imzalar. Kullanılmayan delegasyon PDA'sını ve kayıtlı Abonelik Yetkisini (zaten kapatılmış olabilir) iletin. Rent, ödeyiciye geri döner.
import { getRevokeAbandonedDelegationInstruction } from '@solana/subscriptions';// Build the instruction and send it in a transaction like any other.const revokeAbandonedIx = getRevokeAbandonedDelegationInstruction({payer: payerSigner,delegationAccount: delegationPda,subscriptionAuthority: subscriptionAuthorityPda,});
Terk Edilmiş Bir Aboneliği İptal Etme
Kayıtlı ödeyici imzalar. Terk edilmiş abonelik PDA'sını, kayıtlı Abonelik Yetkilisini (zaten kapatılmış olabilir) ve aboneliğin ait olduğu planı iletin. Rent, ödeyiciye iade edilir.
import { getRevokeAbandonedSubscriptionInstruction } from '@solana/subscriptions';// Build the instruction and send it in a transaction like any other.const revokeAbandonedIx = getRevokeAbandonedSubscriptionInstruction({payer: payerSigner,subscriptionAccount: subscriptionPda,subscriptionAuthority: subscriptionAuthorityPda,planPda,});
Notlar
- İmzalayan, delege eden, delege edilen veya abone değil, kayıtlı ödeyicidir.
- Hesap için Abonelik Yetkilisi hâlâ aktifse her iki talimat da başarısız olur — bunun yerine normal iptal işlemini kullanın.
RevokeAbandonedDelegationhem sabit hem de yinelenen delegasyonlar için çalışır.
Is this page helpful?