Ö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 Subscription Authority oluşturun.
- Aynı mint üzerindeki sonraki delegasyonlar için mevcut Subscription Authority'yi yeniden kullanın.
- Bir sponsor hesabı finanse edebilir:
initSubscriptionAuthority'e isteğe bağlı birpayeriletin (ayrıcacreateFixedDelegation,createRecurringDelegationvesubscribeüzerinde de desteklenir) veya.use(payer(sponsorSigner))ile bir tane yapılandırın. rent, daha sonra eşleşen birreceiverile kapatıldığında o sponsora geri döner. Kendi kendini finanse eden varsayılan için bunu atlayın. - Subscription Authority'yi yalnızca ona bağlı tüm delegasyonlar iptal edildikten veya kapatıldıktan sonra kapatın.
Is this page helpful?