Uma Autoridade de Assinatura é o PDA que o programa usa como delegado de Token SPL para a token account de um usuário. Feche-a quando o usuário não tiver mais delegações fixas ativas, delegações recorrentes ou delegações de assinatura para esse mint.
Fechar devolve o rent da conta ao seu financiador (o utilizador, ou qualquer pagador que a tenha financiado). Feche quaisquer delegações ativas primeiro.
Fechar não limpa a aprovação de delegado SPL Token. Assim que o PDA deixa de existir, a aprovação fica inativa, mas permanece no token account até ser revogada — consulte Revogar a Aprovação do Delegado.
Fechar a Autoridade
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();
Revogar a Aprovação do Delegado
RevokeSubscriptionAuthority limpa a aprovação de delegado residual do token
account do utilizador. Chama o Revoke do Token Program, assinado pelo
utilizador, pelo que funciona independentemente de a Autoridade de Subscrição
ainda existir. Envie-o isoladamente ou juntamente com
CloseSubscriptionAuthority.
Passe o token program que detém o mint: TOKEN_PROGRAM_ADDRESS para mints SPL
Token, ou TOKEN_2022_PROGRAM_ADDRESS (de @solana-program/token-2022) para
mints Token-2022.
import { TOKEN_PROGRAM_ADDRESS } from '@solana-program/token';await client.subscriptions.instructions.revokeSubscriptionAuthority({user: userSigner,tokenMint,tokenProgram: TOKEN_PROGRAM_ADDRESS,}).sendTransaction();
Notas
- O utilizador assina a transação de encerramento.
- Se um patrocinador financiou a Autoridade de Subscrição, passe essa conta de
patrocinador como
receiverpara que o rent seja devolvido ao pagador registado. - Feche os PDAs de delegação fixa, recorrente e de subscrição antes de fechar a Autoridade de Subscrição.
- Se o utilizador criar uma nova delegação mais tarde, inicialize uma nova Autoridade de Subscrição para o mesmo mint.
- Fechar não limpa a aprovação de delegado do token. Use
RevokeSubscriptionAuthoritypara a remover do token account do utilizador.
Is this page helpful?