ПлатежиПодписки
Полномочия подписки — это 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?