PagamentosAssinaturas
Uma Autoridade de Subscrição é um PDA que o programa utiliza como delegado de SPL Token para a token account de um utilizador e um token mint. Crie-a antes de criar delegações fixas, delegações recorrentes ou subscrições de planos de subscrição para esse mint.
A token account do utilizador já deve existir. A inicialização cria o PDA de Autoridade de Subscrição e aprova-o como delegado de token na token account do utilizador.
Criar a Autoridade
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();}
Notas
- O utilizador assina a transação de inicialização.
- Crie uma Autoridade de Subscrição por par de utilizador e token mint.
- Reutilize a Autoridade de Subscrição existente para delegações posteriores no mesmo mint.
- Encerre a Autoridade de Subscrição apenas depois de cada delegação que dela depende ter sido revogada ou encerrada.
Is this page helpful?