Delegasi dan langganan menyimpan rent yang biasanya dikembalikan ke pembayar
yang tercatat saat dicabut. Jika sponsor mendanai akun dan pengguna kemudian
menutup atau mengganti Otoritas Langganan mereka, akun tersebut menjadi
terbengkalai dan rent-nya tertahan. RevokeAbandonedDelegation dan
RevokeAbandonedSubscription memungkinkan pembayar yang tercatat untuk
mengklaimnya kembali.
Kapan Ini Berlaku
Hanya diizinkan ketika Otoritas Langganan akun terbukti sudah tidak aktif —
ditutup, atau ditutup dan dibuat ulang (sehingga init_id tidak lagi cocok).
Delegasi atau langganan yang masih aktif tidak dapat pernah ditutup dengan cara
ini.
RevokeAbandonedDelegation | RevokeAbandonedSubscription | |
|---|---|---|
| Menutup | PDA delegasi tetap atau berulang | PDA Langganan |
| Penanda tangan | Pembayar yang tercatat | Pembayar yang tercatat |
| Akun | Delegasi + otoritas yang tercatat | Langganan + otoritas yang tercatat + paket |
| Memenuhi syarat ketika | Otoritas ditutup, atau dibuat ulang (ketidakcocokan init_id) | Sama, untuk mint paket — mint dibaca dari paket yang terikat, sehingga otoritas yang tidak terkait tidak dapat diganti untuk memaksa penutupan |
| Gunakan pencabutan biasa sebagai gantinya ketika | Delegasi sudah kedaluwarsa atau habis digunakan | Langganan dibatalkan dan kedaluwarsa |
RevokeAbandonedDelegation juga merupakan satu-satunya jalur pemulihan bagi
pembayar yang tercatat untuk delegasi yang tidak pernah kedaluwarsa
(expiry_ts == 0) yang belum sepenuhnya digunakan: pencabutan biasa berlaku
untuk pembayar hanya saat kedaluwarsa atau, untuk delegasi tetap, saat habis
digunakan sepenuhnya.
Cabut Delegasi yang Ditinggalkan
Pembayar yang tercatat menandatangani. Masukkan PDA delegasi yang tidak aktif dan Otoritas Langganan yang tercatat (yang mungkin sudah ditutup). Rent dikembalikan ke pembayar.
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,});
Cabut Langganan yang Ditinggalkan
Pembayar yang tercatat menandatangani. Berikan PDA langganan yang ditinggalkan, Otoritas Langganan yang tercatat (yang mungkin sudah ditutup), dan paket yang menjadi bagian dari langganan tersebut. rent dikembalikan kepada pembayar.
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,});
Catatan
- Pembayar yang tercatat yang menandatangani, bukan delegator, delegatee, atau pelanggan.
- Kedua instruksi akan gagal jika Otoritas Langganan masih aktif untuk akun tersebut — gunakan cabut biasa sebagai gantinya.
RevokeAbandonedDelegationberfungsi untuk delegasi tetap maupun berulang.
Is this page helpful?