Abonelik Yetkilisi, programın bir kullanıcının token hesabı için SPL Token temsilcisi olarak kullandığı PDA'dır. Kullanıcının o mint için artık aktif sabit delegasyonları, yinelenen delegasyonları veya abonelik delegasyonları kalmadığında kapatın.
Kapatma işlemi, hesabın rent'ini fonlayan kişiye (kullanıcıya veya ödemeyi yapan tarafa) iade eder. Önce aktif tüm delegasyonları kapatın.
Kapatma işlemi, SPL Token delegate onayını silmez. PDA ortadan kalktıktan sonra onay etkisiz hale gelir, ancak iptal edilene kadar token account üzerinde kalmaya devam eder — bkz. Delegate Onayını İptal Et.
Yetkiyi Kapat
import { address, createClient } from '@solana/kit';import { solanaLocalRpc } from '@solana/kit-plugin-rpc';import { signer } from '@solana/kit-plugin-signer';import {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 [subscriptionAuthorityPda] = await findSubscriptionAuthorityPda({user: userSigner.address,tokenMint,});await client.subscriptions.instructions.closeSubscriptionAuthority({user: userSigner,tokenMint,// Include this only when a sponsor funded the Subscription Authority.receiver: sponsorSigner.address,}).sendTransaction();
Delegate Onayını İptal Et
RevokeSubscriptionAuthority, kullanıcının token account'undaki artık delegate
onayını temizler. Token Program'ın Revoke işlevini kullanıcı imzasıyla
çağırır; bu nedenle Subscription Authority'nin var olup olmadığından bağımsız
olarak çalışır. Tek başına veya CloseSubscriptionAuthority ile birlikte
gönderin.
Mint'e sahip olan token programını iletin: SPL Token mint'leri için
TOKEN_PROGRAM_ADDRESS, Token-2022 mint'leri için ise
@solana-program/token-2022'den alınan TOKEN_2022_PROGRAM_ADDRESS.
import { TOKEN_PROGRAM_ADDRESS } from '@solana-program/token';await client.subscriptions.instructions.revokeSubscriptionAuthority({user: userSigner,tokenMint,tokenProgram: TOKEN_PROGRAM_ADDRESS,}).sendTransaction();
Notlar
- Kapatma işlemini kullanıcı imzalar.
- Subscription Authority'yi bir sponsor fonladıysa, rent'in kayıtlı ödeyiciye
iade edilmesi için söz konusu sponsor hesabını
receiverolarak iletin. - Subscription Authority'yi kapatmadan önce sabit, yinelenen ve abonelik delegasyonu PDA'larını kapatın.
- Kullanıcı daha sonra yeni bir delegasyon oluşturursa, aynı mint için yeni bir Subscription Authority başlatın.
- Kapatma işlemi, token delegate onayını silmez. Kullanıcının token
account'undan kaldırmak için
RevokeSubscriptionAuthoritykullanın.
Is this page helpful?