支付订阅

撤销已废弃的委托与订阅

委托和订阅持有的 rent 通常在撤销时返还给其记录的付款方。如果赞助方为账户提供了资金,而用户随后关闭或替换了其订阅授权,该账户将被搁置,其 rent 也将被锁定。RevokeAbandonedDelegationRevokeAbandonedSubscription 允许记录的付款方将其收回。

适用场景

仅在账户的订阅授权被证明已终止时才允许操作——已关闭,或已关闭并重新创建(因此 init_id 不再匹配)。处于活跃状态的委托或订阅永远无法通过此方式关闭。

RevokeAbandonedDelegationRevokeAbandonedSubscription
关闭对象固定或循环委托 PDA订阅 PDA
签名者记录的付款方记录的付款方
账户委托 + 记录的授权订阅 + 记录的授权 + 计划
适用条件授权已关闭,或已重新创建(init_id 不匹配)对计划的铸币同上——铸币从绑定计划中读取,因此无法以无关授权替代来强制关闭
以下情况请改用普通撤销委托已过期或已全额使用订阅已取消并过期

RevokeAbandonedDelegation 也是记录的付款方对从未过期的委托(expiry_ts == 0)且未全额使用时的唯一恢复途径:普通撤销仅在过期时(或对于固定委托,在全额使用时)才会为付款方触发。

撤销已废弃的委托

由记录的付款方签名。传入已失效的委托 PDA 及其记录的订阅授权(该授权可能已关闭)。Rent 将返还给付款方。

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,
});

撤销已废弃的订阅

已记录的付款人进行签名。传入已废弃订阅的 PDA、其记录的订阅授权方(可能已关闭),以及该订阅所属的方案。rent 将返还给付款人。

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,
});

注意事项

  • 签名方为已记录的付款人,而非委托人、被委托人或订阅者。
  • 若该账户的订阅授权方仍处于活跃状态,两条指令均会失败——请改用普通撤销方式。
  • RevokeAbandonedDelegation 适用于固定委托和周期性委托。

Is this page helpful?

Table of Contents

Edit Page
©️ 2026 Solana 基金会版权所有