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

Закриття Повноважень Підписки

Повноваження Підписки — це PDA, який програма використовує як делегат SPL Token для облікового запису токенів користувача. Закрийте його, коли користувач більше не має активних фіксованих делегувань, регулярних делегувань або делегувань підписки для цього мінту.

Закриття повертає rent рахунку його фундатору (користувачу або будь-якому платнику, який його фінансував). Спочатку закрийте всі активні делегування.

Закриття не очищає дозвіл делегата SPL Token. Після видалення PDA дозвіл стає недійсним, але залишається на token account до відкликання — див. Відкликати Дозвіл Делегата.

Закрити Authority

import { address, createClient } from '@solana/kit';
import { solanaLocalRpc } from '@solana/kit-plugin-rpc';
import { signer } from '@solana/kit-plugin-signer';
import {
findSubscriptionAuthorityPda,
subscriptionsProgram,
} from '@solana/subscriptions';
const client = createClient()
.use(signer(userSigner))
.use(solanaLocalRpc({ rpcUrl: 'http://127.0.0.1:8899' }))
.use(subscriptionsProgram());
const tokenMint = address('TOKEN_MINT_ADDRESS_HERE');
const [subscriptionAuthorityPda] = await findSubscriptionAuthorityPda({
user: userSigner.address,
tokenMint,
});
await client.subscriptions.instructions
.closeSubscriptionAuthority({
user: userSigner,
tokenMint,
// Include this only when a sponsor funded the Subscription Authority.
receiver: sponsorSigner.address,
})
.sendTransaction();

Відкликати Дозвіл Делегата

RevokeSubscriptionAuthority очищає залишковий дозвіл делегата з token account користувача. Він викликає Revoke Token Program, підписаний користувачем, тому працює незалежно від того, чи існує Subscription Authority. Надсилайте його окремо або разом із CloseSubscriptionAuthority.

Передайте Token Program, яка є власником mint: TOKEN_PROGRAM_ADDRESS для SPL Token mint-ів, або TOKEN_2022_PROGRAM_ADDRESS@solana-program/token-2022) для Token-2022 mint-ів.

import { TOKEN_PROGRAM_ADDRESS } from '@solana-program/token';
await client.subscriptions.instructions
.revokeSubscriptionAuthority({
user: userSigner,
tokenMint,
tokenProgram: TOKEN_PROGRAM_ADDRESS,
})
.sendTransaction();

Примітки

  • Користувач підписує транзакцію закриття.
  • Якщо Subscription Authority фінансував спонсор, передайте цей рахунок спонсора як receiver, щоб rent повернувся до зафіксованого платника.
  • Закрийте PDA фіксованого, повторюваного та підписного делегування перед закриттям Subscription Authority.
  • Якщо користувач пізніше створить нове делегування, ініціалізуйте новий Subscription Authority для того самого mint.
  • Закриття не очищає дозвіл делегата токена. Використовуйте RevokeSubscriptionAuthority, щоб видалити його з token account користувача.

Is this page helpful?

Зміст

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