ПлатежиПодписки
Subscription Authority — это PDA, который программа использует в качестве делегата SPL Token для token account одного пользователя и одного токена. Создайте его перед созданием фиксированных делегирований, регулярных делегирований или подписок на планы подписки для этого токена.
Token account пользователя уже должен существовать. Инициализация создает PDA Subscription Authority и утверждает его в качестве делегата токена в token account пользователя.
Создание Authority
import { address, createClient } from '@solana/kit';import { solanaLocalRpc } from '@solana/kit-plugin-rpc';import { signer } from '@solana/kit-plugin-signer';import { findAssociatedTokenPda, TOKEN_PROGRAM_ADDRESS } from '@solana-program/token';import {fetchMaybeSubscriptionAuthority,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 [userAta] = await findAssociatedTokenPda({mint: tokenMint,owner: userSigner.address,tokenProgram: TOKEN_PROGRAM_ADDRESS,});const [subscriptionAuthorityPda] = await findSubscriptionAuthorityPda({user: userSigner.address,tokenMint,});const subscriptionAuthority = await fetchMaybeSubscriptionAuthority(client.rpc,subscriptionAuthorityPda,);if (!subscriptionAuthority.exists) {await client.subscriptions.instructions.initSubscriptionAuthority({tokenMint,tokenProgram: TOKEN_PROGRAM_ADDRESS,userAta,}).sendTransaction();}
Примечания
- Пользователь подписывает транзакцию инициализации.
- Создайте одну Subscription Authority для каждой пары пользователь–токен минт.
- Повторно используйте существующую Subscription Authority для последующих делегирований на том же минте.
- Спонсор может пополнить аккаунт: передайте необязательный
payerвinitSubscriptionAuthority(также поддерживается вcreateFixedDelegation,createRecurringDelegationиsubscribe) или настройте его с помощью.use(payer(sponsorSigner)). rent затем возвращается этому спонсору при закрытии с соответствующимreceiver. Опустите его для варианта с самофинансированием по умолчанию. - Закрывайте Subscription Authority только после того, как каждое зависящее от неё делегирование будет отозвано или закрыто.
Is this page helpful?