PembayaranLangganan
Otoritas Berlangganan adalah PDA yang digunakan program sebagai delegasi SPL Token untuk satu token account pengguna dan satu token mint. Buat sebelum membuat delegasi tetap, delegasi berulang, atau langganan paket berlangganan untuk mint tersebut.
Token account pengguna harus sudah ada. Inisialisasi membuat PDA Otoritas Berlangganan dan menyetujuinya sebagai delegasi token pada token account pengguna.
Buat Otoritas
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();}
Catatan
- Pengguna menandatangani transaksi inisialisasi.
- Buat satu Subscription Authority per pasangan pengguna dan token mint.
- Gunakan kembali Subscription Authority yang sudah ada untuk delegasi berikutnya pada mint yang sama.
- Sponsor dapat mendanai akun: berikan
payeropsional keinitSubscriptionAuthority(juga didukung dicreateFixedDelegation,createRecurringDelegation, dansubscribe), atau konfigurasikan satu dengan.use(payer(sponsorSigner)). rent kemudian dikembalikan ke sponsor tersebut saat Anda menutup denganreceiveryang sesuai. Abaikan untuk default yang didanai sendiri. - Tutup Subscription Authority hanya setelah setiap delegasi yang bergantung padanya telah dicabut atau ditutup.
Is this page helpful?