ÖdemelerAbonelikler
Abonelik Yetkilisi, programın bir kullanıcının token hesabı ve bir token mint için SPL Token delegesi olarak kullandığı bir PDA'dır. Bu mint için sabit delegasyonlar, yinelenen delegasyonlar veya abonelik planı abonelikleri oluşturmadan önce bunu oluşturun.
Kullanıcının token hesabı zaten mevcut olmalıdır. Başlatma, Abonelik Yetkilisi PDA'sını oluşturur ve bunu kullanıcının token hesabında token delegesi olarak onaylar.
Yetki Oluşturma
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();}
Notlar
- Kullanıcı başlatma işlemini imzalar.
- Her kullanıcı ve token mint çifti için bir Abonelik Yetkilisi oluşturun.
- Aynı mint üzerindeki sonraki delegasyonlar için mevcut Abonelik Yetkilisini yeniden kullanın.
- Abonelik Yetkilisini yalnızca ona bağlı her delegasyon iptal edildikten veya kapatıldıktan sonra kapatın.
Is this page helpful?