PagosSuscripciones

Cerrar Autoridad de Suscripción

Una Autoridad de Suscripción es el PDA que el programa utiliza como delegado de Token SPL para la cuenta de tokens de un usuario. Ciérrela cuando el usuario ya no tenga delegaciones fijas activas, delegaciones recurrentes o delegaciones de suscripción para ese mint.

Cerrar la cuenta devuelve el rent al financiador (el usuario o el pagador que la financió). Revoca primero cualquier delegación activa.

El cierre no elimina la aprobación de delegado SPL Token. Una vez que el PDA desaparece, la aprobación queda inerte, pero permanece en el token account hasta que se revoque — consulta Revocar La Aprobación De Delegado.

Cerrar La Autoridad

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();

Revocar La Aprobación De Delegado

RevokeSubscriptionAuthority elimina la aprobación de delegado residual del token account del usuario. Llama al Revoke del Token Program, firmado por el usuario, por lo que funciona independientemente de si la Autoridad de Suscripción sigue existiendo. Envíalo de forma independiente o junto con CloseSubscriptionAuthority.

Pasa el Token Program que posee el mint: TOKEN_PROGRAM_ADDRESS para mints de SPL Token, o TOKEN_2022_PROGRAM_ADDRESS (de @solana-program/token-2022) para mints de Token-2022.

import { TOKEN_PROGRAM_ADDRESS } from '@solana-program/token';
await client.subscriptions.instructions
.revokeSubscriptionAuthority({
user: userSigner,
tokenMint,
tokenProgram: TOKEN_PROGRAM_ADDRESS,
})
.sendTransaction();

Notas

  • El usuario firma la transacción de cierre.
  • Si un patrocinador financió la Autoridad de Suscripción, pasa esa cuenta de patrocinador como receiver para que el rent sea devuelto al pagador registrado.
  • Cierra los PDAs de delegación fija, recurrente y de suscripción antes de cerrar la Autoridad de Suscripción.
  • Si el usuario crea una nueva delegación más adelante, inicializa una nueva Autoridad de Suscripción para el mismo mint.
  • Cerrar la cuenta no elimina la aprobación de delegado del token. Usa RevokeSubscriptionAuthority para eliminarla del token account del usuario.

Is this page helpful?

Tabla de Contenidos

Editar Página