ПлатежіПідписки

Відкликання покинутих делегувань та підписок

Делегування та підписки утримують rent, який зазвичай повертається зафіксованому платнику під час відкликання. Якщо спонсор фінансував обліковий запис, а користувач пізніше закрив або замінив свій Subscription Authority, обліковий запис залишається покинутим, а його rent — заблокованим. RevokeAbandonedDelegation та RevokeAbandonedSubscription дозволяють зафіксованому платнику повернути його.

Коли це застосовується

Дозволено лише тоді, коли Subscription Authority облікового запису є доведено кінцевим — закритим або закритим і відтвореним (тобто init_id більше не збігається). Активне делегування або підписку неможливо закрити таким чином.

RevokeAbandonedDelegationRevokeAbandonedSubscription
ЗакриваєPDA фіксованого або повторюваного делегуванняPDA підписки
ПідписантЗафіксований платникЗафіксований платник
Облікові записиДелегування + зафіксований authorityПідписка + зафіксований authority + план
Умова прийнятностіAuthority закрито або відтворено (невідповідність init_id)Те саме — для mint плану; mint зчитується зі зв'язаного плану, тому непов'язаний authority не може бути підставлений для примусового закриття
Використовуйте звичайне відкликання, якщоДелегування є простроченим або повністю витраченимПідписку скасовано та прострочено

RevokeAbandonedDelegation також є єдиним способом відновлення для зафіксованого платника у випадку делегування без терміну дії (expiry_ts == 0), яке не витрачено повністю: звичайне відкликання спрацьовує для платника лише після закінчення терміну або, у випадку фіксованого делегування, після повного витрачання.

Відкликання покинутого делегування

Зафіксований платник підписує. Передайте покинутий PDA делегування та його зафіксований Subscription Authority (який може вже бути закритим). 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 покинутої підписки, її зареєстрований 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,
});

Примітки

  • Підписує зареєстрований платник, а не делегатор, делегат або підписник.
  • Обидві інструкції завершуються помилкою, якщо Authority підписки все ще активний для облікового запису — замість цього використовуйте звичайне відкликання.
  • RevokeAbandonedDelegation працює як для фіксованих, так і для повторюваних делегувань.

Is this page helpful?

Зміст

Редагувати сторінку