デリゲーションとサブスクリプションは、取り消し時に通常は記録されたpayerに返還されるrentを保持しています。スポンサーがアカウントに資金を提供し、その後ユーザーがSubscription
Authorityを閉鎖または置き換えた場合、アカウントは宙に浮き、rentが滞留します。RevokeAbandonedDelegationとRevokeAbandonedSubscriptionを使用することで、記録されたpayerがrentを回収できます。
適用条件
アカウントのSubscription
Authorityが明らかに終端状態にある場合のみ許可されます。つまり、閉鎖されているか、閉鎖後に再作成されている(init_idが一致しなくなっている)場合です。有効なデリゲーションやサブスクリプションをこの方法で閉鎖することはできません。
RevokeAbandonedDelegation | RevokeAbandonedSubscription | |
|---|---|---|
| 閉鎖対象 | 固定または定期デリゲーションPDA | サブスクリプションPDA |
| 署名者 | 記録されたpayer | 記録されたpayer |
| アカウント | デリゲーション+記録されたauthority | サブスクリプション+記録されたauthority+プラン |
| 適用条件 | Authorityが閉鎖済み、または再作成済み(init_idの不一致) | 同上。プランのmint対象 — mintはバインドされたプランから読み取られるため、無関係なauthorityを代替して強制的に閉鎖することはできません |
| 通常のrevokeを使用する場合 | デリゲーションが期限切れまたは全額消化済み | サブスクリプションがキャンセルおよび期限切れ |
RevokeAbandonedDelegationは、全額消化されていない無期限デリゲーション(expiry_ts == 0)に対して、記録されたpayerが取れる唯一の回収手段でもあります。通常のrevokeがpayerに対して発動するのは、期限切れ時、または固定デリゲーションの場合は全額消化時のみです。
放棄されたデリゲーションの取り消し
記録されたpayerが署名します。無効化されたデリゲーションPDAと、その記録されたSubscription Authority(すでに閉鎖済みの場合もあります)を渡してください。rentはpayerに返還されます。
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、その記録されたSubscription Authority(すでにクローズされている場合もあります)、およびそのサブスクリプションが属するプランを渡します。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,});
注意事項
- 署名するのは、デレゲーター、デレゲーティー、またはサブスクライバーではなく、記録されたペイヤーです。
- アカウントのSubscription Authorityがまだ有効な場合、両方のinstructionsは失敗します — 通常の取り消しを使用してください。
RevokeAbandonedDelegationは、固定委任と定期委任の両方に対応しています。
Is this page helpful?