Otoritas Langganan adalah PDA yang digunakan program sebagai delegasi SPL Token untuk akun token pengguna. Tutup akun ini ketika pengguna tidak lagi memiliki delegasi tetap, delegasi berulang, atau delegasi langganan yang aktif untuk mint tersebut.
Penutupan mengembalikan rent akun kepada pembiayanya (pengguna, atau pembayar mana pun yang mendanainya). Tutup semua delegasi aktif terlebih dahulu.
Penutupan tidak menghapus persetujuan delegasi SPL Token. Setelah PDA dihapus, persetujuan tersebut menjadi tidak aktif, namun tetap berada di token account hingga dicabut — lihat Cabut Persetujuan Delegasi.
Tutup Authority
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();
Cabut Persetujuan Delegasi
RevokeSubscriptionAuthority membersihkan persetujuan delegasi yang tersisa
dari token account pengguna. Ini memanggil Revoke milik token program,
ditandatangani oleh pengguna, sehingga berfungsi terlepas dari apakah
Subscription Authority masih ada atau tidak. Kirim secara tersendiri atau
bersamaan dengan CloseSubscriptionAuthority.
Berikan token program yang memiliki mint: TOKEN_PROGRAM_ADDRESS untuk mint SPL
Token, atau TOKEN_2022_PROGRAM_ADDRESS (dari @solana-program/token-2022)
untuk mint Token-2022.
import { TOKEN_PROGRAM_ADDRESS } from '@solana-program/token';await client.subscriptions.instructions.revokeSubscriptionAuthority({user: userSigner,tokenMint,tokenProgram: TOKEN_PROGRAM_ADDRESS,}).sendTransaction();
Catatan
- Pengguna menandatangani transaksi penutupan.
- Jika sponsor mendanai Subscription Authority, berikan akun sponsor tersebut
sebagai
receiveragar rent dikembalikan kepada pembayar yang tercatat. - Tutup PDA delegasi tetap, berulang, dan langganan sebelum menutup Subscription Authority.
- Jika pengguna membuat delegasi baru nantinya, inisialisasi Subscription Authority baru untuk mint yang sama.
- Penutupan tidak menghapus persetujuan delegasi token. Gunakan
RevokeSubscriptionAuthorityuntuk menghapusnya dari token account pengguna.
Is this page helpful?