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

Закрытие полномочий подписки

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

Закрытие аккаунта возвращает его ренту спонсору лампортов аккаунта и отзывает одобрение делегата токенов, принадлежащее программе. Спонсором обычно является пользователь, но это может быть любой плательщик, который профинансировал аккаунт полномочий подписки. Если какое-либо активное делегирование все еще зависит от полномочий, сначала закройте эти делегирования.

Закрытие полномочий

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();

Примечания

  • Пользователь подписывает транзакцию закрытия.
  • Если спонсор профинансировал полномочия подписки, передайте этот аккаунт спонсора как receiver, чтобы рента вернулась зарегистрированному плательщику.
  • Закройте PDA фиксированных, повторяющихся и подписных делегирований перед закрытием полномочий подписки.
  • Если пользователь создаст новое делегирование позже, инициализируйте новые полномочия подписки для того же минта.

Is this page helpful?

Содержание

Редактировать страницу