PłatnościSubskrypcje
Uprawnienie subskrypcji to PDA, którego program używa jako delegata tokena SPL dla konta tokenów jednego użytkownika i jednego tokena mint. Utwórz je przed tworzeniem stałych delegacji, cyklicznych delegacji lub subskrypcji planu subskrypcji dla tego tokena mint.
Konto tokenów użytkownika musi już istnieć. Inicjalizacja tworzy PDA uprawnień subskrypcji i zatwierdza je jako delegata tokena na koncie tokenów użytkownika.
Tworzenie uprawnień
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();}
Uwagi
- Użytkownik podpisuje transakcję inicjalizacji.
- Utwórz jedno uprawnienie subskrypcji dla każdej pary użytkownika i tokena mint.
- Użyj ponownie istniejącego uprawnienia subskrypcji dla późniejszych delegacji na tym samym tokenie mint.
- Zamknij uprawnienie subskrypcji dopiero po cofnięciu lub zamknięciu każdej delegacji, która od niego zależy.
Is this page helpful?