PembayaranLangganan

Cabut Delegasi dan Langganan yang Ditinggalkan

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.

RevokeAbandonedDelegationRevokeAbandonedSubscription
MenutupPDA delegasi tetap atau berulangPDA Langganan
Penanda tanganPembayar yang tercatatPembayar yang tercatat
AkunDelegasi + otoritas yang tercatatLangganan + otoritas yang tercatat + paket
Memenuhi syarat ketikaOtoritas 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 ketikaDelegasi sudah kedaluwarsa atau habis digunakanLangganan 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.
  • RevokeAbandonedDelegation berfungsi untuk delegasi tetap maupun berulang.

Is this page helpful?

Daftar Isi

Edit Halaman
© 2026 Yayasan Solana. Semua hak dilindungi.