Un'Autorità di Sottoscrizione è il PDA che il programma utilizza come delegato SPL Token per l'account token di un utente. Chiudilo quando l'utente non ha più deleghe fisse attive, deleghe ricorrenti o deleghe di sottoscrizione per quella mint.
La chiusura restituisce il rent dell'account al suo finanziatore (l'utente, o qualsiasi altro pagante che lo ha finanziato). Chiudi prima eventuali deleghe attive.
La chiusura non cancella l'approvazione del delegato SPL Token. Una volta che il PDA è scomparso l'approvazione è inattiva, ma rimane sul token account fino alla revoca — vedi Revocare l'Approvazione del Delegato.
Chiudere l'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();
Revocare l'Approvazione del Delegato
RevokeSubscriptionAuthority cancella l'approvazione del delegato residua dal
token account dell'utente. Chiama la funzione Revoke del Token Program,
firmata dall'utente, quindi funziona indipendentemente dal fatto che la
Subscription Authority esista ancora. Inviala da sola o insieme a
CloseSubscriptionAuthority.
Passa il Token Program proprietario del mint: TOKEN_PROGRAM_ADDRESS per i mint
SPL Token, oppure TOKEN_2022_PROGRAM_ADDRESS (da @solana-program/token-2022)
per i mint Token-2022.
import { TOKEN_PROGRAM_ADDRESS } from '@solana-program/token';await client.subscriptions.instructions.revokeSubscriptionAuthority({user: userSigner,tokenMint,tokenProgram: TOKEN_PROGRAM_ADDRESS,}).sendTransaction();
Note
- L'utente firma la transazione di chiusura.
- Se uno sponsor ha finanziato la Subscription Authority, passa quell'account
sponsor come
receiveraffinché il rent venga restituito al pagante registrato. - Chiudi i PDA di delega fissa, ricorrente e in abbonamento prima di chiudere la Subscription Authority.
- Se l'utente crea una nuova delega in seguito, inizializza una nuova Subscription Authority per lo stesso mint.
- La chiusura non cancella l'approvazione del delegato token. Usa
RevokeSubscriptionAuthorityper rimuoverla dal token account dell'utente.
Is this page helpful?