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

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

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

Обліковий запис токенів користувача має вже існувати. Ініціалізація створює PDA Повноважень Підписки та затверджує його як делегата токена для облікового запису токенів користувача.

Створення Повноважень

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?

Зміст

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