PagamentosAssinaturas

Fechar Autoridade de Assinatura

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 receiver para 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 RevokeSubscriptionAuthority para a remover do token account do utilizador.

Is this page helpful?

Índice

Editar Página
© 2026 Fundação Solana. Todos os direitos reservados.