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

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

Повноваження Підписки — це 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();
}

Примітки

  • Користувач підписує транзакцію ініціалізації.
  • Створюйте одні Повноваження Підписки на кожну пару користувача та mint токена.
  • Повторно використовуйте існуючі Повноваження Підписки для наступних делегувань на тому ж mint.
  • Закривайте Повноваження Підписки лише після того, як кожне делегування, що залежить від них, було відкликано або закрито.

Is this page helpful?

Зміст

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